|
Граница в регистре сведений | ☑ | ||
---|---|---|---|---|
0
Olden2610
23.02.16
✎
00:05
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ПриоритетностьСкладовСрезПоследних.Период КАК Период |ИЗ | РегистрСведений.ПриоритетностьСкладов.СрезПоследних КАК ПриоритетностьСкладовСрезПоследних |ГДЕ | ПриоритетностьСкладовСрезПоследних.Период МЕЖДУ &Начало И &Конец | |СГРУППИРОВАТЬ ПО | ПриоритетностьСкладовСрезПоследних.Период | |УПОРЯДОЧИТЬ ПО | Период УБЫВ"; //Границу не принимает как параметр. Запрос.УстановитьПараметр("Конец", Новый Граница(Дата, ВидГраницы.Исключая)); Запрос.УстановитьПараметр("Начало", ДобавитьМесяц(Дата, -1)); Если в параметр передать границу выпадает ошибка: Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых типов. ПриоритетностьСкладовСрезПоследних.Период <<?>>МЕЖДУ &Начало И &Конец |
|||
1
Armando
23.02.16
✎
00:41
|
Задай вопрос
|
|||
2
zak555
23.02.16
✎
00:52
|
период имеет тип даты
|
|||
3
youalex
23.02.16
✎
00:52
|
(0) всё правильно. В смысле, правильно что ошибка выдаётся.
В чём прикладной смысл условия в секции ГДЕ? А не в параметре вирт. таблицы СрезПоследних ? |
|||
4
zak555
23.02.16
✎
00:53
|
далее
твой запрос - еруда какая-то |
|||
5
youalex
23.02.16
✎
00:57
|
Кстати, да. Зачем вообще выбирать период из среза последних?
Как задача изначально звучит? |
|||
6
Olden2610
23.02.16
✎
20:07
|
(4) (3) За период ищем была-ли запись вообще. Если была, то возвращаем дату этого движения, его и анализируем.
(3) вопрос глупый, но - каким образом передать границу в параметр запроса так, чтобы она считалась? |
|||
7
Lexey_
23.02.16
✎
20:09
|
(6) параметры виртуальной таблицы
|
|||
8
Olden2610
23.02.16
✎
20:16
|
(7) И тем не менее, добр человек,
"Период МЕЖДУ &Начало И &Конец" В параметрах ВТ отрабатывает с той-же ошибкой. Попробовал передавать обе границы - аналогично. |
|||
9
Olden2610
23.02.16
✎
20:17
|
Уверен - проблема до безумия тривиальная, но не могу уловить в каком месте ошибаюсь.
|
|||
10
MishaD
23.02.16
✎
20:25
|
Ну так наверно сам регистр, а не срезпоследних.
|
|||
11
Dен
23.02.16
✎
20:45
|
(6) 1. Зачем в этом случае используется срез последних? А не основная таблица?
2. Почему нужна именно граница? Для задачи достаточно даты. |
|||
12
Olden2610
23.02.16
✎
20:47
|
(11) Таблица действительно не важно какая, можно и физическую, но сути проблемы не меняет.
Хочу границой исключить движения на начало. Грубить по типу "Запрос.УстановитьПараметр("Начало", Дата+1);" Нельзя. |
|||
13
Dен
23.02.16
✎
20:50
|
(12) Нельзя, значит нельзя. Тогда, видимо, никак. Запрос не выполнится.
|
|||
14
Dен
23.02.16
✎
21:00
|
(12) Для описанной в (6) задачи таблица важна. Срез последних может пропустить необходимые данные.
|
|||
15
Olden2610
23.02.16
✎
21:03
|
(14) В регистре одно измерение, да и к тому-же - интересует наличие записей за период вообще. Без отбора по измерениям.
Таки методой тыка выяснил. Граница - передатся как параметр в РН, но не в РС. |
|||
16
Lexey_
23.02.16
✎
21:05
|
(15) в РС тоже:
РегистрСведенийМенеджер.<Имя регистра сведений> (InformationRegisterManager.<Имя регистра сведений>) СрезПоследних (SliceLast) Синтаксис: СрезПоследних(<КонецПериода>, <Отбор>) Параметры: <КонецПериода> (необязательный) Тип: Дата; МоментВремени; Граница. Определяет момент времени, заканчивая которым необходимо выбрать записи. |
|||
17
Serg_1960
23.02.16
✎
21:08
|
(0) "Результат запроса к таблицам СрезПервых и СрезПоследних будет неверным, если параметр Период имеет значение типа Граница или МоментВремени." - ошибка пару лет назад зарегистрирована и вряд ли будет исправлена.
|
|||
18
Dен
23.02.16
✎
21:09
|
Срез последних не решает поставленную задачу, независимо от количества измерений. Можно подобрать такие данные, когда срез последних не будет ничего возвращать при наличии записей в этом периоде.
|
|||
19
MishaD
23.02.16
✎
21:10
|
Всегда меня интересовало, а если несколько регистраторов за один день поменяют ресурс, а мне нужно будет получить значение в середине дня. То что, облом ? Если у РС периодичность день.
|
|||
20
Dен
23.02.16
✎
21:12
|
(17) Можно ссылку? Срез последних по моменту времени очень важен для регистров сведений с периодичностью по регистратору.
|
|||
21
Olden2610
23.02.16
✎
21:12
|
(16) если обращаться через точку, или в параметр ВТ (период, не условие) передавать границу - да, работает.
Иначе - как в условие - не передается. (17) запрос в такой ситуации вообще не отрабатывает. Жалуется, что не понимает что такое "граница" :) (18) повторюсь - вид таблицы (физ. ВТ) не имеет значения в контексте данного задания. |
|||
22
Olden2610
23.02.16
✎
21:15
|
(19) движение, вроде как, на начало дня совершается.
|
|||
23
Serg_1960
23.02.16
✎
21:15
|
Отобрать записи по периоду, период указан датами, и потом исключить записи, обращаясь к регистратору.
|
|||
24
Olden2610
23.02.16
✎
21:17
|
(16) Как и говорил - проблема таки была тривиальна до безумия.
в СрезПервых передаю периодом границу. Спасибо вам :) |
|||
25
MishaD
23.02.16
✎
21:18
|
(23) А если регистратор одного вида ?
|
|||
26
Lexey_
23.02.16
✎
21:24
|
(24) о чем и говорилось в (7)
|
|||
27
Olden2610
23.02.16
✎
21:29
|
(26) попробовал устанавливать период в поле "условие", в котором тоже не отработало. А вот использовать СрезПервых в связке с полем "период" - не сразу догадался :)
|
|||
28
youalex
23.02.16
✎
21:47
|
В общем, как-то так:
"ВЫБРАТЬ ПЕРВЫЕ 1 Период ИЗ РегистрСведений.ПриоритетностьСкладов ГДЕ Период > &ДатаНачала И Период <= &ДатаКонца" |
|||
29
Eiffil123
24.02.16
✎
06:57
|
(17) Кошмар какой. я вообще стараюсь по максимуму границу в запросы пихать. а тут такое
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |