8.х Сложный запрос к периодическому регистру

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Sevish, 8 янв 2016.

  1. TopicStarter Overlay
    Sevish
    Offline

    Sevish Опытный в 1С

    Регистрация:
    24 дек 2010
    Сообщения:
    115
    Симпатии:
    1
    Баллы:
    29
    БП платформа 8.2 конфигурация 2.0.64.42
    Есть регистр сведений (периодический, далее РС). У регистра одно измерение - "Склад" (стандартный справочник "Склады"). Ресурсы "ДатаПоступления" (по сути равна "Период", но для наглядности сделал), "Вид" и "НачальныйВозраст". Записей может быть 1-2 в квартал.
    "СрезПоследних" на нужную дату к этому РС дает мне "ДатаПоступления" и "НачальныйВозраст". "НачальныйВозраст" + разница в днях между "нужной датой" и "ДатаПоступления" дает мне "текущий возраст". И все бы ничего, но мне нужно "текущий возраст" использовать непосредственно в запросе ЗА ВЕСЬ ГОД. Иными словами нужно создать запрос в котором по каждому складу будет свой возраст на каждый день ГОДА или некого иного периода. Зачем?
    Эта таблица нужна, чтобы однозначно по "Вид" выбрать требуемые показатели из соответствующего документа, привязанные к "Возрасту".
    Более того, еще надо взять остатки по складу ("Хозрасчетный.ОстаткиИОбороты") на начало каждого дня (а как я выяснил если использовать "остатки и обороты" и оборотов не было - совсем беда - остатка нет).
    В итоге должно быть что-то вроде этого:
    01.01.2015 - Склад1 - Возраст1 - Показатель1_1 - Показатель2_1 - КолВо1
    01.01.2015 - Склад2 - Возраст2 - Показатель1_2 - Показатель2_2 - КолВо2
    02.01.2015 - Склад1 - Возраст1 - Показатель1_1 - Показатель2_1 - КолВо1
    02.01.2015 - Склад2 - Возраст2 - Показатель1_2 - Показатель2_2 - КолВо2
    и т. д.

    В общем нет у меня соображений, как это всё в один запрос уместить. А проблема с остатком на начало дня при отсутствии оборотов - это вообще отдельная тематика. Вроде как решается "Период ПЕРИОДАМИ(ДЕНЬ, &ДатаНач, &ДатаКон)", но это не возможно во вложенных запросах, нет там итогов.

    Была идея делать все через ТЗ собирая в ней данные разных запросов, но получается адски долго ибо на каждую дату 10-12 складов.

    Можно так посмотреть на эту задачу. Основной запрос:
    ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Период КАК Период,
    ХозрасчетныйОстаткиИОбороты.Субконто3 КАК Склад,
    ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК Остаток
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, День, , Счет = &Счет, , ) КАК ХозрасчетныйОстаткиИОбороты
    ГДЕ
    ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток > 0
    УПОРЯДОЧИТЬ ПО
    Период,
    ХозрасчетныйОстаткиИОбороты.Субконто3.Наименование
    ИТОГИ
    СУММА(Остаток)
    ПО
    Период ПЕРИОДАМИ(ДЕНЬ, &ДатаНач, &ДатаКон),
    Склад

    И всё что нужно добавить к этому запросу вычисление актуального возраста из данных РС и показатели, привязанные к этому возрасту и складу :)
    Последнее редактирование: 8 янв 2016
  2. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    НУ а в чем проблема.
    Это по сути дела анадогично задачи получение остатков на каждый день.
    Вы только сначало берете даты на которые получаете, а затем на них срезы последних.
    Даты можете получить из регламентированного производственного календаря.
    Если Вам отчет нужен то мдете в СКД сделать через соединение двух наборов по параметру. если тупо запрос то там через ВТ надо в инете есть примеры и у нас на формуме. Можете поиском "остатки по складам на каждый день" уже приводил ни раз

Поделиться этой страницей