Имя: Пароль:
1C
1С v8
Количество месяцев с ненулевой продажей по номенклатуре
0 Dirk Diggler
 
27.06.12
09:57
Задача - получить из регистра "Продажи" количество месяцев(недель, дней), в которые были продажи данной позиции номенклатуры. кроме как запрос в цикле, мне пока ничего не приходит в голову. как сделать нормально?
1 Ненавижу 1С
 
гуру
27.06.12
09:59
просто запросом, выбрав правильную периодичность оборотов
2 DrShad
 
27.06.12
10:01
(0) а какой запрос ты собрался в Цикле писать? в студию
3 Dirk Diggler
 
27.06.12
10:02
(2) на каждый подпериод )
4 MadHead
 
27.06.12
10:02
Нужно получить оборот на каждый месяц. Можно таблицу саму с собой соеденить. Можно использовать дополнение по периоду. Запросы в цикле лишнее
5 vudo
 
27.06.12
10:04
(2) Я писал через две временные таблицы очищая их по очереди. Но там была нужна рекурсия...

Здесь думаю (4).
6 MadHead
 
27.06.12
10:05
7 MadHead
 
27.06.12
10:05
(6) алгоритм подойдет и для оборотов
8 Ненавижу 1С
 
гуру
27.06.12
10:06
я чего-то не вкуриваю, разве не это?

ВЫБРАТЬ
   ПродажиОбороты.Номенклатура,
   КОЛИЧЕСТВО(ПродажиОбороты.Период) КАК Период
ИЗ
   РегистрНакопления.Продажи.Обороты(, , День, ) КАК ПродажиОбороты

СГРУППИРОВАТЬ ПО
   ПродажиОбороты.Номенклатура
9 ssh2006
 
27.06.12
10:06
Ответ в (1), что мудрить, простейший запрос к ВТ обороты
10 DrShad
 
27.06.12
10:09
(9) ну без цикла не вызывает доверия :)
11 Ненавижу 1С
 
гуру
27.06.12
10:10
(10) где в (1) цикл?
12 DrShad
 
27.06.12
10:11
(11) в том то и дело что его там нет, а ТС без цикла как-то неловко
13 Dirk Diggler
 
27.06.12
12:33
(1) Меняем немного задачу. Надо получить кол-во дней в месяце, в течение которых конечный остаток номенклатуры в регистре СвободныеОстатки больше нуля.
14 Ненавижу 1С
 
гуру
27.06.12
12:34
(13) тысяча рублей
15 Dirk Diggler
 
27.06.12
12:34
(14) много
16 Ненавижу 1С
 
гуру
27.06.12
12:34
(15) 950
17 Maniac
 
27.06.12
12:35
Готовое решение в котором все есть и даже намного больше http://subsystems.ru/catalog/29/154/
18 Dirk Diggler
 
27.06.12
12:35
шолбты. у меня специфика.
19 Ненавижу 1С
 
гуру
27.06.12
12:36
(18) тогда (16)
20 Dirk Diggler
 
27.06.12
12:43
(19) только я боюсь что ты без запроса в цикле или запроса генерируемого циклом тоже  не обойдешься )
21 ssh2006
 
27.06.12
12:49
(20) без всяких циклов делается
22 andrewks
 
27.06.12
12:52
сделаю за 900 р.
23 izekia
 
27.06.12
12:53
890
24 andrewks
 
27.06.12
12:54
(23) не мешайся, ты мне ещё за хитрое соединение таблиц должен
25 izekia
 
27.06.12
12:55
(24) у тебя там запрос на каждую таблицу, я забыл в условии упомянуть, что там динамика ... но все равно прикольно)
26 Maniac
 
27.06.12
12:58
Жесть) долго вы тут будете обсуждать запрос на лист экрана в котором календарь с регистром соединяется?
27 gosn1ck
 
27.06.12
13:01
(26) за пол часа уже нахаляву отдаешь разработку? :)
28 Maniac
 
27.06.12
13:03
Еще раз - покупаем (17) - получаем сразу полный готовый отчет со всем сразу. Манагеры щасливы, вы нашли готовое решение.
1Сникам вознаграждение от полной продажи 20 процентов. так что еще и заработаете по 3 тысячи.
29 Ksandr
 
27.06.12
13:05
889 руб
30 izekia
 
27.06.12
13:09
(28) они потом за это головную боль не поимеют тысяч на 20?
31 Maniac
 
27.06.12
13:13
(30) ну как то уже 800 клиентов. Живой же. Все юзают. Код обработок ежели что открыт и все такое. Обновления, поддержка бесплатны.
32 Ненавижу 1С
 
