Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 мая 2025, 03:13

Запрос к документу с вложенной таблицей в СКД

Автор Goodest81, 25 сен 2024, 09:42

0 Пользователей и 1 гость просматривают эту тему.

LexaK

Goodest81, вот этот код
    ВЫБОР
        КОГДА ОтгрузкаТМЦОбороты.КарточкаДокумента.ДокументРегистратор ССЫЛКА Документ.РасходнаяНакладнаяТМЦ
            ТОГДА ВЫРАЗИТЬ(ОтгрузкаТМЦОбороты.КарточкаДокумента.ДокументРегистратор КАК Документ.РасходнаяНакладнаяТМЦ).Дата
    КОНЕЦ КАК ДатаОтгрузки,
    ВЫБОР
        КОГДА ОтгрузкаТМЦОбороты.КарточкаДокумента.ДокументРегистратор ССЫЛКА Документ.РасходнаяНакладнаяТМЦ
            ТОГДА ВЫРАЗИТЬ(ОтгрузкаТМЦОбороты.КарточкаДокумента.ДокументРегистратор КАК Документ.РасходнаяНакладнаяТМЦ).Номер
    КОНЕЦ КАК НомерТТН,
    ВЫБОР
        КОГДА ОтгрузкаТМЦОбороты.КарточкаДокумента.ДокументРегистратор ССЫЛКА Документ.РасходнаяНакладнаяТМЦ
            ТОГДА ВЫРАЗИТЬ(ОтгрузкаТМЦОбороты.КарточкаДокумента.ДокументРегистратор КАК Документ.РасходнаяНакладнаяТМЦ).СуммаВсегоДокумента
    КОНЕЦ КАК СуммаВсегоДокумента

замените на этот

ДокТМЦ.Дата как ДатаОтгрузки,
ДокТМЦ.Номер как НомерТТН,
ДокТМЦ.СуммаВсегоДокумента как СуммаВсегоДокумента,


гораздо проще и понятнее

ДокТМЦ - получить так

ИЗ
    РегистрНакопления.ОтгрузкаТМЦ.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ОтгрузкаТМЦОбороты
левое соединение  Документ.РасходнаяНакладнаяТМЦ ДокТМЦ
по  ОтгрузкаТМЦОбороты.КарточкаДокумента.ДокументРегистратор = ДокТМЦ.Ссылка
если помогло нажмите: Спасибо!

Максим75

Goodest81, выберите периодичность у виртуальной таблицы  Регистратор и у Вас станет доступный регистратор.
тогда прямо с регистратора вытягиваете Номер, Дату, Сумму и прочее, не надо будет извращаться с Выразить.
Только условие накладывайте что Регистратор Ссылка Документ.РасходнаяНакладнаяТМЦ
и все.

ну или все это кино делайте с ОтгрузкаТМЦОбороты.КарточкаДокумента.ДокументРегистратор Ссылка Документ.РасходнаяНакладнаяТМЦ

Goodest81

Максим75, LexaK,
Спасибо. Все супер. Теперь я понял, как это работает.
Теперь уточню вопрос, в данном документе есть вложенная таблица Номенклатура, когда я вытаскиваю данные по нужным полям, я получаю таблицу значений, а мне надо конкретные значения конкретных полей из Номенклатура и все в одном запросе  :D
ВЫБРАТЬ
ОтгрузкаТМЦОбороты.Контрагент.Код КАК Код,
ОтгрузкаТМЦОбороты.Контрагент.Наименование КАК НаименованиеПокупателя,
ДокТМЦ.Дата КАК ДатаОтгрузки,
ОтгрузкаТМЦОбороты.КарточкаДокумента.ДатаОперации,
ОтгрузкаТМЦОбороты.КарточкаДокумента.СрокОплаты,
ДокТМЦ.Номер КАК НомерТТН,
ОтгрузкаТМЦОбороты.ТМЦ.Артикул КАК КодПр,
ОтгрузкаТМЦОбороты.ТМЦ,
ОтгрузкаТМЦОбороты.КоличествоОборот КАК Колво,
ОтгрузкаТМЦОбороты.ТМЦ.Себестоимость,
ОтгрузкаТМЦОбороты.СебестоимостьОборот,
ОтгрузкаТМЦОбороты.СтавкаНДС,
ОтгрузкаТМЦОбороты.СуммаНДСОборот,
ОтгрузкаТМЦОбороты.СуммаВсегоОборот,
ОтгрузкаТМЦОбороты.Валюта,
ОтгрузкаТМЦОбороты.Склад,
ОтгрузкаТМЦОбороты.ВидТМЦ,
ДокТМЦ.СуммаВсегоДокумента КАК СуммаВсегоДокумента,
ДокТМЦ.Номенклатура.(
СуммаБезНДС,
СуммаНДС,
СуммаСНДС,
СуммаВсего
)
ИЗ
РегистрНакопления.ОтгрузкаТМЦ.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ОтгрузкаТМЦОбороты
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладнаяТМЦ КАК ДокТМЦ
ПО ОтгрузкаТМЦОбороты.КарточкаДокумента.ДокументРегистратор = ДокТМЦ.Ссылка

Максим75

