Установить период среза последних без параметра

1. TopZlodey 13 23.12.22 09:07 Сейчас в теме
Доброго времени суток, подскажите пожалуйста, как установить период в виртуальной таблице без вывода параметра, а с привязкой к дате документа связанной таблицы.
P.S. У меня есть срез последних регистра сведений в котором лежат цены номенклатуры, и документ с нужной номенклатурой. Мне нужно получить цену на дату этого документа.
P.S.S. Заранее спасибо
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. glek 119 23.12.22 10:03 Сейчас в теме
7. glek 119 23.12.22 10:05 Сейчас в теме
(1) А поиск по ИС вообще выдает кучу ссылок. Но это же скучно. Напишите для меня, да?
2. user1278383 4 23.12.22 09:09 Сейчас в теме
3. TopZlodey 13 23.12.22 09:24 Сейчас в теме
(2) Видел эту статью, но не смог понять. Единственное он берет в запросе Б
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НачалоПериода, ) КАК ЦеныНоменклатурыСрезПоследних
Только мне нужно задать значение &НачалоПериода не через Запрос.УстановитьПараметр(), а как дату документа который есть в запросе
4. user1278383 4 23.12.22 09:27 Сейчас в теме
(3) Нет там такого, что вы придумываете
Дата среза в виртуальных таблицах - это константа. Чтобы реализовать хотелку, нужно использовать что-то типа такого:
РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ вт_ДатыПродаж КАК вт_ДатыПродаж
		ПО ЦеныНоменклатуры.Период <= вт_ДатыПродаж.Дата

и далее по примерам
5. spacecraft 23.12.22 10:01 Сейчас в теме
(3) он там берет срез последних на начало периода, чтобы самому не выбирать все записи с самого начала, на случай если в указанном интервале не было записей по нужной номенклатуре.
Основной же алгоритм использует физическую таблицу. По другому никак.
8. soft_wind 23.12.22 10:14 Сейчас в теме
как вариант это делается в отчете с СКД связью двух таблиц
1.таблица с вашим документом
2.виртуальная таблица среза последних

в связи наборов как раз и указывается связь Дата документа и Параметр таблицы Среза
даже где-то здесь, на форуме, были примеры такого отчета (по курсу валюты на каждый день продажи, кажется)
9. TopZlodey 13 23.12.22 11:01 Сейчас в теме
(8) вот я так пытался, выдает ошибку
Прикрепленные файлы:
10. beldieff 23.12.22 11:06 Сейчас в теме
(9)
выдает ошибку
(facepalm) ну установи параметр
13. TopZlodey 13 23.12.22 11:23 Сейчас в теме
(11)
(10)
Понимаю, но значением этого параметра будет дата документа связанной таблицы, там может выводить тысячи документов...
Наверное туплю но не получается понять как это прописать
14. volex 23.12.22 12:25 Сейчас в теме
(13) Вот вам примитив, без учета момента времени и прочих разрезов.
ВЫБРАТЬ
	ПоступлениеТоваровТовары.Номенклатура КАК Номенклатура,
	ПоступлениеТоваровТовары.Ссылка.Дата КАК ДатаДок
ПОМЕСТИТЬ ВТ_Данные
ИЗ
	Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары
ГДЕ
	ПоступлениеТоваровТовары.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Данные.Номенклатура КАК Номенклатура,
	ВТ_Данные.ДатаДок КАК ДатаДок,
	МАКСИМУМ(ЦеныНоменклатуры.Период) КАК ДатаЦена
ПОМЕСТИТЬ ВТ_ДанныеМДата
ИЗ
	ВТ_Данные КАК ВТ_Данные
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
		ПО ВТ_Данные.Номенклатура = ЦеныНоменклатуры.Номенклатура
			И ВТ_Данные.ДатаДок >= ЦеныНоменклатуры.Период
			И (ЦеныНоменклатуры.ВидЦены = &ВидЦены)

СГРУППИРОВАТЬ ПО
	ВТ_Данные.Номенклатура,
	ВТ_Данные.ДатаДок
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_ДанныеМДата.Номенклатура КАК Номенклатура,
	ВТ_ДанныеМДата.ДатаДок КАК ДатаДок,
	ЦеныНоменклатуры.Цена КАК Цена
ИЗ
	ВТ_ДанныеМДата КАК ВТ_ДанныеМДата
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
		ПО ВТ_ДанныеМДата.Номенклатура = ЦеныНоменклатуры.Номенклатура
			И ВТ_ДанныеМДата.ДатаЦена = ЦеныНоменклатуры.Период
			И (ЦеныНоменклатуры.ВидЦены = &ВидЦены)
Показать


PS Поправил децл
TopZlodey; +1 Ответить
15. spacecraft 23.12.22 12:38 Сейчас в теме
(14) это плохой пример. На каждую номенклатуру будет столько записей, сколько было установлено цен на нее, соответственно со своей ценой.
Для начала нужно отобрать только Максимум(Период). И уже далее соединить по этому периоду, для получения цены.
16. volex 23.12.22 12:50 Сейчас в теме
(15) Да, забыл их отсечь, сейчас исправил.
TopZlodey; +1 Ответить
11. volex 23.12.22 11:10 Сейчас в теме
Ошибка использовать срез последних без внешних параметров.
Все срезы последних, это ВТ предназначенные для быстрого доступа к их данным посредством запроса, всем им нужны внешние параметры относительно запроса.
Тебе придется создать свою ВТ среза последних.
12. soft_wind 23.12.22 11:13 Сейчас в теме
(9) вот пример отчет с СКД со связью Даты документа с параметром Период среза последних
посмотрите, может сможете адаптировать под свою задачу
Прикрепленные файлы:
ВнешнийОтчетТест_КурсЦены.erf
TopZlodey; +1 Ответить
Оставьте свое сообщение

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