Расширения конфигурации. Полезные советы для разработки

04.03.21

Разработка - Механизмы платформы 1С

Полезные советы для разработки и применения расширений. Как подключить отладку, как сохранять данные, последовательность обработчиков, использование модуля менеджера и другое.

0. Введение

1. Показать/скрыть неизмененные объекты

2. Последовательность выполнения обработчиков

а) Типовой код -> Код из расширения

б) Код из расширения -> Типовой код -> Код из расширения

в) Типовой код -> Код из расширения -> Типовой код

г) Отменить типовые обработчики

3. Создание и использование общего модуля, модуля менеджера или модуля объекта

4. Как подключить отладку

5. Как писать запросы

6. Как сохранять данные

а) Сохранение данных формы

б) Хранилище пользовательских настроек

7. Как добавить свой макет

8. Как подменить кнопку заполнения табличной части

9. Расширение как багфикс

10. Как вывести свою обработку в интерфейс

11. Как перевести расширение на 8.3.8

12. Как подключить расширение

13. Как обновить расширение

Благодарность

Комментарии

 

0. Введение

 

Механизм расширения конфигурации появился в платформе 8.3.6 и соответственно может применяться в конфигурациях с отключенной совместимостью. На текущий момент все типовые конфигурации на управляемых формах поддерживают работу с расширениями. Рассмотрим подробнее, что это за механизм.

Согласно документации:

"Механизм расширения конфигурации – это специальный механизм, предназначенный для доработки расширяемой конфигурации без изменения этой конфигурации (в том числе без снятия с поддержки).

Основное назначение расширения конфигурации – это доработка прикладного решения при внедрении (или в «облаке») под нужды клиента. При этом дорабатываемую конфигурацию не надо снимать с поддержки. В результате сохраняется простота обновления типового прикладного решения, стоящего на поддержке, с необходимостью выполнять доработки. При разработке расширения следует понимать некоторые особенности функционирования расширения конфигурации. Так, расширяемая конфигурация в любой момент может быть изменена, например, в результате обновления. При этом разработчик расширения не может никак повлиять на возможность или невозможность обновления. Также следует учитывать тот факт, что в системе могут функционировать более одного расширения и автор каждого расширения (в общем случае) не знает, как функционирует другое расширение."

Более подробно о расширениях можно почитать и посмотреть здесь:

Заметки в зазеркалье
Документация
Курсы Гилёва и Насипова
Нюансы расширений
Расширения в 8.3.9

Все функции для объектов расширения

Ниже я приведу полезные советы для работы с расширениями. 

Возможно некоторые покажутся слишком простыми или очевидными, но они могут быть полезны тем, кто только начинает свою работу с расширениями.
Также с удовольствием дополню вашими советами из комментариев.

 

Итак, поехали!


1. Показать/скрыть неизмененные объекты
 

При добавлении новых объектов в расширение также автоматически добавляются связанные объекты. В результате в метаданных расширения скапливается много служебных объектов.
Для того, чтобы показать только измененные объекты есть кнопка “Измененные и добавленные в расширении”. При нажатии отображаются только добавленные вручную и измененные объекты расширения.
Принцип её работы показан ниже:

 

 

2. Последовательность выполнения обработчиков
 

Если в расширении переопределить событие или команду, то по умолчанию сначала выполняется обработчик из расширения, а затем обработчик типовой конфигурации.
Это не всегда удобно, например, когда какие-то операции следует выполнить после типовых обработчиков.
Рассмотрим примеры, которые позволяют изменить эту последовательность:

а) Выполнить сначала типовой код, затем код из расширения:

&НаСервере
Процедура Учеб_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("Сообщение", "ПослеТиповогоОбработчика!");
	УстановитьВыполнениеПослеОбработчиковСобытия("ВыполнитьПослеТиповогоОбработчика", ДополнительныеПараметры);
	
КонецПроцедуры

&НаСервере
Процедура ВыполнитьПослеТиповогоОбработчика(Отказ, СтандартнаяОбработка, ДополнительныеПараметры)

	Сообщить(ДополнительныеПараметры.Сообщение);

КонецПроцедуры

б) Выполнить сначала код из расширения, затем типовой код, затем опять код из расширения 

&НаСервере
Процедура Учеб_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Процедуры до типовых обработчиков
	Сообщить("До типового обработчика!");
	
	// Устанавливаем обработчик после типового обработчика событий
	УстановитьВыполнениеПослеОбработчиковСобытия("ВыполнитьПослеТиповогоОбработчика");
	// Дальше будет выполнен код из типового обработчика

КонецПроцедуры

&НаСервере
Процедура ВыполнитьПослеТиповогоОбработчика(Отказ, СтандартнаяОбработка, ДополнительныеПараметры)

	// Код после типового обработчика из расширения
	Сообщить("После типового обработчика!");

КонецПроцедуры

в) Выполнить сначала типовой код, затем код из расширения, затем снова типовой код

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

&НаСервере
Процедура Учеб_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Процедуры до типовых обработчиков
	Сообщить("ДоТиповогоОбработчика!");
	
	// Процедуры из типового обработчика
	Если НЕ ЗначениеЗаполнено(БанковскийСчет.ВалютаДенежныхСредств) Тогда
		БанковскийСчет.ВалютаДенежныхСредств = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета();
	КонецЕсли;
	
	РазместитьКонтактнуюИнформацию();
	
	Если Параметры.Ключ.Пустая() Тогда
		ПодготовитьФормуНаСервере();
	КонецЕсли;
	
	УправлениеФормой(ЭтаФорма);
	
	// Процедуры после типовых обработчиков
	Сообщить("ПослеТиповогоОбработчика!");
	
	// Остановим выполнение типовых обработчиков
	УстановитьВыполнениеОбработчиковСобытия(Ложь);
	
КонецПроцедуры

г) Отменить типовые обработчики 

&НаСервере
Процедура Учеб_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Остановим выполнение типовых обработчиков
	УстановитьВыполнениеОбработчиковСобытия(Ложь);
	
КонецПроцедуры

 

3. Создание и использование общего модуля, модуля менеджера или модуля объекта

 

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

&НаСервере
Процедура СообщитьДиректораНаСервере()
	
	Должность       = "Директор";
	ФИОРуководителя = "Иванов И.И.";
	Обработки.Учеб_Обработка.СообщитьДиректора(Должность, ФИОРуководителя);
	
КонецПроцедуры

Модуль менеджера обработки:

Процедура СообщитьДиректора(Знач Должность, Знач ФиоРуководителя) Экспорт
	
	ТекстСообщения = СтрШаблон(
		НСтр("ru='%1 %2'"),
		Должность,
		ФиоРуководителя);
		
	Сообщить(ТекстСообщения);
	
КонецПроцедуры

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

 

4. Как подключить отладку

 

В типовых конфигурациях на основе библиотеки стандартных подсистем (БСП) при отладке расширений встречается вот такое страшное сообщение:

 

 

Оно возникает если в конфигураторе открыто наше расширение и лечится только закрытием окна расширения.

Для того, чтобы подключить отладку в расширении следует использовать ключ командной строки - “РежимОтладки”

Это упрощает отладку кода. В частности:

  • Все длительные операции выполняются сразу, без запуска фонового задания;
  • При разработке расширений конфигурации, возможен запуск с установленными расширениями конфигурации, которые в данный момент открыты в конфигураторе (при условии, что версия конфигурации и версии расширений не менялись).

Для того чтобы его установить:

  • Запустить предприятия с ключом командной строки - " /C РежимОтладки "
  • В режиме конфигуратора установить параметр запуска:
    Сервис -> Параметры -> Запуск 1С:Предприятия -> Параметр запуска: ввести строку <РежимОтладки>

 

При первом подключении расширения или при изменении в версии расширения или поставщика, отладка может не подключится с таким же сообщением.

Для того, чтобы исправить эту ситуацию можно попробовать следующие действия:

1. В конфигураторе закрыть это расширение 
2. Запустить конфигурацию в режиме предприятие и открыть форму, связанную с расширением 
3. Открыть расширение в конфигураторе 
4. Перезапустить отладку.

 

5. Как писать запросы

 

Расширение видит и работает только с теми объектами, которые заимствованы из основной конфигурации.
Объекты, которые не заимствованы, в расширении не видны и при попытке обращения к ним, например, в тексте запроса, в режиме “Конфигуратор” вызывают ошибку. Хотя в пользовательском режиме код выполняется без проблем.

Для того чтобы писать или редактировать запросы с большим количеством метаданных лучше воспользоваться любой внешней обработкой. В ней доступны все метаданные из основной конфигурации:

 

 

6. Как сохранять данные

 

Расширение не предназначено для хранения важных данных и тем более данных, влияющих на учет. Но настройки сохранять нужно.
Для этого можно воспользоваться хранилищем общих настроек или сохранением данных формы:

а) Сохранение данных формы

В редактируемой форме можно установить свойство - “АвтоматическоеСохранениеДанныхВНастройках” в "Использовать" и поставить флаг "Сохранение" над нужными реквизитами. Это позволит сохранять значения реквизитов типовым механизмом платформы:

 

Такое сохранение данных реализовано здесь.

 

б) Хранилище общих настроек

В этом хранилище можно хранить любые данные. Подробнее можно почитать здесь.
Рассмотрим пример хранения произвольных данных.

Сохранение данных:

&НаСервере
Процедура ПередЗакрытиемНаСервере()
	
	// Подготовим структуру хранения данных
	СтруктураНастроек = Новый Структура;
	СтруктураНастроек.Вставить("Всем",    Всем);
	СтруктураНастроек.Вставить("Близким", Близким);
	СтруктураНастроек.Вставить("Друзьям", Друзьям);
	// Сохраним данные в хранилище общих настроек
	ОбщегоНазначения.ХранилищеОбщихНастроекСохранить(
		"Учеб_СделатьВсёХорошо",
		"Настройки",
		СтруктураНастроек);
	
КонецПроцедуры

Восстановление данных:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	// Инициализируем структуру
	СтруктураНастроек = Новый Структура;
	// Восстановим сохраненные данные
	СтруктураНастроек = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
		"Учеб_СделатьВсёХорошо",
		"Настройки",
		СтруктураНастроек);
	// Заполним значения реквизитов формы
	ЗаполнитьЗначенияСвойств(ЭтаФорма, СтруктураНастроек);
	
КонецПроцедуры

 

7. Как добавить свой макет

 

К сожалению, в заимствованных документах нельзя добавлять или изменять макеты. Но макеты можно добавлять к обработкам, также можно вставлять внешние обработки, в которых уже существуют макеты. Эти макеты можно использовать для создания или изменения печатных форм, например так.

 

 

 

 

8. Как подменить кнопку заполнения табличной части

 

Иногда может потребоваться и добавить свою кнопку заполнения и оставить типовую кнопку.
Для того, чтобы убрать типовую кнопку подальше, но не удалять её совсем можно установить свойство - “Только во всех действиях” - "Да":

 

 

 

В этом случае кнопка будет доступна из подменю “Еще”. Это позволит в случае непредвиденных ситуаций продолжить работу с типовой функциональностью.

 

