Имя: Пароль:
1C
1С v8
СКД. Как подружить параметр типа СтандартныйПериод и СрезПоследних
,
0 akhmadey
 
06.09.16
08:34
В запросе используется отбор по периоду. Два параметра &ДатаНач и &ДатаКон. В СКД задан третий параметр Период типа СтандартныйПериод, а значения для параметров подставляются из стандартного периода. Также есть необходимость использовать временные таблицы и в них СрезПоследних на дату &ДатаКон. Но вылетает ошибка о несовместимости типов. Видимо, стандартный период для среза последних не катит. Можно ли как-нибудь обойти эту ситуацию?
1 ls300
 
06.09.16
08:56
(0) придется отказаться от стандартного периода, т.к. там конец периода это граница. А границу нельзя использовать в срезах и соответственно сравнивать с датами.
Вроде даже в типовых отчетах при таких ситуациях дублируется параметр конца периода, один граница, другой дата.
2 Timon1405
 
06.09.16
08:59
(0) использовать &СтандартныйПериод.ДатаНачала,&СтандартныйПериод.ДатаОкончания
3 akhmadey
 
06.09.16
09:08
(2) А в чем разница? Если мы про параметры СКД говорим. Просто использовать параметр Период типа Стандартный период удобно тем, что потом в форме отчета это параметр удобно задавать
4 akhmadey
 
06.09.16
09:10
(1) А как бы на этот отчет хотя бы одни глазком глянуть?
5 LordCMEPTb
 
06.09.16
09:12
6 akhmadey
 
06.09.16
09:17
(5) Это-то понятно, у меня также. Примерчик бы, где этот самый стандартный период и срез последних вместе существуют, не важно в каком виде
7 ls300
 
06.09.16
09:29
(6) Под рукой такого отчета нет и не помню где встречал. Вроде это была бухгалтерия 3.0. Но идея там в том, что в СКД есть 2 параметра окончания периода. Один хранит дату, другой границу из стандартного периода. Нужно только поиграться в коде с заполнением параметра с типом "Дата"
8 LordCMEPTb
 
06.09.16
09:36
(6) Нифига не понял. Срез последних нормально работает с датой. Если для параметр даты для среза является датой, то несовместимости типов быть не должно.
Но если кто-то при включенном автозаполнении в параметр "Период" хочет задать стандартный период, то ситуация с несовместимостью типов вполне реальная.
9 akhmadey
 
06.09.16
09:49
СтандартыйПериод.ДатаОкончания и Дата это не один и тот же тип.
10 mistеr
 
06.09.16
09:54
(9) Пора показать текст запроса и скрин параметров.
11 Timon1405
 
06.09.16
09:56
КонецПериода(&СтандартыйПериод.ДатаОкончания, "День") не катит что ли?
12 LordCMEPTb
 
06.09.16
10:19
(9) Ну это да, особенно если учитывать тот факт, что типа "СтандартыйПериод.ДатаОкончания" вроде как не существует...
Вариант отчета, в котором не получается получить срез мы увидим или так и будем гадать?
13 ls300
 
06.09.16
10:20
(11) Нет, будет ошибка что в параметр функции "КонецПериода" передан несовместимый тип значения.
14 akhmadey
 
06.09.16
10:44
(9) Вот текст запроса:

ВЫБРАТЬ
    КОЛИЧЕСТВО(уатМестонахождениеТССрезПоследних.ТС) КАК КоличествоНаМаршруте,
    уатМестонахождениеТССрезПоследних.Подразделение КАК Маршрут
ПОМЕСТИТЬ ВТ_КоличествоНаМаршруте
ИЗ
    РегистрСведений.уатМестонахождениеТС.СрезПоследних(&ДатаКон,) КАК уатМестонахождениеТССрезПоследних

СГРУППИРОВАТЬ ПО
    уатМестонахождениеТССрезПоследних.Подразделение
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КОЛИЧЕСТВО(уатМестонахождениеТССрезПоследних.ТС) КАК КоличествоУСобственника,
    уатМестонахождениеТССрезПоследних.Колонна КАК Собственник
ПОМЕСТИТЬ ВТ_КоличествоУСобственника
ИЗ
    РегистрСведений.уатМестонахождениеТС.СрезПоследних(&ДатаКон,) КАК уатМестонахождениеТССрезПоследних

СГРУППИРОВАТЬ ПО
    уатМестонахождениеТССрезПоследних.Колонна
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    уатВыбытиеТСиОборудованияТС.ТС,
    уатВыбытиеТСиОборудованияТС.ДатаВыбытия
ПОМЕСТИТЬ ВТ_Выбывшие
ИЗ
    Документ.уатВыбытиеТСиОборудования.ТС КАК уатВыбытиеТСиОборудованияТС
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    уатТС.Ссылка КАК ТранспортноеСредство,
    уатТС.Колонна КАК Собственник,
    уатТС.Подразделение КАК Маршрут,
    уатТС.ГосударственныйНомер,
    уатТС.ГаражныйНомер,
    уатТС.ГодВыпуска,
    ВТ_КоличествоНаМаршруте.КоличествоНаМаршруте,
    ВТ_КоличествоУСобственника.КоличествоУСобственника,
    уатТС.Ссылка КАК КоличествоУСобственникаНаМаршруте,
    ВТ_Выбывшие.ДатаВыбытия
