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