Почему реквизит СуммаДокумента не отображается в списке, хотя он заполнен в документе

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В практике разработчика 1С нередко встречается странная ситуация: пользователь открывает список документов и видит пустые значения в колонке СуммаДокумента. При этом, если открыть сам документ, сумма на месте. Более того, при проверке через отладчик в самом объекте данные присутствуют. Разберем по шагам, почему возникает этот визуальный разрыв и как привести отображение данных в порядок.

Проверяем физическое наличие данных в базе данных

Прежде чем грешить на интерфейс, нам необходимо убедиться, что данные действительно записаны в таблицу базы данных, а не существуют только «в памяти» объекта. Рассмотрим ситуацию: если документ создавался программно, разработчик мог заполнить реквизиты табличной части, но забыть обновить итоговый реквизит шапки или не вызвать метод Записать().

Проанализируем ситуацию с помощью консоли запросов. Это самый надежный способ узнать, что видит СУБД. Напишем простой запрос к таблице документов:


ВЫБРАТЬ
    Ссылка,
    СуммаДокумента
ИЗ
    Документ.РеализацияТоваровУслуг
ГДЕ
    Ссылка = &СсылкаНаПроблемныйДокумент

Если запрос возвращает пустое значение, значит, проблема в логике записи документа. Возможно, при программном создании был установлен флаг ОбменДанными.Загрузка = Истина, и стандартные обработчики пересчета суммы не сработали. В этом случае нам потребуется пересчитать итоги и перезаписать документы.

Настройка динамического списка: свойство Использовать всегда

Если запрос к базе данных показывает, что сумма есть, переходим к анализу настроек динамического списка в конфигураторе. Платформа 1С оптимизирует запросы к базе данных. Если какой-то реквизит не выведен на форму визуально и не используется в оформлении, платформа может просто не выбирать его из базы данных для экономии ресурсов.

Разберем, как это исправить:

  1. Откроем Конфигуратор и найдем нужную форму списка.
  2. Перейдем к свойствам Динамического списка (обычно это основной реквизит Список).
  3. Откроем настройки «Настройка списка» или «Запрос».
  4. В списке доступных полей найдем СуммаДокумента.
  5. Установим флаг в колонке Использовать всегда.

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

Влияние расширений конфигурации

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

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

Очистка кэша и пользовательские настройки

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

Выполним следующие действия для очистки:

Функциональные опции

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

Проверим в конфигураторе свойство Проверка функциональных опций у реквизита документа и у соответствующего поля в форме списка.

Тестирование и исправление (ТиИ)

В редких случаях, особенно на SQL-версиях, может возникнуть рассинхронизация индексов. Выполним регламентные операции в базе данных:

  1. Запустим Конфигуратор.
  2. Меню Администрирование — Тестирование и исправление.
  3. Выберем пункты Реиндексация таблиц и Пересчет итогов.

Это восстановит корректную связь между физическими таблицами и представлениями, которые использует динамический список.

Итоги диагностики

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

← На главную