Как из параметра Сылка на документ получить его дату
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Пробовал через параметр это сделать:
Имеется параметр Ссылка (приходит из запроса параметр).
Его тип ДокументСсылка.ЗаказПоставщику
Имеется другой параметр ДатаДок, его Тип Дата
В выражении параметра датаДок пишу:
Пишет синтаксическая ошибка.
Видимо выразить нужно в запросе использовать.
Пробовал вот простейший пример:
Но на выходе пустая дата.
Что не так?
На момент формирования запроса Ссылка заполнена.
Имеется параметр Ссылка (приходит из запроса параметр).
Его тип ДокументСсылка.ЗаказПоставщику
Имеется другой параметр ДатаДок, его Тип Дата
В выражении параметра датаДок пишу:
ВЫРАЗИТЬ(&Ссылка КАК Документ.ЗаказПоставщику).Дата
Пишет синтаксическая ошибка.
Видимо выразить нужно в запросе использовать.
Пробовал вот простейший пример:
ВЫБРАТЬ
ЗаказПоставщикуТовары.Номенклатура,
ВыручкаИСебестоимостьПродажОборотыЭтотГод.КоличествоОборот КАК КоличествоЭтотГод,
ВыручкаИСебестоимостьПродажОборотыЭтотГод.ДатаДок
ИЗ
(ВЫБРАТЬ
ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура
ИЗ
Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
ГДЕ
ЗаказПоставщикуТовары.Ссылка = &Ссылка
СГРУППИРОВАТЬ ПО
ЗаказПоставщикуТовары.Номенклатура) КАК ЗаказПоставщикуТовары
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот КАК КоличествоОборот,
ВЫРАЗИТЬ(&Ссылка КАК Документ.ЗаказПоставщику).Дата КАК ДатаДок
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериодаЭтотГод, &КонецПериодаЭтотГод, , ) КАК ВыручкаИСебестоимостьПродажОбороты) КАК ВыручкаИСебестоимостьПродажОборотыЭтотГод
ПО ЗаказПоставщикуТовары.Номенклатура = ВыручкаИСебестоимостьПродажОборотыЭтотГод.АналитикаУчетаНоменклатуры.Номенклатура
ПоказатьНо на выходе пустая дата.
Что не так?
На момент формирования запроса Ссылка заполнена.
(3) Через ВЫРАЗИТЬ никогда не пробовал. Если нужно реквизит параметра передать параметром в виртуальную таблицу - всегда передавал отдельным параметром. А "простейший пример" проще всего так переписать:
ВЫБРАТЬ
ЗаказПоставщикуТовары.Номенклатура,
ВыручкаИСебестоимостьПродажОборотыЭтотГод.КоличествоОборот КАК КоличествоЭтотГод,
ЗаказПоставщикуТовары.ДатаДок
ИЗ
(ВЫБРАТЬ РАЗЛИЧНЫЕ
ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура,
ЗаказПоставщикуТовары.Ссылка.ДатаДок КАК ДатаДок
ИЗ
Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
ГДЕ
ЗаказПоставщикуТовары.Ссылка = &Ссылка) КАК ЗаказПоставщикуТовары
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры,
ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот КАК КоличествоОборот
ИЗ
РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&НачалоПериодаЭтотГод, &КонецПериодаЭтотГод, , ) КАК ВыручкаИСебестоимостьПродажОбороты) КАК ВыручкаИСебестоимостьПродажОборотыЭтотГод
ПО ЗаказПоставщикуТовары.Номенклатура = ВыручкаИСебестоимостьПродажОборотыЭтотГод.АналитикаУчетаНоменклатуры.Номенклатура
Показать
(3) что-то я не увидел в этом коде: "Необходимо для установки параметров на виртуальную таблицу."
Вот рабочий код:
Вот рабочий код:
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Период,
ЦеныНоменклатурыСрезПоследних.Регистратор.Ссылка,
ЦеныНоменклатурыСрезПоследних.ТипЦен,
ЦеныНоменклатурыСрезПоследних.Номенклатура,
ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Регистратор.Дата = НАЧАЛОПЕРИОДА(ВЫРАЗИТЬ(&СсылкаДок КАК Документ.УстановкаЦенНоменклатуры).Дата, ДЕНЬ)) КАК ЦеныНоменклатурыСрезПоследних
Показать
По-моему, на передачу параметров виртуальных таблиц действуют ограничения, не позволяющие впихнуть туда результат подзапроса (ВЫРАЗИТЬ с разименованием и получением реквизита - частный случай такого подзапроса).
Стандартный период - это не таблица. Это просто объект в памяти без отображения в БД.
Язык выражений СКД можно сравнивать с Выполнить() весьма условно. Он отрабатывает в своем отдельном контексте, имеет ряд своих ограничений и строго валидируется еще при конфигурировании. Это отдельный DSL (пусть и частично пересекающийся с функционалом одновременно языка запросов и 1С), а Выполнить() - просто выполнение произвольного кода 1С в контексте своего вызова.
Что касается моих предыдущих высказываний про ограничения в параметрах виртуальных таблиц - они касаются конечно же именно параметров периодов. Я как-то это не акцентировал.
Язык выражений СКД можно сравнивать с Выполнить() весьма условно. Он отрабатывает в своем отдельном контексте, имеет ряд своих ограничений и строго валидируется еще при конфигурировании. Это отдельный DSL (пусть и частично пересекающийся с функционалом одновременно языка запросов и 1С), а Выполнить() - просто выполнение произвольного кода 1С в контексте своего вызова.
Что касается моих предыдущих высказываний про ограничения в параметрах виртуальных таблиц - они касаются конечно же именно параметров периодов. Я как-то это не акцентировал.
(18)
Это игра слов. Виртуальная таблица тоже не хранится в БД, однако от этого она не перестает быть таблицей.
Не интересовало, где точно хранятся значения Стандартного периода ("Сегодня", "Эта неделе" и т.д.), но логичнее это хранить в БД, чем в коде.
Стандартный период - это не таблица. Это просто объект в памяти без отображения в БД.
Это игра слов. Виртуальная таблица тоже не хранится в БД, однако от этого она не перестает быть таблицей.
Не интересовало, где точно хранятся значения Стандартного периода ("Сегодня", "Эта неделе" и т.д.), но логичнее это хранить в БД, чем в коде.
Проблема в том что мне необходимо это значение передать в параметры виртуальной таблицы.
И если схема
в значениях реквизита работает, то в виртуальной таблицы уже нет.
Какие варианты решения возможны?
И если схема
ВЫРАЗИТЬ(&Ссылка КАК Документ.ЗаказПоставщику).Дата
в значениях реквизита работает, то в виртуальной таблицы уже нет.
Какие варианты решения возможны?
На СКД в отчет параметром передается необходимый заказ покупателя.
Из него беру номенклатуру и анализирую продажи за определенные периоды: на месяц назад от даты документа, аналогичный период за прошлый год и т.д.
Соответственно необходимо дату документа в параметры виртуальной таблицы передавать.
Из него беру номенклатуру и анализирую продажи за определенные периоды: на месяц назад от даты документа, аналогичный период за прошлый год и т.д.
Соответственно необходимо дату документа в параметры виртуальной таблицы передавать.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот