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

Как передать период в СКД?

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

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

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

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


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