Имя: Пароль:
1C
1C 7.7
v7: Запрос с участием Позиции документа.
,
0 __Se24
 
25.12.13
12:37
Доброго дня , господа Гуру. Может кто сталкивался с такой ситуацией.
Была задумана система заказа товара из филиала в филиал. Регистр + 2 документа (установка и снятие). все тривиально.
Основной заморочкой было то что , необходимо в документе снятия отображать то что сделал документ установка, а движения данного документа не учитывались. Был написан маленький запрос , где в качестве аргументов  "Период С ТекДок По ТекДок" была указана такая комбинация:
ТекДок=СформироватьПозициюДокумента(ТекущийДокумент(),-1);
но при этом , функция КонОст по ресурсу все равно возвращает данные, которые внес в регистр этот документ.
Путем перебора удалось выяснить , что если заменить на "Период С НачДата По ТекДок", где НачДата , какая-либо дата , например минус год , то запрос отрабатывает правильно, но долго.
В чем, собственно, ошибка , при указании конкретной позиции ?
1 1Сергей
 
25.12.13
12:45
запрос выбирает остатки или обороты?
и ваще - мало кода
2 __Se24
 
25.12.13
12:54
Запрос выбирает остатки. "КонОст" же ..
Код могу привести, но мне кажется тут загвоздка не в самом коде , а в какой-то непонятно интерпретации периода, задаваемого в запросе, самой 1С ..
3 __Se24
 
25.12.13
12:57
ТекДок=СформироватьПозициюДокумента(ВыбПодтверждениеЗаявки,-1);
    
Зп=СоздатьОбъект("Запрос");
ТкЗп="
|Период С НачДата По ТекДок;
//|Период С ТекДок По ТекДок;
|Без Итогов;
|ДокЗ    = Регистр.ЗаказыФилиалов.Заявка;
|Товар    = Регистр.ЗаказыФилиалов.Товар;
|Колво    = Регистр.ЗаказыФилиалов.Количество;
//|Докум    = Регистр.ЗаказыФилиалов.ТекущийДокумент;
|
|Функция Сумма        = КонОст(Колво);
|Условие (ДокЗ = ВыбПодтверждениеЗаявки.ЗаказФилиала);
|Группировка Товар Без Групп;
//|Группировка Докум;
|";
4 dk
 
25.12.13
13:06
а движения по измерению заявка сама заявка делает или другой документ?
5 1Сергей
 
25.12.13
13:07
т.е. у тебя Запрос по конечным остаткам при разных значения НачДата выполняется по разному долго?
6 КонецЦикла
 
25.12.13
13:08
так у тебя есть измерение заявка? фильтр по ней, выгрузка итогов и все.
7 1Сергей
 
25.12.13
13:10
я вобще бы без запроса сделал. Тут, как раз, тот случай, когда без запроса получится быстрее
8 1Сергей
 
25.12.13
13:14
или делай через начальные остатки


|Период С ТекДок По ТекДок;
...
|Функция Сумма        = НачОст(Колво);
9 __Se24
 
25.12.13
13:38
(4) Есть заявка и подтверждение заявки , Заявка может быть не одна , в таком случае создается что-то вроди цепочки , и в измерение записывается "головная"
10 __Se24
 
25.12.13
13:39
(5) Да , именно так. Если ТекДок-ТекДок, то быстро , но не правильно ... Если 01.01.2012-Текдок , то правильно , но долго !
11 __Se24
 
25.12.13
13:41
(6) Тут вопрос не столько в реализации этой задачи , понятно . что решить ее можно по-разному, хотелось бы разобраться с самой ситуацией , почему так происходит , и как делать это правильно в будущем
12 __Se24
 
25.12.13
13:41
(7) без запроса не получится ... там документов может много быть ...
13 __Se24
 
25.12.13
13:43
(8) Ага , попробую , спасибо
Но все ж хотелось бы понять , почем КонОст снимая остаток на "предыдущий" документ захватывает и этот.
14 1Сергей
 
25.12.13
13:44
(12) какая разница? .Остатки( .СводныеОстатки(
15 __Se24
 
25.12.13
13:46
(14) А в чем разница между этим и запросом ?
16 1Сергей
 
25.12.13
13:50
(15) в запросе можно понаворочистее сделать. Условия, группировки там. Но, у тебя простое условие, простая группировка
17 __Se24
 
25.12.13
13:55
(16) Хм .. как я написал выше , мне важнее разобраться с причиной , почему так происходит , может я где-то допустил кардинальную ошибку в самой задумке , нежели решить конкретно эту задачу. Собственно, как вы и предложили "НачОст" сработал как нужно ))
18 __Se24
 
25.12.13
13:56
в 7-ке есть механизм работы с позициями документов , но внятного описания я так нигде не нашел.
19 dk
 
25.12.13
13:57
разбери на конкретном примере
заявка № ... от ....
все движения по измерению заявка = ...
док1 дата время + 5
док2 дата время - 3
док3 дата время + 1
....
20 1Сергей
 
25.12.13
14:00
(17) лично я всегда старался избегать работать с позициями документов. Возможно, это ахиллесова пята семерки
21 __Se24
 
25.12.13
14:02
(19) в желтой книжечке написано "можно выполнять сравнение позиций" но они не сравниваются :(
22 __Se24
 
25.12.13
14:03
(20) Да , механизм хороший , жаль , работать с ним неудобно и непонятно как ...
23 КонецЦикла
 
25.12.13
14:05
мне бы и в голову не пришло делать это запросом
24 __Se24
 
25.12.13
14:07
(23) а я люблю запросы, в случае когда руководству вдруг приходит "свежая" идея , и нужно быстренько что-то исправить , они легче поддаются доработкам :)
25 1Сергей
 
25.12.13
14:21
(24) переходи на новый уровень - прямые запросы. Черные запросы - так, баловство
26 varelchik
 
25.12.13
14:39
+(25) +100.
27 __Se24
 
25.12.13
14:48
(25) (26) Командование запрещает использовать внешние компоненты )) так бы уже давно ))
28 varelchik
 
25.12.13
15:23
(27) тупое значит командование.
29 __Se24
 
25.12.13
17:54
(28)  Это называется "ксенофобия" ))
30 acanta
 
25.12.13
18:55
А как эти документы разнесены по времени? установка и снятие? Позиции работали в 7ке так же как дата время в 8ке стало..
31 acanta
 
25.12.13
18:59
вариант период с текдок без по и начОст.
32 GreyK
 
25.12.13
19:02
(0) Поставь условие на исключение движений сделанных текущим документом.
А вообще есть "принцип подчиненности документов", его стоит соблюдать всегда.
33 __Se24
 
25.12.13
19:17
(32) Увы , когда руководство задает рамки , не всегда есть возможность их обходить ...
За совет спасибо )) но с "позицией" все ж непонятно ...
34 GreyK
 
25.12.13
19:36
(33) В качестве значений параметров запроса "Период с" и "По" может выступать документ.
Как у вас попадали в запрос ограниченный позицией одного документа другие движения я не знаю, вроде по ЖКК ничего другого туда попасть не должно...
2 + 2 = 3.9999999999999999999999999999999...