Имя: Пароль:
1C
1С v8
Не отрабатывает заполнение параметров отчета СКД
0 Romaxa
 
17.12.18
07:29
Всем доброго дня! Следующая ситуация, есть отчет, понадобилось отправлять его каждое утро. В модуле сделал следующее:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    Настройки = КомпоновщикНастроек.Настройки;
    Параметр1 = Настройки.ПараметрыДанных.Элементы.Найти("Период");
        
    Параметр1.Значение = КонецДня(ТекущаяДата());
    Параметр1.Использование = Истина;
    
КонецПроцедуры

Если открыть отчет и сформировать через "отчеты", то заполняется "Период" всё работает отлично. А когда я вызываю его во внешней обработке, для сохранения в xls, пишет &Период не заполнен. Запрос отчета:

ВЫБРАТЬ
    ХозрасчетныйОстатки.Субконто1,
    ХозрасчетныйОстатки.СуммаОстаток,
    ХозрасчетныйОстатки.Организация.Наименование
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСПокупателямиИЗаказчиками)), , Субконто1 = &Контрагент) КАК ХозрасчетныйОстатки

кэш чистил, конфа УПП 1,3 1.3.108.2, платформа 8.3 (8.3.8.2442), подскажите в какую сторону копать?
1 Borteg
 
17.12.18
07:32
(0)   Настройки = КомпоновщикНастроек.ПолучитьНастройки();
2 Romaxa
 
17.12.18
07:37
(1) Не помогло (
3 Borteg
 
17.12.18
07:50
(2) Вестимо надо править код обработки, а не отчета. Если хочется сформировать отчет из внешней обработки с настройками надо собрать макет во внешней обработки и там заполнить параметры.
4 Romaxa
 
17.12.18
07:52
С обработкой уже тоже всяко пробовал, вот один из вариантов:

Процедура КнопкаВыполнитьНажатие(Кнопка)

ТабДок1 = Новый ТабличныйДокумент();
    
    СКД1=Отчеты.Взаиморасчеты.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
        
    Настройки1=СКД1.НастройкиПоУмолчанию;
    
    
    Расшифровка1 = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета1 = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    //МакетКомпоновки1 = КомпоновщикМакета1.Выполнить(СКД1, Настройки1, Расшифровка1);
    МакетКомпоновки1 = КомпоновщикМакета1.Выполнить(СКД1, Настройки1, Расшифровка1);
    ВнешниеПараметры1 = Новый Структура;
    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки1, ВнешниеПараметры1, Расшифровка1);
    
    ПроцессорВывода1 = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода1.УстановитьДокумент(ТабДок1);
    ПроцессорВывода1.Вывести(ПроцессорКомпоновкиДанных, Истина);
    
    ТабДок1.Записать("C:\Temp\skd.xls", ТипФайлаТабличногоДокумента.XLS);
КонецПроцедуры
5 Romaxa
 
17.12.18
07:54
Самое интересное, есть отчет в котором всё отрабатывает нормально, с запросом:

ВЫБРАТЬ
    ПлатежноеПоручениеВходящее.Дата,
    ПлатежноеПоручениеВходящее.Номер,
    ПлатежноеПоручениеВходящее.Организация,
    ПлатежноеПоручениеВходящее.СуммаДокумента,
    ПлатежноеПоручениеВходящее.ВидОперации,
    ПлатежноеПоручениеВходящее.Контрагент.Наименование,
    ПлатежноеПоручениеВходящее.Организация.Наименование,
    ПлатежноеПоручениеВходящее.ДатаОплаты КАК ДатаОплаты,
    ПлатежноеПоручениеВходящее.НазначениеПлатежа
ИЗ
    Документ.ПлатежноеПоручениеВходящее КАК ПлатежноеПоручениеВходящее
ГДЕ
    ПлатежноеПоручениеВходящее.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеБезналичныхДенежныхСредств.ОплатаПокупателя)
{ГДЕ
    (ПлатежноеПоручениеВходящее.Дата МЕЖДУ &ДатаНачала И &ДатаКонца),
    (ПлатежноеПоручениеВходящее.Контрагент = &Контрагент),
    (ПлатежноеПоручениеВходящее.Организация = &Организация)}
УПОРЯДОЧИТЬ ПО
    ДатаОплаты
6 Borteg
 
17.12.18
08:02
(4) где в этом коде установка параметров?
7 Romaxa
 
17.12.18
08:14
(6) в модуле отчета, в процедуре "ПриКомпоновкеРезультата"
8 Borteg
 
17.12.18
08:24
(7) но в этом коде ты этот отчет не вызываешь.
Берешь настройки схему и получаешь отчет, здесь ты не вызываешь модуль того отчета совсем
9 Borteg
 
17.12.18
08:24
(7) заполни параметры в обработке.
10 Гипервизор
 
17.12.18
08:34
Укажите прямо в схеме в выражении параметра КонецПериода(ТекущаяДата(), "День")
11 los_hooliganos
 
17.12.18
08:44
в консоле запроса перейти на закладке СКД и укажи свои параметры.

СКД не понимает твой параметр. А вообще более правильно оставить место пустым для параметра типа дата. Далее просмотреть как параметр назовет сама СКД и уже его и искать кодом.
12 Romaxa
 
27.12.18
06:17
(10) Так работает, но я послушал (8) и сделал через компоновщик.

Всем спасибо и с Наступающим!

P.S.: Вроде сразу отписал, но видимо не нажал кнопку "Отправить".
Закон Брукера: Даже маленькая практика стоит большой теории.