При работе с конфигурацией «Бухгалтерия предприятия, редакция 2.0» пользователи и разработчики часто сталкиваются с ситуацией, когда необходимо отредактировать уже загруженную в систему внешнюю обработку. Однако при попытке найти файл на диске выясняется, что оригинал утерян, а в самой программе кнопка сохранения не всегда очевидна. Разберем подробно, как извлечь обработку из информационной базы и какие технические нюансы при этом важно учитывать.
Проанализируем стандартное поведение системы. В «1С:Бухгалтерия 2.0», которая базируется на обычных формах, справочник с внешними обработками ведет себя специфически. Рассмотрим по шагам, почему кнопка сохранения может быть «невидимой»:
F2.Важно помнить, что в зависимости от версии платформы (например, если база запущена в тонком клиенте, хотя сама конфигурация на обычных формах), интерфейс может перестраиваться. В управляемом интерфейсе кнопка выгрузки часто скрыта под кнопкой «Еще» или в подменю «Все действия».
Если стандартный интерфейс изменен разработчиками и кнопки сохранения физически нет, мы можем прибегнуть к программному методу. В системе 1С файлы внешних обработок хранятся в базе данных в бинарном виде. Для этого используется специальный тип данных — ХранилищеЗначений. Рассмотрим пример кода, который позволит нам принудительно выгрузить файл на диск. Этот код можно запустить в консоли кода или создать временную внешнюю обработку.
// Выберем ссылку на элемент справочника, зная его наименование или код
СсылкаНаОбработку = Справочники.ВнешниеОбработки.НайтиПоНаименованию("ПечатьДоговора");
Если Не СсылкаНаОбработку.Пустая() Тогда
// Получим объект справочника
ОбъектСправочника = СсылкаНаОбработку.ПолучитьОбъект();
// В БП 2.0 реквизит обычно называется ХранилищеВнешнейОбработки
// Извлекаем данные из хранилища
ДвоичныеДанныеФайла = ОбъектСправочника.ХранилищеВнешнейОбработки.Получить();
Если ДвоичныеДанныеФайла <> Неопределено Тогда
ПутьВыгрузки = "C:\MyFiles\ExtProcessing.epf";
// Записываем данные на диск
ДвоичныеДанныеФайла.Записать(ПутьВыгрузки);
Сообщить("Файл успешно сохранен по пути: " + ПутьВыгрузки);
Иначе
Предупреждение("В карточке справочника отсутствует файл обработки (пустое хранилище)!");
КонецЕсли;
КонецЕсли;
Проанализируем этот алгоритм: метод Получить() у объекта ХранилищеЗначений возвращает объект типа ДвоичныеДанные, который обладает встроенным методом Записать(). Это самый надежный способ извлечения, который работает в обход любых ограничений экранных форм.
Рассмотрим ситуацию, когда вы только что запускали обработку. При выполнении внешней обработки из справочника, платформа 1С выполняет следующие действия за кулисами:
%TEMP%)..epf.Проанализируем содержимое папки временных файлов вашего профиля Windows. Если 1С не успела очистить кэш, вы можете найти там свою обработку. Ориентируйтесь на дату и время последнего изменения файла и размер, характерный для внешних обработок 1С. Это может спасти ситуацию, если элемент справочника в базе был случайно помечен на удаление или поврежден.
Иногда кнопка сохранения есть, но процесс завершается ошибкой или файл не появляется. Выясним основные причины:
«Вывод». В системе 1С это право отвечает за возможность сохранения любых данных во внешние файлы. Также проверьте наличие роли «Добавление и изменение внешних обработок».Подводя итог, отметим: в 90% случаев в «1С:Бухгалтерия 2.0» достаточно просто использовать кнопку «Изменить» вместо двойного клика. В остальных случаях программный доступ к реквизиту ХранилищеВнешнейОбработки гарантирует результат.