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

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

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

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

Выясним причину возникновения ошибки

Рассмотрим ситуацию с технической точки зрения. Обработка ПлатежныйКалендарь строит дерево значений динамически. В зависимости от выбранного горизонта планирования (количества дней) и настроек валюты, система программно создает колонки в таблице. Эти колонки имеют строгую иерархию имен, например, День0, День1, День0ВВалюте и так далее.

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

Решение 1: Сброс и копирование настроек через «Администрирование»

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

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

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

Решение 2: Манипуляция горизонтом планирования

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

Попробуем выполнить следующие шаги:

  1. Если форма календаря все же открывается (хотя бы в ограниченном виде), нажмем на значок шестеренки (Настройки).
  2. Найдем поле Горизонт планирования (дней).
  3. Изменим текущее значение (например, с 10 на 15 или с 30 на 20).
  4. Нажмем «Сохранить и закрыть». Это действие принудительно инициирует процедуру ОбновитьСпискиНаСервере и перерисует структуру колонок.

Решение 3: Проверка настроек валюты

Поскольку ошибка явно указывает на поле с суффиксом ВВалюте, причина может скрываться в механизме мультивалютности. Рассмотрим, как это исправить:

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

Решение 4: Программная очистка хранилища настроек

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


КлючОбъекта = "Обработка.ПлатежныйКалендарь/НастройкиФормы";
Пользователь = "ИмяПроблемногоПользователя";
ХранилищеСистемныхНастроек.Удалить(КлючОбъекта, Неопределено, Пользователь);

Этот код принудительно удаляет «застрявшие» данные, которые не всегда очищаются стандартными средствами интерфейса «1С:Предприятие».

Решение 5: Устранение проблемы «Просроченных платежей»

Выясним еще одну скрытую причину. Индекс День0 в коде соответствует текущей дате. Если в базе данных присутствуют документы (Заявки на расходование денежных средств или Заказы) с очень старыми датами, которые система помечает как «Просроченные», алгоритм расчета может запутаться в индексации колонок.

Рекомендуем проанализировать список неисполненных заявок:

  1. Откроем список «Заявки на расходование ДС».
  2. Установим отбор по статусу «К оплате» или «Утверждена» и дате в прошлом (ранее сегодняшнего дня).
  3. Перенесем дату оплаты на текущую дату или закроем (аннулируем) неактуальные заявки.

Решение 6: Установка официальных патчей

Поскольку данная проблема признана вендором в некоторых релизах линейки 11.5.17.x, необходимо проверить наличие установленных исправлений. Перейдем в Администрирование — Обслуживание — Обновление программы — Установленные исправления (патчи).

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

Подведем итог: в большинстве случаев проблема решается через копирование настроек от «здорового» пользователя к «проблемному» с временным повышением прав до уровня Администратора. Если это не помогло, следует переходить к очистке кэша и проверке корректности дат в первичных документах планирования денежных средств.

← На главную