Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Связь наборов данных

Связь наборов данных
Я
   Ksu555
 
03.11.20 - 16:26
Добрый день!

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

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

Вопрос: каким способом и как лучше объединить эти наборы данных?

П.С. весь запрос формирую через Конструктор запроса, т.к.  профессия-экономист.
   Михаил Козлов
 
1 - 03.11.20 - 17:16
Вы хотите запросы научиться писать или просто получать данные?
Если второе, попросите программиста сделать отчет.
Если первое:
- валюты заказа и ПТиУ совпадают?
- цель - сравнить цены в заказе и в соответствующем поступлении, поэтому я бы в наборе по заказам использовал сами заказы, а не регистр (вдруг цены не фиксируются в регистре).
- связь заказа с ПТиУ должна делаться по реквизиту ПТиУ "ЗаказПоставщику".
Примерно так, при условии, что в заказах и ПТиУ нет дублей строк по номенклатуре:
ВЫБРАТЬ
  заказ.Ссылка КАК заказ,
  заказ.Номенклатура КАК Номенклатура.
  заказ.Цена КАК цена
  ПОМЕСТИТЬ втЗаказы
ИЗ Документ.ЗаказПоставщику.Товары КАК заказ
;
ВЫБРАТЬ
  ПТиУ.Ссылка.Дата КАК дата,
  ПТиУ.Ссылка.Партнер КАК Партнер,
  ПТиУ.Ссылка КАК ПТиУ,
  заказы.заказ КАК заказ,
  ПТиУ.Номенклатура КАК Номенклатура.
  ПТиУ.Цена КАК ценаПТиУ
  заказы.цена КАК ценаЗаказа
ИЗ Документ.ПриобретениеТоваровУслуг.Товары КАК ПТиУ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗаказы КАК заказы
ПО ПТиУ.Ссылка.ЗаказПоставщику = заказы.заказ И ПТиУ.Номенклатура = заказ.Номенклатура
ГДЕ ПТиУ.Ссылка.Дата МЕЖДУ &датаНачала и &датаОкончания
   Ksu555
 
2 - 04.11.20 - 09:50
- цены валют совпадают;
- строки по номенклатуре будут повторяться, так как одна и та же позиция приходит от разных поставщиков;
- в заказах на поставку информация о цене и номенклатуре содержится только в табличной части
ВЫБРАТЬ
    ЗаказПоставщику.Товары.(
        Номенклатура КАК Номенклатура,
        Цена КАК Цена,
        Ссылка КАК Ссылка
    ) КАК Товары,
    ЗаказПоставщику.Ссылка КАК Ссылка
ИЗ
    Документ.ЗаказПоставщику КАК ЗаказПоставщику
   Михаил Козлов
 
3 - 04.11.20 - 10:21
(2) Разные поставщики не важно: связь заказа и ПТиУ по заказу. В запросе обращение к табличной части.
   Ksu555
 
5 - 04.11.20 - 10:57
Пытаюсь реализовать задачу в соответствии с Вашим вариантом. При попытке создать временную таблицу появляется ошибка: "В запросе, формирующем ВТ, не могут выбираться вложенные таблицы ЗаказПоставщику.Товары.

Запрос к табличной части нужен,потому что только там есть номенклатура и цена заказа.
   hhhh
 
6 - 04.11.20 - 11:05
(5) ну сделай по человечески, что ты хрень какую-то написал?

ВЫБРАТЬ
    ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура,
    ЗаказПоставщикуТовары.Цена КАК Цена,
    ЗаказПоставщикуТовары.Ссылка КАК Ссылка
ИЗ
    Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
   Михаил Козлов
 
7 - 04.11.20 - 11:11
Ошибки в запросе: точка вместо запятой после КАК Номенклатура и "заказ.Номенклатура" вместо "заказы.Номенклатура".
Вот текст запроса, который выполняется:
ВЫБРАТЬ
  заказ.Ссылка КАК заказ,
  заказ.Номенклатура КАК Номенклатура,
  заказ.Цена КАК цена
  ПОМЕСТИТЬ втЗаказы
ИЗ Документ.ЗаказПоставщику.Товары КАК заказ
;
ВЫБРАТЬ
  ПТиУ.Ссылка.Дата КАК дата,
  ПТиУ.Ссылка.Партнер КАК Партнер,
  ПТиУ.Ссылка КАК ПТиУ,
  заказы.заказ КАК заказ,
  ПТиУ.Номенклатура КАК Номенклатура,
  ПТиУ.Цена КАК ценаПТиУ,
  заказы.цена КАК ценаЗаказа
ИЗ Документ.ПриобретениеТоваровУслуг.Товары КАК ПТиУ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втЗаказы КАК заказы
ПО ПТиУ.Ссылка.ЗаказПоставщику = заказы.заказ И ПТиУ.Номенклатура = заказы.Номенклатура
ГДЕ ПТиУ.Ссылка.Дата МЕЖДУ &датаНачала и &датаОкончания
   Ksu555
 
8 - 04.11.20 - 11:18
(6) Если сделать так, то получается  "Ошибка получения набора данных"
   hhhh
 
9 - 04.11.20 - 11:30
(8) ну ошибка, значит, надо разбираться в чем ошибка.
   Ksu555
 
10 - 04.11.20 - 11:33
Работаю через Конструктор
https://ibb.co/wKTJ20M
https://ibb.co/pyxtmzX
   Михаил Козлов
 
11 - 04.11.20 - 12:14
(10) В https://ibb.co/pyxtmzX ясно ведь написано. Обращайтесь не к документу, а к его табличной части.
   k_aleks80
 
12 - 04.11.20 - 12:17
(8) возможно проблема в совпадающих псевдонимах таблицы и реквизита
   k_aleks80
 
13 - 04.11.20 - 12:19
(10) и да, используй "человеческий" вариант из (7) :)
   Ksu555
 
14 - 04.11.20 - 12:22
(11) Только в табличной части содержится информация о номенклатуре и ценам заказа.
   hhhh
 
15 - 04.11.20 - 12:38
(14) ну вот и работай с табличной частью. Дробейся, чтобы у тебя в центре в конструкторе стояло: ЗаказПоставшику.Товары.
   k_aleks80
 
16 - 04.11.20 - 20:15
(14) Документ.ПриобретениеТоваровУслуг.Товары - это и есть обращение к табличной части "Товары"
   Ksu555
 
17 - 16.11.20 - 16:51
Проблема была решена следующим образом 
ВЫБРАТЬ
    ПриобретениеТоваровУслугТовары.Ссылка.Партнер КАК Партнер,
    ПриобретениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
    ПриобретениеТоваровУслугТовары.Цена КАК ЦенаПоступления,
    ЗаказПоставщикуТовары.Цена КАК ЦенаЗаказа,
    ПриобретениеТоваровУслугТовары.Ссылка КАК Поступление,
    ЗаказПоставщикуТовары.Ссылка КАК Заказ,
    ПриобретениеТоваровУслугТовары.Ссылка.Дата КАК Дата,
    ПриобретениеТоваровУслугТовары.Ссылка.Номер КАК Номер,
    ПриобретениеТоваровУслугТовары.Количество КАК Количество,
    ЗаказПоставщикуТовары.Сумма КАК Сумма
ИЗ
    Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
        ПО ПриобретениеТоваровУслугТовары.ЗаказПоставщику = ЗаказПоставщикуТовары.Ссылка
            И ПриобретениеТоваровУслугТовары.Номенклатура = ЗаказПоставщикуТовары.Номенклатура
ГДЕ
    ПриобретениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.