В работе бухгалтера и технического специалиста 1С часто возникают ситуации, когда после успешного обновления конфигурации программа продолжает вести себя так, будто изменения не вступили в силу. Одной из наиболее ярких проблем в релизе ЗУП 3.1.5.171 стала ситуация с отчетом 6-НДФЛ. Пользователи сталкиваются с тем, что форма, созданная согласно актуальному приказу ФНС, при повторном открытии внезапно помечается системой как «устаревшая». Проанализируем, почему это происходит и как привести систему в рабочее состояние.
Для начала вспомним предысторию. С отчетности за первый квартал 2018 года вступила в силу новая редакция формы 6-НДФЛ. Основные изменения коснулись титульного листа: появились поля для правопреемников реорганизованных компаний. Несмотря на то, что для большинства организаций визуально ничего не изменилось, на техническом уровне изменился формат выгрузки (XML) и внутренний идентификатор формы в системе 1С. В релизе 3.1.5.171 этот переход был реализован, но механизмы определения актуальности формы иногда давали сбой.
Разберем ситуацию подробно. Когда мы открываем регламентированный отчет, платформа 1С:Предприятие выполняет проверку соответствия текущей даты (или даты периода отчета) и периода действия конкретной редакции формы, прописанного в метаданных или специальных регистрах сведений. Проблема «ложного» устаревания обычно вызвана одной из трех причин:
Проанализируем самый простой способ, который помогает в большинстве случаев без привлечения программиста. Если отчет уже создан в новой форме, но открывается с предупреждением, попробуем перевыбрать редакцию вручную.
Рассмотрим по шагам:
Если ручное создание не помогает и программа упорно «подсовывает» старый бланк, перейдем к техническим манипуляциям. Очистка кэша — это стандартная процедура при возникновении странного поведения интерфейса после обновлений.
Посмотрим, как это сделать правильно:
Альтернативный метод для системных администраторов — запуск с параметром /ClearCache, однако полное передобавление базы в список является более надежным способом.
Выясним, все ли процедуры обработки данных были выполнены. В управляемом приложении ЗУП 3.1 это можно проверить в разделе Администрирование — Обслуживание — Обновление программы — Результаты обновления.
Если мы видим сообщения о невыполненных дополнительных процедурах, их необходимо запустить принудительно. Рассмотрим пример кода, который может использоваться в консоли заданий или через внешнюю обработку для проверки статуса (для разработчиков):
// Проверка статуса завершения обновления
Результат = ОбновлениеИнформационнойБазы.ПроцедурыОбновленияЗавершены();
Если Не Результат Тогда
Сообщить("Внимание: Процедуры обновления данных еще выполняются!");
КонецЕсли;
Пока эти процедуры не завершены, регистр БезопасноеХранилищеДанных и механизмы РегламентированнаяОтчетность могут работать по старым алгоритмам.
В некоторых случаях (как отмечалось на форумах, включая mista.ru), проблема кроется в том, что в базе уже записан документ, в котором ссылка на версию формы зафиксирована в момент записи. Если вчера форма была «новой», а сегодня стала «старой», проверим дату документа.
Важный момент: Дата документа на титульном листе должна быть не ранее 01.01.2018. Если случайно указана дата 2017 года, система автоматически переключит логику на старый приказ. Проанализируем заполнение поля Дата подписи.
Если и это не помогло, программисту рекомендуется проверить содержимое справочника РегламентированныеОтчеты. В нем для каждого отчета есть табличная часть или подчиненный регистр с версиями. Мы можем программно убедиться, какая форма выбрана основной:
// Пример логики поиска актуальной формы
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РегламентированныеОтчеты.Ссылка КАК Отчет,
| РегламентированныеОтчеты.Наименование
|ИЗ
| Справочник.РегламентированныеОтчеты КАК РегламентированныеОтчеты
|ГДЕ
| РегламентированныеОтчеты.ИсточникОтчета = ""ОрганизационныйОтчет6НДФЛ""";
РезультатЗапроса = Запрос.Выполнить();
// Далее анализируем версии в найденном объекте
Ситуация в релизе 3.1.5.171 — это классический пример конфликта метаданных при переходе на новый приказ ФНС. Для исправления ошибки «Форма устарела» рекомендуем придерживаться следующего алгоритма: сначала проверить дату отчета, затем попробовать создать новый экземпляр формы вручную, и если это не помогло — выполнить полную очистку кэша пользователя. В большинстве случаев проблема решается именно пересозданием документа, так как 1С «запоминает» версию формы в момент первого сохранения объекта.