В процессе работы с конфигурацией «Бухгалтерия государственного учреждения 2.0» (БГУ 2.0) часто возникает необходимость настройки специфических форматов обмена с казначейскими и банковскими системами. Одной из типовых, но нетривиальных задач является формирование имени файла выгрузки, которое должно содержать данные из связанных справочников. Рассмотрим ситуацию, когда при выгрузке реестра квитанций на оплату требуется включить в имя файла первые 10 цифр из поля Комментарий справочника Группы детского учреждения.
При настройке формата обмена в режиме «1С:Предприятие» через справочник «Настройки форматов обмена» мы работаем со вкладкой «Структура имени файла». Здесь система позволяет использовать выражения на языке 1С, дополненные функциями из специального общего модуля БиблиотекаФункцийОбмена.
Проанализируем типичную ошибку, которую совершают многие разработчики при первой настройке. Использование функции БиблиотекаФункцийОбмена.ПолучитьЗначениеДополнительногоРеквизитаСправочника для извлечения комментария не даст результата. Выясним причину: в системе 1С Комментарий — это системный (стандартный) реквизит. Механизм «Дополнительных реквизитов и сведений» предназначен только для тех полей, которые были созданы пользователем вручную. Для стандартных полей эта функция всегда будет возвращать пустое значение, не выдавая при этом ошибки синтаксиса.
Прежде чем писать код формирования имени, разберем, что именно система понимает под словом Объект. В контексте выгрузки Объект — это ссылка на текущий выгружаемый документ (например, Реестр квитанций). Чтобы добраться до данных справочника, нам нужно пройти по цепочке связей.
Рассмотрим пошагово, как построить правильное выражение:
Объект.ГруппаДетскогоУчреждения).БиблиотекаФункцийОбмена.ПолучитьЗначениеРеквизита.БиблиотекаФункцийОбмена.СтрЛев.Проанализируем правильный синтаксис выражения, который необходимо вставить в поле настройки структуры имени файла. Вместо попыток прямого обращения через точку (которое может не сработать из-за особенностей парсера формата обмена), применим надежный метод из библиотеки:
БиблиотекаФункцийОбмена.СтрЛев(БиблиотекаФункцийОбмена.ПолучитьЗначениеРеквизита(Объект.ГруппаДетскогоУчреждения, "Комментарий"), 10)
В данном примере функция ПолучитьЗначениеРеквизита принимает два параметра: ссылку на объект (в нашем случае это группа, указанная в документе) и строковое имя реквизита, значение которого мы хотим получить. После этого функция СтрЛев отсекает все символы после десятого.
При формировании имен файлов часто требуются дополнительные преобразования. Разберем полезные методы, которые предоставляет БиблиотекаФункцийОбмена для БГУ 2.0:
НСтр или проверку на пустое значение, чтобы файл не создавался с некорректным именем.БиблиотекаФункцийОбмена.СтрЗаменить.БиблиотекаФункцийОбмена.ДополнитьСтроку(НужнаяСтрока, 10, "0", "Слева").Если вы применили правильный синтаксис, но значение в имени файла все равно не появляется, проанализируем возможные причины:
Группа детского учреждения в том конкретном реестре, который вы пытаетесь выгрузить.ГруппаДетскогоУчреждения в документе имеет составной тип, парсер может не определить метаданные автоматически. В этом случае может потребоваться явное приведение типа.Важный совет: Для отладки попробуйте сначала вывести в имя файла простой реквизит документа, например Объект.Номер. Если номер выводится корректно, значит, доступ к контексту объекта настроен правильно, и проблему следует искать именно в пути к реквизиту справочника или в правах доступа на этот справочник.
Используя описанный подход с применением функций БиблиотекаФункцийОбмена, вы сможете гибко настраивать имена файлов для любых казначейских и банковских форматов в БГУ 2.0, обеспечивая автоматизацию процесса без необходимости внесения изменений в программный код конфигурации.