Почему в списке заказов УТ 11 не отображается комментарий и как это исправить?

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

При работе с типовыми конфигурациями на платформе 1С:Предприятие 8.3, такими как Управление торговлей 11, ERP 2 или Комплексная автоматизация, разработчики и администраторы часто сталкиваются со странным поведением форм. Одна из типичных ситуаций: в динамическом списке (например, в списке заказов клиентов) отсутствует колонка Комментарий. При этом в конфигураторе флаг видимости установлен, программных скрытий в коде нет, а сброс настроек формы пользователем не помогает. Рассмотрим детально, почему это происходит и как решить задачу несколькими способами.

Анализируем причину: слои видимости в управляемых формах

Для начала разберем внутреннюю логику платформы. В управляемом приложении итоговое отображение элемента формы (колонки, поля, кнопки) зависит от сложения нескольких условий. Проанализируем основные факторы, влияющие на результат:

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

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

Способ 1. Исправление через расширение конфигурации

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

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

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

Способ 2. Программное управление видимостью

Иногда требуется управлять видимостью динамически, в зависимости от условий, которые нельзя описать ролями. Мы можем использовать обработчик ПриСозданииНаСервере. Однако здесь есть нюанс: программное изменение свойства Видимость работает, но свойство ПользовательскаяВидимость через код напрямую недоступно для записи.

Посмотрим на пример кода, который принудительно включает отображение поля:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    // Устанавливаем базовую видимость элемента
    Элементы.СписокКомментарий.Видимость = Истина;
    
    // Если поле было скрыто в пользовательских настройках, 
    // программная установка Видимость = Истина может не сработать так, как ожидается,
    // если платформа считает, что пользователь явно его скрыл.
КонецПроцедуры

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

Способ 3. Оптимизация вывода комментария (Первые N символов)

Комментарий в 1С — это обычно поле типа Строка неограниченной длины. Вывод таких полей в динамические списки может замедлять работу системы, особенно на больших объемах данных (SQL-серверу сложнее обрабатывать такие запросы). Проанализируем изящное решение: вывод только части комментария. Это решит проблему информативности и сохранит производительность.

Для этого нам нужно изменить запрос динамического списка. Перейдем в свойства динамического списка Список, откроем «Настройка списка» — «Запрос» и модифицируем текст запроса:


ВЫБРАТЬ
    ДокументЗаказКлиента.Ссылка КАК Ссылка,
    ДокументЗаказКлиента.Номер КАК Номер,
    ДокументЗаказКлиента.Дата КАК Дата,
    // Преобразуем неограниченную строку в строку фиксированной длины
    ВЫРАЗИТЬ(ДокументЗаказКлиента.Комментарий КАК СТРОКА(150)) КАК КомментарийКратко,
    ДокументЗаказКлиента.Партнер КАК Партнер
ИЗ
    Документ.ЗаказКлиента КАК ДокументЗаказКлиента

Теперь в элементах формы заменим старое поле Список.Комментарий на новое поле Список.КомментарийКратко. Такое поле будет корректно сортироваться и отображаться без лишних проблем с «Пользовательской видимостью», если вы создадите его с нуля в расширении. Для ознакомления с аналогичной практикой вывода данных в список подойдёт руководство по выводу дополнительной колонки в динамическом списке.

Способ 4. Массовое распределение настроек пользователям

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

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

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

Резюме

Выясним причину проблемы: чаще всего это отключенная Пользовательская видимость в свойствах элемента формы в конфигураторе. Для надежного решения рекомендуется использовать расширение, в котором эта видимость будет включена для всех необходимых ролей. Если же важна производительность, рассмотрите вариант с использованием функции ВЫРАЗИТЬ(... КАК СТРОКА) в запросе динамического списка для ограничения длины выводимого текста.

← На главную