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