Задача: добавить два новые документа в типовую конфигурацию “Bas small business” (УНФ). Причем один из документов должен вводиться на основании другого.
Ошибка №1 В пользовательском режиме кнопка «Создать на основании» не появилась
Ход решения: как оказалось, недостаточно просто определить, какой документ является основанием для другого. Нужно понимать, что все типовые конфигурации используют БСП (Библиотека стандартных подсистем), т.е. готовые программные блоки, общие при создании любой конфигурации. Например, работа и отображение кнопок Печати, Создать на основании и не только являются частью механизма БСП. Помогла мне разобраться в этом подходе статья с ИТС "Подключаемые команды" .
В итоге мне пришлось добавить согласно инструкции процедуры и функции в модуль формы и в модуль менеджера нового документа.
Вот пример модуля менеджера моего нового документа. Привожу этот пример, т.к. поменял процедуру ДобавитьКомандуСоздатьНаОсновании не так, как в инструкции.
После этого, о чудо! Кнопка "Создать на основании" появилась, но тут появилась вторая ошибка №2:
Меню задвоилось! Вспомнил, что подобную ошибку встречал уже в своей практике, но решение сразу не нашел. Тогда решил упереться и докопаться до причины. Оказалось
Общий.Модуль.ПодключаемыеКоманды процедура ВывестиКоманды
В этом месте в таблице значений ВидыКоманд две строки СозданиеНаОсновании!
Вот тут я понял, что если убрать одну из строк в этой таблице, тогда задвоения пунктов меню не будет! Все дело в том, что одну команду создает одна процедура, другую вторая. Причину мне сформулировать трудно, т.к. могу ошибаться. Но по-моему мнению, выполняется штатная процедура УНФ, которая добавляет команду и процедура которая относится к программной прорисовке команд от БСП.
В итоге задача решается двумя вариантами:
1. ОбщийМодуль.СозданиеНаОснованииПереопределяемый отключаем использование добавления команд ввода на основании в одном из случаев.
Но этот способ может повлиять на работу в других местах программы, где этот механизм нужен. Хотя я проверил документ ЗаказПокупателя (стандартный документ) и убедился, что кнопки Создать на основании остались. Но, на всякий случай, решил задачу вторым вариантом:
2. Там где формируется ТЗ ВидыКоманд таблицу нужно аккуратно свернуть, но для этого нужно поменять две процедуры ОбщийМодуль. ПодключаемыеКомандыПереопределяемый
И ОбщийМодуль.ПодключаемыеКоманды процедура ВидыКоманд()
Вывод: для сопровождения типовых конфигураций крайне важно знать, как работает БСП