Как исправить ошибку «Поле объекта не обнаружено (День0ВВалюте)» при открытии Платежного календаря в 1С:УТ 11?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

В процессе работы с конфигурацией «1С:Управление торговлей» версии 11.5 (а также в ERP и КА) технические специалисты часто сталкиваются со специфической ошибкой при попытке пользователя открыть обработку «Платежный календарь». Проблема проявляется внезапно и, как правило, только у одного или нескольких сотрудников, в то время как у остальных отчет работает штатно. Система выдает сообщение: Поле объекта не обнаружено (День0ВВалюте), после чего работа с формой становится невозможной.

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

Анализ технической причины ошибки

Давайте проанализируем программный код, на который указывает стек ошибки. Обычно это общий модуль ДенежныеСредстваКлиентСервер или модуль самой обработки ПлатежныйКалендарь. Ошибка происходит в процедурах, отвечающих за пересчет данных в дереве значений формы. Рассмотрим типичный фрагмент кода, где возникает сбой:


// Пример участка кода из общего модуля
СтрокаДерева["День" + Инд] = СтрокаДерева["День" + Инд + "ВВалюте"];

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

Проанализируем ситуацию через отладчик. Как отмечают специалисты, у «проблемного» пользователя цикл инициализации может начинаться с индекса 0, в то время как структура колонок была сформирована иначе. Это часто связано с тем, что в Хранилище настроек данных форм сохранилась старая структура дерева, которая конфликтует с текущими функциональными опциями или данными системы.

Способ 1: Сброс и копирование настроек пользователя

Самый эффективный и быстрый метод решения проблемы — полная очистка настроек формы для конкретного пользователя и их замена на заведомо исправные. Разберем этот процесс по шагам:

  1. Перейдем в раздел НСИ и администрирование — Настройки пользователей и прав.
  2. Откроем справочник Пользователи и выберем сотрудника, у которого возникает ошибка.
  3. В карточке пользователя нажмем на кнопку Настройки пользователя (или перейдем по ссылке «Настройки»).
  4. В открывшемся окне найдем вкладку Внешний вид или Настройки отчетов/форм.
  5. Найдем в списке обработку Платежный календарь и выполним команду Очистить.

Важный нюанс: Иногда простая очистка не помогает, так как при первом же открытии система пытается восстановить настройки из кэша.

  1. Временно назначим пользователю полные права (роль Администратор).
  2. Зайдем под этим пользователем в базу и откроем Платежный календарь. С административными правами форма часто инициализируется корректно, перезаписывая структуру колонок.
  3. Если это не помогло, воспользуемся стандартной обработкой «Копирование настроек пользователей». Выберем в качестве «Донора» пользователя, у которого календарь работает правильно, и скопируем его настройки (раздел «Настройки форм») проблемному сотруднику.

Способ 2: Проверка функциональных опций и валют

Проанализируем ситуацию глубже. Ошибка часто связана с использованием мультивалютности. Если в настройках системы (НСИ и администрирование — Казначейство) включена опция «Несколько валют», календарь пытается строить колонки для валютных сумм.

Выясним, какие настройки внутри самого календаря могут влиять на появление поля День0ВВалюте:

Рекомендуем пользователю зайти в настройки самого календаря и убедиться, что горизонт планирования установлен корректно.

Способ 3: Работа с производственным календарем

Рассмотрим неочевидную причину: данные Производственного календаря. Поскольку расчет колонок День0, День1 и так далее опирается на рабочие дни, отсутствие данных в календаре РФ на текущий или следующий год может привести к тому, что функция ПараметрыРасчетаКалендаря вернет некорректный массив дат.

Выполним проверку:

  1. Перейдем в раздел НСИ и администрирование — Производственные календари.
  2. Проверим основной календарь (обычно «Российская Федерация»).
  3. Убедимся, что он заполнен на текущий и как минимум на следующий год.

Способ 4: Очистка кэша и использование команды «Изменить форму»

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

  1. Удалим информационную базу из списка в окне запуска 1С и добавим ее заново.
  2. Если форма открывается, но работает со сбоями, нажмем Еще — Изменить форму.
  3. В открывшемся окне выберем команду Установить стандартные настройки.

Резюме для разработчика

Проанализировав проблему, можно сделать вывод, что ошибка Поле объекта не обнаружено (День0ВВалюте) является следствием рассинхронизации между сохраненными настройками формы пользователя и актуальным алгоритмом построения дерева значений в УТ 11.5.

Наиболее надежный алгоритм решения выглядит так: Очистка настроек пользователя -> Копирование настроек от администратора -> Проверка актуальности производственного календаря и валют. В редких случаях требуется внесение правок в общий модуль для добавления проверки существования колонки перед обращением к ней, однако в типовых конфигурациях достаточно вышеописанных административных мер.

← На главную