9. Расширение как багфикс

 

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

К тому же разработчики типовых иногда выкладывают текст исправления ошибки на партнерском форуме. Это позволит создать такое расширение еще проще.

Если ошибку исправить не легко, то можно сделать её хотя бы менее критичной, например, поставив в проблемном месте заглушку.

И не забываем отключить это расширение после того, как ошибка будет исправлена в типовой конфигурации.

 

10. Как вывести свою обработку в интерфейс

 

Для того, чтобы вывести свою обработку в интерфейс конфигурации необходимо включить её в состав требуемой подсистемы:

 

 

 

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

 

 

 

11. Как перевести расширение на 8.3.8

 

Чтобы перевести расширение на 8.3.8 следует выполнить следующие действия:

1. Снять режим совместимости в расширении.
Установить свойства совместимости такими же как и у основной конфигурации.

2. Устранить проблемы подключения.
Необходимо проверить, что на новой версии расширение подключается. Причину ошибок можно посмотреть в журнале регистрации.

3. Обновить формы в расширении.
Следует обновить формы расширений из основной конфигурации. Чтобы и в расширении и в конфигурации формы были одинаковыми.

4. Привести компоновку формы к новым правилам движка.
С рекомендациями по адаптации форм к новой платформе можно ознакомиться по этой ссылке

5. Проверить, что расширение выглядит и работает правильно.

 

Более подробно по каждому пункту описано в этой памятке. Там же приведены полезные материалы по теме.

 

 

12. Как подключить расширение

 

1. Администрирование - "Печатные формы и обработки"

2. Гиперссылка "Расширения"

3. Кнопка "Добавить" - Выбираем файл

4. Кнопка "Перезапустить"

5. Готово!

 

 

13. Как обновить расширение

 

1. Администрирование - "Печатные формы и обработки"

2. Гиперссылка "Расширения"

3. Встаем на нужное расширение

4. "Еще" - Команда "Обновить из файла на диске"

5. Кнопка "Перезапустить"

6. Готово!

 

 

Пока на этом всё!

Благодарность можно выразить денежно, а то кризис, сами понимаете!

 

Расширение Расширения конфигурации 8.3.6

См. также

Роли и права Системный администратор Платформа 1С v8.3 Управление правами 1С:Бухгалтерия 3.0 Россия Платные (руб)

Ваш кладовщик видит зарплату директора? Кассир копается в продажных документах? Менеджер по закупкам видит ваши расходы? Хватит закрывать на это глаза! Добавьте новые роли для пользователей. Три новых профиля - Кладовщик, кассир и менеджер по закупкам.

6600 руб.

01.11.2016    72277    106    125    

113

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Эта небольшая статья - некоторого рода шпаргалка по файловым потокам: как и зачем с ними работать, какие преимущества это дает.

23.06.2024    8173    bayselonarrend    20    

156

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пример использования «Сервисов интеграции» без подключения к Шине и без обменов.

13.03.2024    6338    dsdred    18    

80

Механизмы платформы 1С Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Все мы используем массивы в своем коде. Это один из первых объектов, который дают ученикам при прохождении обучения программированию. Но умеем ли мы ими пользоваться? В этой статье я хочу показать все методы массива, а также некоторые фишки в работе с массивами.

24.01.2024    19326    YA_418728146    26    

72

Механизмы платформы 1С Программист Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    24235    SeiOkami    48    

135
Отзывы
1. ya.Avoronov 115 12.01.16 11:06 Сейчас в теме
Очень талантливо сделана публикация! Спасибо! Пишите еще!
* Не знал про отладку в расширениях, очень бывает нужно.
* Запросы можно и в консоле запросов стряпать, удобнее.
* Багфикс согласен, очень действенно.
METAL; dim9; Bob_Dobr; onsi; AlexK_2012; Demlan; user790607; VAAngelov; Vailji; _7445_; user1272851; maksa2005; adhocprog; user1194547; SV6; user660224_laa; Konstantine26; wolder; SSErmolaev; masterok647; Hamann2008; synelf; BotMan4; houpl; DivS; 18101986; sheykin; olegtymko; bursanb; distorshion; Maxis; awk; pavel_pss; birk; r24al; ram8291; antonst1; Berckk; MonteCriZto; e-its; Dmitri93; dj_serega; igormiro; Andry.Boris; Aquashop; onetone; DmitrySinichnikov; isn; kolevatoval; slavap; amon_ra; alexveraww; Dach; DoctorRoza; shalimski; v.yaunzhekars@gmail.com; mrXoxot; +57 Ответить
Остальные комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ya.Avoronov 115 12.01.16 11:06 Сейчас в теме
Очень талантливо сделана публикация! Спасибо! Пишите еще!
* Не знал про отладку в расширениях, очень бывает нужно.
* Запросы можно и в консоле запросов стряпать, удобнее.
* Багфикс согласен, очень действенно.
METAL; dim9; Bob_Dobr; onsi; AlexK_2012; Demlan; user790607; VAAngelov; Vailji; _7445_; user1272851; maksa2005; adhocprog; user1194547; SV6; user660224_laa; Konstantine26; wolder; SSErmolaev; masterok647; Hamann2008; synelf; BotMan4; houpl; DivS; 18101986; sheykin; olegtymko; bursanb; distorshion; Maxis; awk; pavel_pss; birk; r24al; ram8291; antonst1; Berckk; MonteCriZto; e-its; Dmitri93; dj_serega; igormiro; Andry.Boris; Aquashop; onetone; DmitrySinichnikov; isn; kolevatoval; slavap; amon_ra; alexveraww; Dach; DoctorRoza; shalimski; v.yaunzhekars@gmail.com; mrXoxot; +57 Ответить
4. mrXoxot 3065 13.01.16 07:20 Сейчас в теме
(1) ya.Avoronov,
Спасибо! Я старался.

(2) MaxS,
И при последующем обновлении конфигурации расширение может перестать работать

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

Безусловно Вы правы!

(3) white_sochi,
Огромное спасибо! Перевод получил и очень Вам признателен.

Кстати, там можно делать переводы и с телефона...
11. MaxS 2951 15.01.16 10:12 Сейчас в теме
(4)
Кажется, это не так. Еще не проверял, но разработчики платформы заявляли...

Проверял таким образом: в БП 3.0.42 в форму документа АктОбОказанииПроизводственныхУслуг добавил элемент, например декорацию. Сохранил это расширение и загрузил в БП 3.0.41. Появилась ошибка, ругается на отсутствующий справочник.
Попробовал в расширении удалить все штатные элементы формы и добавить свой элемент. В предприятии при открытии этого документа пропали все элементы и форма не открылась.

До появления расширений несколько лет эта конфигурация обновлялась с дополнительным общим модулем, где изменения в формы документов вносились программно. Конфликтов небыло ни разу. Расширение пока не решило этот вопрос.
13. mrXoxot 3065 16.01.16 10:49 Сейчас в теме
(11) MaxS, (12) JohnyDeath,
Да, тут вы правы. Расширение еще не умеет всего делать.

Лично меня в расширениях очень радует, что для изменений не нужно снимать с поддержки.
А поправить расширение после обновления, для меня лично, проще, чем обновлять измененную конфу.

Я к нему отношусь как к еще одному инструменту, который может подходить для каких-то задач. А для каких-то быть совсем не пригодным. И это нормально, ведь только из-за того, что оно что-то не умеет не нужно ставить на нем крест.
30. Zhilyakovdr 147 30.03.16 10:51 Сейчас в теме
(11) MaxS, Добрый день!
Насколько я знаю, форму в расширении можно обновить из основной конфы, кнопка в конструкторе форм "Обновить расширение формы", при обновлении все изменения остаются, применяются только изменения из основной конфы.
2. MaxS 2951 12.01.16 14:24 Сейчас в теме
А ещё, если, например, нужно с помощью расширения всего лишь добавить кнопку на форму документа, то придётся тянуть в расширение всю форму. И при последующем обновлении конфигурации расширение может перестать работать.
Почему нет режима объединения элементов расширения с основной конфигурацией? Добавил бы несколько элементов на форму и они бы объединились по именам.
Пока в некоторых ситуациях удобнее программно добавлять элементы на форму. Расширение и здесь плохо помогает, т.к. в общий модуль нельзя внедриться.
97. alarma11 03.05.17 15:08 Сейчас в теме
(2) Думаю, что эта проблема не проблема. Просто в расширении описываешь код кнопки и программно создаешь кнопку при создании на сервере формы. Таким образом, при обновлении формы из основной конфигурации работа сводится не к приведению общего вида формы в порядок (кнопочки пропали/появились) а к приведению в порядок только написанного кода на форме (точнее проверки того, что код расширения не изменился).
Тем более добро пожаловать в 8.3.9 и т.д. где теперь можно почти со всеми модулями проводить махинации.
99. MaxS 2951 03.05.17 15:18 Сейчас в теме
(97) Код в общем модуле доработанной конфигурации содержит несколько строк и не зависит от метаданных. А при попытке перетянуть форму в расширение переносится ещё и куча ссылок на документы и справочники.
Типовых конфигураций на 8.3.9, в которых ведётся учет я пока не встречал.
3. pallid 272 13.01.16 00:45 Сейчас в теме
Внес свои 5 копеек ))) точнее 4.98, все что было. Спасибо за труд.
Не знал про отладку, раньше писал все в внеш обработках, потом переносил в расширение.
Lem0n; DreamcastMD; v.yaunzhekars@gmail.com; mrXoxot; +4 Ответить
5. FreeArcher 162 13.01.16 10:42 Сейчас в теме
Вот проблемы сейчас писать расширения нет, уже много инфы. А вот четкой уверенности, что после обновления измененной типовой формы не приедятся также перерабатывать эту форму в расширении у меня нет. Вот это тормозит применение расширений при доработках конфигурации.
OLDMVN; K_Sergei; tormozit; JohnyDeath; ya.Avoronov; +5 Ответить
8. JohnyDeath 302 13.01.16 22:01 Сейчас в теме
(5) вот и я немного прилип после обновления типовой бухгалтерии 3.0. В справочнике "Контрагенты" был переименован реквизит "ОсновнойДоговорКонтрагента" (теперь он "УдалитьОсновнойДоговорКонтрагента") и всё, теперь расширение нерабочее. А допиливал я по мелочи: формы ПКО, РКО, договоры контрагентов
9. mrXoxot 3065 13.01.16 22:07 Сейчас в теме
(8) JohnyDeath,
Кажется, что в этом случае правильно, что отвалилось расширение.

Потому что если стал реквизит Удалить_, то скорее всего его использовать больше не надо. Было бы гораздо больше проблем, если расширение осталось рабочим, но делало что-то совсем другое.
Wdivine; ipoloskov; +2 Ответить
12. JohnyDeath 302 15.01.16 20:57 Сейчас в теме
(9) конкретно в этом случае я просто немного правил под себя типовую форму. А когда первый раз добавлял ее в расширение, то все реквизиты объекта автоматом перешли в расширение. Переименованные реквизиты в расширении вообще не используются, но вот работать перестало все расширение.
6. Dach 383 13.01.16 10:47 Сейчас в теме
Скажите, я правильно понимаю, что теперь благодаря расширениям - можно по сути подписываться на события форм?

