Отчет на СКД - Выборка из РС по дате документа поступления.

1. user1004898 28 27.08.21 16:42 Сейчас в теме
Пишу отчет на СКД. Обращаюсь к периодическому РС Нормы к таблице СрезПоследних.
Поступила постановка, изменить выборку. Нужно взять не последнюю запись из РС Нормы, а те записи, которые соответствовали дате документа, на момент их создания.
Примерно РС и документы отразил на фото Нормы. На фото Нормы2 отразил как бы хотелось это видеть. То есть, я так понимаю, нужно при формировании строки обращаться либо к срезу последних на дату Поступления, либо к самой таблице регистра, без среза, с пост-условием по дате, где дата Поступления в промежутке первой записи и второй записи РС. Вот тут пока не придумаю, как такое реализовать средствами СКД. Что можно придумать?
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. slavyan_arena 30.08.21 08:43 Сейчас в теме
Попробуйте взять не остатки по регистру, а просто сам регистр и в нем можно указать период на определенную дату примерно вот так:
Прикрепленные файлы:
2. user1004898 28 27.08.21 16:44 Сейчас в теме
Сам запрос таков
Прикрепленные файлы:
Запрос.txt
3. ilnur75 27.08.21 18:17 Сейчас в теме
сначала получите остатки товара по партии поступления, так узнаете дату поступления.
далее в РС Нормы получите запись по дате поступления.
4. Ivanov_OM 38 27.08.21 20:34 Сейчас в теме
Делаешь 2 набора данных
В первом получаешь даты среза.
Только берешь не виртуальную таблицу, а реальную, без срезов
ВЫБРАТЬ
	РегистрНормы.Норма КАК Норма,
	МАКСИМУМ(РегистрНормы.Период) КАК Период
ИЗ
	РегистрНормы КАК РегистрНормы

СГРУППИРОВАТЬ ПО
	РегистрНормы.Норма КАК Норма

УПОРЯДОЧИТЬ ПО
	Период
Показать


Во втором период получаешь как параметр
Я тебе покажу пример из моего отчета, там другие параметры, но суть та же.
ВЫБРАТЬ
	&НачалоПериода КАК НачалоПериода,
	ТоварыНаСкладахОстаткиИОбороты.Склад.Магазин КАК Магазин,
	ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Код КАК Код,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК ОстатокНаКонец,
	ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Регистратор,
	ТоварыНаСкладахОстаткиИОбороты.ПериодСекунда КАК ПериодСекунда,
	ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК ОстатокНаНачало
{ВЫБРАТЬ
	Магазин.*,
	Склад.*,
	Код,
	Номенклатура.*,
	ОстатокНаНачало,
	КоличествоПриход,
	КоличествоРасход,
	ОстатокНаКонец КАК ОстатокНаКонец,
	Регистратор.*,
	ПериодСекунда,
	НачалоПериода}
ИЗ
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты
ГДЕ
	ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток <> 0
{ГДЕ
	ТоварыНаСкладахОстаткиИОбороты.Склад.*,
	ТоварыНаСкладахОстаткиИОбороты.Номенклатура.*,
	ТоварыНаСкладахОстаткиИОбороты.Склад.Магазин.* КАК Магазин}
Показать


А связку делаешь на вкладке "Связи наборов данных:
У меня это как на картинке:
Обрати внимание на 1 строчку 2-го запроса
Прикрепленные файлы:
6. user1004898 28 28.08.21 09:17 Сейчас в теме
(4)
ну тут как бы период по РС Нормы не всегда равен дате документа поступления (регистратора РН скажем так даже).
Я делал такие связи, многие записи пропадают, так как нет равенства датам согласно связи наборам данных.
5. ab_initio 95 28.08.21 05:34 Сейчас в теме
Сходите вот в эту ветку:
https://forum.infostart.ru/forum9/topic252977/#message2559321
Очень похожая задача с интервальным запросом в РС.
7. user1004898 28 28.08.21 10:09 Сейчас в теме +0.5 $m
Кстати, можно как-то к записям ВТ (которая построена на РС ) из СКД обращаться перебором записей?
К примеру, если ДатаПоступления >= запись.ВТ.Дата и ДатаПоступления <= запись.ВТ(+1).Дата Тогда запись.ВТ.Норма. Типа сравниваю два значения ВТ моего РС и если датаПоступления в этом интервале, то беру соответствущую Норму.
9. walp 01.09.21 09:44 Сейчас в теме
Шаг 1. Получаете таблицу типа "Поступления.Ссылка, Поступления.Дата, Поступления.ПолеСвязи"

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

Шаг 3. Получившуюся таблицу объединяете с основной таблицей регистра норм по полю связи и периоду.

Сразу предупрежу, что ресурсы этот запрос жрет как бесплатные.
10. dshershen86 07.09.21 17:09 Сейчас в теме
(9)Абсолютно верно нужно автору разбить на периоды. И уже потом добавлять как параметр во связи таблиц.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот