Работа с расширением
1С: Предприятие 8.3.13 . Документация
Руководство администратора
Глава 33. Расширение конфигурации
33.3. Работа с расширением
33.3.1. Создание заимствованного объекта
Для того, чтобы выполнить заимствование объекта, необходимо воспользоваться командой Добавить в расширение контекстного меню объекта конфигурации. После выполнения данной команды в расширении создается заимствованный объект. При создании заимствованного объекта заимствуются также все родительские объекты, если они еще не заимствованы в данном расширении. Подчиненные объекты не заимствуются. Поясним поведение на примерах.
Предположим, что в расширяемой конфигурации существует справочник Товары, который представлен некоторой структурой, которая представлена на рис. 683.
Рис. 683. Структура справочника Товары
Если добавить в расширение непосредственно сам справочник, то никакие подчиненные объекты добавлены не будут, что видно на рис. 684.
Рис. 684. После добавления объекта
Если теперь добавить форму справочника Товары, например форму элемента, то сам справочник уже заимствован и будет заимствована форма и все объекты конфигурации, которые образуют данные, отображаемые на форме. Заимствование выполняется в объеме, достаточном для функционирования редактора формы.
Рис. 685. После добавления объекта с родителями
На рис. 685 видно, что кроме добавляемой формы ФормаЭлемента были добавлены также:
● Все реквизиты, которые присутствуют на форме;
● Все объекты, которые образуют типы реквизитов, присутствующих на форме.
При заимствовании составного типа поведение зависит от характеристик такого типа:
● Если в составной тип может входить тип Произвольный, то любой составной тип для такого реквизита будет заимствован как составной тип, состоящий из единственного типа Произвольный.
● Если в составной тип не может входить тип Произвольный, то такой составной тип будет заимствован по следующим правилам:
● Если составной тип включает в свой состав только примитивные типы, то будут заимствованы все типы, образующие составной тип.
● Если в составной тип входит хотя бы один ссылочный тип (СправочникСсылка, ДокументСсылка и т. д.), то такой тип будет заимствован как простой тип ЛюбаяСсылка.
При заимствовании параметрической команды не происходит заимствование параметра команды и, как следствие, объекта конфигурации, определяющий тип параметра. В случае необходимости следует самостоятельно выполнить заимствование объекта (или объектов, если тип составной) конфигурации, определяющего тип параметра команды и затем указать этот объект в качестве типа параметра заимствованной команды.
33.3.2. Работа с заимствованным объектом
Работа с заимствованным объектом имеет некоторые особенности.
Рис. 686. Свойства заимствованного объекта
Во-первых, у заимствованного объекта присутствуют только те свойства, которые могут быть установлены контролируемыми или модифицируемыми. Эта возможность (установка контролируемых или модифицируемых свойств, подробнее см. здесь) является второй особенностью панели свойств заимствованного объекта. Для указания контролируемого свойства, следует установить флажок перед именем свойства. На рис. 686 видно, что для справочника Товары указаны следующие контролируемые свойства: Иерархический, Длина наименования,Тип кода и Допустимая длина кода. Модифицируемое свойство отмечается флажком другого вида в панели свойств. На рис. 686 видно, что свойство Основная форма отмечено как модифицируемое.
Изменение свойств заимствованного объекта следует делать осторожно. Если какое-либо свойство указано в качестве контролируемого, то расширение не будет подключено в том случае, если значение этого свойства в расширяемой конфигурации отличается. Также следует помнить, что Имя объекта метаданных всегда является контролируемым реквизитом. Если в расширяемой конфигурации, на момент создания расширения, справочник имел имя Товары, а потом был переименован в Номенклатура, то расширение перестанет работать до тех пор, пока для заимствованного справочника в расширении также не будет установлено имя Номенклатура. То же самое верно для значений других контролируемых свойств.
Если свойство является модифицируемым, то соответствующее свойство в результирующем объекте будет получено из расширения. Если в информационной базе (или области данных) подключено несколько расширений ‑ модифицируемое свойство получит значение из расширения, указанного последним в списке расширений (см. здесь).
Если свойство отмечено как модифицируемое, но значение свойства не указано, то поведение системы аналогично поведению системы с неуказанным значением свойства в обычной конфигурации (без расширений). Так, например, если в качестве модифицируемого указано свойство конфигурации Основная форма отчета, а собственно форма не указана, то в качестве основной формы отчета будет выступать форма, автоматически сгенерированная системой.
33.3.3. Создание собственного объекта
В расширении можно не только создавать заимствованные объекты, но и собственные. Создание и редактирование собственных объектов расширения ничем не отличается от аналогичных действий в расширяемой конфигурации. Контроль уникальности имен собственных объектов выполняется:
● При подключении расширения ‑ среди имен расширяемой конфигурации и всех расширений;
● При разработке расширения ‑ среди имен расширяемой конфигурации и того расширения, в котором создается собственный объект.
Если в расширяемой конфигурации, например, существует обработка ПоискВДанных, то ни в одном расширении не может существовать одноименной обработки.
При создании собственного объекта, этот объект получает префикс, который задается при создании расширения.
33.3.4. Блокировка расширений
В связи с тем, что список расширений является единым и для доступа из конфигуратора и для доступа из «1С:Предприятия», система не позволяет выполнять взаимоисключающие действия. Другими словами, если в Конфигураторе открыто окно с расширением, то его невозможно удалить из списка расширений в режиме «1С:Предприятия». Расширение, во время записи в информационную базу в режиме «1С:Предприятия», в конфигураторе является недоступным для любых операций с ним.
33.3.5. Совместная разработка расширения
Разработку расширения можно выполнять с использованием хранилища конфигурации. Каждое расширение считается отдельной конфигурацией и для него создается отдельное хранилище конфигурации. Не поддерживается:
● Хранение расширений в том же хранилище конфигурации, что и расширяемая конфигурация.
● Хранение в одном хранилище конфигурации нескольких расширений.
● Возможность подключения расширяемой конфигурации к хранилищу расширения и наоборот.
В общем, работа с хранилищем конфигурации для расширения ничем не отличается от работы с хранилищем конфигурации для расширяемой конфигурации. Разработчику предоставляется возможность захватывать объекты, помещать их в хранилище, формировать отчеты по хранилищу, сравнивать объекты из основной конфигурации расширения и хранилища и т. д.
Команды работы с расширением расположены в меню Конфигурация ‑ Хранилище конфигурации окна Расширения конфигурации.
Рис. 687. Доступ к командам работы с хранилищем конфигурации для расширения
В окне с деревом метаданных расширения, команды работы с хранилищем доступны в контекстном меню, аналогично дереву основной конфигурации.
Смотри также:
● Хранилище конфигурации (см. здесь).
Как сделать присваивание типу ЛюбаяСсылка? В конфигураторе при отладке у реквизита такого типа значение “Неопределено” и при попытке присвоить ему ссылочный тип ничего не записывается в него.
ПривестиЗначение(<Значение>)
Формирует значение на основании описания типа и переданного значения.
Пример:
// В форме расположено табличное поле Товары, в котором для ячейки
// колонки Номенклатура определено событие НачалоВыбора, процедура
// обработчик которого приведена в примере
Процедура ТоварыНоменклатураНачалоВыбора(Элемент,СтандартнаяОбработка)
ТипСтр = “СправочникСсылка.Номенклатура”;
Элемент.ОграничениеТипа = Новый ОписаниеТипов(ТипСтр);
Значение = Элемент.Значение
Элемент.Значение = Элемент.ОграничениеТипа.ПривестиЗначение(Значение);
Элемент.ВыбиратьТип = Ложь;
КонецПроцедуры
Создал в расширении свой документ, но вот включить его в какой-либо журнал не получается. Что делать?
Добрый день!
Поместил в расширение документ из основной конфигурации. Добавил реквизит. При открытии документа мой реквизит виден и может меняться. Но обратиться к нему из программы не могу: программа не видет реквизит. Подскажите, почему?