Имя: Пароль:
1C
1С v8
Нужна помощь по получению данных на каждый день(даже пустых) из регистра накопл.
,
0 memogolik
 
27.12.12
10:48
Есть регистр Продажи.
Есть запрос:
ВЫБРАТЬ
   ПродажиОбороты.Период,
   СУММА(ПродажиОбороты.КоличествоОборот)
ИЗ
   РегистрНакопления.Продажи.Обороты(
           &НачПериода,
           &КонПериода,
           День,
               Номенклатура = &ВыбНоменклатура) КАК ПродажиОбороты

СГРУППИРОВАТЬ ПО
   ПродажиОбороты.Период

УПОРЯДОЧИТЬ ПО
   ПродажиОбороты.Период

Он выводит количество продаж на дни, в которых были продажи, как сделать так, чтобы он выводил нули на те дни, в которых продаж не было?
Заранее спасибо за ответы.
1 memogolik
 
27.12.12
10:54
апс
2 le_
 
27.12.12
10:56
Если отчет на СКД, то там есть возможность указать дополнение периода "День".
3 Sandy_S
 
27.12.12
10:57
от например как можно выбрать все дни в месяце
+ Code
ВЫБРАТЬ
   Календарь.Период КАК Период
ИЗ
   (ВЫБРАТЬ
       ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, ВложенныйЗапрос.Поле1 * 8 + ВложенныйЗапрос1.Поле1 - 1) КАК Период
   {ВЫБРАТЬ
       Период}
   ИЗ
       (ВЫБРАТЬ
           1 КАК Поле1
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           2
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           3
       
       ОБЪЕДИНИТЬ ВСЕ
       
       ВЫБРАТЬ
           0) КАК ВложенныйЗапрос
           ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
               1 КАК Поле1
           
           ОБЪЕДИНИТЬ ВСЕ
           
           ВЫБРАТЬ
               2
           
           ОБЪЕДИНИТЬ ВСЕ
           
           ВЫБРАТЬ
               3
           
           ОБЪЕДИНИТЬ ВСЕ
           
           ВЫБРАТЬ
               4
           
           ОБЪЕДИНИТЬ ВСЕ
           
           ВЫБРАТЬ
               5
           
           ОБЪЕДИНИТЬ ВСЕ
           
           ВЫБРАТЬ
               6
           
           ОБЪЕДИНИТЬ ВСЕ
           
           ВЫБРАТЬ
               7
           
           ОБЪЕДИНИТЬ ВСЕ
           
           ВЫБРАТЬ
               8) КАК ВложенныйЗапрос1
           ПО (ИСТИНА)
   ГДЕ
       МЕСЯЦ(ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, ВложенныйЗапрос.Поле1 * 8 + ВложенныйЗапрос1.Поле1 - 1)) = МЕСЯЦ(&НачалоПериода)) КАК Календарь

УПОРЯДОЧИТЬ ПО
   Период

Запрос.УстановитьПараметр("НачалоПериода",НачалоМесяца(Дата));

Далее помещаешь календарь в менеджер и пользуешь в основном запросе
4 Axel2009
 
27.12.12
10:57
(0) чтобы это получить, нужно чтобы гдето уже была таблица на каждый период. либо как написали СКД
5 DrShad
 
27.12.12
10:58
(3), (4) у вас устаревшие данные
(2) +100500
6 memogolik
 
27.12.12
11:03
(2) а где это дополнение устанавливается?
7 Axel2009
 
27.12.12
11:04
(5) а если не скд?
8 cw014
 
27.12.12
11:05
В помощь тебе БУХ 2.0, Документ.РасчетЕСН.МодульОбъекта.ПолучитьДанныеРасчета, а конкретнее 725 строка
9 DrShad
 
27.12.12
11:05
(7) а где в (4) написано что это для всех случаев кроме СКД?
10 le_
 
27.12.12
11:06
(6) http://s018.radikal.ru/i509/1212/87/e928d6d588cd.png
(7) В запросах можно использовать директиву ПЕРИОДАМИ, только выборку потом неудобно делать...
11 kible
 
27.12.12
11:06
(6) Сделай группировку по периоду и на закладке "Группировки" укажи метод дополнения.

(7) Выполнить запрос на скд и выгрузить в коллекцию.
12 Cube
 
27.12.12
11:07
(5) А я вот до сих пор пользуюсь методом (3). Работает - не трогаю)))
Как-то решил заморочится, переделать как предлагает (2), но не взлетело... А таким макаром можно получить остатки РН на каждый день?
13 le_
 
27.12.12
11:09
(12) Можно.
14 pessok
 
27.12.12
11:10
(13) даже если не было оборотов?
если так, то пора пересматривать свои древние отчеты :)
15 Cube
 
27.12.12
11:12
(13) Ну не знаю, видимо я что-то не догнал тогда...
16 le_
 
27.12.12
11:12
(14) Да, можно, даже если не было оборотов.
17 pessok
 
27.12.12
11:14
(16) мерси, пошло раскуривать. по идее оно должно на порядок быстрее соединения с календарем или (3) работать
18 Cube
 
27.12.12
11:15
(17) Да ладно)) Быстрее не будет, а вот удобочитемей, вполне)
19 Axel2009
 
27.12.12
11:24
(9) давай расскажи, как это сделать? =)
ВЫБРАТЬ
   ПродажиОбороты.Номенклатура КАК Номенклатура,
   ПродажиОбороты.КоличествоОборот,
   ПродажиОбороты.СтоимостьОборот
ИЗ
   РегистрНакопления.Продажи.Обороты(&ДН, &ДК, День, Номенклатура = &Н) КАК ПродажиОбороты

только еще, чтобы потом можно было использовать эти данные в других запросах пакета
20 DrShad
 
27.12.12
11:25
(19) ты не осилил (11)?
21 Cube
 
27.12.12
11:32
Ладно, шутки в сторону, поговорим на конкретном примере)))
Прост ой отчет: http://files.mail.ru/US1FUH
Скрин: http://storage6.static.itmages.ru/i/12/1227/h_1356593361_5173296_5d965ea1ef.jpeg
Слева результат отчета на СКД, справа типовой отчет, оражающий реальное положение дел. Снизу настройки отчета на СКД.
Где ошибка?
22 Axel2009
 
27.12.12
11:32
(20) во первых это работает только для выборки, а не промежуточных таблиц, во вторых
ВЫБРАТЬ
   ПродажиОбороты.Номенклатура КАК Номенклатура,
   ПродажиОбороты.Период КАК Период,
   ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
   ПродажиОбороты.СтоимостьОборот КАК СтоимостьОборот
ИЗ
   РегистрНакопления.Продажи.Обороты(&ДН, &ДК, День, Номенклатура = &Н) КАК ПродажиОбороты
ИТОГИ
   СУММА(КоличествоОборот),
   СУММА(СтоимостьОборот)
ПО
   Номенклатура,
   Период ПЕРИОДАМИ(ДЕНЬ, &ДН, &ДК)

нифига ниче не дополняет
23 cw014
 
27.12.12
11:33
(21) А где ты ошибку нашел?
24 Cube
 
27.12.12
11:34
(22) Типа нам пытаются объяснить что, в СКД дополнение периодами иначе работает.
25 DrShad
 
27.12.12
11:34
(21) ну ты группировку по периодам совсем не там сделал
26 cw014
 
27.12.12
11:34
Ну почему же типовые механизмы, уже реализованные в типовых конфах так упорно игнорируют?
27 Cube
 
27.12.12
11:34
(23) А что, отчет на СКД выводит остаток взаиморасчетов на каждый день? Да, выводит, но не правильный и не сначала периода.
28 DrShad
 
27.12.12
11:35
(22) еще один
мля, смотрите на закладке группировка в СКД, а не в настройках
29 Cube
 
27.12.12
11:35
(25) Специально отчет выложил. Покажи на примере, плиз)
30 DrShad
 
27.12.12
11:36
(29) это было бы слишком просто :))) курите, ребята, курите самостоятельно
31 Cube
 
27.12.12
11:37
(30) Всё ясно. Это как Саша Грей - все про нее говорят, но никто её не видел :)))
32 Axel2009
 
27.12.12
11:39
(28) псц, пиши нормально. для запросов нельзя, для скд можно, и то только для окончательной выборки, а значит куча ограничений на использование.
без твоих витьеватых фраз, которые понять невозможно.
33 Cube
 
