Имя: Пароль:
1C
1С v8
УТ11 РегистрНакопления ЗаказыПоставщикам
0 eGorZZZ
 
16.12.15
01:35
Не пинайте сильно, но очень нужно из РегистрНакопления ЗаказыПоставщикам.Остатки выдернуть ДатуПоступления товара по условию. Нужно получить что-то типа:
    |    ВЫБОР
    |        КОГДА ТоварыКПоступлению.ЗаказПоставщику.ПоступлениеОднойДатой ТОГДА
    |            ТоварыКПоступлению.ЗаказПоставщику.ДатаПоступления
    |        ИНАЧЕ
    |            ТоварыКПоступлению.ЗаказПоставщику.Товары.(
    |            ДатаПоступления
    |            )
    |    КОНЕЦ КАК ДатаПоступления
1C-ка ругается на отсутствие ДатаПоступления в ТЧ.Товары дока ЗаказПоставщику. Какие есть варианты решения этой задачи? Вложенный запрос? Соединение с табличной частью?
1 Vladal
 
16.12.15
01:52
Используй поле Ссылка из табличной части Товары
2 Vladal
 
16.12.15
01:55
"ВЫБРАТЬ
    |    ПоступлениеТоваровУслугТовары.Ссылка.ДатаВходящегоДокумента,
    |    ПоступлениеТоваровУслугТовары.Ссылка.ДоговорКонтрагента,
    |    ПоступлениеТоваровУслугТовары.Ссылка.Контрагент
    |ИЗ
    |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары";
3 eGorZZZ
 
16.12.15
02:14
(2) Предлагаешь сделать вложенный запрос? А как его впихнуть в приведённое выше условие выбора?
Вообще, весь запрос у меня выглядит, как показано ниже, осталось выдернуть из заказов поставщикам предполагаемую дату поступления товаров, которая там может быть в двух местах - в шапке, и в ТЧ Товары по каждой строке своя, в зависимости от флага ПоступлениеОднойДатой (Булево):
    "ВЫБРАТЬ
    |    СвободныеОстатки.Номенклатура КАК Номенклатура,
    |    СвободныеОстатки.Характеристика КАК Характеристика,
    |    ПРЕДСТАВЛЕНИЕ(СвободныеОстатки.Номенклатура) КАК ПредставлениеНоменклатуры,
    |    СвободныеОстатки.Номенклатура.Наименование КАК Наименование,
    |    СвободныеОстатки.Номенклатура.Артикул КАК Артикул,
    |    СвободныеОстатки.Номенклатура.Родитель КАК Родитель,
    |    СУММА(СвободныеОстатки.ВНаличииОстаток) КАК КоличествоОстаток,
    |    СУММА(СвободныеОстатки.ВРезервеСоСкладаОстаток) КАК ВРезервеСоСкладаОстаток,
    |    СУММА(СвободныеОстатки.ВРезервеПодЗаказОстаток) КАК ВРезервеПодЗаказОстаток,
    |    0 КАК КПоступлениюОстаток,
    |    СвободныеОстатки.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения
    |ПОМЕСТИТЬ ВТ_ОСТАТКИЗАКАЗЫ
    |ИЗ
    |    РегистрНакопления.СвободныеОстатки.Остатки(
    |            &Дата,
    |            Номенклатура В
    |                    (ВЫБРАТЬ
    |                        Номенклатура.Ссылка
    |                    ИЗ
    |                        Справочник.Номенклатура КАК Номенклатура
    |                    ГДЕ
    |                        НЕ Номенклатура.Ссылка В ИЕРАРХИИ (&СписокГрупп))
    |                И НЕ Склад В (&СписокСкладовИсключения)) КАК СвободныеОстатки
    |ГДЕ
    |    (СвободныеОстатки.ВНаличииОстаток > 0
    |            ИЛИ СвободныеОстатки.ВРезервеСоСкладаОстаток > 0
    |            ИЛИ СвободныеОстатки.ВРезервеПодЗаказОстаток > 0)
    |
    |СГРУППИРОВАТЬ ПО
    |    СвободныеОстатки.Номенклатура,
    |    СвободныеОстатки.Характеристика,
    |    СвободныеОстатки.Номенклатура.Наименование,
    |    СвободныеОстатки.Номенклатура.Артикул,
    |    СвободныеОстатки.Номенклатура.Родитель,
    |    СвободныеОстатки.Номенклатура.ЕдиницаИзмерения
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |    ТоварыКПоступлению.Номенклатура,
    |    ТоварыКПоступлению.Характеристика,
    |    ПРЕДСТАВЛЕНИЕ(ТоварыКПоступлению.Номенклатура),
    |    ТоварыКПоступлению.Номенклатура.Наименование,
    |    ТоварыКПоступлению.Номенклатура.Артикул,
    |    ТоварыКПоступлению.Номенклатура.Родитель,
    |    0,
    |    0,
    |    0,
    |    СУММА(ТоварыКПоступлению.ЗаказаноОстаток),
    |    ТоварыКПоступлению.Номенклатура.ЕдиницаИзмерения
    |ИЗ
    |    РегистрНакопления.ЗаказыПоставщикам.Остатки(
    |            &Дата,
    |            Номенклатура В
    |                    (ВЫБРАТЬ
    |                        Номенклатура.Ссылка
    |                    ИЗ
    |                        Справочник.Номенклатура КАК Номенклатура
    |                    ГДЕ
    |                        НЕ Номенклатура.Ссылка В ИЕРАРХИИ (&СписокГрупп))
    |                И НЕ Склад В (&СписокСкладовИсключения)) КАК ТоварыКПоступлению
    |ГДЕ
    |    ТоварыКПоступлению.ЗаказаноОстаток > 0
    |
    |СГРУППИРОВАТЬ ПО
    |    ТоварыКПоступлению.Номенклатура,
    |    ТоварыКПоступлению.Характеристика,
    |    ТоварыКПоступлению.Номенклатура.Наименование,
    |    ТоварыКПоступлению.Номенклатура.Артикул,
    |    ТоварыКПоступлению.Номенклатура.Родитель,
    |    ТоварыКПоступлению.Номенклатура.ЕдиницаИзмерения
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ВТ_ОСТАТКИЗАКАЗЫ.Номенклатура,
    |    ПРЕДСТАВЛЕНИЕ(ВТ_ОСТАТКИЗАКАЗЫ.Номенклатура) КАК ПредставлениеНоменклатуры,
    |    ВТ_ОСТАТКИЗАКАЗЫ.Наименование,
    |    ВТ_ОСТАТКИЗАКАЗЫ.Артикул,
    |    ВТ_ОСТАТКИЗАКАЗЫ.Родитель,
    |    СУММА(ВТ_ОСТАТКИЗАКАЗЫ.КоличествоОстаток) КАК КоличествоОстаток,
    |    СУММА(ВТ_ОСТАТКИЗАКАЗЫ.ВРезервеСоСкладаОстаток) КАК ВРезервеСоСкладаОстаток,
    |    СУММА(ВТ_ОСТАТКИЗАКАЗЫ.ВРезервеПодЗаказОстаток) КАК ВРезервеПодЗаказОстаток,
    |    СУММА(ВТ_ОСТАТКИЗАКАЗЫ.КПоступлениюОстаток) КАК КПоступлениюОстаток,
    |    ВТ_ОСТАТКИЗАКАЗЫ.ЕдиницаИзмерения,
    |    МАКСИМУМ(ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0)) КАК Цена,
    |    ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта.Код, ""978"") КАК КодВалюты
    |ИЗ
    |    ВТ_ОСТАТКИЗАКАЗЫ КАК ВТ_ОСТАТКИЗАКАЗЫ
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
    |        ПО ВТ_ОСТАТКИЗАКАЗЫ.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
    |            И ВТ_ОСТАТКИЗАКАЗЫ.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
    |ГДЕ
    |    ЦеныНоменклатурыСрезПоследних.ВидЦены.Идентификатор = ""РозничнаяЕвро""
    |
    |СГРУППИРОВАТЬ ПО
    |    ВТ_ОСТАТКИЗАКАЗЫ.Номенклатура,
    |    ЦеныНоменклатурыСрезПоследних.Валюта.Код,
    |    ВТ_ОСТАТКИЗАКАЗЫ.Наименование,
    |    ВТ_ОСТАТКИЗАКАЗЫ.Артикул,
    |    ВТ_ОСТАТКИЗАКАЗЫ.Родитель,
    |    ВТ_ОСТАТКИЗАКАЗЫ.ЕдиницаИзмерения";