гуру
27.06.12
13:17
(31) уже по интерфейсу видно, что универсальностью тут даже не пахнет
33 andrewks
 
27.06.12
13:31
[holiwar mode off]
34 Maniac
 
27.06.12
13:34
(32) а что вопрос об универсаольности шел? и нафиг она нужна ? люди выполняют конкретные задачи.
35 Ненавижу 1С
 
гуру
27.06.12
13:34
(34) ну купят твое и допиливать?
36 Maniac
 
27.06.12
13:37
(35) что допиливать?
Под себя? 90 процентов пользуются тем что есть и постоянно просят обновления. значит используют без доработок.
А оставшиеся покупали и дорабатывали под специфику. В эту разработку вложено изначально больше 2 месяцев работы, плюс 2 года обновлений и доработок. Как ты думаеншь проще с нуля писать или 15 тысяч отдать за 80 процентов готового.
37 andrewks
 
27.06.12
13:40
(25) в смысле "динамика"?
38 gosn1ck
 
27.06.12
13:46
(36) с нуля
39 Maniac
 
27.06.12
13:48
(38) с нуля есть шанс вообще ничего никогда не написать. Вот ты например на 99.99 процентов я уверен что даже (0) не напишешь. а если и будешь писать то еще недели три. а потом через месяц тебе еще скажут что проверили и отчет твой бред выводит. тк ты его написал непраильно. и считает неправильно. не учел чего нибудь.
40 Ненавижу 1С
 
гуру
27.06.12
13:49
(39) ну а если твой не будет правильно считать тогда что?
ждать, когда ты исправишь?
41 Maniac
 
27.06.12
13:50
Я сам ничего с нуля никогда не пишу если есть готовое решение на задачу. И мой директор также относится ко всему. ПОтому что помимо каждой задачи на работе еще десятки дел которые нужно решать. А писать лесапеды - ни мне неинтересно ни в интересах бизнеса. ПОэтому я на фирму всегда покупаю готовые решения если они есть. И уже если надо дописываю их.
42 Maniac
 
27.06.12
13:53
(40) программ без ошибок не бывает. и людей которые их делают тоже - если кто то скажет что это не так - он не знает мир.
А какие еще варианты? ты если ошибки делаешь точно также их исправляешь и все ждут. Или ты не делаешь ошибок? Если не делаешь то ты точно не на Земле родился.
У меня бывают ошибки программные при выпуске обновлений. Я их сразу моментально исправляю тк обновления отправляю каждый день десятками клиентов.
43 izekia
 
27.06.12
14:12
Евгений красавчик))
44 izekia
 
27.06.12
14:13
(37) ну суть в том, что там не три колонки может быть а больше, но в общем я сам неправильно условие написал
45 Dirk Diggler
 
27.06.12
15:46
кстати, соединение с календарем не канает.
46 Dirk Diggler
 
27.06.12
15:50
для пробы сделал вот такой запрос. показывает опять-таки только дни, в которые были движения.

ВЫБРАТЬ
   СвободныеОстаткиОстаткиИОбороты.Номенклатура,
   СвободныеОстаткиОстаткиИОбороты.Период КАК Период,
   СвободныеОстаткиОстаткиИОбороты.КоличествоКонечныйОстаток
ИЗ
   РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
       ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты(&НачалоПериода, , День, , Склад В (&СкладГруппа)) КАК СвободныеОстаткиОстаткиИОбороты
       ПО (СвободныеОстаткиОстаткиИОбороты.Период = РегламентированныйПроизводственныйКалендарь.ДатаКалендаря)
ГДЕ
   СвободныеОстаткиОстаткиИОбороты.Номенклатура = &Номенклатура

СГРУППИРОВАТЬ ПО
   СвободныеОстаткиОстаткиИОбороты.Номенклатура,
   СвободныеОстаткиОстаткиИОбороты.Период,
   СвободныеОстаткиОстаткиИОбороты.КоличествоКонечныйОстаток

УПОРЯДОЧИТЬ ПО
   Период
47 andrewks
 
27.06.12
15:55
так тебе Остатки нужны, не?
48 Dirk Diggler
 
27.06.12
15:56
вообще да. А как таблицу остатков с календарем соединить?
49 Maniac
 
27.06.12
16:18
(45) ясень пень не канает если криво написано
50 Maniac
 
