При работе с программными продуктами на базе 1С:ERP Управление предприятием 2 (или 1С:Комплексная автоматизация) часто возникает ситуация, когда необходимо использовать обновленную форму регламентированного отчета (например, «Декларацию по налогу на имущество организаций») на более старом релизе конфигурации. Распространенный метод — сохранение отчета из нового релиза как внешнего и подключение его в рабочую базу. Однако при таком подходе программисты часто сталкиваются с проблемой: кнопка «Заполнить» либо отсутствует на форме, либо не выполняет никаких действий.
В этой статье мы подробно разберем, почему это происходит, проанализируем программные зависимости и выясним, какие шаги необходимо предпринять для восстановления функционала автозаполнения.
Первым делом проанализируем программный код модуля объекта отчета. Видимость элементов управления на форме регламентированных отчетов в современных конфигурациях 1С определяется структурой реквизитов, которая формируется динамически. Рассмотрим процедуру СформироватьСтруктуруРеквизитовФормы, которая отвечает за инициализацию параметров формы:
Процедура СформироватьСтруктуруРеквизитовФормы(ИмяФормы, СтруктураРеквизитовФормы) Экспорт
СтруктураРеквизитовФормы = Новый Структура;
// ... инициализация различных параметров ...
СтруктураРеквизитовФормы.Вставить("мСохранятьРасшифровку", Истина);
СтруктураРеквизитовФормы.Вставить("ОтображатьКнопкуЗаполнить", Истина);
СтруктураРеквизитовФормы.Вставить("ОтображатьКнопкуРасшифровать", Ложь);
// ...
КонецПроцедуры
Даже если в коде модуля объекта явно прописано СтруктураРеквизитовФормы.Вставить("ОтображатьКнопкуЗаполнить", Истина), кнопка может не появиться. Это происходит потому, что при инициализации формы в общих модулях РегламентированнаяОтчетность происходит дополнительная проверка. Если система обнаруживает, что для данной формы отчета в текущей конфигурации не определены алгоритмы заполнения или метаданные устарели, значение ОтображатьКнопкуЗаполнить принудительно устанавливается в Ложь.
Важно понимать, что современный регламентированный отчет в 1С:ERP — это лишь оболочка. Весь «интеллект» (сбор данных, расчет показателей, работа с регистрами) вынесен в общие модули. Простое копирование одного xml-файла отчета или внешнего файла .erf недостаточно.
Для корректного отображения и работы кнопки «Заполнить» нам потребуется обновить (или сопоставить изменения) в следующих общих модулях:
РегламентированнаяОтчетностьКлиентСерверРегламентированнаяОтчетностьКлиентРегламентированнаяОтчетностьРегламентированнаяОтчетностьВызовСервераРегламентированнаяОтчетностьПереопределяемыйБез актуализации этих модулей форма не сможет корректно инициализировать API для автозаполнения. Однако будьте осторожны: обновление этих модулей может повлиять на работоспособность других регламентированных отчетов в системе.
Если после обновления базовых модулей кнопка появилась, но отчет остается пустым, причина кроется в специфических механизмах расчета имущественных налогов. В 1С:ERP данные для декларации берутся не напрямую из проводок, а из результатов работы регламентных операций закрытия месяца, которые фиксируют данные в специализированных регистрах (например, РасчетНалогаНаИмущество).
Для того чтобы механизм заполнения «увидел» данные, необходимо проанализировать и, возможно, обновить следующие модули:
РасчетИмущественныхНалогов.ДанныеПоСреднейСтоимостиДвижимогоИмуществаРасчетИмущественныхНалоговПереопределяемыйРасчетИмущественныхНалоговУПТакже обратим внимание на регистры сведений, которые хранят информацию о сроках уплаты и продлениях (актуально для отчетных периодов, затронутых законодательными изменениями, например, COVID-19):
РегистрСведений.ПорядокУплатыНалоговНаМестах.ПродленыРегиональныеСрокиУплатыНалогаРегистрыСведений.НастройкиПродленияСроковНалоговОтчетовРазберем ситуацию глубже. В новых релизах ERP (например, 2.4.13.147) меняется структура хранения данных. Если вы переносите отчет в 2.4.13.123, программный код может искать данные в полях регистров, которых в 123-м релизе еще просто не существует. В этом случае SQL-запрос внутри общего модуля вернет пустой результат, и отчет не заполнится.
Рассмотрим шаги для исправления:
Элементы.Заполнить.Видимость = Ложь срабатывает из-за структуры реквизитов, попробуйте временно закомментировать это условие для отладки.РегламентированныеОтчеты для данного отчета указан актуальный программный идентификатор.РасчетНалогаНаИмущество.Если сроки сдачи отчетности поджимают, а полноценное обновление модулей в рабочей базе рискованно, рекомендуем следующий алгоритм:
XML (для сдачи в ФНС) или воспользуйтесь обработкой «Выгрузка/загрузка данных XML» для переноса уже заполненного документа РегламентированныйОтчет из копии в рабочую базу.Подводя итог, отметим: перенос регламентированной отчетности как внешних файлов в 1С:ERP становится всё более сложной задачей из-за тесной интеграции механизмов расчета с ядром конфигурации. Наиболее стабильным решением всегда остается своевременное обновление всей системы до поддерживаемых версий.