Разширения за конфигурация - как да добавите функционалност към типична конфигурация, без да я премахвате от поддръжка (20 минути видео). Промяна или деактивиране на режим на съвместимост Предимства от използването на разширение

В тази статия предлагам да разгледаме какво е „разширение за конфигурация“, как да добавите разширение или да го деактивирате. Започвайки от версия 1C На 8.3.1977 г. в платформата е въведен нов механизъм - разширения за конфигурация. Първо, малко теория.

Разширенията в 1C са нещо като паралелни конфигурации, които автоматично се обединяват с основната конфигурация на доставчика. Освен това в разширенията можете да добавяте както свои собствени обекти, така и да заемате обекти от основната конфигурация.

За какво са разширенията?

На първо място, разширенията са създадени, за да улеснят извършването на промени в програмата. Тоест, ако потребителите поискат да добавят някаква функционалност, тогава преди появата на разширенията програмистите трябваше да премахнат конфигурацията от пълна поддръжка и да променят типичната конфигурация.

Премахването от пълна поддръжка води до редица неудобства:

  • изчезва възможността за автоматично обновяване, което води най-малкото до увеличаване на времето за ;
  • изисква се висока квалификацияспециалист, обслужващ програмата;
  • ако са направени промени в стандартни обекти с типична конфигурация, тогава по време на актуализацията те могат да изчезнат, т.е. те могат да бъдат заменени отново със стандартни от доставчика.

Когато използвате разширения, когато правите промени, програмистът няма да докосне стандартната конфигурация. Всички промени ще бъдат направени с помощта на разширения, които (както писах по-горе) също са конфигурации. Така основната конфигурация ще остане с пълна поддръжка.

След актуализиране на основната конфигурация, ако има промени в новата версия с обект, който преди това е бил модифициран от разширението, тогава промените ще продължат да бъдат взети от разширението. Тоест разширенията имат предимство пред основната конфигурация.

Видео - разширения в 1C за 45 минути

Вземете 267 1C видео урока безплатно:

Пример за добавяне на разширение към 1C

За да покажете какво е разширение, по-добре е да дадете пример за създаването му в 1C конфигуратора.

В конфигуратора отидете в менюто „Конфигурация“ и изберете елемента „Разширения на конфигурацията“. Ще се отвори прозорец със списък с разширения (ако има такива). Щракнете върху бутона „Добавяне“ и добавете ново разширение. Сега можете да отворите конфигурацията на разширението:

Както можете да видите, конфигурацията на разширението има точно същата структура като основната. Само че първоначално е напълно чисто, без предмети.

Наскоро написах статия за това как да си направите сами. Използвайки нейния пример, искам да го направя вграден с помощта на разширение.

В обработка имам поле с линк към директория "Организации". Ето защо имам нужда от това ръководство. Но ние няма да създадем нова директория за организации, особено след като платформата няма да го позволи. Не можете да имате обекти в конфигурацията на разширението, които имат същото име като обекти в основната конфигурация.

Затова ще вземем назаем директорията от основната конфигурация:

Сега ще щракнете с десния бутон върху „Обработка“ и ще изберете „Вмъкване на външна обработка, отчет ...“ По този начин ще добавим нова обработка към конфигурацията на разширението. Ако използвате моята обработка, веднага я преименувайте, тъй като основната конфигурация вече има обработка с това име.

Е, последният щрих. Искам обработката ми да се отразява в менюто "Администриране". За да направим това, ще заемем подсистемата на основната конфигурация със същото име. Не забравяйте да посочите в обработката, че принадлежи към тази подсистема.

Това е структурата, която получих:

Да видим какво имаме. Актуализираме конфигурацията на базата данни и стартираме програмата в режим 1C: Enterprise и отидете в менюто „Администриране“. Да, почти забравих, конфигурацията на разширението трябва да бъде затворена, в противен случай програмата няма да стартира:

Цената на работата и опциите за преводи от различни версии

Превод 8.1 → 8.2.13 Превод 8.2.13 → 8.2.16 Превод 8.2.16 → 8.3.10
цена, търкайте. * 54 000 ₽ 12 000 ₽ 76 800 ₽

Списъкът с всички промени в различните версии на платформата е достъпен на линковете:
За платформа 8.2:
http://downloads.v8.1c.ru/content/Platform/8_2_19_106/1cv8upd.htm

Преди да започнете работа по превода на 8.3, трябва да:

Проверете управлявания режим на блокиране. Ако се използва "Автоматично", тогава преходът към 8.3 може да изисква допълнителни разходи за преминаване към режим на контролирано заключване.
Ако се използва режим на съвместимост с 8.2.16 и по-нова версия, тогава трябва да проверите дали таблиците са преструктурирани
Определете какви типове клиенти се използват (тънък, дебел, уеб клиент)
Определете дали има машини, които работят с Linux

Превод на конфигурация 8.1 → 8.2.13

Цена на работа: 54 000 рубли.

Превод на конфигурация 8.2.13 → 8.2.16 (включително преструктуриране)

Ключови промени:
Променен е режимът на съхранение на константите и настройките на регистрите за натрупване. Всеки обект има своя собствена таблица с база данни
Изпълнението на механизма за управлявано заключване е преработено.
За събитието на технологичния журнал "TLOCK", свойството "Txt" се записва само в режим на съвместимост с версия 8.2.13
Ефектът от режима за отстраняване на грешки върху скоростта на работа в режим 1C:Enterprise за тънък клиент, дебел клиент, сървър и външна връзка е намален.
Оптимизирано изпълнение на заявка като „ValueType(Field1) = ValueType(Field2)“, ако „Field1“ и „Field2“ съдържат стойности на референтен тип.
За управлявани полета на формуляр, които показват атрибут от съставен тип, отварянето на списъка за бърз избор се ускорява в случаите, когато съставният тип включва референтни типове с различни настройкибърз избор.
За новите независими и не периодичен регистъринформация, индексът по измерения е групиран

Промени, изискващи промени в конфигурацията:

Когато режимът на съвместимост е деактивиран, параметърът "Период" на метода "Get()" на мениджъра на регистрите за периодична информация е задължителен. В режим на съвместимост с версия 8.2.13 и версия 8.1 поведението не се е променило (методът може да се използва без посочване на параметър, но резултатът е недефиниран).
Когато използвате методите "SetValue()" и "UseFromDataSource()" на обекта "DataLockItemItem" едновременно, се генерира изключение. В режим на съвместимост с версия 8.2.13 поведението не се е променило (приоритетът се дава на стойността, зададена от метода "UseFromDataSource()").
Съхраняването на стойности на данни, които не поддържат сериализация, не се поддържа. В режим на съвместимост поведението не се е променило.
Ако базата данни е файлова, тогава информационната база трябва да се конвертира. След като преобразуването започне, работата с тази информационна база с предишни версии на платформата 1C:Enterprise 8 ще бъде невъзможна. Ако разработката се извършва с помощта на конфигурационното хранилище, трябва да направите копие на хранилището, преди да конвертирате информационната база

ВАЖНО. За да получите ефекта от промяната на режима на съвместимост, трябва да направите преструктуриране чрез конфигуратора: „Администриране → Тестване и коригиране → Преструктуриране на таблици на информационна база“.

Първо, трябва да извършите преструктуриране на тестова база и да измерите времето за изпълнение на тази операция.
Ако се използва версия на 1C сървър, по-стара от 8.2.19, например версия 8.3, тогава по време на преструктурирането могат да възникнат следните грешки:

В този случай трябва да направите следното:
Инсталирайте отделно 1C сървъра версия 8.2.19 и разположете върху него изследваната база данни
Отворете базата данни в конфигуратора на 1C сървър версия 8.2.19, променете режима на съвместимост на „Не използвайте“
Извършете преструктуриране на таблици на информационна база
След като преструктурирането приключи, преместете информационната база на оригиналния сървър 1C версия 8.3

Цената за прехвърляне на конфигурацията от режим на съвместимост 8.2.13 към режим 8.2.16 (режим на несъвместимост при използване на платформата 8.2.16, 8.2.19 и режим на съвместимост 8.2.16 при използване на платформа 8.3) е 12 000 rub.

Можете да изтеглите образец на трудов договор.

Превод на конфигурацията 8.2.16 → 8.3.10

Работата по превода на конфигурацията включва следните подобрения на конфигурацията:

