Запрос для получения остатков на складе на все дни, даже когда не было движений.(Для нетиповой)

29.09.09

Разработка - Запросы

Запрос для 1С: Предприятие 8.1

Пример описывает механизм получения  остатков по регистру накопления на КАЖДЫЙ день периода (даже когда не было оборотов).

Проверялось на типовой БП для Казахстана, платформа 8.1

В запросе учтены наработки, представленные на данном сайте. Спасибо авторам, извините лень искать и приводить исходные ссылки. Если кому нужно спрашивайте, напишу. Вспомагательный запрос, формирующий последовательность дат заимствован целиком с Мисты. Мне он показался более удобным, и уж точно более компактным, чем у г. Душелова.

На базе приведенного запроса построен запрос с подсчетом количества дней товара на складе. Если кому интересно, выложу.

 

Текст Запроса:

ВЫБРАТЬ
    НоменклатураСПрПериодами.Партия КАК Партия,
    НоменклатураСПрПериодами.Дата КАК Дата,
    НоменклатураСПрПериодами.Номенклатура КАК Номенклатура,
    НоменклатураСПрПериодами.Номенклатура.Наименование КАК НоменклатураНаименование,
    РегистрАптекПартииОстаткиИОбороты.КолВоКонечныйОстаток
ИЗ
    (ВЫБРАТЬ
        НоменклатураСДатами.Партия КАК Партия,
        НоменклатураСДатами.Дата КАК Дата,
        МАКСИМУМ(РегистрАптекПартииОстаткиИОбороты.Период) КАК ПериодПоследний,
        НоменклатураСДатами.Номенклатура КАК Номенклатура
    ИЗ
        (ВЫБРАТЬ
            НоменклатураУровень2.Номенклатура КАК Номенклатура,
            НоменклатураУровень2.Партия КАК Партия,
            КалендарьУровень2.Дата КАК Дата
        ИЗ
            (ВЫБРАТЬ РАЗЛИЧНЫЕ
                ВыбраннаяНоменклатура.Номенклатура КАК Номенклатура,
                ВыбраннаяНоменклатура.Партия КАК Партия
            ИЗ
                (ВЫБРАТЬ
                    РегистрАптекПартииОбороты.Номенклатура КАК Номенклатура,
                    РегистрАптекПартииОбороты.Партия КАК Партия
                ИЗ
                    РегистрНакопления.РегистрАптекПартии.Обороты(&НачПериода, &КонПериода, День, Аптека = &Аптека) КАК РегистрАптекПартииОбороты
                ГДЕ
                    РегистрАптекПартииОбороты.КолВоПриход > &Ничего
               
                ОБЪЕДИНИТЬ ВСЕ
               
                ВЫБРАТЬ
                    РегистрАптекПартииОстатки.Номенклатура,
                    РегистрАптекПартииОстатки.Партия
                ИЗ
                    РегистрНакопления.РегистрАптекПартии.Остатки(&НачПериода, Аптека = &Аптека) КАК РегистрАптекПартииОстатки
                ГДЕ
                    РегистрАптекПартииОстатки.КолВоОстаток > &Ничего) КАК ВыбраннаяНоменклатура) КАК НоменклатураУровень2
                ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                    ДОБАВИТЬКДАТЕ(&НачПериода, ДЕНЬ, T.n) КАК Дата
                ИЗ
                    (ВЫБРАТЬ
                        5 * (t1.a - 1) + t2.b - 1 КАК n
                    ИЗ
                        (ВЫБРАТЬ
                            1 КАК a
                       
                        ОБЪЕДИНИТЬ
                       
                        ВЫБРАТЬ
                            2
                       
                        ОБЪЕДИНИТЬ
                       
                        ВЫБРАТЬ
                            3
                       
                        ОБЪЕДИНИТЬ
                       
                        ВЫБРАТЬ
                            4
                       
                        ОБЪЕДИНИТЬ
                       
                        ВЫБРАТЬ
                            5
                       
                        ОБЪЕДИНИТЬ
                       
                        ВЫБРАТЬ
                            6) КАК t1
                            ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                                1 КАК b
                           
                            ОБЪЕДИНИТЬ
                           
                            ВЫБРАТЬ
                                2
                           
                            ОБЪЕДИНИТЬ
                           
                            ВЫБРАТЬ
                                3
                           
                            ОБЪЕДИНИТЬ
                           
                            ВЫБРАТЬ
                                4
                           
                            ОБЪЕДИНИТЬ
                           
                            ВЫБРАТЬ
                                5
                           
                            ОБЪЕДИНИТЬ
                           
                            ВЫБРАТЬ
                                6) КАК t2
                            ПО (ИСТИНА)) КАК T
                ГДЕ
                    T.n < ДЕНЬ(КОНЕЦПЕРИОДА(&КонПериода, ДЕНЬ))) КАК КалендарьУровень2
                ПО (ИСТИНА)) КАК НоменклатураСДатами
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РегистрАптекПартии.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачПериода, ГОД), &КонПериода, День, , Аптека = &Аптека) КАК РегистрАптекПартииОстаткиИОбороты
            ПО НоменклатураСДатами.Номенклатура = РегистрАптекПартииОстаткиИОбороты.Номенклатура
                И НоменклатураСДатами.Партия = РегистрАптекПартииОстаткиИОбороты.Партия
                И НоменклатураСДатами.Дата >= РегистрАптекПартииОстаткиИОбороты.Период
   
    СГРУППИРОВАТЬ ПО
        НоменклатураСДатами.Партия,
        НоменклатураСДатами.Дата,
        НоменклатураСДатами.Номенклатура) КАК НоменклатураСПрПериодами
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РегистрАптекПартии.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачПериода, ГОД), &КонПериода, День, ДвиженияИГраницыПериода, Аптека = &Аптека) КАК РегистрАптекПартииОстаткиИОбороты
        ПО НоменклатураСПрПериодами.Номенклатура = РегистрАптекПартииОстаткиИОбороты.Номенклатура
            И НоменклатураСПрПериодами.Партия = РегистрАптекПартииОстаткиИОбороты.Партия
            И НоменклатураСПрПериодами.ПериодПоследний = РегистрАптекПартииОстаткиИОбороты.Период

