Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2023, 06:28

Сопоставление значения, полученного из двух запросов

Автор dsident, 18 апр 2011, 15:37

0 Пользователей и 1 гость просматривают эту тему.

dsident

Добрый!
Ситуация такая: из хозрасчетного регистра выбираем договора контрагентов ("Договор1")(изначальная задача - найти сальдо кредиторской задолженности), а для того, чтобы узнать дату последнего платежа мы создаем еще один запрос (документы.списаниеСРасчетногоСчета), и второй вариант договора берем из запроса2 (договор2).

Возникает вопрос: как сопоставить два значения "Договор", полученного из разных запросто, чтобы дата последнего платежа по договору2 попадала в строку макета, где описан договор1?!?!?

Для ДоговорКонтрагента = запрос2.Следующий() По договорКонтрагента Цикл
обл.Параметры.дата = формат(запрос2.дата, "ДЛФ = Д");                                 
обл.параметры.разница = окр((датаотчета - запрос2.дата)/(24*3600), 0);
         КонецЦикла;


Кодом, описанным выше - заполняется поле договор2, куда должна попасть дата последнего платежа по договору, но заполняется в абсолютно произвольном порядке....

Подскажите пожалуйста, каким образом можно сопоставить два одинаковых, по сути, п

Klyacksa

Почему нельзя написать запрос, получающий все данные сразу, без последующей обработки?
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

dsident

Вообще, конечно, можно, но вопрос же не по запросам, а как правильно сопоставить два одинаковых значения, полученные из двух запросов, и если они совпадают, тогда шлеп - дата последнего платежа есть?

Klyacksa

Ну как, тогда обходить каждый раз второй запрос и подбирать... Либо поиском по результату запроса...
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

dsident

подскажите пожалуйста поподробнее, как это сделать? Я ведь начинающий....

Klyacksa

Уточню - я правильно поняла, Договор1=Договор2, только значения берутся из разных запросов?

Если да, то схема, например, такая:
1. Получаем два результата запроса: Результат1 и Результат2
2. Обходим Результат1
    По каждому Договору1 из Резушльтата1:
    2.1. Заполняем параметры области макета данными Договора1 из Результата1
    2.2. По Договору1 из Результата1 ищем Договор2 в Результате2
    2.3. Подставляем найденное значение даты в параметры области Договора1
    2.4. Выводим область
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

dsident

Да, Вы правильно поняли.

То есть начиная с пункта 2.2:
Для каждого дата из обл.параметры.дата цикл
Если договор1=договор2 тогда
обл.параметры.дата = дата

Я Вас правильно понял?

Klyacksa

Неа, не правильно. Область - это только область в макете, для вывода туда данных. Циклы по областям не делают, их используют ТОЛЬКО для вывода данных. То есть, Вы что-то где-то посчитали, подобрали, потом полученные данные вставили в параметры области и вывели ее.

Пока Результат1.Следующий() цикл
       Обл.параметры.Договор=Результат1.Договор;
       // и т.д. - заполняем нужные параметры из Результат1
       Резальтат2.Сбросить(); // так как каждый раз нужно искать во всем Результате2, позиционируем указатесь на первый элемент
       Если Результат2.НайтиСледующий(Результат1.Договор,"Договор") тогда // нашли запись с нужным договором
               Обл.параметры.Дата=Результат2.Дата;
              // здесь устанавливаем все нужные параметры из Результат2
       КонецЕсли;
       ТабДок.Вывести(Обл);
КонецЦикла;
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

cska-fanat-kz

а нельзя:
1. Написать 1й запрос, поместить в виртуальную таблицу 1
2. Написать 2й запрос, поместить в виртуальную таблицу 2
3. Соединить по общему полю...

и т.д.?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Klyacksa

2cska-fanat-kz
А зачем делать вообще два запроса если можно обойтись одним? ;)

Я уже спрашивала, на что получила ответ, что вопрос не в том, как получить данные, а в том, как обработать уже полученные таким вот образом...
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск