Документ реализация

Новая тема
Здравствуйте, Форумчане. Нужна помощь.
Стоит такая задача: сделать документ реализация, который автоматически (при создании/открытии документа) заполняет табличную часть из регистра сведений на текущую дату, либо на ту дату, которую укажет пользователь (регистр сведений  заполняется пользователем и имеет две колонки период и сама номенклатура). На форме имеется только три первые колонки (№, Точка продаж(контрагент) и Адрес) остальные колонки создаются программно (на каждую номенклатуру на дату из регистра сведений своя колонка (ручка, карандаш и т.п.), т.е. сколько пользователь забьет в регистр сведений номенклатуры столько и будет колонок(на текущую дату). В общем с созданием колонок проблем нет, но проблема в том, что нужно всю эту таблицу хранить виртуально (при записи, естественно ничего не сохраняется, кроме первых трех колонок).
Вот код:
Код
Если ДокументОбъект.ЭтоНовый() Тогда
     
   Запрос = Новый Запрос;
   Запрос.Текст =
     "ВЫБРАТЬ
     |   СписокНоменклатурыСрезПоследних.Номенклатура,
     |   СписокНоменклатурыСрезПоследних.Период,
     |   ЦеныНоменклатурыСрезПоследних.Цена
     |ИЗ
     |   РегистрСведений.СписокНоменклатуры.СрезПоследних(&Дата, ) КАК СписокНоменклатурыСрезПоследних
     |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
     |     ПО СписокНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура";

   Запрос.УстановитьПараметр("Дата", Дата);
   Результат    = Запрос.Выполнить();
   Выборка    = Результат.Выбрать();
     
   Пока Выборка.Следующий() Цикл
     Если Дата = Выборка.Период Тогда
       КолонкаТЧ         = ЭлементыФормы.Товары.Колонки.Добавить();
       КолонкаТЧ.ТекстШапки    = Строка("" + Выборка.Номенклатура + ", " + Выборка.Цена + ""  ;
       КолонкаТЧ.УстановитьЭлементУправления(Тип("ПолеВвода"  );
     КонецЕсли;
   КонецЦикла;
     
     КолонкаТЧ         = ЭлементыФормы.Товары.Колонки.Добавить();
     КолонкаТЧ.ТекстШапки    = "Периодичность закупа";
     КолонкаТЧ.УстановитьЭлементУправления(Тип("ПолеВвода"  );
     КолонкаТЧ         = ЭлементыФормы.Товары.Колонки.Добавить();
     КолонкаТЧ.ТекстШапки    = "День недели закупа";
     КолонкаТЧ.УстановитьЭлементУправления(Тип("ПолеВвода"  );
     КолонкаТЧ         = ЭлементыФормы.Товары.Колонки.Добавить("Контакты"  ;
     КолонкаТЧ.УстановитьЭлементУправления(Тип("ПолеВвода"  );
     КолонкаТЧ         = ЭлементыФормы.Товары.Колонки.Добавить("Сумма"  ;
     КолонкаТЧ.УстановитьЭлементУправления(Тип("ПолеВвода"  );
   КонецЕсли;
При повторном открытии документа табличная часть должна собираться в таком же порядке в каком записывал пользователь.
1С 8.2, обычное приложение
Можно создать в документе дополнительную табличную часть с колонками (Номер строки, Название колонки, Значение колонки), не выводя ее на форму. При открытии формы считывать оттуда данные.
Вот так должно выглядеть:
Возникла проблема с записью документа. Имеется 2 табличные части: ТаблицаНоменклатуры(там только номенклатура) и Товары(все остальное).
Код
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
  
    Товары.Очистить();
    КоличествоСтрок = ВизуальныеТовары.Количество() - 1;
    Для Стр = 0 По КоличествоСтрок Цикл
        СтрокаТаблицыНоменклатуры = ВизуальныеТовары[Стр];
        Для Каждого СтрокаТоваров Из Товары Цикл
          
            НоваяСтрока = Товары.Добавить();
            НоваяСтрока.Номенклатура                 = СтрокаТоваров.Номенклатура;
            НоваяСтрока.ТочкаПродаж                   = СтрокаТоваров.ТочкаПродаж;
            НоваяСтрока.Адрес                               = СтрокаТоваров.Адрес;
            НоваяСтрока.ПериодичностьЗакупа    = СтрокаТоваров.ПериодичностьЗакупа;
            НоваяСтрока.ДеньНеделиЗакупа         = СтрокаТоваров.ДеньНеделиЗакупа;
            НоваяСтрока.Контакты                          = СтрокаТоваров.Контакы;
        КонецЦикла;
    КонецЦикла;
  
КонецПроцедуры
 
ВизуальныеТовары - табличное поле.
Читают тему

Быстрый переход