Как исправить ошибку «Метод объекта не обнаружен (БлижайшийНалоговыйПериод)» при заполнении декларации по НДС в 1С:Бухгалтерия 2.0?

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия Налоговый учет IT и автоматизация бизнеса
← На главную

При работе в конфигурации 1С:Бухгалтерия предприятия 2.0 в клиент-серверном варианте (SQL) пользователи могут столкнуться с критической ошибкой во время автозаполнения формы «Декларация по НДС». При этом в локальной файловой базе тот же отчет формируется штатно и без замечаний.

Разберем подробнее текст ошибки, выясним причину такого поведения платформы 1С:Предприятие и рассмотрим практические способы решения проблемы.

Анализ ошибки и симптомы

Во время нажатия кнопки «Заполнить» в регламентированном отчете система аварийно завершает расчет со следующим сообщением в окне служебных сообщений:

{ОбщийМодуль.РегламентированнаяОтчетность.Модуль(24306)}: Метод объекта не обнаружен (БлижайшийНалоговыйПериод)
Возврат Перечисления.ВариантыРасширенногоПервогоНалоговогоПериода.БлижайшийНалоговыйПериод(Организация, ...

При пошаговой отладке кода видно, что ошибка проявляется при вызове серверной процедуры формирования:


ПараметрыОтчета = Новый Структура();
ПараметрыОтчета.Вставить("ДатаНачалаРасширенногоПериодаОтчета", ДатаНачалаРасширенногоПериодаОтчета());
ПараметрыОтчета.Вставить("мДатаНачалаПериодаОтчета", мДатаНачалаАвтозаполнения);
ПараметрыОтчета.Вставить("мДатаКонцаПериодаОтчета", мДатаКонцаАвтозаполнения);
ПараметрыОтчета.Вставить("Организация", Организация);
ПараметрыОтчета.Вставить("ГруппаОрганизаций", СписокОрганизаций);
ПараметрыОтчета.Вставить("ВидДокумента", ВидДокумента);
ПараметрыОтчета.Вставить("ДатаПодписи", ДатаПодписи);
ПараметрыОтчета.Вставить("Контейнер", Контейнер);
ПараметрыОтчета.Вставить("Декларация", мСохраненныйДок.Ссылка);

АдресХранилища = ПоместитьВоВременноеХранилище(ПараметрыОтчета, Новый УникальныйИдентификатор());

ОбщиеПараметрыЗаполнения = Новый Структура();
ОбщиеПараметрыЗаполнения.Вставить("ВидОтчета", "РегламентированныйОтчетНДСФормаОтчета2017Кв1");
ОбщиеПараметрыЗаполнения.Вставить("АдресХранилища", АдресХранилища);

ЗаполнениеРегламентированнойОтчетностиСервер.ЗаполнитьРегламентированныйОтчет(ОбщиеПараметрыЗаполнения);

Почему ошибка возникает только в клиент-серверной (SQL) базе

Проанализируем архитектурные различия между файловым и клиент-серверным исполнением кода:

  1. Файловый режим (Толстый клиент): При запуске толстого клиента в файловой базе весь программный код компилируется и исполняется в едином контексте толстого клиента. Инструкции условной компиляции вида #Если ТолстыйКлиентОбычноеПриложение Тогда всегда возвращают значение Истина, поэтому все методы менеджеров объектов компилируются и остаются доступными.
  2. Клиент-серверный режим (SQL): Вызов метода ЗаполнениеРегламентированнойОтчетностиСервер.ЗаполнитьРегламентированныйОтчет() передает управление на сторону сервера 1С. В модуле менеджера перечисления Перечисления.ВариантыРасширенногоПервогоНалоговогоПериода экспортная функция БлижайшийНалоговыйПериод была ошибочно обернута в директиву препроцессора для клиента. Серверный компилятор платформы исключает эту функцию из серверной сборки модуля, в результате чего при обращении сервера к менеджеру перечисления возникает исключение «Метод объекта не обнаружен».

Для гарантированного выявления таких проблем на этапе разработки используем встроенную проверку конфигурации (меню Конфигурация → Проверка конфигурации...) с обязательным включением флагов «Сервер», «Толстый клиент (обычное приложение)» и «Внешнее соединение».

Способ 1. Корректировка директив препроцессора в модуле менеджера перечисления (Основное решение)

Разберем по шагам, как исправить программный код, если конфигурация снята с полной поддержки или находится на поддержке с возможностью редактирования:

  1. Открываем дерево метаданных и переходим к объекту: Перечисления → ВариантыРасширенногоПервогоНалоговогоПериода.
  2. Открываем Модуль менеджера данного перечисления.
  3. Находим объявление экспортной функции БлижайшийНалоговыйПериод.
  4. Корректируем директиву препроцессора, добавив доступность для сервера:

#Если ТолстыйКлиентОбычноеПриложение ИЛИ Сервер Тогда

Функция БлижайшийНалоговыйПериод(Организация, ДатаРегистрации, ДатаОтчета) Экспорт
    // Тело функции
КонецФункции

#КонецЕсли

Также можно полностью удалить обрамляющие директивы #Если ... #КонецЕсли, чтобы сделать экспортные методы менеджера перечисления доступными во всех контекстах выполнения.

Способ 2. Изменение свойств общего модуля (Быстрое исправление без правки кода)

Если требуется минимальное вмешательство в структуру конфигурации:

  1. Находим в дереве метаданных общий модуль ЗаполнениеРегламентированнойОтчетностиСервер.
  2. Открываем его палитру свойств.
  3. Устанавливаем признак Толстый клиент (обычное приложение) в значение Истина (ставим соответствующую галку компиляции).
  4. Сохраняем изменения и обновляем конфигурацию базы данных (F7).

После включения данного флага контекст вызова позволит корректно обработать все связанные клиентские методы.

Способ 3. Подключение внешнего регламентированного отчета (Без изменения конфигурации)

Если информационная база находится на строгой типовой поддержке и внесение изменений в метаданные запрещено регламентом предприятия, применяем внешнюю форму отчета:

  1. Получаем файл внешней формы декларации по НДС (файл с расширением .epf), выпущенный фирмой «1С» в качестве оперативного исправления.
  2. В режиме «1С:Предприятие» переходим в раздел Отчеты → Регламентированные отчеты.
  3. Открываем Настройка → Справочник регламентированных отчетов.
  4. Находим строку «Декларация по НДС», нажимаем кнопку Загрузить и указываем путь к исправленному файлу .epf.
  5. Формируем и заполняем отчет — алгоритм будет выполняться из внешней обработки без возникновения серверных ошибок.

Способ 4. Временный обход через файловую копию

В экстренной ситуации, когда декларацию необходимо сдать срочно, а правка конфигурации или загрузка внешних форм откладывается:

  1. Выгружаем информационную базу в файл выгрузки (.dt) через меню Администрирование → Выгрузить информационную базу...
  2. Разворачиваем локальную файловую информационную базу из полученного файла.
  3. Открываем регламентированный отчет в файловой копии и нажимаем Заполнить.
  4. Выгружаем готовый отчет в файл выгрузки регламентированной отчетности (формат XML для передачи в ФНС) либо переносим документ отчета в рабочую SQL-базу стандартными обработками переноса данных.

Рекомендация: Для окончательного устранения проблемы рекомендуется обновить конфигурацию 1С:Бухгалтерия предприятия 2.0 на релиз 2.0.66.43 или более поздний, где ошибка в директивах препроцессора перечисления исправлена разработчиками поставщика.

← На главную