1с динамический список не отображается колонка

Обновлено: 07.07.2024

Работа табличного поля с динамическими списками

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

При отображении динамических списков табличное поле особым образом отображает полосу прокрутки - в ней бегунок отображается только в трех положениях : вверху , в центре и внизу , и имеет постоянный размер . Такое поведение связано с тем , что табличное поле для уменьшения объема выбираемых данных загружает из базы данных только часть списка , причем, считывание может происходить начиная с любой записи, в том числе и из середины списка . Тем самым табличное поле содержит только видимую часть списка и , следовательно , не имеет информации об положении строки в списке и количестве строк в списке . Поэтому бегунок не отражает положение видимой части списка и используется только для перемещения в начало и конец списка , а также к текущей строке списка . Также положение бегунка указывает на достижение начала или конца списка , это происходит если пользователь попытался выйти за границы списка .

Множественное выделение строк

При выделении группы строк в табличном поле ( например , при нажатии Shift+Home или Shift+End) выделяются только первая и последняя строка списка . Такое поведение характерно для табличных полей , отображающих динамические списки . Как уже было сказано выше , табличное поле при работе с динамическими списками оперирует только видимой частью списка и не имеет информации о положении строки в списке . Следовательно , при выборе группы записей , невозможно однозначно определить, какая из выбранных строк является первой , а какая последней . Следовательно , невозможно определить направление выделения строк , что не позволяет быстро определить диапазон строк .

Поэтому при множественном выделении в динамических списках выполняется выделение только отдельных строк и выделение соседних строк при движении вверх и вниз, но не выполняется выделение диапазонов строк .

Особенности использования свойств ТекущиеДанные и ТекущаяСтрока

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

Свойство ТекущиеДанные предназначено для получения значений колонок текущей строки , а свойство ТекущаяСтрока для получения и установки текущей строки табличного поля.

Следует заметить, что для объектных данных (Справочник, Документ и т.д.) в качестве значения свойства ТекущаяСтрока используется ссылка на объект базы данных. Соответственно при обращении к свойствам этого значения будет выполняться считывание объекта базы данных.

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

Особенности работы в режиме отображения дерева

В режиме отображения дерева табличное поле , отображающее динамические списки , особым образом отображает кнопки раскрытия узлов . Используется два цвета отображения кнопки : черный и серый . Если при попытке открытия узла дерева было обнаружено, что дочерних узлов нет , то кнопка рисуется серым цветом , иначе - черным . Такое поведение обусловлено тем , что определение наличия подчиненных узлов требует дополнительных ресурсов и при считывании данных не происходит . Поэтому для удобства пользователя узлы , у которых не было обнаружено дочерних узлов , запоминаются табличным полем . Также стоит отметить , что цвет кнопки никак не влияет на последующее раскрытие узлов дерева .

в нем прописал
Список.ТекстЗапроса = СтрЗаменить(Список.ТекстЗапроса, "itilprofИнциденты.КодЗавершения,", "itilprofИнциденты.КодЗавершения, itilprofИнциденты.ЧисловойПриоритет, itilprofИнциденты.КрайнийСрок, ");

НоваяКолонка = Элементы.Вставить("ЧисловойПриоритет", Тип("ПолеФормы"), Элементы.Список, Элементы.ТекущийИсполнитель);
НоваяКолонка.ПутьКДанным = "Список.ЧисловойПриоритет";
НоваяКолонка.Заголовок = "Приоритет(Ч)";
НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;

НоваяКолонка = Элементы.Вставить("КрайнийСрок", Тип("ПолеФормы"), Элементы.Список, Элементы.ТекущийИсполнитель);
НоваяКолонка.ПутьКДанным = "Список.КрайнийСрок";
НоваяКолонка.Заголовок = "Крайний срок";
НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;

Колонки появились. Но в них не отображаются значения! Отбор меж тем работает. Добавил реквизиты в расширение - не помогло. Что я делаю не так?!

