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

Публикация № 21177

Разработка - Практика программирования

Запрос для 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
                ПО (ИСТИНА)) КАК НоменклатураСДатами
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РегистрАптекПартии.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачПериода, ГОД), &КонПериода, День, , Аптека = &Аптека) КАК РегистрАптекПартииОстаткиИОбороты
            ПО НоменклатураСДатами.Номенклатура = РегистрАптекПартииОстаткиИОбороты.Номенклатура
                И НоменклатураСДатами.Партия = РегистрАптекПартииОстаткиИОбороты.Партия
                И НоменклатураСДатами.Дата >= РегистрАптекПартииОстаткиИОбороты.Период
   
    СГРУППИРОВАТЬ ПО
        НоменклатураСДатами.Партия,
        НоменклатураСДатами.Дата,
        НоменклатураСДатами.Номенклатура) КАК НоменклатураСПрПериодами
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РегистрАптекПартии.ОстаткиИОбороты(НАЧАЛОПЕРИОДА(&НачПериода, ГОД), &КонПериода, День, ДвиженияИГраницыПериода, Аптека = &Аптека) КАК РегистрАптекПартииОстаткиИОбороты
        ПО НоменклатураСПрПериодами.Номенклатура = РегистрАптекПартииОстаткиИОбороты.Номенклатура
            И НоменклатураСПрПериодами.Партия = РегистрАптекПартииОстаткиИОбороты.Партия
            И НоменклатураСПрПериодами.ПериодПоследний = РегистрАптекПартииОстаткиИОбороты.Период

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

Специальные предложения

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

См. также

Программная работа с настройками СКД

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    4798    ids79    25       

1C:Предприятие для программистов: Запросы и отчеты. Второй поток. Онлайн-интенсив с 17 марта по 16 апреля 2020 г. Промо

Данный онлайн-курс предусматривает углубленное изучение языка запросов и возможностей системы компоновки данных, которые понадобятся при разработке отчетов, работающих на платформе “1С:Предприятие” в рамках различных прикладных решений. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”, а также для опытных пользователей различных прикладных решений, которые используют в своей работе отчеты разного назначения.

6500 рублей

[СКД] Программное создание схемы компоновки данных

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    6816    John_d    20       

30 задач. Странных и не очень

Статья Программист Стажер Нет файла v8 Бесплатно (free) Практика программирования

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    9077    YPermitin    72       

Сдача регламентированной отчетности из программ 1С Промо

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

от 1500 руб.

Управление ИТ-проектами. Модуль 2: продвинутый онлайн-курс по классическим методам управления проектами. Вебинары проходят с 12 марта по 11 июня 2020 года. Промо

Продвинутый онлайн-курс по классическому управлению ИТ-проектами позволит слушателям освоить инструменты из PMBoK® и 1С:Технологии корпоративного внедрения и научиться их применять для проектов любого масштаба. Курс включает в себя 12 вебинаров и 12 видеолекции, разбор кейсов и рекомендации экспертов по проектам слушателей. Ведущая курса - Мария Темчина.

от 13000 рублей

Агрегатные функции СКД, о которых мало кто знает

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    23394    ids79    45       

Онлайн-курс "Подготовка к экзамену 1С:Эксперт и 1С:Профессионал по технологическим вопросам" с 7 по 24 апреля 2020 г. Промо

На курсе вы получите практические навыки решения задач производительности 1С, в том числе характерных для высоконагруженных информационных систем (более 1000 пользователей). Подготовка к экзамену – только одна из составляющих курса. 70% слушателей приходят за знаниями, которые позволят расти и зарабатывать, делать сложные задачи на крупных проектах.

16450 рублей

Три костыля. Сказ про фокусы в коде

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Разработка

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    13845    YPermitin    70       

Отслеживание выполнения фонового задания

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Универсальные функции Разработка

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    17830    ids79    16       

Новый раздел на Инфостарте - Electronic Software Distribution Промо

Инфостарт напоминает: на нашем сайте можно купить не только ПО, связанное с 1С. В нашем арсенале – ESD-лицензии на ПО от ведущих вендоров: Microsoft, Kaspersky, ESET, Dr.Web, Аскон и другие.

  • Низкие цены, без скрытых платежей и наценок
  • Оперативная отгрузка
  • Возможность оплаты с личного счета (кешбек, обмен стартмани на рубли и т.п.)
  • Покупки идут в накопления для получения скидочных карт лояльности Silver (5%) и Gold (10%)

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    31822    ids79    36       

Фоновое выполнение кода в 1С - это просто

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    17922    avalakh    21       

Готовые переносы данных из различных конфигураций 1C Промо

Рекомендуем готовые решения для переноса данных из различных конфигураций 1C. C техподдержкой от разработчиков и гарантией от Инфостарт.

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Статья Программист Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    26196    ids79    9       

Программы для исполнения 54-ФЗ Промо

С 01.02.2017 контрольно-кассовая техника должна отправлять электронные версии чеков оператору фискальных данных - правила установлены в 54-ФЗ ст.2 п.2. Инфостарт предлагает подборку программ, связанных с применением 54-ФЗ, ККТ и электронных чеков.

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Инструментарий разработчика Практика программирования

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    19045    ids79    27       

Регистры сведений. За кулисами

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    14527    YPermitin    12       

Базовый курс по обмену данными в системе 1С:Предприятие. Онлайн-интенсив с 12 по 28 мая 2020 г. Промо

Данный онлайн-курс предусматривает изучение механизмов платформы “1С:Предприятие”, обеспечивающих обмен данными между различными прикладными 1С-решениями и взаимодействие с другими информационными системами. Курс предназначен для тех, кто уже имеет определенные навыки конфигурирования и программирования в системе “1С:Предприятие”.

5500 рублей

"Меньше копипаста!", или как Вася универсальную процедуру писал

Статья Программист Стажер Нет файла v8 v8::СКД 1cv8.cf Бесплатно (free) Практика программирования Разработка

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    11956    SeiOkami    49       

Создание отчетов с помощью СКД - основные понятия и элементы

Статья Программист Нет файла v8 v8::СКД Бесплатно (free) Практика программирования Математика и алгоритмы

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    31168    ids79    17       

Подборка программ для взаимодействия с ЕГАИС Промо

ЕГАИС (Единая государственная автоматизированная информационная система) - автоматизированная система, предназначенная для государственного контроля за объёмом производства и оборота этилового спирта, алкогольной и спиртосодержащей продукции. Инфостарт рекомендует подборку проверенных решений для взаимодействия с системой.

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Статья Программист Нет файла v8 v8::Запросы Бесплатно (free) Практика программирования Разработка

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    16700    dmurk    144       

Регистры накопления. Структура хранения в базе данных

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    26717    YPermitin    27       

​​​​​​​CorelDRAW Graphics Suite 2019 Промо

CorelDRAW – пакет профессиональных инструментов для редактирования фотографий, разработки дизайна, создания макетов страниц и векторных иллюстраций

Выполнение внешней обработки в фоновом задании

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    16940    Eret1k    23       

Выгрузка документа по условию

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Разработка

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    9184    m-rv    2       

Голосование за доклады на INFOSTART MEETUP Kazan - до 25 февраля. Промо

Выбирайте и голосуйте за самые интересные доклады! Лучшие из лучших попадут в окончательную программу казанского митапа. Оставить свой голос можно до 25 февраля 2020 года.

Как прикрутить ГУИД к регистру сведений

Статья Программист Нет файла v8 Бесплатно (free) Практика программирования Перенос данных из 1C8 в 1C8 Разработка

... и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.

16.04.2019    12283    m-rv    16       

О расширениях замолвите слово...

Статья Программист Стажер Нет файла v8 Бесплатно (free) Практика программирования Разработка

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    23052    ellavs    125       

INFOSTART MEETUP Krasnodar. 14 февраля 2020 г. Промо

Краснодар станет первым в 2020 году местом, где пройдет региональная встреча IT-специалистов сообщества Инфостарт. Тема мероприятия - управление и технологии автоматизации учета на платформе "1С: Предприятие". Стоимость участия - 5000 рублей. Цена действительна до 26.12.2019.

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Статья Программист Стажер Нет файла v8 Windows Бесплатно (free) Практика программирования Разработка

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    18295    ellavs    83       

Трюки с внешними источниками данных

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Практика программирования Разработка

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    20116    YPermitin    53