Как добавить дополнительную команду создания документа в журнал продаж 1С:Управление торговлей 11?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В типовой конфигурации «1С:Управление торговлей» (редакция 11) журнал «Документы продажи (все)» представляет собой специализированную обработку ЖурналДокументовПродажи. При нажатии на кнопку создания нового документа выводится выпадающий список доступных видов документов и хозяйственных операций. Разберем ситуацию, когда требуется добавить в этот список еще один пункт (например, разделение документа «Реализация товаров и услуг» на варианты «Реализация нал» и «Реализация безнал» с предустановленными настройками).

Анализ механизма формирования команд журнала

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

Проанализируем ключевые элементы этой системы:

  1. Справочник НастройкиХозяйственныхОпераций: В системе хранятся предустановленные настройки хозяйственных операций. Этот справочник закрыт от прямого редактирования пользователями в режиме «1С:Предприятие», так как на его элементы завязана логика проведения документов и формирования движений по регистрам.
  2. Общий модуль ОбщегоНазначенияУТ: В нем находятся ключевые процедуры СформироватьКомандыСоздания и ДобавитьКомандуСКнопкой. В этих процедурах формируется таблица команд, где имя команды и ее отображение по умолчанию привязаны к хозяйственной операции или типу документа.
  3. Модуль обработки ЖурналДокументовПродажи: Содержит процедуру ОписаниеОперацийИТиповДокументов, где задаются соответствия типов документов, хозяйственных операций и параметров их создания.

Вариант решения через перехват формирования команд

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

Разберем процесс поэтапно:

  1. Найдем процедуру ОписаниеОперацийИТиповДокументов в обработке журнала продаж. Именно здесь инициализируется структура и таблицы с описанием видов создаваемых документов.
  2. В месте вызова процедуры ОбщегоНазначенияУТ.СформироватьКомандыСоздания проанализируем таблицу значений, поступающую для вывода команд на форму.
  3. При обходе типов документов добавим проверку на целевой документ (Документы.РеализацияТоваровУслуг). При совпадении добавляем дополнительную команду (например, «Реализация безнал»), перегружая имя команды и параметры заполнения.

Рассмотрим пример логики добавления команды в модуль:


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

После такого изменения в выпадающем меню кнопки «Создать» появятся две раздельные строки. Каждая из них будет создавать стандартный документ Реализация товаров и услуг, но при обработке выбора команды можно передать уникальные параметры заполнения.

Архитектурные риски и безопасные альтернативы

Проанализируем технические нюансы и риски, с которыми можно столкнуться при реализации данной задачи:

  1. Жесткая привязка хозяйственных операций к учету: Не следует добавлять новые элементы в справочник НастройкиХозяйственныхОпераций или перечисления без полного изменения процедур проведения. Проведение документа по регистрам накопления и расчет себестоимости жестко опираются на системные значения хозяйственных операций.
  2. Проблемы при обновлении конфигурации: Прямое изменение типовых общих модулей (например, ОбщегоНазначенияУТ) вызовет сложности при обновлении релизов. Рекомендуется выполнять доработку через **Расширение конфигурации (CFE)**.

Посмотри, как правильно реализовать доработку через расширение конфигурации без снятия основной базы с поддержки:

  1. Создаем новое расширение конфигурации.
  2. Подключаем в расширение обработку ЖурналДокументовПродажи и модуль формы.
  3. Используем аннотацию &После или &Вместо для процедуры формирования команд.
  4. В обработчике нажатия новой кнопки прописываем открытие формы объекта с передачей структуры ЗначенияЗаполнения, где заранее указываем форму оплаты (безналичный расчет), нужный расчетный счет или соглашение с клиентом.

// Пример открытия формы документа из расширения с готовыми параметрами
ПараметрыФормы = Новый Структура;
ЗначенияЗаполнения = Новый Структура;
ЗначенияЗаполнения.Вставить("ФормаОплаты", Перечисления.ФормыОплаты.Безналичная);
ПараметрыФормы.Вставить("ЗначенияЗаполнения", ЗначенияЗаполнения);

ОткрытьФорму("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы);

Использование структуры ЗначенияЗаполнения позволяет сохранить типовую логику документа и хозяйственной операции, но при этом автоматически подставлять менеджеру нужные реквизиты при выборе команды «Реализация безнал».

← На главную