Разберем типичную ситуацию, с которой часто сталкиваются программисты 1С при сопровождении чужого кода, особенно в конфигурации 1С:Зарплата и управление персоналом (ЗУП 3.1). Допустим, в пользовательском интерфейсе в разделе Зарплата - Дополнительные обработки есть самописная обработка. Вам поступила срочная задача ее доработать. Однако, перейдя в раздел Администрирование - Печатные формы, отчеты и обработки - Дополнительные отчеты и обработки, вы не находите ее в списке. Соответственно, выгрузить файл для редактирования не получается.
Почему так происходит и где искать исходный файл? Проанализируем ситуацию и рассмотрим подробнее самые эффективные методы поиска потерянных внешних и встроенных обработок в 1С.
Выясним причину, по которой чаще всего обработки "теряются" в базах. Дело в том, что имя команды внешней обработки, которое выводится пользователю в интерфейсе программы, может совершенно не совпадать с наименованием самого элемента в справочнике ДополнительныеОтчетыИОбработки.
Разберем по шагам, как правильно искать в этом случае:
Рассмотрим еще один мощный и быстрый инструмент. Если окно искомой обработки у вас уже открыто в режиме предприятия, мы можем быстро узнать ее происхождение через получение системной навигационной ссылки.
Ctrl + F11 (или кликните на иконку скрепки / кнопку «Получить ссылку» в правом верхнем углу окна программы).По этой ссылке можно мгновенно определить природу объекта:
e1cib/data/Справочник.ДополнительныеОтчетыИОбработки... — перед нами 100% внешняя обработка, сохраненная в базе данных. Вы просто не нашли ее в справочнике (см. пункт 1).e1cib/app/Обработка.ИмяОбработки... — объект встроен в основную конфигурацию или добавлен с помощью расширения.Посмотрим на пример изящного технического подхода, если предыдущие методы не дали быстрого результата или вам лень перебирать справочник вручную. Мы можем поймать обработку "за руку" в момент ее запуска.
Проанализируем полученные строки кода в окне замера. Среди выполненного кода вы обязательно увидите вызовы функций, открывающих форму, и по именам переменных или модулей мгновенно вычислите настоящее имя объекта или ссылку на элемент справочника.
Рассмотрим ситуацию, когда список обработок огромен, и перебирать их долго. Поскольку в справочнике разработчик может задать любое имя, искать по названию нецелесообразно. Однако у каждой такой команды задается свойство Размещение.
Размещение.Зарплата (так как в нашей задаче обработка находится именно в подсистеме "Зарплата").Это действие моментально сузит круг поиска с сотен строк до нескольких штук, среди которых найти нужную не составит труда.
Разберем метод, который помогает, если обработка открывается программно. Мы можем зафиксировать след ее открытия в системе.
С большой долей вероятности платформа зафиксирует событие с указанием точного системного имени объекта метаданных или точного наименования элемента справочника, к которому обращался код.
Если во внешних обработках объекта точно нет, проанализируем альтернативные варианты размещения:
.epf из скрытой папки на сервере или сетевом диске предприятия. Чтобы выявить это, найдите саму кнопку в конфигураторе и посмотрите программный код ее команды.Иногда возникает парадокс: пользователь видит команду в интерфейсе и может ее запускать, но при вашем переходе в справочник дополнительных обработок список кажется пустым или в нем нет нужного элемента. Выясним причину: это может быть связано с ограничением прав на уровне записей (RLS) или банальным отсутствием полных прав у вашего текущего пользователя. Искать исходный элемент всегда следует под пользователем с ролями Полные права и Администратор системы.
Используя вышеописанные методы в комплексе, вы сможете быстро и точно находить любые потерянные инструменты в базах 1С, экономить время на реверс-инжиниринге и оперативно приступать к непосредственной задаче — доработке программного кода.