При разработке и обновлении конфигураций 1С разработчики нередко сталкиваются с ситуацией, когда после изменения режима совместимости (например, при установке значения «Не использовать» или переходе на более актуальную версию платформы) из таблиц управляемых форм визуально пропадают колонки стандартных реквизитов — чаще всего Дата и Номер. При этом в конфигураторе элементы формы отображаются на своих местах, но в режиме «1С:Предприятие» колонки становятся невидимыми или теряют связь с данными.
Разберем подробнее, почему возникает такое поведение платформы, и рассмотрим пошаговые способы восстановления корректного отображения полей.
Проанализируем ключевые факторы, приводящие к потере колонок в динамическом списке:
КАК ИмяПоля), платформа формирует их автоматически. В зависимости от режима совместимости и версии платформы для стандартных реквизитов могут генерироваться англоязычные алиасы (например, Number вместо Номер, Date вместо Дата). В результате свойство элемента формы ПутьКДанным, настроенное на Список.Номер, теряет привязку, и платформа скрывает пустую колонку.ПриСозданииНаСервере) платформа заново считывает структуру выборки. Если в новом тексте запроса псевдонимы не зафиксированы жестко, привязка элементов формы гарантированно сбрасывается.Рассмотрим практические шаги, которые позволят вернуть стандартные реквизиты в список документов.
Самый надежный способ защитить динамический список от различий в поведении разных версий платформы — задать явные русскоязычные псевдонимы для всех выбираемых полей в тексте запроса.
Посмотрим на пример корректного формирования запроса:
ВЫБРАТЬ
ДокументРеализация.Ссылка КАК Ссылка,
ДокументРеализация.ПометкаУдаления КАК ПометкаУдаления,
ДокументРеализация.Номер КАК Номер,
ДокументРеализация.Дата КАК Дата,
ДокументРеализация.Проведен КАК Проведен,
ДокументРеализация.Контрагент КАК Контрагент,
ДокументРеализация.СуммаДокумента КАК СуммаДокумента
ИЗ
Документ.РеализацияТоваровУслуг КАК ДокументРеализация
Если запрос формируется или дополняется программно, проверим текст в модуле формы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТекстЗапроса =
"ВЫБРАТЬ
| Док.Ссылка КАК Ссылка,
| Док.Номер КАК Номер,
| Док.Дата КАК Дата,
| Док.Контрагент КАК Контрагент
|ИЗ
| Документ.ЗаказКлиента КАК Док";
Список.ТекстЗапроса = ТекстЗапроса;
КонецПроцедуры
Выполним проверку настроек в конфигураторе:
Список (тип ДинамическийСписок).Документ.РеализацияТоваровУслуг). Если свойство очищено, список может терять часть стандартных свойств и команд.Дата и Номер и проверим свойство ПутьКДанным. При необходимости заново выберем соответствующие поля (Список.Дата и Список.Номер).Если после исправления запроса колонки по-прежнему не видны в режиме «1С:Предприятие», выполним сброс сохраненных настроек:
При отключении режима совместимости или переводе конфигурации на работу с версиями платформы 8.3.11 и выше можно столкнуться с синтаксической ошибкой: «Указанная процедура или функция уже определена».
Выясним причину: начиная с версии 8.3.11 во встроенный язык 1С были добавлены встроенные функции для выполнения побитовых операций:
ПобитовоеИПобитовоеИЛИПобитовоеНЕПобитовоеИНеПобитовоеИсключительноеИЛИПобитовыйСдвигВлевоПобитовыйСдвигВправоЕсли в конфигурации (в составе библиотек БЭД, БСП или в собственном коде) присутствуют процедуры или функции с аналогичными именами, возникает конфликт идентификаторов. Для устранения ошибки необходимо:
ОбщегоНазначенияКлиентСервер.ПобитовоеИ_Собственное) и скорректировать места их вызова либо перейти на использование встроенных функций платформы.