Имя: Пароль:
1C
1С v8
СКД. НачалоПериода по-умолчанию
0 Slon747
 
06.05.16
10:39
ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.Характеристика,
    ТоварыНаСкладахОстатки.ВНаличииОстаток
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки({&НачалоПериода}) КАК ТоварыНаСкладахОстатки

На закладке Параметры добавил НачалоПериода.
В Настройках в Параметры указал "Включать в пользовательские настройки".
Теперь в Предприятии если в быстрых отборах не заполнить параметр, формирует на сегодня.
Как сделать, чтобы формировал на '00010101'?
1 Nuobu
 
06.05.16
11:16
А если заполнить 00010101, то какую дату он подставляет?
2 Slon747
 
06.05.16
11:20
(1) Мне нужно, чтобы если в быстрых отборах не выставить дата начала, он подставлял какую-то древнюю дату. Хоть 01.01.2001
3 PCcomCat
 
06.05.16
11:25
Программно отслеживать и ставить.
4 PCcomCat
 
06.05.16
11:26
(2) Традиционный вопрос: а нафига?
5 Slon747
 
06.05.16
11:38
(4) Данные пример - упрощенный.
В реальности &НачалоПериода и &КонецПериода используются в других запросах этой СКД.
Типа:
    {ГДЕ
        (ПоступлениеТоваровУслугТовары.Ссылка.Дата >= &НачалоПериода),
        (ПоступлениеТоваровУслугТовары.Ссылка.Дата <= &КонецПериода)
}

А в этом запросе мне нужно получать остатки на начало и конец заданного пользователем периода.
6 Nuobu
 
06.05.16
11:40
Проблема в том, что если ты подставишь именно дату 00010101 00:00:00, то
РегистрНакопления.ТоварыНаСкладах.Остатки({&НачалоПериода}) воспримет это как остатки на сегодня, поэтому подставляй в НачалоПериода дату 00010101 00:00:01, например.
7 Slon747
 
06.05.16
11:49
(6) А как подставить дату в ТоварыНаСкладах, если в быстром отборе не будет выбрана начальная дата?
8 Nuobu
 
06.05.16
11:52
Если ВВыбраномОтбореНеВыставленаНачальнаяДата Тогда
    КомпоновщикНастроек.Настройки.Параметры.НайтиПоЗначению("НачалоПериода").Значение = Дата('00010101000001');
КонецЕсли;
9 Slon747
 
06.05.16
11:54
(8) Это в форме отчета?
10 Nuobu
 
06.05.16
11:55
(9) Нет, в отчете.
11 Slon747
 
06.05.16
12:02
(10) В модуле отчета?
А в какой процедуре?
12 Slon747
 
06.05.16
12:06
Вроде как в ПриКомпоновкеРезультата()
13 Slon747
 
06.05.16
12:15
Вот так сделал:
//-------------------------------
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    Параметры = КомпоновщикНастроек.Настройки.ПараметрыДанных;
    
    ПараметрНачалоПериода = Параметры.Элементы.Найти("НачалоПериода");
    Если Не ЗначениеЗаполнено(ПараметрНачалоПериода.Значение) Тогда
        ПараметрНачалоПериода.Значение = Дата('20010101');
    КонецЕсли;
    
КонецПроцедуры
//-------------------------------

Отладчиков вижу, что значение у параметра меняется, но остатки возвращает всё равно на текущую дату.
В чем дело?
14 Slon747
 
06.05.16
12:29
Принудительно выставляю НачалоПериода (без проверки на заполненность):
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    ПараметрыДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы;
    МойПараметр = ПараметрыДанных.Найти("НачалоПериода");
    МойПараметр.Значение = Дата('20010101');
    МойПараметр.Использование = Истина;
    
КонецПроцедуры

В запросе:
ИЗ
  РегистрНакопления.ТоварыНаСкладах.Остатки({&НачалоПериода}

Выводит остаток на сегодня.
Что не так?