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

Цикл работает так: Берёт первую Номенклатуру в из ЭтотОбъект.Товары и по ей смотрит продажи за последних 150 дней, и создаёт колонки согласно неделиГода, и вот в неделю года созданную нужно сразу вставлять значение "стр .Количество", не могу сообразить как это сделать

```1c
    Для каждого стр из ЭтотОбъект.Товары цикл

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ПродажиОбороты.Номенклатура,
    | СУММА(ПродажиОбороты.КоличествоОборот) КАК Количество,
    | ПродажиОбороты.Период КАК ПериодНедели
    |ИЗ
    | РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Неделя, ) КАК ПродажиОбороты
    |ГДЕ
    | ПродажиОбороты.Номенклатура = &Номенклатура
    |
    |СГРУППИРОВАТЬ ПО
    | ПродажиОбороты.Номенклатура,
    | ПродажиОбороты.Период
    |
    |УПОРЯДОЧИТЬ ПО
    | ПродажиОбороты.Период УБЫВ";

    Запрос.УстановитьПараметр("НачалоПериода", НачалоНедели(ТекущаяДата()-86400*150) );
    Запрос.УстановитьПараметр("КонецПериода", КонецНедели(ТекущаяДата()));
    Запрос.УстановитьПараметр("Номенклатура", стр.Номенклатура);

    РЗ = Запрос.Выполнить().Выгрузить();
    для Каждого строка из РЗ цикл

    Нед = НеделяГода(строка.ПериодНедели);
    НоваяКолонка = ЭлементыФормы.ТЗ.Колонки.Вставить(8,Строка(Нед),ОписаниеТиповЧисло,Строка(Нед),6);

    НоваяКолонка.ГоризонтальноеПоложениеВКолонке = ГоризонтальноеПоложение.Центр;
    НоваяКолонка.ГоризонтальноеПоложениеВШапке = ГоризонтальноеПоложение.Центр;
    НоваяКолонка.ИзменениеРазмера = ИзменениеРазмераКолонки.НеИзменять;
    НоваяКолонка.ТолькоПросмотр = Истина;
    НоваяКолонка.ТекстПодвала = Строка(строка.Количество);

    КонецЦикла;

    Прервать;

    КонецЦикла;
```
---
Например,
Код
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПродажиОбороты.Номенклатура,
    |    СУММА(ПродажиОбороты.КоличествоОборот) КАК Количество,
    |    ПродажиОбороты.Период КАК ПериодНедели
    |ИЗ
    |    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Неделя, ) КАК ПродажиОбороты
    |ГДЕ
    |    ПродажиОбороты.Номенклатура В (&Номенклатура)
    |
    |СГРУППИРОВАТЬ ПО
    |    ПродажиОбороты.Номенклатура,
    |    ПродажиОбороты.Период
    |
    |УПОРЯДОЧИТЬ ПО
    |    ПродажиОбороты.Период УБЫВ";

    Запрос.УстановитьПараметр("НачалоПериода", НачалоНедели(ТекущаяДата()-86400*150) );
    Запрос.УстановитьПараметр("КонецПериода", КонецНедели(ТекущаяДата()));
    Запрос.УстановитьПараметр("Номенклатура", тз.ВыгрузитьКолонку("Номенклатура"));

    РЗ = Запрос.Выполнить().Выгрузить();

Процедура ТЧПриПолученииДанных(Элемент, ОформленияСтрок)

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

```1c
    ЭлементыФормы.ТЗ.Значение = ТаблицаДанных;
    ЭлементыФормы.ТЗ.СоздатьКолонки();
```
---
всё равно не понимаю как мне заполнить значения таблицы
---
Если колонка динамическая, то значения в ячейках заполнять нужно при получении данных.

```1c
    Процедура ТЧПриПолученииДанных(Элемент, ОформленияСтрок)
```
---
Например,
Код
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПродажиОбороты.Номенклатура,
    |    СУММА(ПродажиОбороты.КоличествоОборот) КАК Количество,
    |    ПродажиОбороты.Период КАК ПериодНедели
    |ИЗ
    |    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Неделя, ) КАК ПродажиОбороты
    |ГДЕ
    |    ПродажиОбороты.Номенклатура В (&Номенклатура)
    |
    |СГРУППИРОВАТЬ ПО
    |    ПродажиОбороты.Номенклатура,
    |    ПродажиОбороты.Период
    |
    |УПОРЯДОЧИТЬ ПО
    |    ПродажиОбороты.Период УБЫВ";

    Запрос.УстановитьПараметр("НачалоПериода", НачалоНедели(ТекущаяДата()-86400*150) );
    Запрос.УстановитьПараметр("КонецПериода", КонецНедели(ТекущаяДата()));
    Запрос.УстановитьПараметр("Номенклатура", тз.ВыгрузитьКолонку("Номенклатура"));

    РЗ = Запрос.Выполнить().Выгрузить();

Процедура ТЧПриПолученииДанных(Элемент, ОформленияСтрок)

Для Каждого Ст из ОформленияСтрок Цикл
     НайденнаяСтрока = тзДанных.Найти(Ст.ДанныеСтроки.Номенклатура);
     Если Не НайденнаяСтрока = Неопределено Тогда
          Ст.Ячейки.НоваяКолонка.УстановитьТекст(НайденнаяСтрока.Количество);
     КонецЕсли;
КонецЦикла
КонецПроцедуры
Показать полностью
---
Спасибо большое, очень помогли мне)
в итоге у меня получилось так:
Создание колонок:

```1c
    ОписаниеТиповЧисло = Новый ОписаниеТипов("Число");

    ДатаТ = ТекущаяДата();
    м = 1;
    Пока м <> 20 Цикл
    Недел = НеделяГода(ДатаТ);

    НоваяКолонка = ЭлементыФормы.ТЗ.Колонки.Вставить(8,,ОписаниеТиповЧисло,Строка(Недел),6);
    НоваяКолонка.Ширина = 6;
    НоваяКолонка.ГоризонтальноеПоложениеВКолонке = ГоризонтальноеПоложение.Центр;
    НоваяКолонка.ГоризонтальноеПоложениеВШапке = ГоризонтальноеПоложение.Центр;
    НоваяКолонка.ИзменениеРазмера = ИзменениеРазмераКолонки.НеИзменять;
    НоваяКолонка.ТолькоПросмотр = Истина;
    НоваяКолонка.ТекстШапки = Строка(Недел);
    НоваяКолонка.Имя = "к"+Строка(Недел);

    ДатаТ = (ДатаТ - (86400 * 7));
    м = м + 1;
    КонецЦикла;
```

Заполнение Динамических колонок:

```1c
    Процедура ТЗПриПолученииДанных(Элемент, ОформленияСтрок)

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ПродажиОбороты.Номенклатура,
    | СУММА(ПродажиОбороты.КоличествоОборот) КАК Количество,
    | ПродажиОбороты.Период КАК ПериодНедели
    |ИЗ
    | РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Неделя, ) КАК ПродажиОбороты
    |ГДЕ
    | ПродажиОбороты.Номенклатура В(&Номенклатура)
    |
    |СГРУППИРОВАТЬ ПО
    | ПродажиОбороты.Номенклатура,
    | ПродажиОбороты.Период
    |
    |УПОРЯДОЧИТЬ ПО
    | ПродажиОбороты.Период УБЫВ";

    Запрос.УстановитьПараметр("НачалоПериода", НачалоНедели(ТекущаяДата()-86400*150) );
    Запрос.УстановитьПараметр("КонецПериода", КонецНедели(ТекущаяДата()));
    Запрос.УстановитьПараметр("Номенклатура", Товары.ВыгрузитьКолонку("Номенклатура"));
    РЗ = Запрос.Выполнить().Выгрузить();

    Для Каждого Ст3 из РЗ Цикл

    Для Каждого Ст из ОформленияСтрок Цикл

    Если Ст.ДанныеСтроки.Номенклатура = Ст3.Номенклатура Тогда
    Нед = НеделяГода(Ст3.ПериодНедели);

    НайденнаяСтрокаДляИзменения = Ст.Ячейки.Найти("к"+Нед);
    Если Не НайденнаяСтрокаДляИзменения = Неопределено Тогда
    НайденнаяСтрокаДляИзменения.УстановитьТекст(Ст3.Количество);
    КонецЕсли;

    Иначе
    Продолжить;
    КонецЕсли;

    КонецЦикла;
    КонецЦикла;
    КонецПроцедуры
```

Всё вроде как быстро работает.
Если что-то криво сделал,поправьте) Спасибо.
---
Этот блок с запросом я бы убрал из ПриПолученииДанных. Лучше бы сделать реквизит формы или переменную РЗ и в нее считывать информацию при открытии формы и при изменении состава номенклатуры.
---
ок,так и сделаю, думал типа онлайн сделать)))