27.12.12
11:51
И что? Всё что-ли?))) Где там те, кто знает волшебные три буквы ЭС КА ДЭ? :))
34 Axel2009
 
27.12.12
11:53
(33) да при выводе поля период зайди в настройку группировки, там есть метод дополнения. вот там укажи ДЕНЬ и еще обязательно укажи вручную даты с.. по.. даже не параметр
35 Cube
 
27.12.12
11:56
(34) Сам пробовал? На скрине в (21) всё как ты описал, за исключением "с" - "по", если их указать, то будут записи за все дни, но сумма остатка не верная всё-равно.
36 Axel2009
 
27.12.12
11:57
(35) а при чем тут сумма остатка и метод дополнения? =) даты добавились? добавились.. а ты еще хочешь чтобы суммы посчитались? =)
37 le_
 
27.12.12
11:57
(21) У тебя запрос неправильно написан. Читай статьи на ИТС о проблемах при расчете остатков.
38 le_
 
27.12.12
11:59
(22) Читай статью на ИТС "Использование дополнения итогов периодами в построителе отчета".
39 Cube
 
27.12.12
12:00
(37) Цитата:
Cube : А таким макаром можно получить остатки РН на каждый день?
le_ : Можно.
40 Cube
 
27.12.12
12:01
(38) А что, ты думаешь, у меня ИТС нет? Есть!) Пойду прочту и вернусь...
41 le_
 
27.12.12
12:01
(39) см. (37)
42 Cube
 
27.12.12
12:02
(38) Казалось бы, причем здесь построитель... про СКД ведь говорим...
43 le_
 
27.12.12
12:02
(40) С тебя 500 рублей за наводку.
44 le_
 
27.12.12
12:02
(42) В (22) речь не о СКД. Ты вменяемый?
45 Cube
 
27.12.12
12:03
(41) Если ты не понял, то переведу: предъява (37) не принимается, т.к. в (13) ты другое говорил.
46 le_
 
27.12.12
12:03
(45) Перечитай еще раз ветку.
47 Cube
 
27.12.12
12:04
(44) Так ты сам-то вменяемый? Первое упоминание о построителе было в (38) до этого говорили про СКД.
48 le_
 
27.12.12
12:05
(47) Ты в СКД запросы пишешь так, как в (22) написано?
49 Cube
 
27.12.12
12:05
(43) Не заслужил.
50 Cube
 
27.12.12
12:06
(48) Это пример. Я говорил, что у меня не получилось без использования (3) в СКД получить остаток РН на каждый день, ты начал доказывать, что это возможно. Уже отнекиваешься?
51 le_
 
27.12.12
12:08
(50) Ты запросы неправильно пишешь. СКД не может с твоими запросами корректно рассчитать остатки. Хоть дополняй период, хоть не дополняй.
52 le_
 
27.12.12
12:09
"Особенности расчета итогов по полям остатка. Использование реквизитов измерений."
http://a.imageshack.us/img412/5521/18053290.jpg

"Типичные проблемы при расчете остатков."
http://a.imageshack.us/img405/476/73796797.jpg
53 Cube
 
27.12.12
12:09
(38) Прочел. Статья не в тему. Ты можешь сделать простой пример или ты поговорить зашел?
54 Axel2009
 
27.12.12
12:09
(50)
01.11.2012 0:00:00    1,000    1,000
02.11.2012 0:00:00    1,000    1,000
03.11.2012 0:00:00    1,000    1,000
04.11.2012 0:00:00    1,000    1,000
05.11.2012 0:00:00    1,000    1,000
06.11.2012 0:00:00    1,000    1,000
07.11.2012 0:00:00    1,000    
08.11.2012 0:00:00        
09.11.2012 0:00:00        
10.11.2012 0:00:00        
11.11.2012 0:00:00        
12.11.2012 0:00:00        
13.11.2012 0:00:00        
14.11.2012 0:00:00        
15.11.2012 0:00:00        
16.11.2012 0:00:00        
17.11.2012 0:00:00        
18.11.2012 0:00:00        
19.11.2012 0:00:00        20,000
20.11.2012 0:00:00    20,000    14,000
21.11.2012 0:00:00    14,000    6,000
22.11.2012 0:00:00    6,000    1,000
23.11.2012 0:00:00    1,000    1,000
24.11.2012 0:00:00    1,000    1,000
25.11.2012 0:00:00    1,000    1,000
26.11.2012 0:00:00    1,000    1,000
27.11.2012 0:00:00    1,000    1,000
28.11.2012 0:00:00    1,000    
29.11.2012 0:00:00        
30.11.2012 0:00:00        
01.12.2012 0:00:00        
02.12.2012 0:00:00        
03.12.2012 0:00:00        20,000
04.12.2012 0:00:00    20,000    20,000
05.12.2012 0:00:00    20,000    8,000
06.12.2012 0:00:00    8,000    
07.12.2012 0:00:00        
08.12.2012 0:00:00        
09.12.2012 0:00:00        
10.12.2012 0:00:00        
11.12.2012 0:00:00        
12.12.2012 0:00:00        
13.12.2012 0:00:00        
14.12.2012 0:00:00        
15.12.2012 0:00:00        
16.12.2012 0:00:00        
17.12.2012 0:00:00        
18.12.2012 0:00:00        
19.12.2012 0:00:00        
20.12.2012 0:00:00        
21.12.2012 0:00:00        
22.12.2012 0:00:00        
23.12.2012 0:00:00        
24.12.2012 0:00:00        
25.12.2012 0:00:00        
26.12.2012 0:00:00        
27.12.2012 0:00:00        
28.12.2012 0:00:00        
29.12.2012 0:00:00        
30.12.2012 0:00:00        
31.12.2012 0:00:00        
Итого    1,000
55 le_
 
27.12.12
12:09
(53) "Сделай сам" (c)
56 Cube
 
27.12.12
12:10
(54) Что это?
57 Cube
 
27.12.12
12:10
(55) Понятно, мистабол. Слив засчитан.
58 le_
 
27.12.12
12:11
(57) Иди нах#й, дурик.
59 Axel2009
 
27.12.12
12:11
(55) прочитал. все что написано про СКД. где построитель запроса?
60 DrShad
 
27.12.12
12:13
(54) а что это? что не так?
сорри за отсутствие
61 Cube
 
27.12.12
12:13
Ну что, ещё кто-нибудь знает, как получить остатки РН на каждый день в СКД или все как (58) мистаболы?
62 le_
 
27.12.12
12:14
(59) см. (38)
63 DrShad
 
27.12.12
12:14
(61) а на твоем скрине что тебя смущает?
64 Cube
 
27.12.12
12:15
(63) С 11.12.2012 по 26.12.2012 каждый день остаток был -14757, а отчет говорит, что небыло ничего.
65 Axel2009
 
27.12.12
12:20
(56) это остатки по товарам на складах. как видно корректно показывает остаток на каждый день
66 Cube
 
27.12.12
12:21
(65) Тебе видно? А мне не видно... Где записи регистра или данные типового отчета, чтобы сравнить?
К тому же не понятно, как получена это таблица. Я тебе в блокноте хоть щас такую нарисую.
67 DrShad
 
27.12.12
12:23
(65) http://s017.radikal.ru/i410/1212/5f/71f26033819e.jpg

что я делаю не так?
68 Axel2009
 
27.12.12
12:23
(67) мне то чего доказываешь. что в скд можно? я говорю можно.
69 Axel2009
 
27.12.12
12:24
(66) ну тогда тебе прямиком в СС идти. в блокноте мы рисуем
70 DrShad
 
27.12.12
12:24
(68) сорри, (67) к (64)
71 Cube
 
27.12.12
12:24
(67) покажи типовой отчет, чтобы сравнить.
72 Cube
 
27.12.12
12:25
(69) Я говорю, доказать можешь достоверность данных или на слово тебе верить надо? Выложи свою обработку на файлопомойку.
73 DrShad
 
27.12.12
12:26
74 DrShad
 
27.12.12
12:26
(72) а как же курить мануал?
75 Cube
 
27.12.12
12:28
(73) Похоже на правду. Показывай, как делал.
76 Cube
 
27.12.12
12:29
(74) Так скурен уже, а второго мануала нет...
77 DrShad
 
27.12.12
12:29
(75) вот так за просто? :))))
78 le_
 
27.12.12
12:31
79 Cube
 
27.12.12
12:31
(77) Ну, а ты как хотел?)) Докажи, что ты не просто так тут языком чешешь))
80 DrShad
 
27.12.12
12:32
(79) лови почту
81 Cube
 
27.12.12
12:34
(80) Блин, это на какой конфе?))
82 DrShad
 
27.12.12
12:42
на бухии, а что?
83 Cube
 
27.12.12
12:43
(82) В УПП не открывается)
84 DrShad
 
27.12.12
12:44
(83) открывай в бухии
какой был пофигуратор открыт - на том и сваял
85 DrShad
 
27.12.12
12:54
(83) ну чего приуныл? где посыпание головы пеплом?
86 Cube
 
27.12.12
12:55
О, да!!!! Короче, отчет в (21) правильный. Просто нужно, чтобы запрос выбирал ещё и поле "СуммаВзаиморасчетовНачальныйОстаток", тогда (даже если начальный остаток не выводить) конечный остаток считается верно, скрин: http://storage1.static.itmages.ru/i/12/1227/h_1356598318_8677902_a5c591912a.jpeg

Короче, запрос такой:
ВЫБРАТЬ
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ПериодДень,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток,
   ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток
ИЗ
   РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(, , Авто, , ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
87 Cube
 
27.12.12
12:56
(85) Я расписывал для истории, делал скрины... :)))
Чувствую, нужно снова покупать книжку Хрусталевой и перечитывать, а то мою кто-то подрезал... :))
88 Cube
 
27.12.12
12:57
Для истории: DrShad - МУЖИК!))
89 DrShad
 
27.12.12
12:58
(88) не катит! пепельницу на голову и только так
90 Cube
 
27.12.12
12:59
(89) Посыпаю голову пеплом)
91 DrShad
 
27.12.12
13:01
(90) МУЖИК!
92 DrShad
 
27.12.12
13:04
ну я думаю, что после такого холивара, ТС уж всяко разберется как ему реализовать задачу
93 Axel2009
 
27.12.12
13:17
(92) а средние остатки тогда как посчитать подобным методом?
94 le_
 
27.12.12
14:00
95 dk
 
28.12.12
08:45
Тоже вчера озадачился темой получения остатков на каждый день
Про разворот в СКД в курсе, но захотелось получить без СКД, а в простом запросе, т.к. так проще встраивать в уже существующие запросы.
В итоге вроде получилось обойтись без СКД

Небольшой взброс:

ВЫБРАТЬ
   ДАННЫЕ.*
ИЗ
(ВЫБРАТЬ
   ВЛОЖ1._1 _1
   , ВЛОЖ2._1 _2
   , ВЛОЖ2._2 _3
ИЗ
(ВЫБРАТЬ
   1 _1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   3
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   4
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   5
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   6
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   7) ВЛОЖ1,
(ВЫБРАТЬ
   6 _1
   ,27 _2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   4 _1
   ,15 _2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   3 _1
   ,8 _2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   1 _1
   ,3 _2
) ВЛОЖ2
ГДЕ
   ВЛОЖ2._1 <= ВЛОЖ1._1) КАК Данные
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
(ВЫБРАТЬ
   ВЛОЖ1._1 _1
   , МАКСИМУМ(ВЛОЖ2._1) _2
ИЗ
(ВЫБРАТЬ
   1 _1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   3
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   4
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   5
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   6
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   7) ВЛОЖ1,
(ВЫБРАТЬ
   6 _1
   ,27 _2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   4 _1
   ,15 _2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   3 _1
   ,8 _2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
   1 _1
   ,3 _2
) ВЛОЖ2
ГДЕ
   ВЛОЖ2._1 <= ВЛОЖ1._1
СГРУППИРОВАТЬ ПО
   ВЛОЖ1._1) КАК КЛЮЧ ПО КЛЮЧ._1 = Данные._1 И КЛЮЧ._2=ДАННЫЕ._2

Где
Влож1 - имитирует календарь
Влож2 - таблицу с остатками на конец дня (с пропусками дней без движений)
---
Пока громоздко получилось и есть 1 момент - не получилось отсортировать Влож2 по убыванию - пишет что=то про для упорядочивания вложенного запроса используйте конструкцию ПЕРВЫЕ ...
96 Alex S D
 
28.12.12
08:51
(92) ты как водитель мерса из анектода про мерс и легковушку в кювете
97 Axel2009
 
28.12.12
11:53
(94) спс