8.х Параметры в ТЗ или как не делать запрос в цикле.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем TODD22, 24 сен 2015.

  1. TopicStarter Overlay
    TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Здравствуйте.

    У меня есть ТЗ вида:

    "Район, Контрагент"

    Мне нужно получить все документы для по контрагентам и определённым районам.

    Не обходить же ТЗ в цикле. Как можно передать в запрос параметры?

    Выгрузить колонки в массив и использовать конструкцию вида "Район В (&Районы) И Контрагент В (&Контрагенты)".

    Или как то иначе?
  2. vartanet
    Offline

    vartanet Опытный в 1С Команда форума

    Регистрация:
    16 ноя 2010
    Сообщения:
    2.698
    Симпатии:
    15
    Баллы:
    29
    ТЗ1 = ТЗ.Скопировать(Новый Структура("Район, Контрагент", Район, Контрагент));
    --- Объединение сообщений, 24 сен 2015 ---
    упс.. может я неправильно понял задачу..
    --- Объединение сообщений, 24 сен 2015 ---
    ТЗ1 = ТЗ.Скопировать();
    ТЗ1.Свернуть("Район, Контрагент");

    Для каждого СтрокаТЗ1 из ТЗ1 Цикл
    ТЗ2 = ТЗ.Скопировать(Новый Структура("Район, Контрагент", СтрокаТЗ1.Район, СтрокаТЗ1.Контрагент));
    // делаем что-то с ТЗ2
    КонецЦикла;
    Последнее редактирование: 24 сен 2015
  3. TopicStarter Overlay
    TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Задача получить запросом документы.

    В качестве параметров есть ТЗ со списком районов и контрагентов.

    Можно обойти ТЗ в цикле и передавать в запрос параметры. Но тогда получится что запрос выполнится столько же раз сколько и строк в ТЗ.
    То есть будет запрос в цикле.

    Мне нужно получить всё за один запрос.
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Передай ТЗ в запрос в качестве параметра и потом используй данные этой таблицы.
  5. TopicStarter Overlay
    TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Вадим ума не хватает :)
    Вроде как передать понимаю.

    Но что дальше делать... не понятно.

    Вопрос по другому запросу.

    Код:
    ВЫБРАТЬ
        РеализацияТоваровУслуг.Контрагент,
        РеализацияТоваровУслуг.СуммаДокумента,
        РеализацияТоваровУслуг.Ссылка
    ПОМЕСТИТЬ ДокументыРеализации
    ИЗ
        Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    ГДЕ
        РеализацияТоваровУслуг.Проведен = ИСТИНА
        И РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
        И РеализацияТоваровУслуг.Организация = &Организация
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        МаршрутныйЛист_НСКДокументыНаДоставку.РеализацияТоваров.Ссылка
    ПОМЕСТИТЬ МаршрутныеЛисты
    ИЗ
        Документ.МаршрутныйЛист_НСК.ДокументыНаДоставку КАК МаршрутныйЛист_НСКДокументыНаДоставку
    ГДЕ
        МаршрутныйЛист_НСКДокументыНаДоставку.Ссылка.Проведен = ИСТИНА
        И МаршрутныйЛист_НСКДокументыНаДоставку.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
        И МаршрутныйЛист_НСКДокументыНаДоставку.Ссылка.Организация = &Организация
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ДокументыРеализации.Контрагент,
        ДокументыРеализации.СуммаДокумента,
        ДокументыРеализации.Ссылка
    ПОМЕСТИТЬ РезультирующаяВТ
    ИЗ
        ДокументыРеализации КАК ДокументыРеализации
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ МаршрутныеЛисты КАК МаршрутныеЛисты
            ПО ДокументыРеализации.Ссылка <> МаршрутныеЛисты.РеализацияТоваровСсылка.Ссылка
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ЗначенияСвойствОбъектов.Объект,
        ЗначенияСвойствОбъектов.Значение
    ПОМЕСТИТЬ ВТ_СвойстваОбъектов
    ИЗ
        РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
    ГДЕ
        ЗначенияСвойствОбъектов.Свойство = &ПВХ
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ВТ_СвойстваОбъектов.Значение КАК РайонДоставки,
        РезультирующаяВТ.Контрагент КАК Контрагент,
        СУММА(РезультирующаяВТ.СуммаДокумента) КАК СуммаДокумента
    ИЗ
        РезультирующаяВТ КАК РезультирующаяВТ
            ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СвойстваОбъектов КАК ВТ_СвойстваОбъектов
            ПО РезультирующаяВТ.Ссылка = ВТ_СвойстваОбъектов.Объект
    
    СГРУППИРОВАТЬ ПО
        ВТ_СвойстваОбъектов.Значение,
        РезультирующаяВТ.Контрагент
       
    
    УПОРЯДОЧИТЬ ПО
        РезультирующаяВТ.Контрагент.Наименование,
        ВТ_СвойстваОбъектов.Значение.Наименование
    ИТОГИ
        СУММА(СуммаДокумента)
    ПО
        РайонДоставки
    Почему то задваивает результат. Задваивать стал после того как в маршрутном листе стало несколько документов с разными районами как мне кажется. Как написать его так что бы он при любом количестве мне ничего не задваивал?
    Задваивает в запросе.jpg
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Дык эта:

    Выбрать ВнешниеДанные.Район, ВнешниеДанные.Контрагент Поместить ВТ_ВнешниеДанные из &Таблица как ВнешниеДанные
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Ты прям меня удивляешь....а как же все твои сертификаты, которых нет у меня? :)
  8. TopicStarter Overlay
    TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    Как передать ВТ в запрос я знаю...
    У меня сертификаты консультанта :) А профы так это вообще не котируемые сертификаты. Там просто зубрёжка вопросов.
    До платформы я ещё не дошёл. Начал готовится и тут другими сертификатами отвлёкся :)
  9. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    НУ я то же за то что ты ТЗ передать в Запрос как ВТ.
    А там уже в условиях пищи Где Докумен.Контрагент в (Выбрать Вт.Контрагент из ВТ) ну типа того
  10. TopicStarter Overlay
    TODD22
    Online

    TODD22 Профессионал в 1С Команда форума

    Регистрация:
    23 фев 2009
    Сообщения:
    4.755
    Симпатии:
    146
    Баллы:
    104
    По ТЗ понял. Вопрос по задвоению данных в результате запроса. Может кто нибудь подскажет?

    В результате запроса должны быть строки из ВТ релизаций минус строки из ВТ Маршрутные листы. А он мне всё задвоил в результате запроса.... :(
  11. Draco
    Offline

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.628
    Симпатии:
    946
    Баллы:
    204
    А зачем тебе тогда Внутренее соедениение?
    ВЫБРАТЬ
    ДокументыРеализации.Контрагент,
    ДокументыРеализации.СуммаДокумента,
    ДокументыРеализации.Ссылка
    ПОМЕСТИТЬ РезультирующаяВТ
    ИЗ
    ДокументыРеализации КАК ДокументыРеализации
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ МаршрутныеЛисты КАК МаршрутныеЛисты
    ПО ДокументыРеализации.Ссылка <> МаршрутныеЛисты.РеализацияТоваровСсылка.Ссылка

    Разве нельзя что то типа

    ВЫБРАТЬ
    ДокументыРеализации.Контрагент,
    ДокументыРеализации.СуммаДокумента,
    ДокументыРеализации.Ссылка
    ПОМЕСТИТЬ РезультирующаяВТ
    ИЗ
    ДокументыРеализации КАК ДокументыРеализации
    Где
    ДокументыРеализации.Ссылка НЕ В( Выбрать РеализацияТоваровСсылка.Ссылка ИЗ МаршрутныеЛисты)



    НУ типа берем реализации но не те что в маршрутных листах разве это не строки из ВТ релизаций минус строки из ВТ Маршрутные листы.
    TODD22 нравится это.

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