Имя: Пароль:
1C
1С v8
УТ 11 v8: Запрос: количество дней наличия товара на складе за период.
,
0 Sj
 
17.02.13
18:19
Доброе время суток!

  У кого-нибудь такой запрос

Книга знаний: v8: Запрос: количество дней наличия товара на складе за период.

правильно отрабатывает в УТ11 после замены регистров на соответствующие из УТ11 ?
1 Maniac
 
17.02.13
18:21
в 1С Розница есть планирование закупок там все есть.
2 Sj
 
17.02.13
18:28
А оно под УТ 11 взлетит или надо будет пилить?
3 Maniac
 
17.02.13
18:29
а сам то как думаешь. хоть бы регистры глянул.
4 Maniac
 
17.02.13
18:29
у меня есть готовое для УТ11. но меня тут банят за ссылки.
5 Sj
 
17.02.13
18:32
(3) чтобы глянуть, надо сначала поставить
6 Sj
 
17.02.13
18:33
короче гря, ответ не в тему.
7 Maniac
 
17.02.13
18:35
(5) стаж 8 лет....ужасть...
Да таже по твоней ссфлке регистр партии товаров на складах... ты в УТ11 видел регистр партий??? уже 3 года все обсужэдают что партий нет.
в общем ответ - ДА - переписывать НАДО
8 Sj
 
17.02.13
18:36
(7) ты читать умеешь?
9 Sj
 
17.02.13
18:36
(7) иди уже отсюда, дурачек
10 Maniac
 
17.02.13
18:50
(9) хамло. фига се. не думал что ты окажешся хамлом и тупым 1Сником.
11 Sj
 
17.02.13
18:53
(10) не нравится хамство? тогда переставай хамить. см.(7). просьба внимательнее читать(0).
12 hhhh
 
17.02.13
22:03
(11) ну ты скажи, какие регистры соответствуют. Мы их заменим и скажем тебе, правильно отрабатывает или неправильно.
13 Bumer
 
17.02.13
22:25
(11) Не вижу причин, чтобы запрос "отрабатывал" неправильно...
14 GANR
 
17.02.13
22:58
15 GANR
 
17.02.13
23:06
(0) вижу решение через Книга знаний: v8: Нумерация строк в запросе

1. получить таблицу

Нач Кон Колич.
д1 д2 кол1
д2 д3 кол2
д3 д4 кол3

2. ну а далее разностьдат(д1,д2,день) там, где колич <> 0
16 Classic
 
17.02.13
23:13
В (0)
какой-то странный, тяжеловесный запрос.
17 Sj
 
17.02.13
23:14
Запрос отрабатывает правильно.

Вот прикрутил к нему календарные дни. Чтобы знать сколько именно рабочих дней, а не календарных номенклатура была на складе, правда тестил пока только на одной номенклатуре:

ВЫБРАТЬ
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
   СУММА(ВЫБОР
           КОГДА ТоварыНаСкладахОстаткиИОбороты.Период = НАЧАЛОПЕРИОДА(&КонПериода, ДЕНЬ)
               ТОГДА ВЫБОР
                       КОГДА ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстатокПредыдущий > 0
                           ТОГДА 1
                       ИНАЧЕ ВЫБОР
                               КОГДА ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстаток > 0
                                   ТОГДА 1
                               ИНАЧЕ 0
                           КОНЕЦ
                   КОНЕЦ
           ИНАЧЕ ВЫБОР
                   КОГДА ТоварыНаСкладахОстаткиИОбороты.ВНаличииКонечныйОстатокПредыдущий > 0
                       ТОГДА 1
                   ИНАЧЕ 0
               КОНЕЦ
       КОНЕЦ) КАК ВНаличииДнейНаСкладе,
   ТоварыНаСкладахОстаткиИОбороты.Склад
