При работе с типовыми конфигурациями, такими как Управление торговлей 11, пользователи часто сталкиваются с необходимостью кастомизации печатных форм. Один из типичных запросов — выводить в заказе поставщику Артикул номенклатуры, а в документах продажи — её Код. Давайте разберемся, как реализовать такую задачу правильно и с чем придется столкнуться при настройке.
Прежде всего, проанализируем ситуацию с настройками системы. В разделе НСИ и администрирование — Печатные формы, отчеты и обработки действительно существует опция вывода дополнительной колонки в печатные формы. Однако, как показывает практика, эта настройка является глобальной. Это означает, что если мы активируем вывод артикула, он будет отображаться во всех печатных формах, где предусмотрен этот механизм. Система не предусматривает разделение этого параметра по видам документов, поэтому штатными средствами через «галочки» добиться желаемого результата не получится.
Многие начинающие разработчики пытаются решить задачу путем внесения изменений в основной код конфигурации. Это путь, который ведет к проблемам при обновлении программы. Когда вы меняете типовой макет или процедуру печати напрямую, при каждом выходе обновлений от фирмы 1С вам придется тратить часы на сравнение и объединение конфигураций (Сравнение и объединение файлов конфигурации). Поэтому мы рассмотрим более современный и безопасный подход — использование расширений.
Использование Расширения конфигурации позволяет нам «перехватить» логику формирования печатной формы только для нужного нам документа — ЗаказПоставщику. Это позволяет сохранить типовую конфигурацию на поддержке.
Разберем этапы решения задачи:
Расширение конфигурации в режиме Конфигуратора.ЗаказПоставщику.Макет печатной формы или Команду печати, отвечающую за вывод номенклатуры.Код система обращалась к реквизиту Артикул номенклатуры.Для модификации процесса вывода данных нам потребуется воздействовать на процедуру, которая формирует табличную часть печатной формы. Вместо того чтобы полагаться на настройки пользователя, мы можем принудительно задать источник данных для колонки.
Пример логики, которую мы можем заложить в расширение:
// Пример логики заполнения области печатной формы в расширении
Для Каждого СтрокаТаблицы Из ДанныеОбъекта.Товары Цикл
ОбластьСтроки.Параметры.КодИлиАртикул = СтрокаТаблицы.Номенклатура.Артикул;
КонецЦикла;
Использование Расширения дает нам несколько важных преимуществ:
ЗаказПоставщику, оставляя продажи без изменений.УТ 11 наше расширение не затронет изменения, внесенные разработчиками фирмы 1С в типовой код.GUID (идентификатор объекта), мы сможем легко добавить это в наше расширение, не затрагивая ядро системы.Если задача стоит более широко, и артикул или код не являются достаточными идентификаторами, можно использовать механизм Дополнительные реквизиты и сведения. Вы можете создать дополнительный реквизит для справочника Номенклатура, заполнить его нужными данными и выводить в печатную форму уже его. Это позволит избежать работы с кодом в тех случаях, когда структуру печатной формы можно настроить через Конструктор печатных форм.
Подводя итог, можно сказать, что решение задачи по разделению вывода Код/Артикул требует перехода от простого «проставления галочек» к написанию расширения. Это стандарт индустрии разработки на 1С, который обеспечивает стабильность и масштабируемость вашего решения.