Имя: Пароль:
1C
1С v8
Запрос задваивает сумму
0 WF72
 
04.02.13
10:34
Был простой запрос к регистрам бухучета с отбором по определенному виду номенклатуры. Всё работало отлично, но потребовалось добавить в запрос условие исключения определенного вида документов (Требование-накладная). Для этого пришлось добавить в запрос периодичность "Регистратор", и теперь цифры по остаткам получаются задвоенные. Можно ли этого как-то избежать?
Счет в запросе - 41.04.

Запрос.Текст =
   "ВЫБРАТЬ РАЗРЕШЕННЫЕ
   |    ВыбРег.Субконто2 КАК Склад,
   |    ВыбРег.Субконто1 КАК Номенклатура,
   |    ВЫРАЗИТЬ(ВыбРег.СуммаНачальныйОстатокДт + ВыбРег.СуммаНачальныйОстатокДт * 0.18 КАК ЧИСЛО(15, 0)) КАК СуммаНачальныйОстатокДт,
   |    ВЫРАЗИТЬ(ВыбРег.СуммаОборотДт + ВыбРег.СуммаОборотДт * 0.18 КАК ЧИСЛО(15, 0)) КАК СуммаОборотДт,
   |    ВЫРАЗИТЬ(ВыбРег.СуммаОборотКт + ВыбРег.СуммаОборотКт * 0.18 КАК ЧИСЛО(15, 0)) КАК СуммаОборотКт,
   |    ВЫРАЗИТЬ(ВыбРег.СуммаКонечныйОстатокДт + ВыбРег.СуммаКонечныйОстатокДт * 0.18 КАК ЧИСЛО(15, 0)) КАК СуммаКонечныйОстатокДт,
   |    ВыбРег.КоличествоНачальныйОстатокДт КАК КоличествоНачальныйОстатокДт,
   |    ВыбРег.КоличествоОборотДт КАК КоличествоОборотДт,
   |    ВыбРег.КоличествоОборотКт КАК КоличествоОборотКт,
   |    ВыбРег.КоличествоКонечныйОстатокДт КАК КоличествоКонечныйОстатокДт
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор, , Счет = &ВыбСчет, , Организация = &Организация) КАК ВыбРег
   |ГДЕ
   |    ВыбРег.Субконто1.ВидНоменклатуры = &Авто
   |    И (НЕ ВыбРег.Регистратор ССЫЛКА Документ.ТребованиеНакладная)
   |
   |СГРУППИРОВАТЬ ПО
   |    ВыбРег.Субконто1,
   |    ВыбРег.Субконто2,
   |    ВыбРег.СуммаНачальныйОстатокДт,
   |    ВыбРег.СуммаОборотДт,
   |    ВыбРег.СуммаОборотКт,
   |    ВыбРег.СуммаКонечныйОстатокДт,
   |    ВыбРег.КоличествоНачальныйОстатокДт,
   |    ВыбРег.КоличествоОборотДт,
   |    ВыбРег.КоличествоОборотКт,
   |    ВыбРег.КоличествоКонечныйОстатокДт
   |
   |УПОРЯДОЧИТЬ ПО
   |    Склад,
   |    Номенклатура
   |ИТОГИ
   |    СУММА(СуммаНачальныйОстатокДт),
   |    СУММА(СуммаОборотДт),
   |    СУММА(СуммаОборотКт),
   |    СУММА(СуммаКонечныйОстатокДт),
   |    СУММА(КоличествоНачальныйОстатокДт),
   |    СУММА(КоличествоОборотДт),
   |    СУММА(КоличествоОборотКт),
   |    СУММА(КоличествоКонечныйОстатокДт)
   |ПО
   |    ОБЩИЕ,
   |    Склад,
   |    Номенклатура
   |АВТОУПОРЯДОЧИВАНИЕ";
1 DrShad
 
04.02.13
10:36
а где суммирование по группировкам?
2 zak555
 
04.02.13
10:37
ВыбСчет -- 41.04 ?
3 DrShad
 
04.02.13
10:38
(2) что смущает?
4 Галахад
 
гуру
04.02.13
10:39
Странно, что всего лишь задвоенные.
5 Жан Пердежон
 
04.02.13
10:43
группировки убери и все ясно станет
6 zak555
 
04.02.13
10:43
(3) какие проводки с ндс в документе требовнаие-накладная ?
7 viktor_vv
 
04.02.13
10:49
(6) Так он ее и исключает.
8 dmpl
 
04.02.13
10:56
(0) Дык а зачем тебе остатки, если документы исключаешь? Начальные только с натяжкой можно считать за верные, конечные - 100% неверные.
9 WF72
 
04.02.13
11:25
(8)дело в том, что ТН тоже дает движения по сч.41.04, а оные как раз и не нужны.
(1)суммирование по группировкам ставил, ничего не изменилось.
(5)группировки убрал, теперь каждая строка стала попадать в отчет дважды. да еще данные по оборотам вдруг начали попадать в остатки. что-то так смутно забрезжило, но понять все еще не могу.
звиняйте за торможение, сижу весь в гипсе, боль мешает думать :(
10 WF72
 
04.02.13
11:30
точнее, каждая строчка стала двоиться после того, как убрал итоги по номенклатуре.
11 Галахад
 
гуру
04.02.13
11:30
"боль мешает думать" выздаравливай давай. Нафиг эта 1с?
12 dmpl
 
04.02.13
11:33
(9) Дык когда тебе бухгалтера начнут задавать вопрос про то, почему остатки не совпадают - что ты будешь им объяснять? Не проще сказать им, что при таких условиях остатки смысла не имеют?
13 WF72
 
04.02.13
11:47
(11) спасибо за пожелание, но с одной действующей рукой больше нечем заняться :)
(12) это хотелка главбуха. значит, с тех.точки зрения задача решения не имеет? или имеет? думаю, раз такая пьянь, считать количество по регистру "товары на складах", затем левое содинение с регистром бухучета, чтобы узнать текущую цену, но опять же думаю, что выйдут теже яйца, только сбоку - ТН всё равно придется отсекать при расчете сумм.
14 Classic
 
04.02.13
11:48
(0)
Что означает слово "остатки" при неучтенности одного вида регистратора?
Смотри. Предположим ты таки написал нужный запрос. Без учета твоего ограничения на вид документа остатки за Декабрь такие:
НачОст - 300
КонОст - 700

Твой запрос с учетом вида документа тебе выдал
НачОст - 300
КонОст - 600

Какой НачОст он должен выдать за Январь?
Теоретически 600. Но ты ведь ограничение на вид документа ставишь только за текущий период. Потому он тебе всегда в НачОст будет выдавать реальный остаток (700)
15 dmpl
 
04.02.13
11:52
(13) Ну пусть распишут, как по их мнению должны считаться остатки. Скорее всего, они сами запутаются. Ну а дальше (если вдруг напишут) выбираешь из реальной таблицы нужное, т.к. виртуальная таблица остатков и оборотов тебе такое, скорее всего, не даст.
16 Жан Пердежон
 
04.02.13
12:26
(9) пользователи за плохой код побили?)
17 samozvanec
 
04.02.13
12:27
(0) метод дополнения выстави, сам недавно офигевал
18 WF72
 
04.02.13
12:38
(17) не, если выставить "ДвиженияИГраницыПериода" - то никакой разницы. если "Движения" - то запрос не выдает ничего.
19 samozvanec
 
04.02.13
12:39
(18) вот тебе нужны движения. а что ничего не выдает, это уже не ко мне
20 GANR
 
04.02.13
12:45
(0) Почему этот запрос вообще должен работать ???
1. агрегатные поля используются как группировки
   |СГРУППИРОВАТЬ ПО
   |    ВыбРег.Субконто1,
   |    ВыбРег.Субконто2,
   |    ВыбРег.СуммаНачальныйОстатокДт,
   |    ВыбРег.СуммаОборотДт,
   |    ВыбРег.СуммаОборотКт,
   |    ВыбРег.СуммаКонечныйОстатокДт,
   |    ВыбРег.КоличествоНачальныйОстатокДт,
   |    ВыбРег.КоличествоОборотДт,
   |    ВыбРег.КоличествоОборотКт,
   |    ВыбРег.КоличествоКонечныйОстатокДт
2. что делают отборы в секции ГДЕ???
   |ГДЕ
   |    ВыбРег.Субконто1.ВидНоменклатуры = &Авто
   |    И (НЕ ВыбРег.Регистратор ССЫЛКА Документ.ТребованиеНакладная)
21 ssh2006
 
04.02.13
12:47
(18) когда нет движений и есть остатки при методе дополнения
ДвиженияИГраницыПериода (по умолчанию) будут две записи а регистратор будет неопределено и условие
И (НЕ ВыбРег.Регистратор ССЫЛКА Документ.ТребованиеНакладная)
выполнится
22 Classic
 
04.02.13
12:51
(17)
та плевать на метод дополнения. У него все в принципе неправильно написано.
ДТ при регистраторах РН1, ТН1, РН2 выдаст

РН1  50 60
ТН1  60 70
РН2  70 80

После отбора останется
РН1  50 60
РН2  70 80

Хрень кароче
23 samozvanec
 
04.02.13
12:54
(22) нихрена не плевать. для таблицы ОстаткиИОбороты регистра бухгалтерии по умолчанию - ДвиженияИГраницыПериода, отсюда еще одна строка и задвоение
24 Classic
 
04.02.13
12:56
(23)
В данном случае плевать.
Еще одна - какая разница, будет затроение или зачетверение?
25 WF72
 
04.02.13
13:07
(20) 1.мне нужна группировка по контрагенту и складу. остальное конструктор ставит сам.
2.отбирают нужные данные. где еще делать отбор?
26 GANR
 
04.02.13
13:33
(25)
1. Зайди на закладку конструктора группировки и раскидай там всё, как надо.
2. В параметрах виртуальной таблица ОстаткиИОбороты задать, по крайней мере, ВыбРег.Субконто1.ВидНоменклатуры = &Авто
27 samozvanec
 
04.02.13
13:34
(24) я не спорю, сам запрос тоже важен) но и на это стоит обращать внимание
28 WF72
 
04.02.13
14:43
(26) 2. это не сработает:
поле не найдено "ВыбРег.Субконто1.ВидНоменклатуры = &Авто"
если ставить просто &Авто, то при исполнении запроса идет ругань на недопустимый вид субконто.
29 Classic
 
04.02.13
14:46
(28)
Сработает, если ты явно задашь виды субконто.
но это совсем-совсем не важно
30 sapphire
 
04.02.13
14:50
|СГРУППИРОВАТЬ ПО
   |    ВыбРег.Субконто1,
   |    ВыбРег.Субконто2,
   |    ВыбРег.СуммаНачальныйОстатокДт,  //ЗАЧЕМ?
   |    ВыбРег.СуммаОборотДт,  //ЗАЧЕМ?
   |    ВыбРег.СуммаОборотКт,  //ЗАЧЕМ?
   |    ВыбРег.СуммаКонечныйОстатокДт,  //ЗАЧЕМ?
   |    ВыбРег.КоличествоНачальныйОстатокДт,  //ЗАЧЕМ?
   |    ВыбРег.КоличествоОборотДт,  //ЗАЧЕМ?
   |    ВыбРег.КоличествоОборотКт,  //ЗАЧЕМ?
   |    ВыбРег.КоличествоКонечныйОстатокДт  //ЗАЧЕМ?
31 GANR
 
04.02.13
14:54
(28) Субконто1.ВидНоменклатуры = &Авто
32 WF72
 
04.02.13
15:01
(31)это же вид номенклатуры, а не вид субконто. то же самое: "поле не найдено".
33 WF72
 
04.02.13
15:03
(30)дык я поначалу не воткнул все эти реквизиты в суммирование, вот мне конструктор и сотворил такую конструкцию :)))
в общем, походу придется новый регистр заводить для всей этой хрени...
34 cleaner
 
04.02.13
15:07
(0) Я так понял, что остатки трогать не предполагалось,
только обороты уменьшить, исключив требование-накладную.

Навскидку - вынести код запроса оборотов во вложенный запрос. Тогда все должно пойти нормально. Соответственно, выбирать во вложенном запросе только движения, остатки в нем не выбирать.
35 cleaner
 
04.02.13
15:08
(33) А вот это зря, я думаю. Вроде как задача имеет решение без доработок структуры:)
36 dmpl
 
04.02.13
15:09
(34) И объяснять бухгалтерам потом почему не сходится начальный остаток + приход - расход с конечным остатком.
37 cleaner
 
04.02.13
15:11
(36) Тыкать носом в ТЗ, ИМХО:)
38 Classic
 
04.02.13
15:23
(37)
Если оно есть :)
А если "сделай нам так же, но без ТребованиеНакладная", то и тыкать особо некуда
39 WF72
 
04.02.13
15:24
(38) вот-вот, именно так и было :(
40 cleaner
 
04.02.13
15:26
(38)(39) Нужно тогда сделать наскальный рисунок и отнести на подпись:)
41 Classic
 
04.02.13
15:26
(39)
Я тебе всю ветку пытаюсь объяснить, чем тебе грозит подобная задача. Благо самому такая не раз ставилась :)
Прежде чем программить тебе надо выяснить главный вопрос - какие остатки показывать на начало. И как бухи эти остатки на начало будут сверять
42 cleaner
 
04.02.13
15:27
(41) Согласен, это та печка, от которой нужно начать плясать
43 WF72
 
04.02.13
15:43
(41) таки добился от гб ответа: остатки можно не трогать :)))
значит, придется переписать запрос - с вложением, левым соединением или объединением - посмотрю, что будет проще, т.к. вложенные запросы еще не писал.

большое спасибо уважаемым коллегам за ответы.
AdBlock убивает бесплатный контент. 1Сергей