Запрос

Тема в разделе "1C и всё что с ней связано", создана пользователем Renat11111, 7 май 2008.

  1. Renat11111

    Renat11111 Well-Known Member

    Регистрация:
    20 апр 2008
    Сообщения:
    123
    Симпатии:
    0
    Не могу разобраться с запросом в справочнике по запросу ничего нет. Кому не трудно плиз объясните следующие участки кода.
    МАКСИМУМ(Док.КоличествоУчет - Док.Количество) КАК КоличествоОтклонение,
    | ВЫБОР
    | КОГДА СУММА(ВложенныйЗапрос.Количество) ЕСТЬ NULL ТОГДА
    | 0
    | ИНАЧЕ
    | СУММА(ВложенныйЗапрос.Количество)
    | КОНЕЦ КАК КоличествоСписанное,

    и

    | ГДЕ
    | ДокОтчетККМ.Ссылка.Проведен
    | И ДокОтчетККМ.Ссылка.ИнвентаризацияТоваровНаСкладе = &ДокументОснованиеСсылка) КАК ВложенныйЗапрос

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

    вот весь запрос:


    запрос = Новый Запрос;

    Запрос.УстановитьПараметр("ДокументСсылка", Ссылка);
    Запрос.УстановитьПараметр("ДокументОснованиеСсылка", ДокументОснование);

    Запрос.Текст =
    "ВЫБРАТЬ
    | Док.Номенклатура,
    | Док.ЕдиницаИзмерения,
    | Док.ЕдиницаИзмеренияМест,
    | Док.Ссылка.Склад КАК Склад,
    | МАКСИМУМ(Док.КоличествоУчет - Док.Количество) КАК КоличествоОтклонение,
    | ВЫБОР
    | КОГДА СУММА(ВложенныйЗапрос.Количество) ЕСТЬ NULL ТОГДА
    | 0
    | ИНАЧЕ
    | СУММА(ВложенныйЗапрос.Количество)
    | КОНЕЦ КАК КоличествоСписанное,
    | Док.ЦенаВРознице КАК Цена,
    | Док.ХарактеристикаНоменклатуры,
    | Док.СерияНоменклатуры,
    | Док.Качество
    |ИЗ
    | Документ.ИнвентаризацияТоваровНаСкладе.Товары КАК Док
    |ЛЕВОЕ СОЕДИНЕНИЕ
    | (ВЫБРАТЬ
    | ДокСписание.Номенклатура,
    | ДокСписание.ХарактеристикаНоменклатуры,
    | ДокСписание.СерияНоменклатуры,
    | ДокСписание.Ссылка.Склад КАК Склад,
    | ДокСписание.Количество КАК Количество,
    | ДокСписание.Цена
    | ИЗ
    | Документ.СписаниеТоваров.Товары КАК ДокСписание
    | ГДЕ
    | ДокСписание.Ссылка <> &ДокументСсылка
    | И ДокСписание.Ссылка.Проведен
    | И ДокСписание.Ссылка.ИнвентаризацияТоваровНаСкладе = &ДокументОснованиеСсылка
    |
    | ОБЪЕДИНИТЬ ВСЕ
    |
    | ВЫБРАТЬ
    | ДокОтчетККМ.Номенклатура,
    | ДокОтчетККМ.ХарактеристикаНоменклатуры,
    | ДокОтчетККМ.СерияНоменклатуры,
    | ДокОтчетККМ.Склад КАК Склад,
    | ДокОтчетККМ.Количество КАК Количество,
    | ДокОтчетККМ.Цена
    | ИЗ
    | Документ.ОтчетОРозничныхПродажах.Товары КАК ДокОтчетККМ
    | ГДЕ
    | ДокОтчетККМ.Ссылка.Проведен
    | И ДокОтчетККМ.Ссылка.ИнвентаризацияТоваровНаСкладе = &ДокументОснованиеСсылка) КАК ВложенныйЗапрос
    |ПО
    | Док.Номенклатура = ВложенныйЗапрос.Номенклатура
    | И Док.ХарактеристикаНоменклатуры = ВложенныйЗапрос.ХарактеристикаНоменклатуры
    | И Док.СерияНоменклатуры = ВложенныйЗапрос.СерияНоменклатуры
    | И Док.Ссылка.Склад = ВложенныйЗапрос.Склад " +
    ?(Склад.ВидСклада = Перечисления.ВидыСкладов.НеавтоматизированнаяТорговаяТочка, "
    | И Док.Цена = ВложенныйЗапрос.Цена", "") + "
    |
    |ГДЕ
    | Док.Ссылка = &ДокументОснованиеСсылка
    | И Док.КоличествоУчет - Док.Количество > 0
    |
    |СГРУППИРОВАТЬ ПО
    | Док.Ссылка.Склад,
    | Док.Номенклатура,
    | Док.ЕдиницаИзмерения,
    | Док.ЕдиницаИзмеренияМест,
    | Док.ЦенаВРознице,
    | Док.ХарактеристикаНоменклатуры,
    | Док.СерияНоменклатуры,
    | Док.Качество";

    РезультатЗапроса = Запрос.Выполнить();

    Склад = ДокументОснование.Склад;

    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл

    КоличествоСписать = Выборка.КоличествоОтклонение - Выборка.КоличествоСписанное;

    Если КоличествоСписать <= 0 Тогда
    Продолжить;
    КонецЕсли;

    СтрокаТабличнойЧасти = Товары.Добавить();

    СтрокаТабличнойЧасти.Номенклатура = Выборка.Номенклатура;
    СтрокаТабличнойЧасти.ЕдиницаИзмерения = Выборка.ЕдиницаИзмерения;
    СтрокаТабличнойЧасти.ЕдиницаИзмеренияМест = Выборка.ЕдиницаИзмеренияМест;
    СтрокаТабличнойЧасти.Коэффициент = Выборка.ЕдиницаИзмерения.Коэффициент;
    СтрокаТабличнойЧасти.Качество = Выборка.Качество;
    СтрокаТабличнойЧасти.Количество = КоличествоСписать;
    СтрокаТабличнойЧасти.ХарактеристикаНоменклатуры = Выборка.ХарактеристикаНоменклатуры;
    СтрокаТабличнойЧасти.СерияНоменклатуры = Выборка.СерияНоменклатуры;

    РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

    Если Склад.ВидСклада = Перечисления.ВидыСкладов.НеавтоматизированнаяТорговаяТочка Тогда

    СтрокаТабличнойЧасти.Цена = Выборка.Цена;
    РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);

    КонецЕсли;

    КонецЦикла;
     
Загрузка...

Поделиться этой страницей