ПОМЕСТИТЬ ВТ_СписокТС
ИЗ
    Справочник.уатТС КАК уатТС
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КоличествоНаМаршруте КАК ВТ_КоличествоНаМаршруте
        ПО уатТС.Подразделение = ВТ_КоличествоНаМаршруте.Маршрут
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КоличествоУСобственника КАК ВТ_КоличествоУСобственника
        ПО уатТС.Колонна = ВТ_КоличествоУСобственника.Собственник
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Выбывшие КАК ВТ_Выбывшие
        ПО уатТС.Ссылка = ВТ_Выбывшие.ТС
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВЫБОР
        КОГДА уатПутевойЛистЗадание.Ссылка.ТранспортноеСредство ЕСТЬ NULL
            ТОГДА 0
        ИНАЧЕ 1
    КОНЕЦ КАК Количество,
    НАЧАЛОПЕРИОДА(уатПутевойЛистЗадание.Ссылка.ДатаВыезда, ДЕНЬ) КАК Дата,
    уатПутевойЛистЗадание.Ссылка.ТранспортноеСредство,
    уатПутевойЛистЗадание.Ссылка
ПОМЕСТИТЬ ВТ_ПЛ
ИЗ
    Документ.уатПутевойЛист.Задание КАК уатПутевойЛистЗадание
ГДЕ
    уатПутевойЛистЗадание.Ссылка.ДатаВыезда МЕЖДУ &ДатаНач И &ДатаКон
    И уатПутевойЛистЗадание.Ссылка.Проведен = ИСТИНА
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_СписокТС.ТранспортноеСредство,
    ВТ_СписокТС.Собственник,
    ВТ_СписокТС.Маршрут КАК Маршрут,
    ВТ_СписокТС.ГосударственныйНомер,
    ВТ_СписокТС.ГаражныйНомер,
    ВТ_СписокТС.ГодВыпуска,
    ВТ_ПЛ.Количество,
    ВТ_ПЛ.Дата,
    ВТ_СписокТС.КоличествоНаМаршруте,
    ВТ_СписокТС.КоличествоУСобственника,
    ВТ_СписокТС.КоличествоУСобственникаНаМаршруте,
    ВЫБОР
        КОГДА ВТ_СписокТС.ДатаВыбытия ЕСТЬ NULL
            ТОГДА ЛОЖЬ
        ИНАЧЕ ИСТИНА
    КОНЕЦ КАК Выбыло
ИЗ
    ВТ_СписокТС КАК ВТ_СписокТС
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПЛ КАК ВТ_ПЛ
        ПО ВТ_СписокТС.ТранспортноеСредство = ВТ_ПЛ.ТранспортноеСредство

А параметры в точности как в (5)
15 Timon1405
 
06.09.16
11:00
(13) так это нужно написать в выражении для параметра &ДатаКон, а передавать этот параметр
16 ls300
 
06.09.16
11:05
(15) В выражении параметра СКД по моему другой синтаксис, надо проверять)
17 Timon1405
 
06.09.16
11:08
(16) очень может быть)
18 Molinor
 
06.09.16
11:11
Во всех запросах, где есть период, делаю так. И спокойно получаю срезы на &НачДата и &КонДата.
http://savepic.ru/11216607.jpg
19 LordCMEPTb
 
06.09.16
11:12
(14) По поводу параметров из (5), что они в точности такие же, есть сомнения.
Ибо скорее всего галочка "Автозаполнение" стоит, а значит еще один параметр "Период" должен быть. И тип значения этого параметра должен быть "Дата". В (5) 3й параметр называется "СтандартныйПериод".
20 Catseye
 
06.09.16
11:17
Переименуй в параметрах "Период" на "ПериодОтчета", например.
И переименуй его в функциях где задаются по стандартному периоду НачДата и КонДата

СКД для регистров сведений, когда строит свой запрос по пользовательским настройкам, очень нервно относится к параметру "Период". Причем эта фишка только с ними такая. Эту ошибку никак не обойти - просто переименуй параметр.
21 akhmadey
 
06.09.16
11:30
(20) Не проканало ((((
22 ls300
 
06.09.16
11:35
(21) Направление в котором нужно копать есть в (7), все в твоих руках.
23 LordCMEPTb
 
06.09.16
11:36
(20) Так просто автоматически добавленный параметр не переименовать. Надо либо в запросе писать эти параметры в фигурных скобках "...СрезПоследних({ДатаКон},...", либо добавлять новые, а старые не трогать.
24 akhmadey
 
06.09.16
12:22
С периодами разобрался, всем спасибо. Просто изначально в запросе не было СрезаПоследних и имя параметра Период не вызывало проблем. Как только СрезПоследних появился, параметр стал недоступным, не только к редактированию, но и удалению. В общем, как только удалось заменить параметр Период параметром с другим названием, все взлетело.
25 Catseye
 
06.09.16
14:24
что и требовалось :)
26 xafavute
 
06.09.16
14:34
(18) Начало и конец периода не нужно делать
Основная теорема систематики: Новые системы плодят новые проблемы.