|
Вопрос по табличному полю | ☑ | ||
---|---|---|---|---|
0
asder117
23.11.13
✎
09:10
|
Всех приветствую!
Пытаюсь сделать отчет по движению ТМЦ под свою задачу. На форме имеется табличное поле которое формируется: Номерстроки=1; Номерстроки1=1; складОст=Справочники.Склады.НайтиПоКоду("000000001"); ВыбГруппа=Справочники.Номенклатура.НайтиПоКоду("00000000036"); ТабличноеПоле1.Очистить(); //ТабличноеПоле1.Колонки.Добавить("Номенклатура"); //ТабличноеПоле1.Колонки.Добавить("ЕдИзм"); //ТабличноеПоле1.Колонки.Добавить("Количество"); //ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); Запрос5 = Новый Запрос; Запрос5.Текст = " |ВЫБРАТЬ | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество, | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдИзм | ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки( | &ДатаОтч, | Склад = &ВыбСклад | И Номенклатура В ИЕРАРХИИ (&ВыбГруппа)) КАК ТоварыНаСкладахОстатки | ГДЕ | ТоварыНаСкладахОстатки.КоличествоОстаток > 0"; Запрос5.УстановитьПараметр("ВыбГруппа", ВыбГруппа); //Номенклатура Запрос5.УстановитьПараметр("ВыбСклад", складОст); //Склад Запрос5.УстановитьПараметр("ДатаОтч", ДатаОст); //Дата РезультатЗапроса5 = Запрос5.Выполнить().Выбрать(); пока РезультатЗапроса5.Следующий() цикл; ТабличноеПоле1.Колонки.Добавить("Колонка"+Номерстроки,,РезультатЗапроса5.Номенклатура.Наименование); Номерстроки=Номерстроки+1; КонецЦикла; ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); Строкатаблицы1=ТабличноеПоле1.Добавить(); РезультатЗапроса5.Сбросить(); пока РезультатЗапроса5.Следующий() цикл Строкатаблицы1["Колонка"+Номерстроки1]=РезультатЗапроса5.Количество; если Номерстроки1=Номерстроки тогда прервать; иначе Номерстроки1=Номерстроки1+1; КонецЕсли; КонецЦикла; для Счетчик =1 по 14 цикл Строкатаблицы1=ТабличноеПоле1.Добавить(); КонецЦикла; для Номерстроки2 =1 по Номерстроки-1 цикл Строкатаблицы1["Колонка"+Номерстроки2]=ТабличноеПоле1.Итог("Колонка"+Номерстроки2); КонецЦикла; В строках выгружается номенклатура. Первая строка таблицы - остаток на начало, предпоследняя сумма по строкам. последняя остаток на конец. Когда есть табличная часть на форме я без проблем это делаю, а когла перевертыш, то никак не получается отследить изменение ячеек(только строки). И второй вопрос: как можно обратиться к строкам по номеру или индексу чтобы их посчитать: в столбце строка1+строка2-строка3=сумма. Заранее благодарю. |
|||
1
Rie
23.11.13
✎
09:21
|
(0) Привыкни к мысли, что ТабличноеПоле служит лишь для отображения данных.
Данные его хранятся в ТаблицеЗначений или в чём-то ещё богоугодном. С _данными_ (таблицей значений) и работай. В ТаблицуЗначений добавляй строки. И т.д. |
|||
2
asder117
23.11.13
✎
09:31
|
(1) хорошо. понял. а там как по ячейкам перебрать
|
|||
3
Rie
23.11.13
✎
09:42
|
(2) ТаблЗнач = Запрос5.Выполнить.Выгрузить();
// перебор по строкам Для каждой СтрокаТЗ из ТаблЗнач Цикл // здесь можно обращаться к СтрокаТЗ.Номенклатура и т.п. КонецЦикла; Если нужно обратиться к i-й строке - так и пишешь: ТаблЗнач[i] |
|||
4
Rie
23.11.13
✎
09:43
|
+(3) При желании добавляешь в ТаблЗнач нужные колонки, вычисляешь их значения и т.д.
А потом - отображаешь ТаблЗнач в ТабличноеПоле1. |
|||
5
asder117
23.11.13
✎
13:18
|
(4) Хорошо спасибо. Но ведь у меня в модуле количество колонок неизвестное, оно равно количеству номенклатуры. т.е. получить данные 5 строки из 5 колонки можно ТаблЗнач[i]."Колонка"+номер колонки?
|
|||
6
Фокусник
23.11.13
✎
13:58
|
(5) ТаблЗнач[i][j], и нужно не забыть, что индексы с 0 начинаются
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |