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