4 eGorZZZ
 
16.12.15
02:29
Если делать так
    |    ВЫБОР
    |        КОГДА ТоварыКПоступлению.ЗаказПоставщику.ПоступлениеОднойДатой
    |            ТОГДА ТоварыКПоступлению.ЗаказПоставщику.ДатаПоступления
    |        ИНАЧЕ
    |            ТоварыКПоступлению.ЗаказПоставщику.Товары.Ссылка.ДатаПоступления
    |    КОНЕЦ
То 1с-ка ругается, грит низзя объединять обычное поле со вложенными таблицами (без "Ссылка" тож самое, истественно), что вполне понятно - надо как-то соединяться с ТЧ документа, по всей видимости...
5 hhhh
 
16.12.15
07:15
ТоварыКПоступлению.ЗаказПоставщику.Товары.ДатаПоступления


в Заказе поставщику одна строчка всегда у вас? Странно.
6 Enterprise
 
16.12.15
07:29
(0) Так если дату поступления в шапке указывать он её всё равно в табличную часть проставляет. В УТ 11 так. Зачем из шапки брать?
7 eGorZZZ
 
16.12.15
14:46
(5) такой вариант тоже не прокатит в любом случае, см. (4).
Мне из заказа поставщику, как из регистратора, только одну строчку и надо выдернуть - всё остальное уже есть из регистров накопления.
(6) Это понятно. Ты хоть код в (0) посмотри - объяснение в (3). Если флаг ПоступлениеОднойДатой установлен, то в ТЧ попадает одна и таже дата из шапки, если же флаг не установлен, то в ТЧ можно предполагаемую дату поступления проставлять по каждой позиции свою, и это как раз рабочая ситуация - заказ на поставку делается один общий, а сроки поставки по разным позициям разные, и это надо отрабатывать.
Но суть твоего вопроса я понял - нет необходимости брать дату из шапки, т.к. она всегда проставляется в ТЧ вне зависимости от флага, т.е. можно всегда брать из ТЧ.
8 eGorZZZ
 
17.12.15
14:02
Вобчем, идея получения ДатаПоступления в данном запросе мертворожденная, странно, что об этом никто не сказал.
Смысл в том, что после объединения двух запросов в виртуальной таблице не будет выполнено сложение результатов по полю Номенклатура в связи с различными данными в обоих запросах в полях ЗаказПоставщику и ДатаПоступления (в первом запросе эти поля принимают значение NULL, а во втором - это конкретные значения документа и даты). Дату поступления нужно выдергивать уже при обработке результатов выборки отдельными запросами, позиционируясь по Номенклатуре с положительным значением ЗаказаноОстаток (сначала находится сам ЗаказПоставщику, а уже из него берётся ДатаПоступления).
По другому я придумать пока не смог. Если есть идеи - пишите - буду благодарен :)