7.7 Выборка значения в запросе по условию.

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем AlexFF, 29 мар 2007.

  1. TopicStarter Overlay
    AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Доброго все дня, утра , вечера !
    Я как всегда со своими проблемами :)

    Конфигурация Торговля и Склад v.7.7

    Есть вот такой запрос который прекрасно работает за одним маленьким исключением:

    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать1)
    |Период с ДатаНачала по ДатаКонца;
    |Обрабатывать НеПомеченныеНаУдаление;

    |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
    |Количество = Регистр.ОстаткиТМЦ.Количество;
    |Склад = Регистр.ОстаткиТМЦ.Склад;
    |Док = Регистр.ОстаткиТМЦ.ТекущийДокумент;
    |ДатаПоставки = Регистр.ПартииНаличие.ТекущийДокумент.ПоступлениеТМЦ.ДатаДок;

    |Функция КоличествоПриход = Приход(Количество);
    |Функция КоличествоРасход = Расход(Количество);
    |Функция КоличествоРеализ = Расход(Количество) когда ((Док.Вид() = ""Реализация"") и (Склад.Наименование = ""Основной склад""));
    |Функция КоличествоПоступление = Приход(Количество) когда ((Док.Вид() = ""ПоступлениеТМЦ"") и (Склад.Наименование = ""Основной склад""));
    |Функция КоличествоВозврат = Приход(Количество) когда ((Док.Вид() = ""ВозвратОтПокупателя"") и (Склад.Наименование = ""Основной склад""));
    |Функция КоличествоВозвратБрак = Приход(Количество) когда ((Док.Вид() = ""ВозвратОтПокупателя"") и (Склад.Наименование = ""Склад брака""));
    |Функция КоличествоВозвратУценка = Приход(Количество) когда ((Док.Вид() = ""ВозвратОтПокупателя"") и (Склад.Наименование = ""Склад уценка""));
    |Функция НачОстаток = НачОст(Количество) когда (Склад.Наименование = ""Основной склад"");
    |Функция КонОстаток = КонОст(Количество) когда (Склад.Наименование = ""Основной склад"");

    |Группировка Номенклатура Упорядочить по Номенклатура.Артикул Без Групп Все;
    |"//}}ЗАПРОС
    ;

    исключение заключается в том, что в этом же запросе мне нужно получать дату последнего поступления товара на склад и его количества. (документ "Поступление ТМЦ")

    строчка |ДатаПоставки = Регистр.ПартииНаличие.ТекущийДокумент.ПоступлениеТМЦ.ДатаДок;
    не возвращает никакого значения. Проблема то вообщем решена вот таким способом

    Если Найти(рег.ТекущийДокумент(), "Поступление") > 0 Тогда
    ДокумП.НайтиДокумент(Рег.ТекущийДокумент());
    Если ДокумП.Выбран() > 0 Тогда
    ДокумП.ВыбратьСтроки();
    Пока ДокумП.ПолучитьСтроку() >0 Цикл
    Если ДокумП.Номенклатура = Рег.Номенклатура Тогда
    Кол = ДокумП.Количество;
    Прервать;
    КонецЕсли;
    КонецЦикла;
    ПриходП = "Приход от " + ДокумП.ДатаДок + " " + Кол + " шт.";
    КонецЕсли;
    КонецЕсли;

    но этоже неправильно !!!!
    Время построения отчета - рабочий день :)
    Пытался заменить этот кусок другим запросом большой разницы не почувствовал.
    Если есть какие идеи или кто занет куда мне нужно идти - отправьте, не сочтите за труд.
  2. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    А не пробовал в запрос добавить группировку по документам?
  3. TopicStarter Overlay
    AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Поправь меня если я неправ.
    Сначала идет группировка по номенклатуре а далее по документам, если верить описанию языка группировка документов идет по дате потом по времени. В моем же случае нужна по виду документа - это меня спасло бы согласен. Далее можно было сделать группировку по строкам дркументов и я бы вытищил сразу и количество. Только вот как сделать группировку по виду документа я незнаю.
  4. Amishechka
    Offline

    Amishechka Опытный в 1С

    Регистрация:
    8 сен 2006
    Сообщения:
    361
    Симпатии:
    1
    Баллы:
    26
    Делай группировку по документам, и при переборе если это документ вида поступление, то запоминай цену и количество. таким образом, ты будешь перебирать все документы (может и долго, но надежно) и в итоге ты и получишь цену и количество из последнего поступления. Правда если за период не было поступлений, то ничего и не получишь.
  5. TopicStarter Overlay
    AlexFF
    Offline

    AlexFF Разбирающийся

    Регистрация:
    6 мар 2007
    Сообщения:
    565
    Симпатии:
    1
    Баллы:
    26
    Спасибо. Суть уловил. Вечером поковыряюсь. Если что, отпишусь здесь же.

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