Расширение методов с контролем &ИзменениеИКонтроль
Замещает текст модуля, контролирует изменение метода в основной конфигурации и помогает обновить блоки исходного кода метода при объединении.
В Зазеркалье неправильный синтаксис, Зазеркалью верить нельзя
#расширения
Замещает текст модуля, контролирует изменение метода в основной конфигурации и помогает обновить блоки исходного кода метода при объединении.
&ИзменениеИКонтроль("ИмяМетода")
Функция Расш1_ИмяМетода()
<исходный код, который не трогаем>
#Удаление
<исходный код, который убираем>
#КонецУдаления
#Вставка
<новый код, который добавляем>
#КонецВставки
<исходный код, который не трогаем>
КонецФункции
Подробнее: ИТСВ Зазеркалье неправильный синтаксис, Зазеркалью верить нельзя
#расширения
Заимствование задействованных реквизитов в расширение
При доработке функциональности объектов мы заимствуем в расширение метод, который будем дорабатывать. Например, заимствуем метод обработчика
Для контроля изменения и наличия реквизитов и объектов, задействованных в добавляемой логике, нужно заимствовать эти реквизиты и объекты в расширение. Для примера выше это реквизиты
@yellow_pad | #1С #Расширения
При доработке функциональности объектов мы заимствуем в расширение метод, который будем дорабатывать. Например, заимствуем метод обработчика
ОбработкаПроверкиЗаполнения
, чтобы добавить проверку заполнения типовых реквизитов - ДатаОтгрузки
не может быть меньше ДатаЗаказа
.Для контроля изменения и наличия реквизитов и объектов, задействованных в добавляемой логике, нужно заимствовать эти реквизиты и объекты в расширение. Для примера выше это реквизиты
ДатаОтгрузки
и ДатаЗаказа
. И сделать это программисту нужно самостоятельно.@yellow_pad | #1С #Расширения
Как расширением сделать функцию экспортной?
Собственно добавить
@yellow_log | #1С #Расширения #ОбщиеМодули
Собственно добавить
Экспорт
нельзя, но можно сделать в расширении новую экспортную функцию, которая будет вызывать исходную.@yellow_log | #1С #Расширения #ОбщиеМодули
Использование недоступных в расширении событий
Ситуация на скриншоте: не все события ТЧ доступны для использования в расширении. Сделано это было в редакции 8.3.14, чтобы сократить количество заимствованных свойств формы: см. Упрощение работы с расширениями формы в Зазеркалье.
Способ решения - добавить в модуль расширения формы метод нужного обработчика:
Ситуация на скриншоте: не все события ТЧ доступны для использования в расширении. Сделано это было в редакции 8.3.14, чтобы сократить количество заимствованных свойств формы: см. Упрощение работы с расширениями формы в Зазеркалье.
Способ решения - добавить в модуль расширения формы метод нужного обработчика:
&НаКлиентеА в
Процедура ext_ТоварыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
...
КонецПроцедуры
ПриСозданииНаСервере
(или в методе программной доработки формы) назначить обработчик события программно:ЭтаФорма.Элементы.Товары.УстановитьДействие("ПриНачалеРедактирования", "ext_ТоварыПриНачалеРедактирования");@yellow_pad | #1С #Расширения #Форма #ОбработчикиСобытий
Порядок выполнения кода расширений
Расширения выполняются в порядке приоритетов их назначений. Но это не прямая последовательность выполнения кода, а именно приоритеты применения.
Расширения накрывают друг друга в соответствии с этими приоритетами, создавая новые слои логики. И если, например, в аннотации
@yellow_pad | #1С #Расширения #Аннотации
Расширения выполняются в порядке приоритетов их назначений. Но это не прямая последовательность выполнения кода, а именно приоритеты применения.
Расширения накрывают друг друга в соответствии с этими приоритетами, создавая новые слои логики. И если, например, в аннотации
&После
последовательность выполнения - это прямая очередь приоритетов (1-2-3), то в аннотации &Перед
- обратная (3-2-1).@yellow_pad | #1С #Расширения #Аннотации
Заимствование объектов расширения в другое расширение
Такой возможности нет. Что делать, если нужно использовать в реквизите документа одного расширения ссылку на справочник другого расширения?
Программно расширения друг друга видят - можно использовать реквизит с типом УникальныйИдентификатор и программно обработать его заполнение (например из реквизита формы). Это сложно и может нарушить ссылочную целостность, но тоже вариант, если нет других вариантов. Например, когда нельзя добавлять объекты в основную конфигурацию или объединить два расширения в одно.
@yellow_pad | #1С #Расширения
Такой возможности нет. Что делать, если нужно использовать в реквизите документа одного расширения ссылку на справочник другого расширения?
Программно расширения друг друга видят - можно использовать реквизит с типом УникальныйИдентификатор и программно обработать его заполнение (например из реквизита формы). Это сложно и может нарушить ссылочную целостность, но тоже вариант, если нет других вариантов. Например, когда нельзя добавлять объекты в основную конфигурацию или объединить два расширения в одно.
@yellow_pad | #1С #Расширения