УПОРЯДОЧИТЬ ПО
    НоменклатураНаименование,
    Партия,
    Дата

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 8000 руб.

02.09.2020    122405    673    389    

716

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    5757    KawaNoNeko    23    

23

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2007    2    Yashazz    0    

29

Запрос 1С copilot

Инструментарий разработчика Запросы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

5 стартмани

15.01.2024    6300    31    mkalimulin    25    

50

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    1750    vandalsvq    7    

29

Объектная модель запроса "Схема запроса" 2

Запросы Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5398    user1923546    26    

43

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16201    skovpin_sa    14    

98
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. wirg 16.07.09 15:53 Сейчас в теме
а где внешний отчет сам?
9. elizarovs 83 16.07.09 20:34 Сейчас в теме
(1)(2)Звиняйте, дядьку, описачка вышла. Бросил шаблончик и не исправил. Конечно, это только запрос, причем по нетиповой торговле.
(5)На выходных, постараюсь переписать под типовую УТ. Пока небольшой комментарий для тех кому нужно срочно: РегистрАптекПартии аналог ПартийТоваровНаСкладах, Аптека является складом. Параметр &Ничего = 0.
3. Русский 47 16.07.09 15:57 Сейчас в теме
Если в СКД указать в качестве группировочного поле с типом Дата, и указать у него метод дополнения ДЕНЬ, то также получаем данные расписанные по дням включая дни без записей в регистре.
4. IronDemon 765 16.07.09 16:34 Сейчас в теме
(3) Это для вывода но не для расчета.
6. Русский 47 16.07.09 17:07 Сейчас в теме
(4) Можно запихать результат работы СКД в универсальную коллекцию и уже с ней маневрировать чего-нить.
7. IronDemon 765 16.07.09 17:34 Сейчас в теме
(6) Это через одно место.
8. Русский 47 16.07.09 17:37 Сейчас в теме
(7) зато не надо ухищряться запросы писать :)
10. elizarovs 83 16.07.09 20:47 Сейчас в теме
(3) Систему Компоновки Данных недолюбливаю. Запрос - вещь универсальная, можешь воткнуть, куда хочется. Кодом, да через витуальную таблицу, пожалуй было бы еще легче и понятнее, но хотелось именно запросом. А запрос, зараза, ну очень вредничал. Главнае проблемы - заполнить данными даты, в которых не было движений и получить числовую последовательность не из готовой таблицы, которая обязательно окажется заполненной неправильно, а из числовой последовательности.
5. IronDemon 765 16.07.09 16:38 Сейчас в теме
Автор, запросы нужно выкладывать которые пойдут в типовых конфигурациях без изменений.
11. redgad 80 18.07.09 08:40 Сейчас в теме
Как правило, такие запросы я строил до появления СКД следующим образом:
1. Получал данные по интересуюущему регистру
2. Брал какой либо регистр сведений, который заполнен на каждую дату(В типовых это могут быть или "КурсыВалют" или "Регламентированный производственный календарь")
3. Делал левое соединение с этим вспмогательный регистром
12. luns 26.08.09 08:38 Сейчас в теме
Автор выложи запрос для типовой конфы. Чтобы работало и на УТ и на УПП, ну скажем к регистру ТоварыНаСкладах.
13. luns 26.08.09 08:38 Сейчас в теме
Плюс авансом за интерес к теме. Но посмотрю только когда будет для типовой запрос.
14. elizarovs 83 26.08.09 11:11 Сейчас в теме
(13) Ок. А то без заинетересованных, не хотелось переделывать.
15. пользователь 09.09.09 17:11
Сообщение было скрыто модератором.
...
16. drandulet 10.09.09 20:41 Сейчас в теме
Спасибо! Очень пригодилось
17. grub 6 14.05.10 16:15 Сейчас в теме
тут маленькая тонкость текущий запрос выдаёт только 36 дат у меня а квеличить количество ?!
18. elizarovs 83 15.05.10 14:13 Сейчас в теме
(17) Не сложно. В середине два цикла (дают t1 и t2) от 1 до 6. 6х6=36. Добавьте в обоих цифры до 9, чисел добавится. Более, чем 99 делать не советую, выборка будет долго работать, успеете соскучиться. )
Можете черкнуть в личку, пришлю образец на 99.
19. AlexanderIvanov 89 25.06.10 21:13 Сейчас в теме
удивительный говнокод
20. DJ_Codebase 06.10.10 11:22 Сейчас в теме
Я б сказал ГОВНОКОДИЩЕ! :D
21. Artur88 01.12.10 12:01 Сейчас в теме
Как это в СКД заделать?
22. elizarovs 83 08.12.10 13:16 Сейчас в теме
В публикации http://forum.infostart.ru/forum24/topic27133/ есть обработка, в которой для типовой Российской торговли оцениваются складские запасы и запрос по остаткам на складах там включен.
23. marku 62 26.10.11 17:03 Сейчас в теме
Спасибо
как раз запрос и нужен
24. mij 20 20.11.11 08:50 Сейчас в теме
Какая разница в принципе какой код если работает и то что нужно. Если делать самому то конечно по другому а если готовое то спасибо.
Оставьте свое сообщение