Почему пропадают стандартные реквизиты из формы списка документов при смене режима совместимости и как это исправить?

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

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

Разберем подробнее, почему возникает такое поведение платформы, и рассмотрим пошаговые способы восстановления корректного отображения полей.

Причины сбоя отображения стандартных реквизитов

Проанализируем ключевые факторы, приводящие к потере колонок в динамическом списке:

  1. Особенности автогенерации системных псевдонимов: если в динамическом списке используется произвольный запрос без явного указания псевдонимов полей (конструкции КАК ИмяПоля), платформа формирует их автоматически. В зависимости от режима совместимости и версии платформы для стандартных реквизитов могут генерироваться англоязычные алиасы (например, Number вместо Номер, Date вместо Дата). В результате свойство элемента формы ПутьКДанным, настроенное на Список.Номер, теряет привязку, и платформа скрывает пустую колонку.
  2. Программное изменение текста запроса: при модификации текста запроса динамического списка в коде (например, в обработчике ПриСозданииНаСервере) платформа заново считывает структуру выборки. Если в новом тексте запроса псевдонимы не зафиксированы жестко, привязка элементов формы гарантированно сбрасывается.
  3. Кэширование настроек формы пользователем: если форма уже открывалась в момент некорректной привязки, платформа сохраняет пользовательские настройки (видимость, ширину колонок). После исправления структуры списка форма может продолжать открываться со скрытыми полями из кэша системных настроек.
  4. Ошибки платформы при промежуточных режимах совместимости: на некоторых релизах платформы (например, в линейке 8.3.10) наблюдались платформенные ошибки обработки динамических списков с программным текстом запроса, которые устраняются обновлением платформы и отключением режима совместимости.

Способы решения проблемы

Рассмотрим практические шаги, которые позволят вернуть стандартные реквизиты в список документов.

1. Явное указание псевдонимов в тексте запроса динамического списка

Самый надежный способ защитить динамический список от различий в поведении разных версий платформы — задать явные русскоязычные псевдонимы для всех выбираемых полей в тексте запроса.

Посмотрим на пример корректного формирования запроса:


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

Если запрос формируется или дополняется программно, проверим текст в модуле формы:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    ТекстЗапроса = 
        "ВЫБРАТЬ
        |   Док.Ссылка КАК Ссылка,
        |   Док.Номер КАК Номер,
        |   Док.Дата КАК Дата,
        |   Док.Контрагент КАК Контрагент
        |ИЗ
        |   Документ.ЗаказКлиента КАК Док";
        
    Список.ТекстЗапроса = ТекстЗапроса;
    
КонецПроцедуры

2. Проверка свойства «ПутьКДанным» и основной таблицы

Выполним проверку настроек в конфигураторе:

  1. Откроем форму документа и перейдем к свойствам реквизита Список (тип ДинамическийСписок).
  2. Убедимся, что свойство «Основная таблица» заполнено корректно (например, Документ.РеализацияТоваровУслуг). Если свойство очищено, список может терять часть стандартных свойств и команд.
  3. В дереве элементов формы выделим колонки Дата и Номер и проверим свойство ПутьКДанным. При необходимости заново выберем соответствующие поля (Список.Дата и Список.Номер).

3. Сброс пользовательских настроек формы

Если после исправления запроса колонки по-прежнему не видны в режиме «1С:Предприятие», выполним сброс сохраненных настроек:

  1. В пользовательском режиме в окне списка нажмем меню «Еще».
  2. Выберем команду «Установить стандартные настройки».
  3. Если проблема сохраняется у конкретных пользователей, очистим настройки формы через обработку управления настройками пользователей или удалим сохраненные данные формы из хранилища системных настроек.

Нюансы перехода на платформу 8.3.11 и выше (конфликт имен функций)

При отключении режима совместимости или переводе конфигурации на работу с версиями платформы 8.3.11 и выше можно столкнуться с синтаксической ошибкой: «Указанная процедура или функция уже определена».

Выясним причину: начиная с версии 8.3.11 во встроенный язык 1С были добавлены встроенные функции для выполнения побитовых операций:

  1. ПобитовоеИ
  2. ПобитовоеИЛИ
  3. ПобитовоеНЕ
  4. ПобитовоеИНе
  5. ПобитовоеИсключительноеИЛИ
  6. ПобитовыйСдвигВлево
  7. ПобитовыйСдвигВправо

Если в конфигурации (в составе библиотек БЭД, БСП или в собственном коде) присутствуют процедуры или функции с аналогичными именами, возникает конфликт идентификаторов. Для устранения ошибки необходимо:

  1. Обновить используемые библиотеки (БСП, БЭД) до версий, поддерживающих актуальную платформу без режима совместимости.
  2. Если функции самописные — переименовать их (например, в ОбщегоНазначенияКлиентСервер.ПобитовоеИ_Собственное) и скорректировать места их вызова либо перейти на использование встроенных функций платформы.
← На главную