1. Елиминирайте конфликтите на имена на свойства. Промяна на имената на променливите, за да съответстват на новите свойства, които се появиха в 1C:Enterprise 8.3.
2. Елиминирайте конфликта на имена на снимки. Преименуване на имената на картини с имена, които съответстват на имената от библиотеката с картини.
3. Усъвършенстване на кода при промяна на свойствата на фиксирана структура. Замяна на индикацията за свойства на фиксирана структура с пресъздаване на фиксирана структура или замяна на нейното използване с подобен тип „Структура“.
4. Замяна на несериализирани стойности във временно хранилище с код, поддържан в 1C:Enterprise 8.3.
5. Замяна на използването на извикване на метода “Show” за атрибутите на управлявана форма с използването на свойствата “CurrentElement”, “CurrentPage”, метода “Activate”
6. Замяна на имена на обекти с метаданни с дължина над 80 знака с имена с дължина на името от 80 знака или по-малко за обекти с метаданни
7. Преименуване на методи и свойства, съгласно методиката за преминаване към версия 8.3.
8. Усъвършенстване на механизми за работа със селекции, условен дизайн, групиране и подреждане в динамични списъци.
9. Усъвършенстване на кода за заявки с ключова дума "РЕЗУЛТАТИ ПО ОБЩИ", разтоварени в режим
"Заобикаляне на резултата от заявката. Чрез групиране", за да се запази старата логика на работа.
10. Промени в имената на класове на COM обекти. Замяна на имената "V82.COMConnector" с "V83.COMConnector" и "V82.Application" с "V83.Application".
11. Отказ в кода на програмата от събитието "Старт на SelectionFromList" за полета за въвеждане в режим на избор от списъка
12. Отказ в програмния код от свойството "SelectionListButton" за полета за въвеждане чрез настройка на свойството "DropdownListButton".
13. Промяна на кода, като се вземе предвид промяната в типа на стойността, върната от метода на глобалния контекст "SafeMode ()"
14. Промяна на кода, като се вземе предвид промяната в резултата от заявка към константи (при достъп до полето "Стойност" на таблицата с константи, ако константата съхранява стойност на "ValueStorage", "UniqueIdentifier" или "ExternalDataSourceTableReference" Тип).
15. Замяна на свойството за конфигурация "MainRole" с "MainRoles"
16. Отхвърляне на свойствата "User" и "Password" за обект "InternetProxy" и замяна с методите "Set()", "User()", "Password()".
17. Доработка на кода за поддръжка на командата "Покажи в списъка", съгласно методиката за преминаване към версия 8.3.
18. Усъвършенстване на кода за поддържане на предишната логика на системната работа с променена върната стойност на свойството SystemInformation.OSVersion,
19. Усъвършенстване на кода за поддържане на старата логика на системата, когато не се използва системното изброяване WindowOpeningVariant, което вече не е налично във версия 8.3.
20. Усъвършенстване на кода, като се вземе предвид отказът от използване на модални прозорци.
21. Усъвършенстване на кода за поддръжка на уеб клиента, а именно отхвърляне на извиквания на сървъра и отваряне на прозорци в „Преди затваряне“, отхвърляне на извиквания на сървър в „При затваряне“.
22. Усъвършенстване на кода за възможност за коректно използване на функцията RoleAvailable(), при подаване на функцията като параметър към липсващата роля.
23. За управлявано приложение: започвайки от версия 8.3.8 в манипулатори на събития на управлявано приложение BeforeSystem Shutdown, OnSystem Shutdown, както и в манипулатори на събития на управлявана форма, които са в режим на затваряне, BeforeClose, OnClose, забранено е отварянето на прозорци и извършването на каквито и да е извиквания на сървъра. Необходимо е да се прецизира конфигурацията, така че затварянето на формулярите да се извършва коректно - без извиквания на сървъра.
24. Конфликт на името на променливата: Не можете да използвате името на променливата FormParameters в модул на формуляр. Следователно е необходимо да се финализират всички управлявани модули на формуляри, които използват променливи, наречени FormParameters, чрез преименуване на тези променливи.

Цената за тези работи е предварителна, подходяща за повечето конфигурации. Преди да започнем работа при сключването на договора, проверяваме конфигурацията и след проверка потвърждаваме цената и условията на работа. Проверката е необходима, тъй като конфигурациите могат да бъдат много различни, включително силно пренаписани.

Цена на работа: 76 800 рубли

Можете да изтеглите образец на трудов договор.

Цената за преобразуване на конфигурацията в режим на съвместимост с 8.3.10 може да бъде увеличена, ако:
Конфигурацията използва управлявани формуляри
Необходимо е да се спре използването на модалността
Необходимо е да се поддържа работоспособността на конфигурацията в Linux OS

Излезе нова версия на платформата 8.3.11, която ви позволява да добавяте и модифицирате обекти с метаданни чрез разширение. Можем ли наистина да приложим някакви подобрения сега, без да премахваме конфигурацията от поддръжката? Струва ли си да обещавате планини от злато на клиент без никакви последствия?

На първо място, трябва да сте наясно с ограниченията, които имат разширенията.

Ограничение за създадени обекти

На този моментможете да създадете:

  • Справочници
  • Документите
  • Информационни регистри
  • Планове за обмен

Можете да добавите подробности към:

  • Справочници
  • Документите

Какво получаваме в крайна сметка? Не всички типове обекти с метаданни могат да се добавят. Най-често срещаните и популярни, но все пак не всички. Освен това към информационните регистри не могат да се добавят нови измерения и ресурси. Можете да създадете само напълно нова счетоводна книга.

Функционалността на разширенията зависи от режима на съвместимост на конфигурацията, към която се прилага разширението.

Режим на съвместимост 8.3.8- можете да променяте само формите на обектите и техните модули, да добавяте собствени отчети и обработка.

Режим на съвместимост 8.3.10- можете да променяте общи модули, обектни и мениджърски модули, роли, да използвате директиви "Преди", "След", "Вместо" за всякакви модули.

Режим на съвместимост "Не използвай"- можете да използвате цялата функционалност на разширенията, включително добавяне на нови обекти.

В момента типичният UT 11.3 има режим на съвместимост 8.3.8. В UT 11.4 режимът на съвместимост е 8.3.10, т.е. например за UT, повечето отфункционалността на разширението не е налична, включително създаването на обекти с метаданни.

Изглежда, че това повдига въпроса: защо просто не спрете поддръжката на root, зададете режима на съвместимост на „Не използвайте“ и безопасно използвайте разширенията? Когато промените режима на съвместимост, поведението на формулярите, резултатите от заявките, т.е. поведение на системата като цяло. Силно препоръчваме да не променяте режима на съвместимост, без първо да го тествате. Но е очевидно, че е възможно да се тества изцяло (или поне част от използваните документи) цялостно приложно решение. Следователно тази опция не трябва да се използва.

Когато свързвате разширение към типична конфигурация, заемайки типични обекти, разширението контролира режима на съвместимост на основната конфигурация и типовете заети обекти и техните атрибути. Ако контролираните свойства не съвпадат, разширението е деактивирано и не работи, докато причината не бъде отстранена. Тоест при голяма актуализация има голяма вероятност поне едно от контролираните свойства да се промени и разширението да загуби своята функционалност.


Освен това, ако подобренията са значителни, много процедури и функции на стандартната конфигурация са заменени, ще е необходимо внимателно да ги контролирате и, ако е необходимо, да ги приведете в съответствие със стандартната конфигурация, като запазите направените по-рано промени.


В горните случаи все още се нуждаете от помощта на програмист и вероятно значително време за ревизия (но все още по-малко, отколкото при актуализиране на конфигурация, която е премахната от поддръжка).

заключения

  • Новата версия на платформата даде нови възможности за използване на разширения, стана възможно добавянето на обекти с метаданни, но въпреки това функционалността има определени ограничения.
  • Режимът на съвместимост на конфигурацията, към която се прилага разширението, силно ограничава обхвата на разширението и не се препоръчва да променяте режима на съвместимост.
  • Големите актуализации все още изискват вниманието на разработчика, тъй като има голяма вероятност от промени в контролираните свойства.

Внедрено във версия 8.3.6.1977.

Ние внедрихме принципно нов механизъм за адаптиране на приложените решения към конкретен потребител - механизмът за разширение.

Защо разширенията са добри?

Разширенията предлагат различна стратегия от съществуващата за промяна на типичните конфигурации. Използването на тази нова стратегия значително ще улесни поддръжката на стандартни решения, които искате да адаптирате към нуждите на конкретна реализация, конкретен клиент.

Как изглежда този процес сега? Има типична конфигурация. Той е под пълна поддръжка от доставчика. Това означава, че не може да се промени. Периодично доставчикът пуска нови (подобрени) версии на тази конфигурация. В такава ситуация актуализирайте Стара версияконфигурацията за новата версия се извършва напълно автоматично. Удобен е и не изисква специални умения и знания от клиента.

