Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

СКД. Как подружить параметр типа СтандартныйПериод и СрезПоследних

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

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

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

////////////////////////////////////////////////////////////////////////////////

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

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

////////////////////////////////////////////////////////////////////////////////

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

////////////////////////////////////////////////////////////////////////////////

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

////////////////////////////////////////////////////////////////////////////////

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

////////////////////////////////////////////////////////////////////////////////

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
Компьютер — устройство разработанное для ускорения и автоматизации человеческих ошибок.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует