В процессе работы с конфигурациями на базе 1С:ERP 2.5, КА 2.5 или УТ 11.5 специалисты часто сталкиваются с неприятной ситуацией: при попытке открыть «Платежный календарь» система выдает критическую ошибку. Текст ошибки обычно ссылается на общий модуль ДенежныеСредстваКлиентСервер и отсутствие поля День0ВВалюте. Проблема носит избирательный характер — она может проявляться у одного пользователя и полностью отсутствовать у другого.
В этой статье мы подробно разберем, почему возникает этот сбой, проанализируем механизмы работы формы и рассмотрим пошаговые методики решения проблемы — от простых манипуляций с настройками до системной очистки кэша.
Рассмотрим ситуацию с технической точки зрения. Обработка ПлатежныйКалендарь строит дерево значений динамически. В зависимости от выбранного горизонта планирования (количества дней) и настроек валюты, система программно создает колонки в таблице. Эти колонки имеют строгую иерархию имен, например, День0, День1, День0ВВалюте и так далее.
Ошибка Поле объекта не обнаружено (День0ВВалюте) означает, что программный код в модуле ДенежныеСредстваКлиентСервер пытается обратиться к колонке, которой физически нет в структуре дерева значений на форме. Это происходит из-за того, что настройки пользователя «зависли» в некорректном состоянии или кэш формы конфликтует с новыми программными алгоритмами после обновления конфигурации. Особенно часто это проявляется на платформе 8.3.24.1586 и выше.
Как показывает практика практикующих специалистов, обычный сброс настроек к стандартным не всегда помогает, так как ошибка может сидеть глубоко в хранилище системных настроек. Разберем наиболее эффективный алгоритм действий:
Обработка.ПлатежныйКалендарь.Важный нюанс: как было отмечено в ходе обсуждения проблемы, иногда стандартное копирование не срабатывает. В этом случае попробуем временный лайфхак: назначим пользователю роль «Администратор», зайдем в систему под его учетной записью, выполним копирование настроек от «чистого» пользователя самому себе, и только после этого вернем прежние права.
Проанализируем ситуацию, когда дерево значений не может построиться из-за некорректных параметров периода. Если в настройках календаря установлен «нулевой» или слишком короткий горизонт планирования, алгоритм генерации колонок может дать сбой.
Попробуем выполнить следующие шаги:
ОбновитьСпискиНаСервере и перерисует структуру колонок.Поскольку ошибка явно указывает на поле с суффиксом ВВалюте, причина может скрываться в механизме мультивалютности. Рассмотрим, как это исправить:
В настройках платежного календаря найдем флаг Отображать данные в валюте:. Попробуем переключить его в режим «Валюта счета» или «Валюта регламентированного учета». Если в системе используется только одна валюта, но включена опция мультивалютности в константах, это может порождать конфликт. Проверьте, чтобы в системе не было «битых» ссылок в справочнике валют.
Если визуальные методы не помогают, воспользуемся инструментами разработчика. Нам необходимо полностью удалить записи об этом объекте из системного хранилища. Мы можем написать небольшой фрагмент кода в консоли запросов или внешней обработке:
КлючОбъекта = "Обработка.ПлатежныйКалендарь/НастройкиФормы";
Пользователь = "ИмяПроблемногоПользователя";
ХранилищеСистемныхНастроек.Удалить(КлючОбъекта, Неопределено, Пользователь);
Этот код принудительно удаляет «застрявшие» данные, которые не всегда очищаются стандартными средствами интерфейса «1С:Предприятие».
Выясним еще одну скрытую причину. Индекс День0 в коде соответствует текущей дате. Если в базе данных присутствуют документы (Заявки на расходование денежных средств или Заказы) с очень старыми датами, которые система помечает как «Просроченные», алгоритм расчета может запутаться в индексации колонок.
Рекомендуем проанализировать список неисполненных заявок:
Поскольку данная проблема признана вендором в некоторых релизах линейки 11.5.17.x, необходимо проверить наличие установленных исправлений. Перейдем в Администрирование — Обслуживание — Обновление программы — Установленные исправления (патчи).
Ищем патчи, в описании которых фигурируют ключевые слова «Платежный календарь» или «Денежные средства». Если патчи не загружены, рекомендуется включить автоматическую загрузку исправлений, так как ошибка День0ВВалюте часто лечится именно на уровне программного кода общего модуля через официальный Hotfix от фирмы «1С».
Подведем итог: в большинстве случаев проблема решается через копирование настроек от «здорового» пользователя к «проблемному» с временным повышением прав до уровня Администратора. Если это не помогло, следует переходить к очистке кэша и проверке корректности дат в первичных документах планирования денежных средств.