При работе с типовыми конфигурациями на платформе 1С:Предприятие 8.2 (например, «Бухгалтерия предприятия 2.0»), часто возникает ситуация, когда в режиме «Предприятие» в документе присутствуют дополнительные кнопки (например, в меню «Заполнить»), но при открытии этой же формы в конфигураторе их обнаружить не удается. Ситуация осложняется, если база находится на полной поддержке («на замке»), и типовые объекты изменять нельзя. Разберем подробно, почему так происходит, где искать скрытую логику и как её исправить.
Проанализируем архитектуру обычных форм в старых редакциях 1С. В БП 2.0 реализован механизм подключения дополнительных внешних обработок. Этот механизм позволяет расширять функционал программы без внесения изменений в саму конфигурацию. Это крайне удобно для баз на поддержке: вы добавляете новую логику заполнения документа, а при обновлении конфигурации эта логика не затирается и не требует ручного сравнения и объединения.
Кнопки, которые вы видите, создаются программно в момент открытия формы. Система сканирует специальный справочник, находит там записи, привязанные к данному типу документа, и «дорисовывает» пункты меню в интерфейсе. Именно поэтому в конфигураторе на макете формы этих кнопок нет — они существуют только в оперативной памяти в процессе работы пользователя.
Рассмотрим по шагам, где именно хранятся эти дополнения. Несмотря на то что базу вам могли передать в виде файла .dt, все внешние обработки уже упакованы внутрь этой базы данных.
Проанализируем открывшийся список. Нам нужно найти строку, которая относится к документу «Акт сверки взаиморасчетов». В этой строке будет указано наименование обработки, которое, как правило, совпадает с названием кнопки в меню «Заполнить».
Выяснив, что логика зашита во внешней обработке, нам необходимо получить доступ к её исходному коду. Поскольку конфигурация на поддержке, мы не можем править её напрямую, но мы можем отредактировать файл обработки. Разберем, как это сделать:
.epf в удобное место..epf в конфигураторе через меню Файл -> Открыть.Теперь мы можем изучить содержимое. Основная логика в таких обработках обычно располагается в Модуле объекта. Ищите экспортную процедуру, которая отвечает за взаимодействие с документом. Чаще всего она называется Инициализировать.
Пример структуры кода внутри такой обработки:
Процедура Инициализировать(Объект, ИмяТабличнойЧасти, КнопочнаяПанель) Экспорт
// Здесь описана логика, которая заполняет документ
// Если документ заполняется некорректно, ошибку нужно искать именно здесь
ТабличнаяЧасть = Объект[ИмяТабличнойЧасти];
// Пример: Добавление строки
НоваяСтрока = ТабличнаяЧасть.Добавить();
НоваяСтрока.Сумма = 100;
КонецПроцедуры
Если в справочнике внешних обработок пусто, но кнопка всё равно есть, значит, она добавляется программно непосредственно из модулей самой конфигурации. Выясним, как это проверить, даже если база «на замке» (просмотр кода под замком разрешен).
Рассмотрим процедуру ПриОткрытии в модуле формы документа или процедуру УстановитьКнопкиПодменюЗаполненияТЧ в общих модулях (например, в модуле УниверсальныеМеханизмы). Проанализируем типичный код, который может динамически изменять командную панель:
// В модуле формы может быть вызов:
УниверсальныеМеханизмы.УстановитьКнопкиПодменюЗаполненияТЧ(ЭтаФорма, ЭлементыФормы.ОсновныеДействияФормы);
Если вы видите подобные вызовы, значит, система автоматически собирает меню из зарегистрированных в системе объектов. В редких случаях разработчики вписывают создание кнопки «жестко» (hardcode) прямо в модуль формы. Чтобы найти это место, воспользуемся глобальным поиском по конфигурации (Ctrl+Shift+F), введя текст, который отображается на кнопке (например, "Заполнить по остаткам").
Если код заполнения работает некорректно, самый эффективный способ — поймать момент выполнения в отладчике. Поскольку обработка внешняя, есть нюанс: точка останова в файле .epf на диске может не сработать, если система запустила копию из временного хранилища.
Выполним следующие действия для надежной отладки:
Инициализировать поставим точку останова (клавиша F9).Файл -> Открыть (если она поддерживает автономный запуск) ИЛИ запустим процесс заполнения из документа.Остановка; или Предупреждение("Тут");, чтобы убедиться, что выполняется именно этот участок кода.В процессе обсуждения часто всплывает тема Расширений конфигурации. Важно понимать, что для 1С:Бухгалтерия 2.0, работающей на платформе 8.2 или в режиме совместимости с 8.2, механизм расширений недоступен. Расширения появились только в версии платформы 8.3.6. Если система выдает ошибку «Структура данных не поддерживает расширение», значит, вы пытаетесь применить технологию будущего к старой архитектуре. В случае с БП 2.0 единственным легитимным способом добавления кнопок без снятия с поддержки остаются именно Внешние обработки заполнения табличных частей.
Проанализировав ситуацию, мы выяснили: если кнопки нет в конфигураторе, она либо загружена в справочник Внешние обработки, либо создается программно в модулях 1С. Для исправления логики нам нужно выгрузить .epf файл из базы, отредактировать его и загрузить обратно. Это позволяет сохранять типовую конфигурацию в чистоте и обеспечивать беспроблемное обновление программы в будущем.