Goodest81, так это не работает.
Вам надо соединить с табличной частью документа, связь делать по регистратору и номенклатуре.
можно заменить то соединение, что есть на соединение с табличной частью, а сам документ будет доступен по ссылке.

Goodest81

Максим75,
Я взял 3 таблицы - ДокТМЦ(Документ.РасходнаяНакладнаяТМЦ), РегистрНакопления.ОтгрузкаТМЦ.Обороты, Документ.РасходнаяНакладнаяТМЦ.Номенклатура
Соединил по ссылкам.
Поясню, почему столько таблиц, мне нужен отчет, в котором есть цена себестоимость, цена розничная и различные данные по документу.
В регистре нет цены розничной, есть себестоимость. Почему так - хз. Эта цена есть в документе во вложенной таблице.
Я бы использовал просто документ, но в нем идет не та сумма, т.к. используется курс валют, который меняется,т.е. документ создали - курс валюты один, когда провели - курс валюты уже изменился. Я первоначально использовал документ (начало темы, но потом столкнулся, с тем, что в проведенном документе курс другой, и этот курс есть только в регистре).
Вопрос - такой запрос верный?
Что-то как-то сильно коряво на глаз. Или правильнее было бы пользоваться временными таблицами и как? т.е. вначале выбрать из регистра данные, затем из Расходной накладной, затем из Номенклатуры в расходной накладной, потом все обьединить по ссылкам?
В параметрах виртуальной таблицы регистратора я включил периодичность Регистратор

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

Goodest81

Добрый день. Дико туплю. Выбираю данные, номенклатура идет в единицах измерений в тыс. штук, в справочнике единиц измерений есть единица измерения короба (со своим кодом) с привязкой к коду ОКЕИ, со своим Коэффициентом Пересчета.
Как мне в запросе связать данные так, чтобы на выходе я получал не тыс. штук, а короба? Именно запросом.
Т.е. сейчас прилетает единица измерения с кодом 0001 и кодом ОКЕИ 798 - это тыс  штук с коэффициентом 1,
а есть код единицы измерений 0002 с кодом ОКЕИ 8751 с коэффициентом 10. Т.е. сейчас количество прилетает 10 тыс. штук, а надо 10 коробок.
Я почему код ОКЕИ приплел, т.к. у номенклатуры единица измерения с кодом 0001 - не обязательно тыс. штук, может быть и кг, а вот код ОКЕИ привязан строго.
Т.е. по логике мне надо при выборе количества, делать проверку, если код океи 798, тогда выбрать из справочника единиц измерения строку, в которой код ОКЕИ 8751, взять оттуда коэффициент пересчета и разделить количество на коэффициент, затем заменить тыс. штук на короба. Но КАК?
Пример моего запроса:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ОтгрузкаТМЦОбороты.Регистратор КАК Ссылка,
ОтгрузкаТМЦОбороты.Склад,
ОтгрузкаТМЦОбороты.Контрагент,
ОтгрузкаТМЦОбороты.ТМЦ,
ОтгрузкаТМЦОбороты.КоличествоОборот
ПОМЕСТИТЬ ВтРег
ИЗ
РегистрНакопления.ОтгрузкаТМЦ.Обороты(&НачалоПериода, &КонецПериода, Запись, ВидТМЦ = &ВидТМЦ) КАК ОтгрузкаТМЦОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВтРег.ТМЦ,
ВтРег.ТМЦ.Артикул КАК КодПр,
ВтРег.Ссылка.Номер КАК НомерТТН,
ВтРег.КоличествоОборот КАК Количество,
ВтРег.Склад,
ВтРег.Контрагент КАК Контрагент,
ВтРег.Ссылка,
    РасходнаяНакладнаяТМЦНоменклатура.ЕдиницаИзмерения.Ссылка КАК ЕдиницаИзмеренияСсылка,
РасходнаяНакладнаяТМЦНоменклатура.ЕдиницаИзмерения.ОКЕИ,
РасходнаяНакладнаяТМЦНоменклатура.ЕдиницаИзмерения.КоэффициентПересчета,
РасходнаяНакладнаяТМЦНоменклатура.ЕдиницаИзмерения.Код КАК ЕдиницаИзмеренияКод,
РасходнаяНакладнаяТМЦНоменклатура.ЕдиницаИзмерения.ОКЕИ.Код
ИЗ
ВтРег КАК ВтРег
ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходнаяНакладнаяТМЦ.Номенклатура КАК РасходнаяНакладнаяТМЦНоменклатура
ПО ВтРег.Ссылка = РасходнаяНакладнаяТМЦНоменклатура.Ссылка
И ВтРег.ТМЦ = РасходнаяНакладнаяТМЦНоменклатура.ТМЦ

УПОРЯДОЧИТЬ ПО
Контрагент,
НомерТТН

LexaK

задача как дважды два
есть базовые ед.хранения
кг,шт,литры и др
и есть упаковки
коробка, бочка, упаковка и др
в упаковках есть обязательные реквизиты
Числитель и знаменатель
перемножая на которые получаете количество в базовых единицах

просто перемножить или разделить одно на другое
в зависимости от того что вам надо получить....
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск