Коллеги, здравствуйте. Необходимо определить ТаблицуЗначений, которая связана с ТаблицейФормы. Ранее с таким не сталкивалась, как проще всего это установить?
13.09.2023 22:31:05
Коллеги, здравствуйте. Необходимо определить ТаблицуЗначений, которая связана с ТаблицейФормы. Ранее с таким не сталкивалась, как проще всего это установить? |
|
|
|
14.09.2023 21:32:57
Таблица значений на форме размещается в виде элемента формы Таблица. Это элемент будет создан автоматически, если перетащить мышкой реквизит с типом таблица значений в дерево элементов. Если таблица значений создана на форме в виде реквизита, то обращаться к этому реквизиту можно в любом контексте, платформа преобразует её в объект ДанныеФормыКоллекция. В том случае, если таблица выводится на форму посредством элемента Таблица, то у данного элемента могут быть все колонки, которые имеются у соответствующего реквизита с типом таблица значений с соответствующими именами. Причем количество колонок в Таблице на форме может быть меньше, чем непосредственно в таблице значений, то есть не все колонки из таблицы значений нужно отображать в таблице. |
|||
|
|
16.09.2023 18:27:33
Раньше нужна была только первая строка, поэтому код был такой: Элементы.ТаблицаУслуг.ТекущиеДанные.Заказ; Теперь мне нужна не только первая строка, а перебрать все строки. Как это сделать? Элементы.ТаблицаУслуг - в отладке смотрю, это тип Таблица формы. |
|||
|
|
17.09.2023 16:29:33
Поскольку таблица значений в 1С – это специальный объект, который используется для хранения и обработки данных. Она может быть связана с таблицей формы, что позволяет эффективно работать с данными в рамках конкретной формы. Источник данных у таблицы формы в режиме дерева имеет тип "ДанныеФормыДерево". Глянь название реквизита - источника. Допустим, это "ТаблицаУслуг". Идем в СП и видим его свойства и методы. Есть метод ПолучитьЭлементы(). Будет примерно Для Каждого ЭлементДерева Из ТаблицаУслуг.ПолучитьЭлементы() Цикл Это для верхнего уровня дерева. Для вложенных нужно будет вызывать ПолучитьЭлементы() дальше. Знаете, правильнее было бы еще заполнять Таблицу значений формы. Для этого нужно добавить в форму новый реквизит с типом «ТаблицаЗначений» и именем «ТаблицаЗначенийФормы». На сервере пишем следующий код строки 1С: //Считаем, что тут вы получили таблицу значений, у которой необходимо передать данные на форму ТЗ = ПолучитьТЗ(); ДобавляемыеРеквизиты = Новый Массив; УдаляемыеРеквизиты = Новый Массив; //Получаем уже созданную на форме Таблицу значений 1С ИмяТФ = «ТаблицаЗначенийФормы”; ТаблицаФормы = РеквизитФормыВЗначение(«ТаблицаЗначенийФормы»); Для Каждого ТекКолонка из ТаблицаФормы.Колонки Цикл УдаляемыеРеквизиты.Добавить(ТаблицаЗначенийФормы + «.» + ТекКолонка.Имя); КонецЦикла; Для Каждого ТекКолонка из ТЗ.Колонки Цикл ДобавляемыеРеквизиты.Добавить(НовыйРеквизитФормы(ТекКолонка.Имя, ТекКолонка.ТипЗначения, ИмяТФ)); КонецЦикла; //Добавим новые, удалим старые колонки ИзменитьРеквизиты(ДобавляемыеРеквизиты, УдаляемыеРеквизиты); // Поместим значение в реквизит формы 1С ЗначениеВРеквизитФормы(ТЗ, ИмяТФ); После выполнения этой процедуры на форме обновится таблица значений на клиенте 1С, и ими можно будет оперировать.
Изменено: |
|
|
|