Страницы: 1
RSS
Определить ТаблицуЗначений, связанную с ТаблицейФормы
 

Коллеги, здравствуйте. Необходимо определить ТаблицуЗначений, которая связана с ТаблицейФормы. Ранее с таким не сталкивалась, как проще всего это установить?

 
Цитата
Larisa написал:
Коллеги, здравствуйте. Необходимо определить ТаблицуЗначений, которая связана с ТаблицейФормы. Ранее с таким не сталкивалась, как проще всего это установить?
Вообще таблица значений может использоваться явно при создании в коде необходимого количества переменных типа ТаблицаЗначений, либо неявно: при добавлении элемента управления ТабличноеПоле на обычную форму, и ТаблицаФормы — на управляемую.

Таблица значений на форме размещается в виде элемента формы Таблица. Это элемент будет создан автоматически, если перетащить мышкой реквизит с типом таблица значений в дерево элементов. Если таблица значений создана на форме в виде реквизита, то обращаться к этому реквизиту можно в любом контексте, платформа преобразует её в объект ДанныеФормыКоллекция.

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

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

Раньше нужна была только первая строка, поэтому код был такой:

Элементы.ТаблицаУслуг.ТекущиеДанные.Заказ;

Теперь мне нужна не только первая строка, а перебрать все строки. Как это сделать?

Элементы.ТаблицаУслуг - в отладке смотрю, это тип Таблица формы.

 

Поскольку таблица значений в 1С – это специальный объект, который используется для хранения и обработки данных. Она может быть связана с таблицей формы, что позволяет эффективно работать с данными в рамках конкретной формы.

Источник данных у таблицы формы в режиме дерева имеет тип "ДанныеФормыДерево".

Глянь название реквизита - источника. Допустим, это "ТаблицаУслуг".

Идем в СП и видим его свойства и методы. Есть метод ПолучитьЭлементы().

Будет примерно

Для Каждого ЭлементДерева Из ТаблицаУслуг.ПолучитьЭлементы() Цикл

Это для верхнего уровня дерева. Для вложенных нужно будет вызывать ПолучитьЭлементы() дальше.

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

//Считаем, что тут вы получили таблицу значений, у которой необходимо передать данные на форму

ТЗ = ПолучитьТЗ();

ДобавляемыеРеквизиты = Новый Массив;

УдаляемыеРеквизиты = Новый Массив;

//Получаем уже созданную на форме Таблицу значений 1С

ИмяТФ = «ТаблицаЗначенийФормы”;

ТаблицаФормы = РеквизитФормыВЗначение(«ТаблицаЗначенийФормы»);

Для Каждого ТекКолонка из ТаблицаФормы.Колонки Цикл

УдаляемыеРеквизиты.Добавить(ТаблицаЗначенийФормы + «.» + ТекКолонка.Имя);

КонецЦикла;

Для Каждого ТекКолонка из ТЗ.Колонки Цикл

ДобавляемыеРеквизиты.Добавить(НовыйРеквизитФормы(ТекКолонка.Имя, ТекКолонка.ТипЗначения, ИмяТФ));

КонецЦикла;

//Добавим новые, удалим старые колонки

ИзменитьРеквизиты(ДобавляемыеРеквизиты, УдаляемыеРеквизиты);

// Поместим значение в реквизит формы 1С

ЗначениеВРеквизитФормы(ТЗ, ИмяТФ);

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

Изменено: Pavel - 17.09.2023 16:31:05
 

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

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

Страницы: 1