27.06.12
16:20
|        ОБЪЕДИНИТЬ ВСЕ
   |        
   |        ВЫБРАТЬ
   |            НоменклатураСКолДней.Номенклатура,
   |            НоменклатураСКолДней.ХарактеристикаНоменклатуры,
   |            0,
   |            0,
   |            0,
   |            0,
   |            0,
   |            0,
   |            0,
   |            0,
   |            0,
   |            0,
   |            0,
   |            0,
   |            СУММА(НоменклатураСКолДней.КоличествоДнейВПродаже),
   |            0,
   |            0,
   |            0
   |        ИЗ
   |            (ВЫБРАТЬ
   |                РабочиеДниНоменклатуры.Номенклатура КАК Номенклатура,
   |                РабочиеДниНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   |                СУММА(ВЫБОР
   |                        КОГДА ИсторияОстатков.КоличествоКонечныйОстаток > 0
   |                                ИЛИ КОНЕЦПЕРИОДА(РабочиеДниНоменклатуры.ДатаКалендаря, ДЕНЬ) = КОНЕЦПЕРИОДА(ИсторияОстатков.Период, ДЕНЬ)
   |                                    И ИсторияОстатков.КоличествоКонечныйОстаток <= ИсторияОстатков.КоличествоРасход
   |                                    И (НЕ ИсторияОстатков.КоличествоРасход = 0)
   |                                    И ИсторияОстатков.КоличествоНачальныйОстаток > 0
   |                            ТОГДА 1
   |                        ИНАЧЕ 0
   |                    КОНЕЦ) КАК КоличествоДнейВПродаже
   |            ИЗ
   |                (ВЫБРАТЬ
   |                    ДниКалендаря.ДатаКалендаря КАК ДатаКалендаря,
   |                    МАКСИМУМ(ИсторияОстатков.Период) КАК Период,
   |                    ИсторияОстатков.Номенклатура КАК Номенклатура,
   |                    ИсторияОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
   |                ИЗ
   |                    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК ДниКалендаря
   |                        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
   |                            ИсторияОстатков.Период КАК Период,
   |                            ИсторияОстатков.Номенклатура КАК Номенклатура,
   |                            ИсторияОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   |                            СУММА(ИсторияОстатков.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
   |                            СУММА(ИсторияОстатков.КоличествоРасход) КАК КоличествоРасход,
   |                            СУММА(ИсторияОстатков.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток
   |                        ИЗ
   |                            (ВЫБРАТЬ
   |                                ТоварыНаСкладах.Период КАК Период,
   |                                ТоварыНаСкладах.Номенклатура КАК Номенклатура,
   |                                ТоварыНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   |                                ТоварыНаСкладах.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
   |                                ТоварыНаСкладах.КоличествоРасход КАК КоличествоРасход,
   |                                ТоварыНаСкладах.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
   |                            ИЗ
   |                                РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачПродаж, &ДатаКонПродаж, ДЕНЬ, , {(Номенклатура).* КАК Номенклатура, (Склад.Подразделение).* КАК Подразделение, (Склад).* КАК Склад}) КАК ТоварыНаСкладах
   |                            
   |                            ОБЪЕДИНИТЬ ВСЕ
   |                            
   |                            ВЫБРАТЬ
   |                                ТоварыВРознице.Период,
   |                                ТоварыВРознице.Номенклатура,
   |                                ТоварыВРознице.ХарактеристикаНоменклатуры,
   |                                ТоварыВРознице.КоличествоНачальныйОстаток,
   |                                ТоварыВРознице.КоличествоРасход,
   |                                ТоварыВРознице.КоличествоКонечныйОстаток
   |                            ИЗ
   |                                РегистрНакопления.ТоварыВРознице.ОстаткиИОбороты(&ДатаНачПродаж, &ДатаКонПродаж, ДЕНЬ, , {(Номенклатура).* КАК Номенклатура, (Склад.Подразделение).* КАК Подразделение, (Склад).* КАК Склад}) КАК ТоварыВРознице) КАК ИсторияОстатков
   |                        
   |                        СГРУППИРОВАТЬ ПО
   |                            ИсторияОстатков.Период,
   |                            ИсторияОстатков.Номенклатура,
   |                            ИсторияОстатков.ХарактеристикаНоменклатуры) КАК ИсторияОстатков
   |                        ПО (НАЧАЛОПЕРИОДА(ДниКалендаря.ДатаКалендаря, ДЕНЬ) >= НАЧАЛОПЕРИОДА(ИсторияОстатков.Период, ДЕНЬ))
   |                ГДЕ
   |                    ДниКалендаря.ДатаКалендаря <= &ДатаКонПродаж
   |                    И ДниКалендаря.ДатаКалендаря >= &ДатаНачПродаж
   |                    И ДниКалендаря.ВидДня В(&ПереченьРабочихДней)
   |                
   |                СГРУППИРОВАТЬ ПО
   |                    ДниКалендаря.ДатаКалендаря,
   |                    ИсторияОстатков.Номенклатура,
   |                    ИсторияОстатков.ХарактеристикаНоменклатуры) КАК РабочиеДниНоменклатуры
   |                    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
   |                        ИсторияОстатков.Период КАК Период,
   |                        ИсторияОстатков.Номенклатура КАК Номенклатура,
   |                        ИсторияОстатков.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   |                        СУММА(ИсторияОстатков.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
   |                        СУММА(ИсторияОстатков.КоличествоРасход) КАК КоличествоРасход,
   |                        СУММА(ИсторияОстатков.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток
   |                    ИЗ
   |                        (ВЫБРАТЬ
   |                            ТоварыНаСкладах.Период КАК Период,
   |                            ТоварыНаСкладах.Номенклатура КАК Номенклатура,
   |                            ТоварыНаСкладах.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   |                            ТоварыНаСкладах.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
   |                            ТоварыНаСкладах.КоличествоРасход КАК КоличествоРасход,
   |                            ТоварыНаСкладах.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
   |                        ИЗ
   |                            РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачПродаж, &ДатаКонПродаж, ДЕНЬ, , {(Номенклатура).* КАК Номенклатура, (Склад.Подразделение).* КАК Подразделение, (Склад).* КАК Склад}) КАК ТоварыНаСкладах
   |                        
   |                        ОБЪЕДИНИТЬ ВСЕ
   |                        
   |                        ВЫБРАТЬ
   |                            ТоварыВРознице.Период,
   |                            ТоварыВРознице.Номенклатура,
   |                            ТоварыВРознице.ХарактеристикаНоменклатуры,
   |                            ТоварыВРознице.КоличествоНачальныйОстаток,
   |                            ТоварыВРознице.КоличествоРасход,
   |                            ТоварыВРознице.КоличествоКонечныйОстаток
   |                        ИЗ
   |                            РегистрНакопления.ТоварыВРознице.ОстаткиИОбороты(&ДатаНачПродаж, &ДатаКонПродаж, ДЕНЬ, , {(Номенклатура).* КАК Номенклатура, (Склад.Подразделение).* КАК Подразделение, (Склад).* КАК Склад}) КАК ТоварыВРознице) КАК ИсторияОстатков
   |                    
   |                    СГРУППИРОВАТЬ ПО
   |                        ИсторияОстатков.Период,
   |                        ИсторияОстатков.Номенклатура,
   |                        ИсторияОстатков.ХарактеристикаНоменклатуры) КАК ИсторияОстатков
   |                    ПО РабочиеДниНоменклатуры.Период = ИсторияОстатков.Период
   |                        И РабочиеДниНоменклатуры.Номенклатура = ИсторияОстатков.Номенклатура
   |                        И РабочиеДниНоменклатуры.ХарактеристикаНоменклатуры = ИсторияОстатков.ХарактеристикаНоменклатуры
   |            
   |            СГРУППИРОВАТЬ ПО
   |                РабочиеДниНоменклатуры.Номенклатура,
   |                РабочиеДниНоменклатуры.ХарактеристикаНоменклатуры) КАК НоменклатураСКолДней
   |        
   |        СГРУППИРОВАТЬ ПО
   |            НоменклатураСКолДней.Номенклатура,
   |            НоменклатураСКолДней.ХарактеристикаНоменклатуры) КАК ВложенныйЗапрос
