Имя: Пароль:
1C
1С v8
Как передать период в СКД?
,
0 letovd
 
19.07.19
14:22
Как передать период в предопределенную процедуру отчета "ПриКомпоновкеРезультата"?
Вернее даже не период, а ДатуНачала и ДатуОкончания.
1 ДенисЧ
 
19.07.19
14:24
Через реквизиты отчёта, например...
Откуда ты собрался из передавать?
2 letovd
 
19.07.19
14:26
(1) Из формы отчета, в модуль объекта
3 Джинн
 
19.07.19
14:29
Реквизит отчета Период с типом СтандартныйПериод. В параметрах что-то типа &Период.ДатаНачала или НачалоПериода(&Период.ДатаНачала, "Месяц") в зависимости от потребности.
4 letovd
 
19.07.19
14:33
В общем в модуле объекта есть процедура, которая рассчитывает и заполняет ТЗ из РегистраСведений.
В эту процедуру нужно передать ДатуНачала и ДатуОкончания
5 letovd
 
19.07.19
14:40
(3) А можно ли как-то передать ДатаНачала и ДатаОкончания из параметров в модуль объекта?
http://ipic.su/img/img7/fs/vvv.1563536398.jpg
6 VS-1976
 
19.07.19
14:46
(5) Если компоновщик доступен ( настройки ), поищи там, по идее должны параметры быть там инициализированы...
7 letovd
 
19.07.19
14:54
(6) Они здесь Настройки.ПараметрыДанных.ДоступныеПараметры.Элементы
8 azernot
 
19.07.19
14:54
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    НачалоПериода = Неопределено;
    КонецПериода = Неопределено;
    
    ПараметрыДанныхПользовательские = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
    ПараметрыВПользовательскихНастройках = Ложь;

    Для Каждого Элемент Из ПараметрыДанныхПользовательские Цикл
        Если ТипЗнч(Элемент) <> Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
            Продолжить;
        КонецЕсли;
        Если Элемент.Параметр = Новый ПараметрКомпоновкиДанных("Период") Тогда
            НачалоПериода = Элемент.Значение.ДатаНачала;
            КонецПериода = Элемент.Значение.ДатаОкончания;
            ПараметрыВПользовательскихНастройках = Истина;
        КонецЕсли;
    КонецЦикла;
    Если НЕ ПараметрыВПользовательскихНастройках Тогда
        Для Каждого Элемент Из КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы Цикл
            Если ТипЗнч(Элемент) <> Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда
                Продолжить;
            КонецЕсли;
            Если Элемент.Параметр = Новый ПараметрКомпоновкиДанных("Период") Тогда
                НачалоПериода = Элемент.Значение.ДатаНачала;
                КонецПериода = Элемент.Значение.ДатаОкончания;
            КонецЕсли;
        КонецЦикла;    
    КонецЕсли;
    
    Если НачалоПериода = Неопределено И КонецПериода = Неопределено Тогда
        Возврат;
    КонецЕсли;
9 letovd
 
19.07.19
15:20
(6) (8)
Можно по индексу
Период = Настройки.ПараметрыДанных.Элементы.Получить(0).Значение;
Но в этот момент значения ДатаНачала и ДатаОкончания неопределены
10 letovd
 
19.07.19
15:24
Как из СтандартногоПериода достать датуначала и датуокончания строкой?
11 Джинн
 
19.07.19
15:26
(5) А на кой ляд она Вам там понадобились? Какое-то извращение делаете?
12 letovd
 
19.07.19
15:26
Короче так.
Период = Настройки.ПараметрыДанных.Элементы.Получить(0).Значение;
ДатаНачала = Период.ДатаНачала;
ДатаОкончания = Период.ДатаОкончания;
13 letovd
 
19.07.19
15:29
(11) Ага, вместо того чтобы дату через реквизит передавать, передаю через параметр СКД...
14 Джинн
 
19.07.19
15:29
(12) Опасно вслепую брать. Поправите параметры или их порядок и отчет навернется.
15 letovd
 
19.07.19
15:31
(14) Да, действительно. Просто интересно стало...
16 letovd
 
19.07.19
15:34
(3) В параметрах чего?
17 Джинн
 
19.07.19
15:36
(16) СКД
18 PR
 
19.07.19
15:37
(1) Через реквизиты не получится
19 PR
 
19.07.19
15:38
(0) Передавай через параметры компоновщика
20 letovd
 
19.07.19
15:39
(18) С чего вы взяли?
Работает все, только их не нужно передавать в процедуру, просто вызвать реквизит в процедуре
21 PR
 
19.07.19
15:39
Если что-то не лезет в параметры компоновщика, передавай через временное хранилище
22 yavasya
 
19.07.19
15:41
(0) тебе нужно в форму отчета перенести параметры СКД, а грязноизвращаться
23 letovd
 
19.07.19
15:42
(22) Да у меня скд берет данные из ТЗ. Для формирования ТЗ нужна дата
24 letovd
 
19.07.19
15:42
Уже все, спасибо
25 PR
 
19.07.19
15:43
(18), (20) Хм, пардон, реквизит получилось передать
Я просто помню так заполнял ТЗ для выборки из нее в запросе и в итоге передавалась пустая ТЗ
26 letovd
 
19.07.19
15:49
(25) Да я сам тупанул...
27 PR
 
19.07.19
16:06
А, вспомнил
Не получится обойтись без созданной формы
А с созданной формой да, работает

Я пробовал сделать так
В модуле отчета сразу же при инициализации заполняется ТЗ (реквизит отчета), которую потом нужно использовать
Так вот она в процедуре ПриКомпоновкеРезультата всегда пустая? то есть хочется один раз заполнить и все, а она заполняется каждый раз при формировании отчета
28 PR
 
19.07.19
16:09
+(27) Реквизиты в этом случае тоже пустые
29 PR
 
19.07.19
16:22
Странно, кстати, что с созданной формой работает сохранение реквизитов, даже если я их заполнил программно, не располагая на форме
Получается, что если я что-то заполнил в модуле формы, то это не обнулится при вызове ПриКомпоновкеРезультата, а если в модуле объекта, то обнулится
Программист всегда исправляет последнюю ошибку.