Содержание
Механизм расширения конфигурации 1C
Приветствую уважаемый читатель, в данной статье предлагаю ознакомиться с Механизмом расширения конфигурации 1С 8.3, в частности мы познакомимся с его работой в режиме Адаптация, а также рассмотрим пример программного изменения Формы объекта при помощи расширения. Ну, а сейчас немного теории…
Как указано в описании: «Механизм расширения конфигурации – это специальный механизм, предназначенный для доработки расширяемой конфигурации без изменения этой конфигурации (в том числе без снятия с поддержки).»
Основным назначением расширения конфигурации является доработка прикладных решений (конфигураций) под нужды клиента. При этом нет необходимости в снятии дорабатываемой конфигурации с поддержки. В результате сохраняется простота сопровождения и обновления типового прикладного решения, стоящего на поддержке.
При разработке расширений следует учитывать следующие факты:
— в системе могут функционировать более одного расширения.
— расширяемая конфигурация в любой момент может быть изменена, например, в результате обновления и разработчик расширения никак не может повлиять на возможность или невозможность обновления
Расширение может иметь одно из следующих назначений:
Исправление — предназначено для оперативного исправления ошибок в прикладном решении. В таких расширениях часто применяется метод с помощью аннотации Вместо. Как правило это назначение предназначено для определенной версии прикладного решения. При выходе следующей версии этого решения автор расширения должен проводить анализ применимости созданных расширений в новой версии.
Адаптация — предназначено для адаптации прикладного решения под условия конкретного заказчика. Предполагается, что в каждый момент времени в информационной базе существует минимальное количество таких расширений. Если в одно расширение невозможно включить весь набор изменений, то рекомендуется расширения с назначением Адаптация разбивать по максимально крупным блокам расширяемого прикладного решения.
Дополнение — предназначено для реализации новых возможностей прикладных решений, которые минимально привязаны к конкретной версии прикладного решения. В качестве примера можно привести создание нового набора отчетов, который отсутствует в прикладном решении. Предполагается, что таких расширений может быть произвольное количество.
Расширение создается в конфигураторе, хранится в информационной базе и может быть выгружено в файл. Для подключения расширения, сохраненного в файл, в прикладное решение нет необходимости использовать конфигуратор. Подключить расширение можно с помощью стандартного функционала (Все функции Стандартные Управление расширениями конфигурации). Подключить расширение также используя программный интерфейс, предоставляемый платформой.
Ограничения использования расширений:
Расширения конфигурации не поддерживают создание следующих собственных объектов:
— Параметры сеанса.
— Общие реквизиты.
— Критерии отбора.
— Подписки на события.
— Регламентные задания.
— Функциональные опции и параметры функциональных опций.
— Определяемые типы.
— Хранилища настроек.
— Языки.
— Константы.
— Журналы документов.
— Бизнес-процессы и задачи.
— Внешние источники данных.
Не поддерживается расширение следующих объектов:
— Нельзя создавать подчиненные подсистемы.
— Если объект не может быть собственным объектом расширения его расширение также не поддерживается.
— Состав значений перечислений;
Не поддерживается добавление реквизитов и табличных частей для:
— План видов характеристик;
— План счетов;
— План видов расчетов.
Не поддерживается изменение структуры регистров всех видов. Поддерживается только расширение состава регистраторов.
В базовых версиях прикладных решений работа с расширениями не поддерживается.
Стоит помнить, что Механизм расширения конфигурации – это перспективный постоянно развивающийся механизм и с выходом новых версий платформ их функционал только расширяется и лишается текущих недочетов.
Как добавить расширение конфигурации 1С 8.3
Предлагаю рассмотреть задачу добавления нового Справочника «Категория должности по Классификатору Предприятия» с выводом его значения на Форму Справочника Должности, на базе Конфигурации ЗУП 3.1
Для создания расширения необходимо запустить 1С в режиме конфигуратора.
В конфигураторе необходимо зайти в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». Откроется окно со списком расширений (если они есть). Далее нажмем кнопку «Добавить». Мы увидим диалоговое окно создания расширения:
Стоит отдельно выделить поле Назначение – необходимо выбрать его значение в зависимости от решаемой задачи – т.к. мы выполняем добавление объектов по требованиям конкретного заказчика – нам подойдет вариант «Адаптация».
После нажатия на кнопку «ОК» — двойным кликом по появившейся строке откроем Конфигурацию расширения. Мы увидим практически пустое дерево конфигурации.
Добавим в расширение справочник Категория должности по Классификатору Предприятия. Стоит обратить внимание, что в название всех объектов процедур и функций созданных в расширении, добавляется его префикс (в нашем случае Расш1_);
Разместим наш новый Справочник в Подсистеме «ШтатноеРасписание» для этого необходимо добавить эту подсистему в Расширение – Перейдем в дерево основной Конфигурации и нажмем правой кнопкой мыши на строке с нужной подсистемой и выберем пункт «Добавить в расширение».
Теперь мы можем управлять ее составом, добавим наш новый объект в подсистему.
Далее добавим в расширение Справочник Должности и добавим для него новый реквизит КатегорияДолжности с типом СправочникСсылка.Расш1_КатегорияДолжностиПоКлассификаторуПредприятия
Далее необходимо решить задачу с выводом реквизита КатегорияДолжности на форму Справочника Должности, реализовать это можно двумя способами:
— Интерактивно, добавив Форму «ФормаЭлемента» в расширение
— Программно, не добавляя Форму Справочника в расширении, а добавив подходящую процедуру, вызываемую в обработчике Формы «ПриСозданииНаСервере» в расширение.
Останавливаться на плюсах и минусах каждого решения не будем, а ниже рассмотрим оба варианта.
Интерактивное изменение Формы в расширении.
Для того чтобы вывести Реквизит на форму интерактивно: необходимо добавить саму Форму «ФормаЭлемента» в расширение. Обращу ваше внимание на следующий момент – для того чтобы появилась возможность Интерактивного добавления Реквизита объекта на форму необходимо сам Объект тоже добавить в расширение.
Далее добавим новый Реквизит в подходящую Группу на форме.
Запустив 1С в режиме Предприятия убедимся, что новый Справочник появился в интерфейсе
А открыв элемент справочника Должности, увидим, что добавляемый реквизит Категория должности также в нужном месте.
Программное изменение Формы в расширении.
Для того чтобы программно добавить элемент на форму нам необходимо определится в каком месте это сделать оптимально с точки зрения простоты дальнейшей поддержки и обновления конфигурации.
Предлагаю воспользоваться одной из процедур вызываемых в обработчике Формы «ПриСозданииНаСервере», в которую передается наша Форма в качестве параметра например УправлениеСвойствами.ПриСозданииНаСервере.
Перейдем в Общий модуль УправлениеСвойствами где находится данная процедура, и кликнем правой кнопкой мыши по процедуре ПриСозданииНаСервере. В выпадающем меню выберем пункт «Добавить в расширение»
Система предложит нам выбрать одну из аннотаций, подробнее о каждой из них рассмотрим в следующих публикациях, а сейчас выберем «Вызывать после»
После проделанных процедур увидим что в Расширение был добавлен общий модуль УправлениеСвойствами и процедура Расш1_ПриСозданииНаСервере с аннотацией &После(«ПриСозданииНаСервере»)
Далее в добавленную процедуру поместим следующий код:
1С (Код)
Запустим 1С в режиме предприятия и убедимся, что на форме также появился добавленный реквизит «КатегорияДолжности (пр.)»
Готовое расширение можно выгрузить в файл перейдя в конфигураторе в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». В открывшемся списке расширений по правой кнопкой мыши можно вызвать выпадающее меню, либо выбрать пункт командной панели «Конфигурация» и выбрать пункт «Сохранить конфигурацию в файл…». На выходе мы получим Файл типа *.cfe который можно передать заказчику.
Таким образом, мы научились создавать собственные расширения на примере конкретного кейса.
После обновления при выполнении дополнительных процедур обработок данных выходят ошибки следующего содержания:
Процедура «РаботаСФайламиСлужебныйВызовСервера.ПеренестиЭлектронныеПодписиИСертификатыШифрованияВРегистрыСведений» обработки данных завершилась с ошибкой:
{ОбщийМодуль.ОбновлениеИнформационнойБазы.Модуль(2126)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(5, 2)}: Таблица не найдена «Справочник.СообщениеОбменСБанкамиПрисоединенныеФайлы.Изменения»
<<?>>Справочник.СообщениеОбменСБанкамиПрисоединенныеФайлы.Изменения КАК ТаблицаИзменений
Процедура «РегистрыСведений.СостоянияОбменСБанками.ОбработатьДанныеДляПереходаНаНовуюВерсию» обработки данных завершилась с ошибкой:
{ОбщийМодуль.ОбновлениеИнформационнойБазы.Модуль(2126)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(5, 2)}: Таблица не найдена «Справочник.НастройкиОбменСБанками.Изменения»
<<?>>Справочник.НастройкиОбменСБанками.Изменения КАК ТаблицаИзменений
Процедура «Документы.СообщениеОбменСБанками.ОбработатьДанныеДляПереходаНаНовуюВерсию» обработки данных завершилась с ошибкой:
{ОбщийМодуль.ОбновлениеИнформационнойБазы.Модуль(2126)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
{(5, 2)}: Таблица не найдена «Документ.СообщениеОбменСБанками.Изменения»
<<?>>Документ.СообщениеОбменСБанками.Изменения КАК ТаблицаИзменений
Конфигурация на полной поддержке. Данные объекты не включены в планы обмена, таблицы «Изменения» в них соответственно нет.
Данная ошибка возникла при переходе на 24.2, теперь идет на 25.2. Но теперь сообщение об ошибке выходит при каждом запуске программы и пугает пользователей
С появлением в 1С механизма «Расширение конфигурации” добавлять/изменять печатные формы стало по-настоящему просто. Рассмотрим на примерах изменение существующей печатной формы путевого листа и добавление своей формы и кнопки для вывода этой формы.
Как заменить типовую печатную форму 1С на свою?
Для этого нужно выполнить следующие действия:
- Создать новое расширение конфигурации.
- «Добавить в расширение ” документ путевой лист, печатную форму которого нужно изменить.
- Скопировать типовую печатную форму путевого листа (макет) в расширение.
- Отредактировать скопированную печатную форму в соответствии с вашей задачей.
- Скопировать типовую процедуру вывода на печать в расширение, изменить её имя и указать перед ней директиву препроцессора &Вместо(«Печать”). Изменить имя макета в коде процедуры.
Видео демонстрирует изменение типовой печатной формы:
Как добавить свою печатную форму в 1С?
Для этого нужно выполнить следующие действия:
- Создать новое расширение конфигурации (как это сделать показано в видео выше) или использовать ранее созданное.
- «Добавить в расширение” группы команд «Печать” и «Печать прочее”.
- «Добавить в расширение” роль Полные права и другие роли при необходимости настройки прав доступа к кнопке печати по ролям.
- Скопировать типовую печатную форму путевого листа (макет) в расширение.
- Отредактировать скопированную печатную форму в соответствии с вашей задачей.
- Скопировать типовую команду печати в расширение, изменить её имя, изменить имя макета в коде процедуры, при необходимости отредактировать программный код процедуры.
- Настроить права доступа для команды.
- Открыть модуль команды и отредактировать имя процедуры, указанной в п.7.
Видео демонстрирует добавление своей печатной формы и кнопки:
Доброго дня, коллеги!
Сегодня у разработчиков 1С всегда есть выбор – вести разработку с использованием механизма расширений или дорабатывать основную конфигурацию «по старинке”. Возможность выбора – это всегда хорошо. И тут во главу угла становятся такие качества специалиста 1С, как умение самостоятельно делать выбор и принимать эффективные решения!
Курс: Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки
Вопрос
Добрый день! Например, необходимо выполнить внедрение типовой конфигурации 1С:ERP на крупном предприятии от 500 пользователей. При этом доработок достаточно много определилось по результатам проведения контрольного примера. Вы посоветуете при таком внедрении использовать расширения или аккуратно дорабатывать основную конфигурацию? Есть ли случаи (какие то проблемы), в которых Вы посоветуете использовать доработку основной конфигурации (без использования механизма расширений) при внедрении типовой конфигурации у заказчика? При этом конечно же заказчик планирует обновлять свою конфигурацию при выпуске обновлений фирмой 1С.
Ответ
Добрый день! Создание большого количества расширений или одного расширения в котором имеются все доработки не панацея от проблем с обновлением. При грамотной разработке расширений у вас при обновлении сломается меньше, а само обновление будет проходить проще.
Согласно рекомендациям фирмы 1С расширения нельзя использовать для создание отдельных модулей конфигурации, поэтому надо использовать оба подхода. Если не понятно, что лучше, создать расширение или сделать изменения в основной конфигурации, то начните с расширения. Если по окончанию разработки расширения становиться ясно, что часть расширения можно перенести в конфигурацию добавлением объектов и это не повлечет больших проблем с обновлением, то лучше сделать именно так, а функционал который меняет работу основной конфигурации оставить в расширении.
Могу назвать несколько причин, при которых не стоит использовать расширения:
- Большое количество новых объектов в расширении. Это плохо влияет на производительность.
- Невозможность использовать механизм расширений, например старая конфигурация.
- Расширение не позволяет сделать необходимые действия с минимальными затратами, например, добавить к составному типу реквизита созданные вами типы, или изменить длину строки у типа, или другие задачи которые нельзя просто выполнить с использованием расширения.
- При планировании доработки становиться понятно, что будет разработан отдельный модуль или подсистема которая мало связана с имеющейся функциональность. В этом случае все части новой подсистеме надо создавать в основной конфигурации, а связь новой подсистемы и типового функционала осуществлять через расширение, если это невозможно сделать другими способами, без изменении типовой конфигурации.
В общем случае, механизм расширений не отменяет изменения конфигурации. Если посмотрите на все библиотеки которые делает 1С, то не одно из них не представлено в виде расширений. Аналогично, доработки от партнеров 1С не представляются в виде расширения, а внедряются в типовую конфигурацию. На сайте 1С есть страница посвященная расширениям. В частности там есть раздел «Назначение” и «Сценарии использования”.
Это пример разобранного вопроса из Мастер-группы курса
Разработка расширений и технологии доработки конфигураций 1С без снятия с поддержки.
Описание курса и примеры видео
Смотреть предыдущий вопрос