ПОМЕСТИТЬ РабочиеДниВПродаже
ИЗ
   РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ТаблицаПредыдущиеПериоды.Период КАК Период,
           ТаблицаПредыдущиеПериоды.Номенклатура КАК Номенклатура,
           ТаблицаПредыдущиеПериоды.Характеристика КАК Характеристика,
           ТаблицаПредыдущиеПериоды.Склад КАК Склад,
           ТаблицаПредыдущиеПериоды.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток,
           ТаблицаПредыдущиеПериоды.ПредыдущийПериод КАК ПредыдущийПериод,
           ТоварыНаСкладахОстаткиИОборотыПредыдущие.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстатокПредыдущий
       ИЗ
           (ВЫБРАТЬ
               ТоварыНаСкладахОстаткиИОбороты1.Номенклатура КАК Номенклатура,
               ТоварыНаСкладахОстаткиИОбороты1.Характеристика КАК Характеристика,
               ТоварыНаСкладахОстаткиИОбороты1.Склад КАК Склад,
               ТоварыНаСкладахОстаткиИОбороты1.Период КАК Период,
               ТоварыНаСкладахОстаткиИОбороты1.ВНаличииКонечныйОстаток КАК ВНаличииКонечныйОстаток,
               МАКСИМУМ(ТоварыНаСкладахОстаткиИОбороты2.Период) КАК ПредыдущийПериод
           ИЗ
               РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачПериода, &КонПериода, День, , {(Номенклатура), (Склад)}) КАК ТоварыНаСкладахОстаткиИОбороты1
                   ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачПериода, &КонПериода, День, , {(Номенклатура), (Склад)}) КАК ТоварыНаСкладахОстаткиИОбороты2
                   ПО (ИСТИНА)
                       И ТоварыНаСкладахОстаткиИОбороты1.Номенклатура = ТоварыНаСкладахОстаткиИОбороты2.Номенклатура
                       И ТоварыНаСкладахОстаткиИОбороты1.Характеристика = ТоварыНаСкладахОстаткиИОбороты2.Характеристика
                       И ТоварыНаСкладахОстаткиИОбороты1.Склад = ТоварыНаСкладахОстаткиИОбороты2.Склад
                       И ТоварыНаСкладахОстаткиИОбороты1.Период > ТоварыНаСкладахОстаткиИОбороты2.Период
           
           СГРУППИРОВАТЬ ПО
               ТоварыНаСкладахОстаткиИОбороты1.Номенклатура,
               ТоварыНаСкладахОстаткиИОбороты1.Характеристика,
               ТоварыНаСкладахОстаткиИОбороты1.Склад,
               ТоварыНаСкладахОстаткиИОбороты1.Период,
               ТоварыНаСкладахОстаткиИОбороты1.ВНаличииКонечныйОстаток) КАК ТаблицаПредыдущиеПериоды
               ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачПериода, &КонПериода, День, , Номенклатура В ИЕРАРХИИ (&Номенклатура) {(Номенклатура), (Склад)}) КАК ТоварыНаСкладахОстаткиИОборотыПредыдущие
               ПО (ИСТИНА)
                   И ТаблицаПредыдущиеПериоды.Номенклатура = ТоварыНаСкладахОстаткиИОборотыПредыдущие.Номенклатура
                   И ТаблицаПредыдущиеПериоды.Характеристика = ТоварыНаСкладахОстаткиИОборотыПредыдущие.Характеристика
                   И ТаблицаПредыдущиеПериоды.Склад = ТоварыНаСкладахОстаткиИОборотыПредыдущие.Склад
                   И ТаблицаПредыдущиеПериоды.ПредыдущийПериод = ТоварыНаСкладахОстаткиИОборотыПредыдущие.Период) КАК ТоварыНаСкладахОстаткиИОбороты
       ПО (КалендарныеГрафики.ДатаГрафика МЕЖДУ ТоварыНаСкладахОстаткиИОбороты.ПредыдущийПериод И ТоварыНаСкладахОстаткиИОбороты.Период)
ГДЕ
   КалендарныеГрафики.ДатаГрафика >= &ДатаНачала
   И КалендарныеГрафики.ДеньВключенВГрафик
   И КалендарныеГрафики.ДатаГрафика < &ДатаОкончания

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
   ТоварыНаСкладахОстаткиИОбороты.Склад
;
18 Bumer
 
17.02.13
23:20
(16) Хороший запрос... отрабатывает как надо...
19 Classic
 
17.02.13
23:49
(18)
ВЫБРАТЬ
  НашРегистр.Номенклатура,
  НашРегистр.Склад,
 .... че там еще нада...
  РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) + 1 -
  СУММА(
  ВЫБОР
      КОГДА НашРегистр.КоличествоНачальныйОстаток = 0
      ТОГДА РАЗНОСТЬДАТ(&НачалоПериода, НашРегистр.Период,День)
      ИНАЧЕ 0
  КОНЕЦ) +
  СУММА(
  ВЫБОР
      КОГДА НашРегистр.КоличествоКонечныйОстаток = 0
           И НашРегистр.Период <> &КонецПериода
      ТОГДА РАЗНОСТЬДАТ(&НачалоПериода, НашРегистр.Период, ДЕНЬ)
      ИНАЧЕ 0
  КОНЕЦ
  ) -
  ВЫБОР
      КОГДА НашРегистр.Период = &КонецПериода
            И НашРегистр.КоличествоКонечныйОстаток = 0
      ТОГДА 1
      ИНАЧЕ 0
  КОНЕЦ КАК КоличествоДней
ИЗ РегистрНакопления.НашРегистр.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, ДвиженияИГраницыПериода) КАК НашПериода
СГРУППИРОВАТЬ ПО
  НашРегистр.Номенклатура,
  НашРегистр.Склад,
 .... че там еще нада...




Синтаксические ошибки могут быть - писал на коленке
20 Classic
 
17.02.13
23:50
ИМХО на порядок лучше
21 Maniac
 
17.02.13
23:52
У вас не учитывает главного. Это то что товар мог прийтий и в этот же день уйти. Но на остатке он был.
22 Classic
 
17.02.13
23:58
+(19)
Периодичность день конечно
23 Sj
 
18.02.13
00:08
(19)  Нее
24 Sj
 
18.02.13
00:12
Делаю за январь по одной номенклатуре

Основной склад   3
Основной склад   60
НеОсновной склад 32

Немного смущает 60. Но по российскому закону в январе 31 день.
25 Sj
 
18.02.13
00:13
но работает быстро, что несомненно "плюс"!
26 Sj
 
18.02.13
00:15
хотя на основной склад пришел только 29.01 и весь ушел 30.01
27 Злопчинский
 
18.02.13
00:25
(25) а сиысл - этот отчет будет выполняться кажде 2 секунды...?
28 Classic
 
18.02.13
00:28
(24)
На каких данных? Такого быть не может.

Может где-то в запросе и ошибка.
Но смысл достаточно понятен.
Мы считаем количество пустых дней по принципу
Номер периода с начальным нулем - номер периода с конечным нулем.
Засада может быть только в последнем дне.
29 Maniac
 
18.02.13
00:35
(28) твой вообще нерабочий вариант. никак не учитывает календарь, выходные и праздники. а это очень важно.
30 Classic
 
18.02.13
00:35
Таки пришлось лезь в консоль.
Фразу
НашРегистр.Период = &КонПериода
заменить на НашРегистр.Период = НАЧАЛОПЕРИОДА(&КонПериода, ДЕНЬ)

Фразу
НашРегистр.Период = &КонПериода
заменить на НашРегистр.Период <> НАЧАЛОПЕРИОДА(&КонПериода, ДЕНЬ)
31 Classic
 
18.02.13
00:36
(29)
ты описание задачи из ссылки по (0) читал?
32 Maniac
 
18.02.13
00:38
(31) по ссылке просто запрос и теория.
Практика - реальное использования. без календаря такие запросы наикому не нужны. Ежу понятно что в у многих торговых фирм может быть 5=-6-7 днейная рабочая неделя. а выходные так вообще у всех. Например полянваря.
33 Maniac
 
18.02.13
00:38
Нужно как бы мозг включать иногда самостоятельно. а не просто смотреть что тебе в ТЗ написали.
34 Maniac
 
18.02.13
00:39
Точно также как ваши запросы не учитывают приходи и расход в один день. А бывает просто. Товар продали с другого склада. но переместили на эот и сразу списали.
35 Bumer
 
18.02.13
00:41
(32)На практике розница отдыхает только 1 января...
36 Bumer
 
18.02.13
00:41
(35)+ 1 день в году...
37 Classic
 
18.02.13
00:43
(33)
Ну да, конечно. Ты прям из задачи в (0) определил, что по рабочим дням. Может сразу так и напишешь без согласования? А потом будешь рассказывать бизнесу "я включил мозг и решил за вас, что вам нужны рабочие дни".
Запрос много чего не учитывает. Например часто надо не просто количество дней, а дней*количество или еще чего. Исходя из конкретной задачи и пишется конкретный алгоритм
38 Classic
 
18.02.13
00:44
(34)
в (0) строго описана ситуация, что считать пустым днем.
Если учитывать приходы/расходы в один день, то можно дни до сотни раскрутить переместив в один день по сотне складов
39 Maniac
 
18.02.13
00:45
(37) правильно. я так и делаю всегда. включаю мозг. относитедьно каждой задачи. И ниразу это качество не подводило. именно благодаря этому меня все мои фирмы ценили и платили хорошую зарплату. тк постановщиков которые бы четко формулировали задачи и продумывали все до конца до всех мелочей в реальности не бывает!
40 Classic
 
18.02.13
00:47
(39)
И что приход/расход в один день за день наличия считал?
41 Maniac
 
18.02.13
00:49
(38) где там в ноль увидел задачи я не знаю)))
в (0) что видно? Что прилез чувак который видимо только УТ11 открыл или вообще еще не видел.
И задал вопрос а будет ли этот запрос работать? Из чего появился вывод:
1) он не знает УТ11
2) впервый раз вообще с такой задачей столкнулся и просто нашел в интернете запрос который даже не вникая в него (и вообще сулдя по всему у него сложности с пониманием что в этом запросе написано) он просто попытается поставить нукжные регистры и полностью доверится тем кто положительно ему даст ответ на форуме.

Все. никакого ТЗ и тп.
Но вот с календарем это нажо сразу же думать!
Тк сделав одно и внедрив заказчику уже завтра же заказчик столкнется с календарем с вероятностью в 99 процентов и скажет переделать.
Твоя конструция сразу же летит к чорту.
А в сажбе остается рабочим.
42 Maniac
 
18.02.13
00:51
я еще изначально сказал. Что правильный запрос есть в 1С розница. Который учитывает и то и се.
Те как бы я намекаю на то что сама 1С написала уже давно запрос по подсчету по дням. А у напс в кругах как бы то что написала 1С считается уже авторитетным кодом. в большинстве случаев.
43 Classic
 
18.02.13
00:51
(41)
Не тупи. Разговор был про запрос из ссылки в (0)
В ссылке по (0) задача описана четко. И обсуждаю я запрос, написанные В ССЫЛКЕ из (0)
44 Maniac
 
18.02.13
00:53
ну обсуждайте дальше. тема решена и закрыта.
скучно что то еще говорить... ушел.
45 Classic
 
18.02.13
00:54
(44)
И тебе спокойной ночи
46 Bumer
 
18.02.13
00:54
(41) Завтра посмотрю... а вообще респект... похоже на правду...
47 Bumer
 
18.02.13
01:00
(46) Б...
(46) к (30)
Извиняюсь...)