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