Как исправить ошибку «Поле объекта не обнаружено (Остаток)» в Платежном календаре 1С:УТ 11

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

При работе в конфигурации 1С:Управление торговлей 11 (УТ 11) пользователи часто сталкиваются с ситуацией, когда при открытии или обновлении Платежного календаря система выдает критическую ошибку: Поле объекта не обнаружено (Остаток). Особенность этой проблемы заключается в том, что она может проявляться у одного пользователя и отсутствовать у другого, даже если им назначены одинаковые роли доступа. В данной статье мы подробно разберем причины возникновения этой ошибки и пошагово рассмотрим методы её устранения.

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

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


// Фрагмент из общего модуля ДенежныеСредстваКлиентСервер
НачальныйОстаток = СтрокаДерева.Остаток;
ДенежныеСредстваКлиентСервер.ПересчитатьПодчиненныеСтрокиДерева(СтрокаДерева, ДнейПланирования);

Причина ошибки кроется в том, что объект СтрокаДерева (элемент дерева значений, на котором строится интерфейс календаря) в данный момент не содержит колонку Остаток. В 1С:УТ 11 структура этого дерева формируется динамически. Состав колонок зависит от функциональных опций, настроек самого календаря и прав доступа пользователя к регистрам накопления. Если в системе сохранены старые или некорректные настройки формы, алгоритм пытается обратиться к полю, которое не было создано при текущем запуске.

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

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

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

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

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

Структура данных в казначействе УТ 11 жестко привязана к включенным функциональным опциям. Если вы недавно обновляли систему или меняли настройки учета, это могло повлиять на состав реквизитов обработки. Рассмотрим, какие опции критичны для работы календаря:

Проанализируем раздел НСИ и администрирование — Казначейство и взаиморасчеты. Должны быть активны следующие флаги:

Если опции включены, но ошибка сохраняется, попробуйте временно их выключить и включить снова (в нерабочее время), чтобы система принудительно обновила связанные метаданные.

Способ 3: Удаление локального кэша базы данных

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

  1. Закроем 1С:Предприятие.
  2. Удалим базу из списка в окне запуска и добавим её заново. Это самый простой способ полностью обновить кэш для конкретной информационной базы.
  3. Второй вариант: запустим базу с параметром /ClearCache. Для этого в окне запуска нажмем «Изменить», перейдем на последнюю вкладку и в поле «Дополнительные параметры запуска» впишем указанную команду.

Способ 4: Проверка прав доступа и RLS

Иногда отсутствие поля Остаток может быть следствием работы механизма RLS (Record Level Security). Если роль пользователя позволяет видеть обработку, но ограничивает доступ к конкретным счетам или кассам, программный код может «споткнуться» при расчете итогов. Проверим следующие моменты:

Методика отладки для разработчиков

Если вы опытный пользователь или программист, рассмотрим, как точно локализовать место ошибки через конфигуратор. Основная сложность в том, что расчет данных в последних версиях УТ 11 часто уходит в фоновые задания. Чтобы «поймать» ошибку, выполните следующие шаги:

  1. Включите отладку на сервере (если работаете в клиент-серверном варианте).
  2. В настройках отладчика (Сервис — Параметры — Отладка) установите флажок «Останавливаться по ошибке».
  3. В модуле Обработка.ПлатежныйКалендарь.Форма.Форма найдем процедуру ОбновитьСпискиНаСервере(). Проанализируем вызов расчета данных:

// Пример кода инициализации расчета
ПараметрыРасчета = ПараметрыРасчетаКалендаря(ИзмененыРеквизиты);
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
ОбработкаОбъект.РассчитатьДанныеКалендаря(ПараметрыРасчета);

Если отладчик останавливается на строке НачальныйОстаток = СтрокаДерева.Остаток, внимательно посмотрите в табло переменную СтрокаДерева. Разверните её и проверьте наличие колонки. Если её нет, поднимитесь выше по стеку вызовов к месту, где дерево значений инициализируется и заполняется колонками. Скорее всего, вы увидите условие (Если... Тогда), которое не выполняется из-за отсутствия какой-либо настройки или права доступа, в результате чего колонка просто не добавляется в структуру дерева.

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

← На главную