"а) Выполнить сначала типовой код, затем код из расширения:"

То есть, например, я хочу знать, что пользователь на форме документа нажал некую очень важную кнопку. Создав расширение и обработчик - могу отслеживать без изменения конфигурации, так?
7. mrXoxot 3065 13.01.16 11:18 Сейчас в теме
(6) Dach,

Да, именно так. В этом одна из прелестей этого механизма.
152. UtSpar 137 28.12.17 12:35 Сейчас в теме
(7) Никита подскажит поподробнее. создал в расширении подсистему, создал роль и обработку. в итоге подсистема не видна. не подскажите какие подводные камни имеются?
10. frkbvfnjh 805 14.01.16 15:58 Сейчас в теме
Титанический труд! +100500
user1027406; +1 Ответить
133. ariadna-nn 14.09.17 20:14 Сейчас в теме
Никита, хорошая статья.
Сделали расширение с командой "открыть" "свою" добавленную форму.
На платформе 8.3.8 работало. ничего не меняли .на платформе 8.3,9 и на 8.3.10 Выдает ошибку "Неизвестное имя формы".
Что надо поменять для 8.3.9(10)?
вот модуль
Процедура Расш_TXT_НОФ(Команда)
	Если Объект.Проведен Тогда
	Иначе
	
	ЭтаФорма.Записать();
	  Конецесли;
	Если НЕ ТолькоПросмотр Тогда
		ЗаблокироватьДанныеФормыДляРедактирования();
	    КонецЕсли;
	
	ПараметрыФормы = Новый Структура();
	ПараметрыФормы.Вставить("Организация", 					Объект.Организация);
	ПараметрыФормы.Вставить("ДатаДокумента",				Объект.Дата);
	ПараметрыФормы.Вставить("НомерДок",					Объект.Номер);
	ПараметрыФормы.Вставить("ДокСсылка",			Объект.Ссылка);
	
	ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.Расш_TXT_Форма", ПараметрыФормы, ЭтаФорма);

// Вставить содержимое обработчика.
КонецПроцедуры
Показать

--------------
текст Ошибки
{ТХТ_ГТД Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаТовары.Форма(166)}: Ошибка при вызове метода контекста (ОткрытьФорму)
ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.Расш_TXT_Форма", ПараметрыФормы, ЭтаФорма);
по причине:
Неизвестное имя формы. Имя: "Документ.РеализацияТоваровУслуг.Форма.Расш_TXT_Форма"
Прикрепленные файлы:
Doc61.doc
134. ariadna-nn 15.09.17 12:16 Сейчас в теме
(133) Это мы перевели Вам 33р. сегодня ))
176. dobrynin.i.s 92 28.12.18 02:21 Сейчас в теме
(134)Ваша щедрость не знает границ
Yan_Malyakov; +1 Ответить
135. mrXoxot 3065 15.09.17 14:51 Сейчас в теме
(133)
Если ничего не меняли, то скорее всего это ошибка платформы и можете написать им.
Я бы попробовал перенести форму в другое место или скопировать ее и обратиться заново.

(134)
Большое спасибо!
141. julia96_07 12 20.11.17 11:06 Сейчас в теме
(133) Светлана, смогли решить проблему?
14. tormozit 7238 17.01.16 09:47 Сейчас в теме
Гифки хороши только для поверхностного просмотра. На них очень мелко и деталей не видно и нельзя на паузу нажать. Поэтому лучше видеоролики, которые например бы открывались по клику на гифке.
SagittariusA; Yan_Malyakov; ekaruk; Andry.Boris; amon_ra; +5 Ответить
15. mrXoxot 3065 17.01.16 11:32 Сейчас в теме
(14) tormozit,
Согласен. Попробую в следующий раз. А есть где-нибудь примеры?
165. Olenevod 34 04.03.18 13:18 Сейчас в теме
(14) Если интересно, есть хитрый удобный способ сделать паузу гифки. Для этого надо нажать в нужный тебе момент на кнопку закрытия браузера, но не отпускать кнопку мыши (чтоб не закрыть браузер :-) ) потом просто отвести указать в сторону и отпустить.
166. tormozit 7238 04.03.18 14:32 Сейчас в теме
(165)
Рисковать закрытием приложения браузера не хочу. Уж лучше программой захвата экрана пользоваться для редких стопкадров.
16. Доработай 1С 31.01.16 16:21 Сейчас в теме
Спасибо за статью!
Очень аккуратно и качественно сделано.
Приятно читать.
Andry.Boris; +1 Ответить
17. mrXoxot 3065 06.02.16 11:51 Сейчас в теме
Искренне благодарю всех, кто перечислил денежку!

Это очень мотивирует.
И дает понимание, что такие публикации кому-то нужны и полезны!
Благодарю!
18. ben_art 13 26.02.16 14:53 Сейчас в теме
А свои реквизиты в расширении создавать можно ?
98. alarma11 03.05.17 15:13 Сейчас в теме
(18) Пока что (проверено на 8.3.10) нет такой возможности. Планируется ли? - неизвестно.
19. Blind_Guardian 01.03.16 15:59 Сейчас в теме
Хорошая статья, спасибо.
22. mrXoxot 3065 11.03.16 12:07 Сейчас в теме
(19) Blind_Guardian, (21) vlastapov, (20) sudmorsh,
Пожалуйста!
20. sudmorsh 58 03.03.16 16:07 Сейчас в теме
Спасибо за статью!
Приятно читать.
21. vlastapov 50 05.03.16 14:21 Сейчас в теме
Да, с отладкой расширения другое дело, Большое спасибо за науку.
23. polyaka 14.03.16 12:22 Сейчас в теме
Очень удобная статья! Коротко и по делу! Спасибо автору!
24. polyaka 14.03.16 12:34 Сейчас в теме
Очень удобный механизм расширений, когда нужно доработать управляемые формы... Иногда правда, когда разработчики меняют названия реквизитов, приходится допиливать расширения заново... Но это не так часто происходит, поэтому можно и пережить этот момент.
Сейчас столкнулась с такой проблемкой, может кто поможет разобраться:
Добавляю в расширение форму, которая вызывается из основной формы объекта, по гиперссылке (например: Конфигурация БП 3.0, документ "Реализация", форма "ФормаДоставка").
Хочу заполнить часть реквизитов на основании данных из основной формы документа. Как это можно сделать?
Как в расширении обратиться к самому объекту?
25. GreenDragon 18.03.16 11:06 Сейчас в теме
Отличная статья! Также спасибо за дополнительные ссылки.
26. zlato 23.03.16 14:45 Сейчас в теме
Отличная статья! А анимированные изображения облегчают понимание. Спасибо!
27. Alister 10 23.03.16 19:29 Сейчас в теме
И очень вежливый автор.)
28. mrXoxot 3065 24.03.16 09:42 Сейчас в теме
Коллеги! Всех поздравляю.
В 8.3.9 будет существенное развитие механизма Расширения конфигурации.
Почитать можно в зазеркалье.

Если кратко, то суть изменений:
Перехват
Вы можете перехватывать любые методы типовой конфигурации, обрамляя их собственными, или даже заменяя целиком.
Собственные обработчики
Вы можете добавлять собственные обработчики событий типовой конфигурации. Если, например, в типовой конфигурации они не назначены.
Собственные модули
Вы можете создавать в расширении собственные общие модули.
Вызов
И, наконец, вы можете вызывать в своём расширении любые методы типовой конфигурации.

Когда вы заимствуете и расширяете какой-нибудь модуль типовой конфигурации, то ваш расширяющий модуль будет находиться в одном пространстве имён с типовым модулем. Поэтому, находясь в расширяющем модуле, вы можете обращаться к любым переменным и методам типового модуля напрямую.
Если же вы находитесь в другом модуле, существующем в расширении, то вам будут доступны ваши же экспортируемые переменные и методы расширяющего модуля. Потому что они добавляются в результирующий публичный контекст типового модуля.
purgin; Andry.Boris; citicat; vovan_victory; Alister; +5 Ответить
29. Alister 10 24.03.16 10:05 Сейчас в теме
Очень интересные возможности открываются.
31. ZMD2065 17 25.04.16 15:42 Сейчас в теме
Добрый день.
Подскажите пожалуйста куда рыть дальше.
Проблема с ошибкой блокировки расширения конфигуратором. Всё сделал как описано в п.4. Ошибка блокировки не ушла.
На вкладке Дополнительно поставил флажок "Устанавливать режим разрешения отладки". Ошибка блокировки не ушла.
И в запуске предприятия поставил режим отладки.
Снимки экранов приложил в файле. Подскажите пожалуйста что забыл сделать.
Прикрепленные файлы:
После установки параметра не сработало.docx
32. mrXoxot 3065 25.04.16 15:46 Сейчас в теме
(31) bondar_vy@mail.ru,
Такое может быть при первом подключении расширения или если изменился Поставщик расширения или номер версии.
Для исправления попробуйте следующие действия:
1. В конфигураторе закрыть это расширение
2. В режиме предприятия открыть форму связанную с расширением
3. Открыть расширение в конфигураторе
4. Перезапустить отладку.
33. ZMD2065 17 25.04.16 16:17 Сейчас в теме
Спасибо огромное. Помогло. Этот танец с бубнами было бы здорово добавить к п.4.
Ещё раз огромное спасибо.
34. mrXoxot 3065 25.04.16 23:20 Сейчас в теме
(33) bondar_vy@mail.ru,
Добавил в 4 пункт это уточнение. Спасибо за отзыв!
35. ZMD2065 17 26.04.16 18:07 Сейчас в теме
День добрый.
Есть ещё один теоретический вопрос. При обновлении основной конфигурации каким образом в расширение подтянуть все изменения. Я такого механизма не нашёл. Нашёл что можно сделать обновление расширенной формы. А всё остальное, то что присутствует в расширении и попало туда с формой как? Или оно обновится автоматически или в расширении только ссылки?
И можно ли обновить скажем все изменённые в расширении формы оптом или надо по одной?
OLDMVN; cleaner_it; +2 Ответить
36. leonvlas 14.06.16 13:30 Сейчас в теме
Обновлял зуп. с расширением от внедренца- гемор полный
Инструмент очень далек от реалли и пользоваться им нормально не получится. Это глубокая альфа заявленная в 2014г и до сих пор ею остается.
Если кто соскучился по танцам, то флаг вам в руки.
37. Alister 10 14.06.16 13:41 Сейчас в теме
38. fomstas 08.07.16 10:21 Сейчас в теме
(36)leonvlas, Да иногда приходиться переписывать расширение, но так проще найти что нужно переписать! :)
39. Yashazz 4796 19.07.16 16:12 Сейчас в теме
(36) leonvlas, воистину.

Вообще странно, что я прохлопал эту публикацию и не отметился в комментах. Так вот, отмечаюсь. Всё, изложенное в статье, конечно, очень демонстративно, круто и замечательно, только вот нихрена вам не поможет. Количество глюков и косяков в этом сыром убожестве от 1С таково, что мануалами тут делу не поможешь, только личный опыт. Что делать можно, что нельзя, где её заклинит, и где платформа тихо рухнет. Мне ещё в прошлом году по самое не балуйся хватило.

Добрый совет: если можете - пилите конфу и не связывайтесь с расширениями. Это полное и безысходное г****.

И ещё - ребятушки, а что, пересказ материалов с ИТС без указания копирайта так высоко котируется?
OLDMVN; ivv1970; lavdeenko; jokereinherjar; james404; +5 1 Ответить
40. mrXoxot 3065 20.07.16 14:52 Сейчас в теме
(39) Yashazz,

Всё, изложенное в статье, конечно, очень демонстративно, круто и замечательно

Спасибо за оценку!

И ещё - ребятушки, а что, пересказ материалов с ИТС без указания копирайта так высоко котируется?

Странно, я думал ссылка на вашу публикацию и на материалы ИТС в самом начале помогут ознакомиться детальнее с расширениями.
В своей публикации я постарался свести все к маленьким практическим кейсам.
Если, считаете, что это плохо - то можете поставить публикации минус. И тогда, возможно, таких публикаций будет меньше.
Andreev.a; +1 Ответить
44. white-mount 31.08.16 15:29 Сейчас в теме
(39) Yashazz, Уважаемый, но разве у всех есть под рукой ИТС? Да и остальные не всегда читают весь ИТС, а ведут рубрикатор опубликованного и того меньше.
Статья полезна системным подходом, благодарность автору.
На мой взгляд не хватает предостережений, в этой части с Вами полностью согласен, правильно заточенный инструмент, конфа, надёжней в эксплуатации.
47. Yashazz 4796 05.09.16 20:03 Сейчас в теме
(44) white-mount, вы знаете, что такое нарушение копирайта? Это, на минуточку, нарушение законодательства. А на ИС прям-таки стандартная реакция типа "нуачо" или "а у меня нет ИТС". Вы вообще понимаете, что это статья УК? А не повод вешать плюсики за плагиат?
48. white-mount 05.09.16 21:57 Сейчас в теме
(47) Yashazz, уважаемый,
white-mount, вы знаете, что такое нарушение копирайта?

Ответ: Да
Вы вообще понимаете, что это статья УК?

Ответ: Нет
Подайте на меня в суд за то, что я на форуме направил Вам message:
Yashazz, Уважаемый, но разве у всех есть под рукой ИТС? Да и остальные не всегда читают весь ИТС, а ведут рубрикатор опубликованного и того меньше.
Статья полезна системным подходом, благодарность автору.
На мой взгляд не хватает предостережений, в этой части с Вами полностью согласен, правильно заточенный инструмент, конфа, надёжней в эксплуатации.
41. Nkolp 16 04.08.16 13:29 Сейчас в теме
Очень ценная статья - СПАСИБО
42. DrSender 82 22.08.16 11:18 Сейчас в теме
Попробовал. Использовать не советую. Много глюков. Неудобно отлаживать.
OLDMVN; lavdeenko; Yashazz; +3 Ответить
43. mrXoxot 3065 22.08.16 12:37 Сейчас в теме
(42) DrSender,
А в чем сложность отладки? Пробовали это.
45. jokereinherjar 01.09.16 14:49 Сейчас в теме
Кто знает, добавляются ли в расширение глобальные параметризуемые команды формы? А то добавил форму, а этих команд нет, без низ мне смысл использовать расширение 0 ((
46. white-mount 02.09.16 11:28 Сейчас в теме
(45) smaximaa,
а программно создавать при открытии формы не получается?
Хотя есть задача в которой это и мне может потребоваться, нужно будет попробовать.
jokereinherjar; +1 Ответить
50. jokereinherjar 13.09.16 10:17 Сейчас в теме
(46) white-mount, программно не пробовал, но сработала другая вещь, надо было добавить зависимые объекты команды и она появилась в параметризируемых
49. Milanick 09.09.16 13:56 Сейчас в теме
60. mrXoxot 3065 23.09.16 13:22 Сейчас в теме
(49) Milanick, (59) TreeDogNight,
Гифки я делал так:
1. Снимал видео через Snagit
2. Потом через сервис http://makeagif.com/ переделывал из видео в gif
51. jokereinherjar 13.09.16 10:20 Сейчас в теме
есть проблема, в определяемых типах нельзя менять тип, выходит ошибка и расширение не запускается, как можно это обойти?
ps. смысл тогда добавлять их в расширение если редактировать нельзя...
52. sikvel2012 96 17.09.16 11:04 Сейчас в теме
есть вопрос, как добавить форму без реквизитов в расширение?
53. mrXoxot 3065 17.09.16 17:41 Сейчас в теме
(52) reznic,
А зачем?
Можно добавить форму к обработке и добавлять любые реквизиты.
54. sikvel2012 96 20.09.16 12:50 Сейчас в теме
(53) вопрос поставил немного не правильно, если быть точнее то как добавлять объект чтобы он не тянул за собой по ссылкам другие объекты
55. mrXoxot 3065 20.09.16 14:09 Сейчас в теме
(54) reznic,
Никак.
Разработчики писали, что думают как сократить количество ссылок, но совсем от них отказаться не получиться.
56. sikvel2012 96 20.09.16 14:24 Сейчас в теме
(55) смотри, просто мне попалось расширение и в нем добавлена только одна форма для документа, и та без реквизитов, я такого смог добиться только удалив все ненужное потом , как то это странно, неужели все так делают
57. mrXoxot 3065 20.09.16 14:40 Сейчас в теме
(56) reznic,
К сожалению, мне другой способ не известен.
А чем мешают реквизиты? Ведь можно скрыть неиспользуемые объекты, например так
58. sikvel2012 96 20.09.16 14:52 Сейчас в теме
особо ничем, только весом расширения и лишними ненужными элементами
59. TreeDogNight 22 23.09.16 12:31 Сейчас в теме
Извиняюсь за вопрос не по теме: С помощью какого софта вы делали GIF-анимацию?
61. oslokot 194 28.09.16 11:41 Сейчас в теме
Добавил справочник номенклатура в расширение, конструктор запроса не видит стандартный реквизит ЭтоГруппа. Как быть?
Tachchini2011; klmop; murat_; Мах; +4 Ответить
62. mrXoxot 3065 28.09.16 12:30 Сейчас в теме
(61) oslokot,
Нужно в расширении установить проверку свойство "Иерархический".
Либо сделать запрос в другом месте. При выполнении ошибки быть не должно.
Olga12; igee12; Мах; oslokot; +4 Ответить
63. Wefast 06.10.16 13:45 Сейчас в теме
Не появилась возможность править общие модули еще?
64. mrXoxot 3065 06.10.16 14:35 Сейчас в теме
(63) Wefast,
Такая возможность появилась в платформе 8.3.9.
Но чтобы она работала в конфигурации должен быть снят режим совместимости с 8.3.8.
На сколько мне известно, таких типовых еще нет.
65. Fynjy 27.10.16 12:45 Сейчас в теме
Читать приятно. За это 99 рублей не жалко )
66. progr-2008 118 05.11.16 22:38 Сейчас в теме
67. tormozit 7238 10.11.16 10:20 Сейчас в теме
EDT уже поддерживает редактирование расширений? Вроде не встречал инфы про их поддержку в описании.
68. mrXoxot 3065 10.11.16 21:51 Сейчас в теме
(67) tormozit,
Тоже не встречал такой информации.
Сейчас поискал самостоятельно в EDT - не смог найти как создать или открыть расширение.
69. tormozit 7238 10.11.16 21:57 Сейчас в теме
(68) По сообщениям с партнерского форума сделал вывод, что поддержки расширений как и внешних обработок в текущей версии нет. Думаю она появится в самом конце.
70. tormozit 7238 12.11.16 17:42 Сейчас в теме
Как массово добавить объекты из конфигурации (CF) в расширение (CFE)?
71. mrXoxot 3065 13.11.16 22:17 Сейчас в теме
(70) tormozit,
К сожалению, никак.
По крайней мере на текущий момент.
Сам мучаюсь.
138. avk72 79 11.11.17 10:26 Сейчас в теме
(70) (71)
Как массово добавить объекты из конфигурации (CF) в расширение (CFE)?

Наше решение должно помочь https://infostart.ru/public/689299/
Добавляются, естественно, измененные объекты типовых конфигураций, а не все подряд.
Делали для упрощения обновления измененных типовых конфигураций
139. tormozit 7238 11.11.17 20:34 Сейчас в теме
(70) В подсистеме "Инструменты разработчика" теперь есть общая форма "ирВыпускРасширения". Она преобразует конфигурацию в расширение (конечно же с ограничениями).
Olenevod; +1 Ответить
72. mark_oilbass 15.11.16 12:20 Сейчас в теме
Сегодня была задача по изменению общего модуля. Расширение помогло. Добавил общий модуль и скопировал в общий модуль процедуру. К этим процедурам надо добавлять дерективы &Перед("НашаПроцедура"), &После("НашаПроцедура") и &Вместо("НашаПроцедура"). Если использовать &Вместо к ней можно еще в конце процедуры или функции добавить метод ПродолжитьВызов(), как я понял этот метод выполняет сначала процедуру из расширения потом эту же процедуру там от куда мы ее взяли. Не знаю за чем это. Вот источник http://v8.1c.ru/o7/201603module/index.htm
Aero; vapiarius; Spacer; +3 Ответить
81. fomix 33 27.01.17 14:38 Сейчас в теме
(72) Цитата: "Добавил общий модуль и скопировал в общий модуль процедуру.".
1. Что здесь означает слово "Добавил" - скопировал в расширение или реально добавил?!
2. Аналогично слово "Скопировал"?!
Например, я добавил в свое расширение ОбщийМодуль из основной конфы и пытаюсь переопределить там функцию аннотацией &Вместо("ИмяФункции") - при компиляции в ответ получаю
{Расширение1 ОбщийМодуль.Расш1_ОбщийМодуль_ИмяМодуля.Модуль(2,8)}: Ожидается определение процедуры/функции &Вместо<<?>>("ПолучитьФорматЗаписиИзДереваФормата") (Проверка: Сервер).
Что не так?! В тырнете ответа НЕ НАШЕЛ!
104. vapiarius 15.06.17 13:26 Сейчас в теме
По этой-же ссылке написано, что метод ПродолжитьВызов() нужен для обрамления функций.
73. andrewrocker 1 23.11.16 18:07 Сейчас в теме
а есть какое нибудь руководство по расширениям?
74. mrXoxot 3065 24.11.16 07:50 Сейчас в теме
(73)
Есть документация на ИТС. Есть курсы Гилева и Насипова.
Ссылки можно посмотреть во введении этой публикации.
75. dtripleh 06.12.16 11:36 Сейчас в теме
Макет же можно добавлять в заимствованных объектах, а вот типовой менять нельзя
76. markers 277 28.12.16 10:27 Сейчас в теме
(75) Насколько мне известно (но возможно ошибаюсь) эту возможность добавили в 8.3.9
77. dtripleh 28.12.16 14:48 Сейчас в теме
(76) проверил, не фига(