Имя: Пароль:
1C
1С v8
Своя ТЗ в СКД + период
,
0 Cyrix
 
15.10.20
11:29
Здравствуйте! Создаю свою ТЗ и передаю её в СКД
В запросе есть условие, выводить документы с такой-то даты по такую-то
Каким образом на СКД можно задать этот период?

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

Запрос.УстановитьПараметр("ДатаНачала",'20201004');
Запрос.УстановитьПараметр("ДатаОкончания",ТекущаяДата());

    ТЗ = Запрос.Выполнить().Выгрузить();
    
    ВнешнийНаборДанных = Новый Структура("ТЗ", ТЗ);
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);        
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
КонецПроцедуры
1 ДенисЧ
 
15.10.20
11:43
Так ты уже выбрал документы за период. Зачем тебе второй раз его задавать?
2 Cyrix
 
15.10.20
11:52
Потому что оператор, работая с отчётом, будет задавать разный период
3 Cyrix
 
15.10.20
11:56
Запрос.УстановитьПараметр("ДатаНачала",'20201004');
Запрос.УстановитьПараметр("ДатаОкончания",ТекущаяДата());

как из пользовательского интерфейса СКД изменить "ДатаНачала" и "ДатаОкончания"? Что прописать на вкладке "Параметры" СКД и что добавить в свойствах отчёта, чтобы у пользователя появились эти поля для выбора?
4 SleepyHead
 
гуру
15.10.20
12:46
Добавь в параметры сам поле Период, тип - стандартный период. В своем варианте отчета разреши его видеть пользователю.

В коде ПриКомпоновке добавь такой код

НастройкиСКД = КомпоновщикНастроек.ПолучитьНастройки();
П = НастройкиСКД.ПараметрыДанных.Элементы.Найти("Период");
Если П<>Неопределено И П.Использование Тогда
   Дата1 = НачалоДня(П.ДатаНачала);
   Дата2 = КонецДня(П.ДатаОкончания);
Иначе
   // если ты попал сюда, значит, не включил параметр в доступные для настройки варианта отчета.
   Дата1 = '00010101';
   Дата2 = Дата1
КонецЕсли;


Запрос.Установитьпараметр("ДатаНачала", Дата1);
.. и так далее
5 Cyrix
 
15.10.20
13:28
Спасибо за ответ! Подскажите ещё
    "ВЫБРАТЬ
    |    ЗаказПокупателя.Ссылка КАК Заказ,
    |    ЗаказПокупателя.Запасы.(
    |    Номенклатура КАК Номенклатура,
    |    КоличествоСобрано КАК КоличествоСобрано,
    |    Количество КАК Количество
    |) КАК Запасы
    |ИЗ
    |    Документ.ЗаказПокупателя КАК ЗаказПокупателя
    |ГДЕ
    |    ЗаказПокупателя.Дата МЕЖДУ &ДатаНач И &ДатаОкончания";

Как в СКД добавить таблицу "Запасы" с её полями Номенклатура, КоличествоСобрано и Количество ?
6 Cyrix
 
15.10.20
16:11
добавил