51 andrewks
 
27.06.12
16:21
вот это портянка
52 andrewks
 
27.06.12
16:24
(48) а что конкретно тебе надо? чтобы входили дни, когда остаток нулевой? или что?
53 Dirk Diggler
 
27.06.12
16:33
нужно отношение дней когда свободный остаток номенклатуры >0 к количеству рабочих дней.

причем чтобы это отношение высчитывалось только для тех периодов(месяцы, кварталы), когда были продажи по этой позиции.
54 Dirk Diggler
 
27.06.12
16:34
я пошел по пути вот этого: http://infostart.ru/public/101321/
55 Maniac
 
27.06.12
16:41
(54) о чем я и говорил. через время тебе скажут что все работает неправильно.
56 Dirk Diggler
 
27.06.12
16:44
(55) мне никто ничего не скажет. и кстати. все работает заепца.
57 Maniac
 
27.06.12
16:46
(56) да мне тоже в принципе поуй))
58 Maniac
 
27.06.12
16:47
тока как бы на начало дня считать - тоже неправильно. Товар пришел утром и поступил в продажу.
Или пришел  и продался. на начало дня его нет, на конец нет. но он был и продавался.
59 Dirk Diggler
 
27.06.12
16:48
(58) я тебе кажется уже говорил, что у меня специфика?
60 Maniac
 
27.06.12
19:44
Специфика в получении остатков?)))) такая что ты первый попавшийся запрос который нашел выловил и уже доволен.