Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Своя ТЗ в СКД + период

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

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

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

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

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

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

   Дата1 = '00010101';
   Дата2 = Дата1
КонецЕсли;


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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Читай всё полезное и впитывай, а нападки игнорируй. Здесь так принято. aka AMIGO
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.