Но често клиентът иска да добави нещо или да промени нещо в типична конфигурация „за себе си“. За да направите това, режимът на поддръжка се променя, конфигурацията се премахва от пълна поддръжка. Партньорът по внедряването или собствените ИТ специалисти на клиента правят необходимите промени в него. От този момент нататък напълно автоматичното актуализиране на типичната конфигурация до новата версия, пусната от доставчика, става невъзможно.

Сега актуализирането на конфигурацията изисква участието на специалист. Освен това, ако промените, направени по желание на клиента, са били значителни, тогава специалистът, извършващ актуализацията на конфигурацията, също може да изисква значително време. И често може да се изисква много добро познаване както на самата типична конфигурация, така и на направените модификации.

Стратегията, предлагана от разширенията, е следната. Ако искате да промените типичната конфигурация, не докосвайте самата конфигурация. Всички промени, които правите в разширението, което всъщност също е конфигурация.

В режим 1C:Enterprise просто свързвате вашето разширение към стандартната конфигурация. Платформата автоматично, в режим 1C:Enterprise, комбинира вашето разширение с типична конфигурация. В резултат на това клиентът работи с модифицирано, според неговите желания, стандартно решение.

Когато доставчик пусне нова версия на генеричната конфигурация, се извършва автоматична актуализация, тъй като режимът на поддръжка на генеричната конфигурация не е променен. Тя остана на пълната подкрепа на доставчика. И когато стартирате актуализирано решение за приложение, платформата отново автоматично ще обедини променената типична конфигурация с вашето разширение. И клиентът ще продължи да работи с модифицирано, според неговите желания, стандартно решение.

Кога трябва да използвате разширения?

Механизмът за удължаване е изкусителен поради своята гъвкавост. Ето защо е важно да имате правилна представа какви задачи е предназначен да реши.

Първо, разширенията са незаменими, когато приложеното решение работи в режим на споделяне на данни. Например в сервизния модел. Един от абонатите иска да има няколко допълнителни отчета. Докато други абонати искат да работят с непроменена стандартна конфигурация.

Тогава именно за този абонат можете да разработите разширение, в което да реализирате всички негови желания. Абонатът ще свърже това разширение към себе си и ще работи с променената конфигурация. Докато за други абонати няма да настъпят промени. Тъй като всички разширения са свързани и стартирани в контекста на текущите стойности на разделителя.

Друга ситуация е завършването на типична конфигурация за конкретен клиент при неговото внедряване. Или подобрения на стандартната конфигурация, които се извършват самостоятелно от ИТ специалистите на клиента. Ако всички тези подобрения бъдат направени в разширението, тогава типичната конфигурация ще остане напълно поддържана, което значително ще опрости по-нататъшната й поддръжка.

Има изкушение да използвате разширения за създаване на репликирани решения за приложения, но не трябва да правите това. Първо, защото разширенията не са предназначени за такива задачи. И второ, защото други механизми на платформата, като механизми за доставка и поддръжка, не знаят нищо за разширенията.

Ако погледнете малко в историята на появата на разширенията, тогава, разбира се, сме виждали преди и виждаме сега, че конфигурациите стават все по-сложни. Виждаме, че е необходима повече подкрепа различни ниваразработки: библиотечни, модулни и индустриални и др. Анализирахме всички тези задачи и стигнахме до извода, че най-високият приоритет в момента е адаптирането на конфигурациите към желанията на потребителите по време на внедряването.

Именно за тази задача създадохме механизма за разширение. Разбира се, в него можете да забележите различни характеристики на останалите изброени области на развитие. Но те не са основната му цел и не трябва да ви объркват.

Какво може да се промени вече с помощта на разширения?

Досега не е направено много от планираното. Механизмът, разбира се, ще се развива. Но това, което вече е направено, може да бъде полезно в много случаи при реализации. Сега:

  • Може да се променя управлявани форми, съществуващи в типична конфигурация;
  • Можете да добавите нови подсистеми. Можете да промените състава на подсистемите, налични в типична конфигурация;
  • Може да се променя ролитипична конфигурация чрез добавяне на обекти, създадени в разширението към тях;
  • Може да се променя команден интерфейстипична конфигурация (основен дял, подсистеми);
  • Можете да добавите нови докладии обработка.

В бъдеще планираме постепенно да увеличаваме функционалността на разширенията и ще се радваме да получим вашето мнение коя функционалност е най-търсена за внедрявания с малки модификации.

Как е структурирано разширението?

Разширението е много подобно на нормалната конфигурация. Той също така е представен като дърво от обекти. За работа с разширението се използват същите методи на работа, както при обичайната конфигурация.

Важна характеристика на разширението е присъствието заети предмети. Можете да вземете назаем всеки обект с типична конфигурация, като използвате командата от контекстното меню:

Заетите предмети не винаги са необходими. Най-добрият начин да обясним това е с „битов” пример, ако направим аналогия с обяд в ресторант.

Първата ситуация е, когато са необходими заети предмети.

Свикнали сте да обядвате в един и същи ресторант. Винаги си поръчваш пържола и чай. Например, защото в този ресторант са много добри. Или по друга причина. Няма значение. Единственото важно нещо е, че ще ги изядете и нищо друго.

Тогава ресторантът е типична информационна база. Вие сте разширение. Менюто на ресторанта е разширяема стандартна конфигурация. Бифтек и чай са заети предмети. Вие ги взехте назаем (не забравяйте, че са в менюто).

Как разширението се свързва с конфигурацията и работи? Отивате в ресторант и питате за меню. В менюто виждате, че има пържола и чай. Тоест установявате съответствие между заети обекти и обекти с типична конфигурация. Естествено си пасвате по име :). Носят ти пържола и чай, ядеш ги. Тоест разширението е свързано и работи.

Седмица по-късно идвате, но менюто на ресторанта е променено (стандартната конфигурация е актуализирана). Менюто обаче продължава да включва пържола и чай. Те са точно това, от което се нуждаете. Носят ти ги, ядеш ги. Тоест разширението продължава да работи с актуализираната типична конфигурация.

Седмица по-късно идвате в ресторант и виждате, че пържолата и чаят са изчезнали от менюто. Ставате и си тръгвате (съобщение за грешка във връзката на разширение). Защото си ги искал. А за други ястия (предмети) си нямаш представа. Разработчикът не ви е научил как да ядете правилно охлюви или омари.

Друга ситуация, в която можете да правите без предмети назаем.

Отивате на ресторант, но не се интересувате от наличието на конкретни ястия. Защото така или иначе няма да ги ядеш. Искаш само да ги снимаш. И знаете как да снимате всяко ястие. След това просто се свързвате с конфигурацията и казвате донесете каквито и закуски да имате в менюто (вземете колекцията от документи от метаданните). Ще ги изпратя (снимайте).

Ако опишете това на сухия език на разработчиците, се оказва, че трябва да заемате обекти:

  • Когато са необходими за визуален дизайн. Например, вие разширявате формуляр и добавяте подпорки за формуляри като Референтна валута.Връзка. След това, разбира се, трябва да заемете наръчник Валути, така че когато се свързвате към типична конфигурация, можете да сте сигурни, че такава директория все още съществува в нея.
  • Когато са необходими, за да работи кодът. Например в кода на разширението се позовавате на референтния атрибут Номенклатура - Вносител. Тогава този атрибут също трябва да бъде заимстван, за да сте сигурни при свързване, че в типичната конфигурация такъв атрибут все още съществува в директорията Номенклатура.

Свързване на разширение

Създавате разширение в конфигуратора. След отстраняване на грешки и тестване можете да го отхвърлите, като запазите разширението във файл *.cfe.

Можете да изпратите този файл на клиента. Клиентът ще го качи самостоятелно в своята информационна база в режим 1C:Enterprise, като използва стандартната функция Управление на разширения за конфигурация.

Работата с разширения е достъпна от вградения език, така че в приложеното решение можете да създадете своя собствена обработка, която ще зарежда разширения. За да попречим на всички да си „играят“ с разширенията, добавихме ново право - Администриране на разширения за конфигурация.

При зареждане на разширение от файл, то се съхранява в информационна база. Освен това, той се запазва в контекста на текущите стойности на разделителите, използвани в тази сесия.

За да "работи" разширението, сесията трябва да се рестартира. В началото на сесията, точно преди извикването на събитието Настройка на параметрите на сесията, ще бъдат включени всички разширения, съхранени в информационната база и съответстващи на стойностите на разделителя на текущата сесия.

В резултат на това, когато работите в режим на споделяне на данни, разширението ще се прилага само за потребителите на този конкретен абонат. И ако не се използва разделяне на данни, тогава разширението ще работи за всички потребители на информационната база.

При свързване на разширение, както вече казахме, се контролира дали има заети обекти в типична конфигурация. Обектите се съпоставят по име.

Освен това е възможно и по-фин контрол. Можете да контролирате не само самото съществуване на обектите, но и състоянието на техните индивидуални свойства. Тоест, ако мислите за ресторант и пържола, за вас може да е важно не само наличието на някак сготвена пържола, а точно фактът, че тук тя е приготвена сурово, „с кръв“.

Връщайки се към разширението, по подразбиране то не контролира свойствата на заети обекти. Но ако трябва, можете да направите някои свойства контролирани. Например, за вашия алгоритъм е важно не само да има директория Номенклатура, но също така, че неговият код е от тип Линия.

След това, ако в типична конфигурация доставчикът промени типа код на тази директория на Номер, вашето разширение ще открие това по време на свързване и ще съобщи за грешка.

Интересен момент е свързан с преименуването на типични конфигурационни обекти. Например, дойдохте в ресторант и вместо менюто Пържоланаписана Пържола. Тоест, когато се свързва с конфигурацията, разширението не намира директория в нея. Номенклатура, защото продавачът го преименува на Продукти.

Сега тази ситуация не е проблем за вас. И не е нужно да „изгребвате“ целия код на разширението, така че вместо Номенклатурапишете Продукти. Работи и. Така че просто трябва да промените името на заетия обект на Продукти, а платформата ще направи останалите промени в самото разширение. Или с вашата минимална помощ.

Работа по разширяване

Можете да говорите дълго време за характеристиките на разширението на различни обекти, за характеристиките на работата на самите разширения. Но ние сме ограничени от обхвата на обзорната статия, така че ще се докоснем само до ключовите и най-разкриващите точки.

Основният "чар" на разширенията, разбира се, не е, че можете да добавите нещо към типичната конфигурация, което не е в нея. И фактът, че в разширението можете да промените това, което вече е в типичната конфигурация. Тоест можете да промените свойствата на заети обекти.

Основната концепция, използвана, когато конфигурацията и разширението работят заедно, може да бъде описана по следния начин. В онези места, където те "не се пресичат", разширението допълва конфигурацията. В тези места, където те се "пресичат" - се прилага разширението.

Можете да видите това по-подробно на примера на управлявани форми. Можете да вземете формуляр от основната конфигурация и да го редактирате в разширението без ограничения. За визуалната част на формуляра и за неговия модул се използват две различни стратегии за сливане.

Визуалната част на формуляра е фиксирана в разширението в момента на заемането му. И в режим 1C:Enterprise за всеки елемент на формуляра се анализират промените спрямо това състояние в стандартната конфигурация и в разширението.

Ако няма промени или са били само в типичната конфигурация, се прилага стойността от типичната конфигурация. В противен случай се използва стойността от разширението.

По този начин, ако добавите нова команда към формуляра в разширението, ще я видите заедно с останалите команди на формуляра. И ако сте променили заглавието на съществуваща група, тогава ще видите вашето заглавие, дори ако доставчикът промени заглавието на тази група в типична конфигурация.

Модулите с формуляри имат различен подход. За заимствана форма разширението създава свой собствен модул със собствени манипулатори за всички събития. В режим 1C:Enterprise и двата модула на формуляр (от стандартната конфигурация и от разширението) се комбинират в един контекст. Поради тази причина всяко разширение има свой собствен префикс, който се добавя към манипулаторите на всички събития в модула формуляр. За да няма съвпадения с манипулатори от типичната конфигурация. След това манипулаторите на събития и команди се извикват последователно и синхронно. Първо, манипулаторът от разширението. След това от типичната конфигурация. Можете да промените тази последователност или напълно да забраните изпълнението на манипулатора от типичната конфигурация.

Като цяло, по отношение на съвместната работа на конфигурацията и разширението в режим 1C:Enterprise, те съществуват в общо пространство от имена. Това се отнася не само за отделните модули, но и за самите дървета с метаданни. Следователно в режим 1C:Enterprise няма начин да се определи дали този обект е "роден" за типична конфигурация или идва от разширение.

Що се отнася до останалите обекти, които можете да използвате в разширението, за тях всичко изглежда много по-просто.

В разширението можете да създадете свои собствени подсистеми. Използвайки заети обекти, можете да разширите съществуващите подсистеми: да добавите към тях обекти и подсистеми, които вече са в стандартната конфигурация, или тези, които сте създали в разширението. Не можете да премахнете нещо от съществуваща подсистема.

Можете да разширите роли само като добавите към тях обекти, създадени в разширението. Не можете да премахнете нищо и от съществуваща роля. Същото важи и за командния интерфейс.

Разширението е почти конфигурация

В началото казахме, че разширението е подобно на нормалната конфигурация. Ето защо, в заключение, бих искал да кажа няколко думи за това как разширенията се интегрират с други механизми на платформата.

Разширението (като нормална конфигурация) има основна конфигурация и конфигурация на база данни. Механизмът за сравняване и обединяване на конфигурации работи с разширенията по същия начин, както с обикновените конфигурации.

Можете да разтоварите разширението във файл (но с различно *.cfe разширение) и да заредите от файл. Разширенията могат да се разтоварват/зареждат в XML.

Механизмите за глобално търсене, замяна, редактиране на интерфейсни текстове също работят с разширения.

Има нови опции на командния ред за работа с разширения, както и нови събития в дневника.

Във вградения език основният обект за работа с разширения е Конфигурация на диспечера на разширенията.

Пуснахме нова версия на панела за телефония за 1C.

  • версия 1.2.24.10 за обикновениприложения
  • версия 1.4.26.17 за управляванаприложения

Във версията на изданието за управлявано приложение стана възможно вграждането на панел за телефония с минимални модификацииосновна конфигурация с разширителен механизъмконфигурация.

Ползи от използването на разширението

Разширението е много подобно на нормалната конфигурация. За работа с него се използват същите методи на работа, както при обичайната конфигурация. Разширенията се създават основно, за да улеснят извършването на промени в програмата. Сега не е нужно да вмъквате „парчета код“ в определени модули и да добавяте нови обекти с метаданни, просто добавете разширение към конфигурацията.

Голямото предимство на използването на разширения е автоматична актуализацияосновна конфигурация. Сега няма нужда да променяте настройките за поддръжка за типична конфигурация.

Характеристики на вграждане на телефонен панел за 1C

Такива функции станаха достъпни за разширения за платформата, като се започне от версията 8.3.9.1818 . Следователно, за да се възползваме от това, ние деактивирахме режима на съвместимост за разширението, тъй като версията 8.3.9 все още не се поддържа. Съответно става необходимо да деактивирате режима на съвместимост за основната конфигурация, в противен случай ще възникне грешка: " Режимът на съвместимост на разширението на конфигурацията е по-голям от режима на съвместимост на основната конфигурация".

2) В основната конфигурация добавяме ролята MIKO_Softphone, за което премахваме всички права.

При добавяне на нов обект на метаданни, в този случай роля, е необходимо да се актуализира директорията Идентификатори на обекти с метаданни. Когато добавихме тази роля към разширението, типичните конфигурации я игнорираха, тоест при актуализиране на директорията MetadataObjectIdentifiers ролята не се появи в нея. Поради това механизмът на настройките на профила на телефонния панел не работи правилно, възникна грешка: " Идентификаторът на обект с метаданни не е намерен за ролята на MIKO_Softphone".

Освен това тази ситуация не се случи във всички конфигурации, както в "Управление на търговията, 11.2.3.218"и „Интегрирана автоматизация, 2.0.3.222“нямаше проблеми с ролята, когато беше добавена към самото разширение. За да осигурим известна гъвкавост в нашето решение и да осигурим безпроблемна работа в повечето от конфигурациите, които поддържаме, решихме да добавим ролята MIKO_софтфонв основната конфигурация и го заемете в разширението и след това внедрите настройките за тази роля в разширението.

Много важна характеристика е фактът, че ако след като вградите нашето разширение, искате да вградите панела според старите ни инструкции, трябва да деактивирате разширението и да премахнете ролята на MIKO_softphone. Ако искате да използвате разширението отново, трябва първо да добавите ролята и след това да добавите разширението.

Обобщаване

Дори включвайки възможността за промяна на основната конфигурация и извършване на минимални промени в конфигурацията, ние направихме процеса на вграждане на панел за телефония много по-лесен. Сега не е необходимо да правите промени в модулите на управляваното приложение, да добавяте обработка и подсистеми към конфигурацията или да настройвате роли. Разширението ще направи всичко това вместо вас! Ще продължим да подобряваме процеса на вграждане на телефонен панел за 1C!

Намират се инструкции за вграждане на телефонен панел за 1C с помощта на механизма за разширение.

Задайте вашите въпроси чрез формата за обратна връзка.

© 2019. MIKO LLC Всички права запазени.