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