Процесс интеграции 1С:Бухгалтерия государственного учреждения с системой АЦК-Финансы часто сопровождается трудностями при выгрузке документов, таких как «Заявка на кассовый расход». Основная проблема заключается в том, что формат обмена требует строгого соответствия данных в XML-файле внутренним справочникам АЦК. Если какое-то поле не заполнено или заполнено некорректно, система выдает технические ошибки вроде BUDGETNAME не заполнено или Объект GRANTINVESTMENTCODE не найден.
В этой статье мы подробно разберем, почему возникают эти ошибки, как работает программный алгоритм поиска наименования бюджета и что нужно изменить в настройках справочников, чтобы выгрузка прошла успешно.
Ошибка Обязательное поле EXTRWT/WTFORMAT/DOCAZKREQUESTS/DOCAZKREQUEST[last]/*BUDGETNAME>> не заполнено указывает на то, что в сформированном XML-файле тег, отвечающий за наименование бюджета, оказался пустым. Пользователи часто сталкиваются с ситуацией, когда в карточке учреждения бюджет указан, но ошибка всё равно сохраняется. Выясним причину, проанализировав программную логику типовых конфигураций.
Система 1С определяет наименование бюджета по иерархическому принципу. Рассмотрим пример экспортной функции, которая отвечает за получение этого значения:
// Получает наименование бюджета для печатных форм и выгрузки
Функция НаименованиеБюджета(Объект) ЭКСПОРТ
Если Документы.ТипВсеСсылки.СодержитТип(ТипЗнч(Объект)) Тогда
ЗапросТекстШапка = "ВЫБРАТЬ";
ЗапросТекстПодвал = " ";
// Проверка наличия реквизита Лицевой Счет
Если ОбщегоНазначения.ЕстьРеквизитДокумента("ЛицевойСчет", Объект.Метаданные) Тогда
ЗапросТекстШапка = ЗапросТекстШапка +" | ВЫБОР | КОГДА Объект.ЛицевойСчет.НеВыводитьНаименованиеБюджета | ТОГДА """" | ИНАЧЕ ";
ЗапросТекстПодвал = " | Объект.ЛицевойСчет.Владелец.Бюджет.НаименованиеПолное | КОНЕЦ ";
КонецЕсли;
// Проверка наличия ИФО (Баланса)
Если ОбщегоНазначения.ЕстьРеквизитДокумента("Баланс", Объект.Метаданные) Тогда
ЗапросТекстШапка = ЗапросТекстШапка +" | ВЫБОР | КОГДА Объект.Баланс.ИспользоватьРеквизитыИФО | ТОГДА Объект.Баланс.Бюджет.НаименованиеПолное | ИНАЧЕ ";
ЗапросТекстПодвал = ЗапросТекстПодвал + " | КОНЕЦ ";
КонецЕсли;
// Если нет Лицевого счета, берем из Учреждения
Если НЕ ОбщегоНазначения.ЕстьРеквизитДокумента("ЛицевойСчет", Объект.Метаданные) И ОбщегоНазначения.ЕстьРеквизитДокумента("Учреждение", Объект.Метаданные) Тогда
ЗапросТекстШапка = ЗапросТекстШапка +" | Объект.Учреждение.Бюджет.НаименованиеПолное ";
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = ЗапросТекстШапка + ЗапросТекстПодвал + " КАК НаименованиеБюджета | ИЗ | Документ." + Объект.Метаданные.Имя + " КАК Объект | ГДЕ | Объект.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Объект);
Попытка
Выборка = Запрос.Выполнить.Выбрать();
Исключение
Возврат "";
КонецПопытки;
Если Выборка.Следующий() Тогда
Возврат Выборка.НаименованиеБюджета;
Иначе
Возврат "";
КонецЕсли;
КонецЕсли;
КонецФункции
Проанализировав данный код, мы видим, что приоритет отдается Лицевому счету или ИФО (Источнику финансового обеспечения), который в метаданных часто называется Баланс. Если в документе выбран ИФО и в его настройках стоит флаг «Использовать реквизиты ИФО», программа будет пытаться взять бюджет именно из карточки ИФО. Если там поле Бюджет не заполнено, выгрузка вернет пустую строку, даже если бюджет указан в карточке организации.
Решение: Проверьте справочник Структура организации -> ИФО. Убедитесь, что для используемого ИФО выбран бюджет. Если разделение по ИФО не требуется для выгрузки, попробуйте временно очистить это поле в документе — это поможет подтвердить причину проблемы.
Вторая распространенная проблема — ошибка не указан код субсидии и инвестиции(GRANTINVESTMENTCODE). Это актуально для документов по КФО 5 (субсидии на иные цели) или КФО 6. Система АЦК крайне требовательна к формату этого кода.
Рассмотрим шаги для исправления:
Виды целевых субсидий или Дополнительные классификаторы. Убедитесь, что код введен корректно, без лишних точек и пробелов.Настройка формирования файлов обмена. Найдите параметр GRANTINVESTMENTCODE. В настройках формата можно принудительно указать длину поля и дополнение нулями слева.Иногда даже при заполненных реквизитах АЦК выдает ошибку: Банк не найден. Это происходит из-за рассинхронизации справочников БИК между вашей базой 1С и базой АЦК на стороне финансового органа.
Разберем основные причины:
BANKNAME в XML может содержать сокращенное наименование, в то время как АЦК ожидает полное (или наоборот). Некоторые настройки обмена позволяют вообще исключить передачу наименования банка, так как АЦК идентифицирует его по БИК.Для успешной выгрузки заявок на кассовый расход в АЦК необходимо придерживаться следующих правил:
Бюджет не только в карточке учреждения, но и в справочниках Лицевые счета и ИФО.GRANTINVESTMENTCODE) требованиям вашего казначейства или финоргана по длине и формату.Использование правильной иерархии заполнения данных позволит избежать большинства ошибок «обязательное поле не заполнено» и обеспечит корректное взаимодействие между 1С и АЦК-Финансы.