(0) запрос измени в расширении - в данных динамического списка нет твоих реквизитов
А что смотреть? Строки в СписокПриПолученииДанныхНаСервереПосле посмотрел, там нет этих данных :(
(4) Не, ошибся - есть там.
Строки[45].Значение.Данные.ЧисловойПриоритет 77 Число
3 варианта. А в статьях что в инете нашел все было просто, так как я и написал изначально :( Буду пробовать сейчас

(14) какие три варианта?

(10)+(12)+(14) это один код по кусочкам - просто получилось так

(11) ПолеНадписи и так стоит по умолчанию после Элементы.Вставить("ЧисловойПриоритет", Тип("ПолеФормы"), Элементы.Список, Элементы.ТекущийИсполнитель);

(0) это из БСП если не хочешь так то попробуй вызвать код из БСП

Ну и "ОбщегоНазначения.УстановитьСвойстваДинамическогоСписка(Элементы.Список, СтруктураПараметров);" конечно же
Может с компоновщиком что то сделать надо?
Коллеги! неужели никто такого не делал? Не поверю никак!
(23) похоже это не поле ввода, а что-то другое. Почему влруг поле ввода?
(28) ну а почему отбор работает если не поменял текст запроса?
может с компоновщиком динамического запроса что нибудь надо сделать?
(31) Пробовал - не помогло. И потом я подозреваю что это ограничит возможность сортировки списка.

(32) Не парь мозг СтрЗаменить. Ты все равно затащил форму в расширение, сделай все по-человечески.

Во-первых добавление (заимствование) формы в расширение может привести к некоторым нежелательным эффектам, которые могут возникнуть после обновления конфигурации. Приведем немного теории.

Платформа использует сразу три формы:

Данные формы взаимодействуют между собой и в результате такого взаимодействия получается Результирующая форма, которую видит пользователь. В ходе взаимодействия указанных форм может возникнуть нежелательная ситуация, например, мы доработали форму в расширении, потом в новом релизе добавились реквизиты и они на форме не отображаются! Более подробно тут.

Во-вторых добавление формы в расширение привело бы к автоматическому добавлению всех реквизитов этого объекта и объектов метаданных (соответствующих ссылочным типам реквизитов объекта) в данное расширение, что загромождало бы само расширение и также не желательно.

Поэтому возникла задача программного создания элемента формы для добавленного реквизита в самом расширении, этому и посвящена данная публикация."

вот поэтому я должен (ТЗ такое) добавить в расширении в форму программно.

Особенности работы табличного поля с колонками динамических списков

Динамическими списками называются списки , использующие при обращении к базе данных механизм динамической выборки . Особенностью механизма динамической выборки является то , что данные считываются не полностью , а блоками , уменьшая время загрузки всего списка и размер отводимой для него памяти . Примерами динамических списков являются списки справочников , документов , регистров .

При считывании блока данных динамический список выполняет обращение к базе данных . Табличное поле для уменьшения объема выбираемых данных управляет набором полей , считываемых из базы данных . Считываются только те поля таблицы , которые связаны с соответствующими видимыми колонками табличного поля , поля, по которым выполняется упорядочивание, и поля , используемые табличным полем для отображения картинки и контроля удаления ( поля ЭтоГруппа , ПометкаУдаления ).

Отметим следующие особенности работы табличного поля с колонками динамических списков :

  • При создании табличное поле инициализирует связанный с ним динамический список набором видимых колонок . Всем колонкам , добавляемым табличным полем, устанавливается свойство колонки списка АвтоУдаление = Истина .
  • Специальная форма " Настройка списка ", открываемая через контекстное меню или через меню командной панели , позволяет управлять набором видимых колонок . После установки видимости колонок табличное поле установит новый набор колонок в связанный с ним динамический список , при этом колонки динамического списка, не видимые в табличном поле и у которых свойство АвтоУдаление = Истина, будут удалены из списка .

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

Иногда может потребоваться обратиться к колонкам динамического списка , не связанными с видидимыми только колонки Номенклатура и Сумма ( будет заполняться при обработке события табличного поля ПриВыводеСтроки ). Так как по умолчанию табличное поле устанавливает в динамический список только видимые колонки , то динамический список не будет содержать колонки Количество и Цена . Следовательно , при обработке события ПриВыводеСтроки возникнет ошибка времени выполнения . Для решения этой проблемы предлагаются следующие способы :

Как в списке установить нестандартную картинку строки

Для решения данной задачи существует два способа. Рассмотрим их на примере.

Создание колонки

Колонку с картинкой можно связать с колонкой данных, содержащих значение типов Число или Булево . В нашем случае требуется одну и ту же картинку выводить вместо стандартной, поэтому добавленная колонка должна содержать значение Истина для всех строк. Для динамического списка её нужно добавить в запросе.

Примечание
Для колонки данных типа Булево значения инвертируются, т. е. Истина означает индекс 0, а Ложь – индекс 1 (это реализовано для удобства отображения картинок-флажков, когда у некоторых строк картинка по некоторому условию есть, а у других её нет).

В списке реквизитов для реквизита ИндексКартинки установим флажок ИспользоватьВсегда .

В списке элементов формы добавим колонку с видом Поле картинки. Значение будет указывать индекс конкретной картинки для конкретной строки в наборе картинок.

В свойстве Данные поля выберем Список.ИндексКартинки .

Набор картинок задается в свойстве поля Картинка значений .

Созданную колонку можно поместить в произвольное место таблицы как самостоятельную или объединить с одной из колонок в группу колонок с группировкой В ячейке . Объединим поле Картинка с колонкой Код :


В результате список примет вид, как показано на рисунке:


Переопределение стандартной картинки

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

Читайте также: