Имя: Пароль:
1C
 
Запрос. Две таблицы, но связь между ними через третью.
0 ermola
 
20.12.17
09:56
Доброго.
Помогите с запросом.
Получилось две временные таблицы, но это неважно наверно.
В каждой таблице по два поля, типа ссылка на справочник и некое число.
Есть регистр сведений в котором забито соответствие между ссылками из первой и второй таблицами.
То есть где-то так.
Таблица один.
СправочникСсылка1, Количество1.
Таблица два
СправочникСсылка2, Количество2.
Таблица три
СправочникСсылка1, СправочникСсылка2

В итоге надо получить
СправочникСсылка1,СпрвочникСсылка2, Количество1,Количество2
где по таблице три СпрвочникСсылка1 = СправочникСсылка2

Спасибо
1 ils108
 
20.12.17
10:08
т.е. сами "Ссылки" 1-го и 2-го отличаются?
2 ermola
 
20.12.17
10:13
Да, разные справочники.
3 Ненавижу 1С
 
гуру
20.12.17
10:14
ИЗ Третья Т
левое соединение Первая П по Т.Ссылка1=П.Ссылка1
левое соединение Вторая В по Т.Ссылка2=В.Ссылка2
4 ils108
 
20.12.17
10:18
(3) а зачем левое, почему не внутреннее?
5 ermola
 
20.12.17
10:31
(3) Спасибо. Получается красиво, в принципе чего хотелось, но по цифрам полный бред. Ладно пойду искать косяки.Видать не так запрос строю.
6 Вафель
 
20.12.17
10:32
(5) не забывай, что соединение может плодить дубли
7 Фрэнки
 
20.12.17
10:35
(5) а как стало понятно, что бред? может слишком много записей попало в итоговую выборку? Должно быть определен смысл по включению в выборку пустых под каждую пару Ссылка1 и Ссылка2. Хотя, по логике озвученной задачи эти поля пустыми оказываться не должны, но ничего не сказано о порядке заполнения регистра сведений соответствий
8 Фрэнки
 
20.12.17
10:37
и дубли парных Ссылка-Количество могут быть, также дубли Ссылка1-Ссылка2, и пустые Количества для Ссылка1 или Ссылка2 при выборке из регистра
9 ermola
 
20.12.17
10:48
По отделенности запросы мне нормальные данные показывают, в пакете бред.
10 ils108
 
20.12.17
10:53
текст запроса положите сюда
11 ermola
 
20.12.17
10:58
ВЫБРАТЬ РАЗЛИЧНЫЕ
    алкСоответствияАлкогольнойПродукцииЕГАИСИНоменклатуры.Номенклатура
ПОМЕСТИТЬ Номеклатура
ИЗ
    Документ.алкФиксацияОстатковЕГАИС.Товары КАК алкФиксацияОстатковЕГАИСТовары
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.алкСоответствияАлкогольнойПродукцииЕГАИСИНоменклатуры КАК алкСоответствияАлкогольнойПродукцииЕГАИСИНоменклатуры
        ПО алкФиксацияОстатковЕГАИСТовары.АлкогольнаяПродукция = алкСоответствияАлкогольнойПродукцииЕГАИСИНоменклатуры.АлкогольнаяПродукция
ГДЕ
    алкФиксацияОстатковЕГАИСТовары.Ссылка = &Ссылка
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    алкФиксацияОстатковЕГАИСТовары.АлкогольнаяПродукция,
    СУММА(алкФиксацияОстатковЕГАИСТовары.Количество) КАК Количество
ПОМЕСТИТЬ Остатки_По_ЕГАИС
ИЗ
    Документ.алкФиксацияОстатковЕГАИС.Товары КАК алкФиксацияОстатковЕГАИСТовары
ГДЕ
    алкФиксацияОстатковЕГАИСТовары.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
    алкФиксацияОстатковЕГАИСТовары.АлкогольнаяПродукция
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Остатки_По_Базе.Номенклатура,
    Остатки_По_ЕГАИС.АлкогольнаяПродукция,
    Остатки_По_Базе.КоличествоКонечныйОстаток,
    Остатки_По_ЕГАИС.Количество
ИЗ
    Остатки_По_Базе КАК Остатки_По_Базе
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.алкСоответствияАлкогольнойПродукцииЕГАИСИНоменклатуры КАК алкСоответствияАлкогольнойПродукцииЕГАИСИНоменклатуры
            ЛЕВОЕ СОЕДИНЕНИЕ Остатки_По_ЕГАИС КАК Остатки_По_ЕГАИС
            ПО алкСоответствияАлкогольнойПродукцииЕГАИСИНоменклатуры.АлкогольнаяПродукция = Остатки_По_ЕГАИС.АлкогольнаяПродукция
        ПО алкСоответствияАлкогольнойПродукцииЕГАИСИНоменклатуры.Номенклатура = Остатки_По_Базе.Номенклатура
12 hhhh
 
20.12.17
11:02
(11) вот это

        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.алкСоответствияАлкогольнойПродукцииЕГАИСИНоменклатуры КАК алкСоответствияАлкогольнойПродукцииЕГАИСИНоменклатуры
        ПО алкФиксацияОстатковЕГАИСТовары.АлкогольнаяПродукция = алкСоответствияАлкогольнойПродукцииЕГАИСИНоменклатуры.АлкогольнаяПродукция


что-то бред какой-то. Откуда такое соединение? И где номенклатура здесь?
13 ermola
 
20.12.17
11:22
А ее там нет.
Два разных справочника используется. Для алкогольного блока свой, для оставленной базы свой.
И для их согласования РегистрСведений.алкСоответствияАлкогольнойПродукцииЕГАИСИНоменклатуры
14 Вафель
 
20.12.17
11:25
соответствие 1к1 ?
15 ermola
 
20.12.17
11:36
Нет.
16 Вафель
 
20.12.17
11:37
(15) тогда задача не решается по простому. можно только "сводно" остатки проверять.
17 ermola
 
20.12.17
12:21
Да, задница.
А задача значит такая.
Есть док, фиксация остатков в ЕГАИС, грубо говоря в нем три поля, Справочник.Алкокод, Справка некая, и Количество.
Его надо собрать Справочник.Алкокод по сумме Количество.
Дальше нужны остатки, на дату.
Тут уже Справочник.Номенклатура и КонечныйОстаток.
А соответствие по справочникам в РегистрСведений.алкСоответствияАлкогольнойПродукцииЕГАИСИНоменклатуры
Причем количество соответствий на один алкокод(он в принципе уникален) из справочника номенклатура может как не быть, так и быть несколько.
Вот такая засада.
18 Вафель
 
20.12.17
12:22
(17) а в обратную сторону может быть? 1 номенклатура, но несколько кодов?
19 ermola
 
20.12.17
12:26
(18) Нет. Код уникален. Может вообще не быть. То есть связь не устанавливали.
20 Вафель
 
20.12.17
12:30
тогда тебе нужно остатки по номенклатуре свернуть до кодам, а потом уже соединять с таблицей остатков кодов
21 Вафель
 
20.12.17
12:31
если нужен только отчет, то можно в скд через объединение сделать, тогда и коды и номенклатура будут видны
22 ermola
 
20.12.17
12:32
Не вкурил.
23 Вафель
 
20.12.17
12:34
1 таблица: ном, Алк, остаток, 0
2 таблица: null, Алк, 0,  остаток
24 Вафель
 
20.12.17
12:34
и 2 группировки Алк и Ном
25 ermola
 
20.12.17
13:17
А не так случаем
1 таблица: ном, null, остаток, 0
2 таблица: null, Алк, 0,  остаток