1. Что такое механизм расширений в 1С
2. В каких ситуациях стоит задуматься о применении этого механизма
3. Последовательность перевода доработанной системы на расширения 1С
4. Обновление и поддержка расширений в 1С
Что такое механизм расширений в 1С
Одним из нужных и важных механизмов кастомизации систем на платформе 1С было создание механизма внешних отчетов и обработок. Это расширило возможности адаптации типовых решений под потребности бизнеса. Начиная с платформы 8.3.9, фирма 1С шагнула дальше – появилась возможность вносить изменения в ряд объектов конфигурации, не снимая их с поддержки. И совсем недавно (наверняка каждый специалист в 1С уже наслышан о новых функциях платформы 8.3.11) с помощью механизма расширений, появилась возможность изменять архитектуру типовых решений – добавлять новые объекты и изменять состав типовых. Как это скажется на подходе в поддержке и разработке систем 1С, нам еще предстоит увидеть, но очевидно, что это – следующий виток развития в способах кастомизации систем на базе платформы 1С.
Следует понимать, что расширения идеологически отличаются от механизма поставки. В типовой поставке дорабатывается конфигурация поставщика, а механизм расширений позволяет «накладывать» или добавлять функциональность в систему, не изменяя основу. Расширение хранится системой именно, как дополнительный модуль функциональности.
В каких ситуациях стоит задуматься о применении этого механизма
• Конечно же, при адаптации типовых решений. Теперь практически нет необходимости снимать конфигурацию с поддержки. Достаточно подключить расширение и адаптировать систему под потребности предприятия. А если потребность в новом функционале отпадет со временем, то достаточно его просто отключить;
• Можно выпускать готовые функциональные модули в виде расширений. Для интеграции нового функционала (подсистемы, модуля) достаточно будет подключить нужное расширение. Это проще и быстрее, чем адаптировать типовое решение «по старинке», снимая конфигурацию с поддержки и внося в нее изменения;
• Когда это - требование клиента. Такое тоже бывает: Заказчик просит «настроить» систему, но не снимать ее с поддержки, чтобы было проще ее обновлять. Последнее время такое требование стало встречаться все чаще;
• При корпоративной разработке, когда конфигурация подключена к хранилищу, а нужные объекты захвачены другим разработчиком. Ранее в таких случаях приходилось отключаться от хранилища. Теперь же можно на время подключить расширение, а как появится возможность, перенести изменения в хранилище. Или можно индивидуально подключать сторонний функционал к базе разработки, не затрагивая хранилище. Например, можно интегрировать «1С:Тест-центр» для нагрузочного тестирования;
• При использовании распределенных информационных баз (РИБ). Можно адаптировать функциональность конкретного узла, не внося изменения в основную конфигурацию;
• Ну и конечно же, в случаях, когда трудозатраты на обновление релиза сильно измененной системы довольно высоки, а обновления выходят часто. В таком случае имеет смысл вынести добавленную функциональность в расширения, а конфигурацию сделать типовой. Тогда будет возможно автоматическое обновление основной конфигурации системы. После обновления останется только проверить и адаптировать расширения под новый релиз конфигурации поставщика.
Последовательность перевода доработанной системы на расширения 1С
Рассмотрим последовательность перевода конфигурации на расширения 1С. Для примера у нас есть 1С:Бухгалтерия 3.0 с добавленным реквизитом номенклатуры – «КЛ_ШтрихКодОсновной». Реквизит выведен в форму элемента справочника.
1. Разворачиваем в тестовой среде платформу версии 8.3.11 (или выше) и копию переводимой базы. Все дальнейшие работы делаем первоначально на копии рабочей базы;
2. Проверяем режим совместимости конфигурации. Осуществляем переход на режим совместимости с платформой не ниже 8.3.11, если такое возможно. Иначе придется подождать выхода типового релиза в совместимости с 8.3.11 (не использовать);

Рис. 1. Режим совместимости
3. Добавляем новое расширение и «заимствуем» в него все необходимые объекты. Заимствовать нужно объекты прямо или косвенно связанные с дорабатываемым функционалом;На рисунке ниже представлено расширение «Штрих коды КЛ», в котором «заимствованы» необходимые объекты основной конфигурации.

Рис. 2 Расширение «Штрих коды КЛ»
4. Первыми переносим изменения структуры хранения данных (добавленные или измененные по составу объекты). На этом этапе нужно перенести не только изменения в структуре, но и измененные данные в расширение.К примеру, можно написать обработку, которая перезапишет данные из «источника» (реквизит или объект основной конфигурации) в «приемник» (реквизит или объект, добавленные в расширении). Для этого переименовываем реквизиты или объекты в источнике и обработкой перезаписываем данные в приемник. После перезаписи реквизит (или объект) источника можно удалить (или вернуть на типовой). Учитывая, что реквизит будет иметь такое же имя, следовательно, имя добавленных метаданных системы не изменится при переходе на новый механизм.
В нашем примере нам надо перенести реквизит «КЛ_ШтрихКодОсновной» в расширение. Переименовываем реквизит в источнике в «КЛ_ШтрихКодОсновной1». Добавляем в расширение «КЛ_ШтрихКодОсновной» с таким же типом. Запускаем обработку с кодом:

Данные успешно перенесены в расширение.
5. Далее переносим все остальные доработки системы (формы, модули, отчеты, роли и т.д.);
В нашем примере это будет форма элемента справочника. Тут довольно просто: в заимствованную форму элемента нужно вывести новый реквизит объекта.
6. Откатываем основную конфигурацию на типовую. Как это сделать, можно найти в интернете.
7. Тестируем результат в новой системе. База типовая, а данные и добавленная функциональность сохранились:

Рис. 3 Добавленная функциональность перенесена в расширение.
8. Осуществляем переход на рабочей базе и работаем.Обновление и поддержка расширений в 1С
Стоит понимать, что переход базы 1С на расширения полностью не избавляет от потребности в поддержке расширений. Конечно, процесс обновления станет проще и быстрее, но потребность в поддержке дополнительной функциональности остается. Например, если поставщик переименовал реквизиты или объекты конфигурации – придется адаптировать расширения под новый релиз поставщика.
Кирилл Карцев,
руководитель отдела внедрения ООО “Кодерлайн”.