Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
12 Дек 2017, 22:55
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Вывод результата запроса через условие другого запроса  (Прочитано 2900 раз)

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

Оффлайн jonik_joker

  • *
  • Сообщений: 22
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-09-17
  • Сайт: 
  • Профессия: Разработчик 1С
Всем добрый день. Посоветуйте как быть: есть запрос из которого впоследствии делается 2 выборки, по результатам каждой выборки заполняется табличный документ. В 1-й выборке соединение документа и регистра накоплений, во 2-м - ТЧ этого документа и другого регистра накоплений. Смысл отчета: если в результате выполнения 1-го запроса во 2-й выборке не окажется необходимых мне параметров( нет записей в регистре накоплений ), то выполнить 2-й запрос,где эти параметры есть и соответственно соединить с данными из 1-й выборки.

Привожу код (немного длинноват):

Запрос=Новый Запрос;
    Запрос.УстановитьПараметр("Клиент",Клиент);
    Запрос.УстановитьПараметр("Грузополучатель",Грузополучатель);
    Запрос.Параметры.Вставить("Инвойс",Инвойс);
    Запрос.Параметры.Вставить("Заявка",Заявка);
    Запрос.Параметры.Вставить("ДатаНачала",НачалоДня(ДатаНачала));
    Запрос.Параметры.Вставить("ДатаКонца",КонецДня(ДатаКонца));
   
   
    Запрос.Текст="ВЫБРАТЬ
                 |    ОборотыДенежныхСредствОстаткиИОбороты.СуммаПриход КАК СуммаИнвойс,
                 |    ОборотыДенежныхСредствОстаткиИОбороты.Инвойс,
                 |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка КАК Заявка,
                 |    ОборотыДенежныхСредствОстаткиИОбороты.Инвойс.Номер КАК НомерИнвойс,
                 |    ОборотыДенежныхСредствОстаткиИОбороты.Инвойс.Дата КАК ДатаИнвойс,
                 |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомер КАК НомерЗаказ,
                 |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомерЗаказаНаПроизводство КАК НомерЗаявка,
                 |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата КАК ДатаЗаявка,
                 |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.СоставИтогСтоимость КАК СуммаЗаявка,
                 |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент,
                 |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель,
                 |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Валюта,
                 |    ЗаявкаНаПоставкуУсловиеОплаты.ВариантОплаты КАК ВариантОплаты,
                 |    ЗаявкаНаПоставкуУсловиеОплаты.Процент,
                 |    ЗаявкаНаПоставкуУсловиеОплаты.СДаты КАК СДаты,
                 |    ЗаявкаНаПоставкуУсловиеОплаты.ВТечение,
                 |    ОборотыДенежныхСредствОстаткиИОбороты.Период
                 |ИЗ
                 |    Документ.ЗаявкаНаПоставку.УсловиеОплаты КАК ЗаявкаНаПоставкуУсловиеОплаты
                 |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОборотыДенежныхСредств.ОстаткиИОбороты(, , Регистратор, , ) КАК ОборотыДенежныхСредствОстаткиИОбороты
                 |        ПО ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = ОборотыДенежныхСредствОстаткиИОбороты.Заявка
                 |ГДЕ
                 |    (&Клиент = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
                 |            ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент = &Клиент)
                 |    И (&Грузополучатель = ЗНАЧЕНИЕ(Справочник.Клиенты.ПустаяСсылка)
                 |            ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель = &Грузополучатель)
                 |    И ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
                 |    И (&Заявка = ЗНАЧЕНИЕ(Документ.ЗаявкаНаПоставку.ПустаяСсылка)
                 |            ИЛИ ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = &Заявка)
                 |    И (&Инвойс = ЗНАЧЕНИЕ(Документ.ПрохождениеТаможни.ПустаяСсылка)
                 |            ИЛИ ОборотыДенежныхСредствОстаткиИОбороты.Инвойс = &Инвойс)
                 |ИТОГИ ПО
                 |    Заявка";   
   
    РезультатЗапроса=Запрос.Выполнить();
    ДокументДанных=Новый ТабличныйДокумент;
   
    ДатаНачалаФормат=Формат(ДатаНачала,"ДФ=dd.MM.yyyy");
    ДатаКонцаФормат=Формат(ДатаКонца,"ДФ=dd.MM.yyyy");
       
    Макет=Отчеты.Отчет1.ПолучитьМакет("Макет1");
    ОбластьШапкаЗаявки=Макет.ПолучитьОбласть("ШапкаЗаявки");
    ОбластьЗаголовок=Макет.ПолучитьОбласть("Заголовок");
    ОбластьСтрока=Макет.ПолучитьОбласть("Строка");
    ОбластьИтог=Макет.ПолучитьОбласть("Итог");
    ОбластьСтрЗаявки=Макет.ПолучитьОбласть("ШапкаЗаявки");
    ОбластьШапкаОплаты=Макет.ПолучитьОбласть("ШапкаОплаты");
    ОбластьШапкаОтчета=Макет.ПолучитьОбласть("ШапкаОтчета");
    ОбластьШапкаКонтрагент=Макет.ПолучитьОбласть("ШапкаКонтрагент");
       
    ОбластьШапкаОтчета.Параметры.ДатаНачала=ДатаНачалаФормат;
    ОбластьШапкаОтчета.Параметры.ДатаКонца=ДатаКонцаФормат;
    ДокументДанных.Вывести(ОбластьШапкаОтчета);
   
    ВыборкаПоЗаявке=РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                                 
    Пока ВыборкаПоЗаявке.Следующий() Цикл
       
        ОбластьЗаголовок.Параметры.Валюта=ВыборкаПоЗаявке.Валюта;   
        ОбластьШапкаЗаявки.Параметры.Заявка=ВыборкаПоЗаявке.Заявка;
        ОбластьШапкаКонтрагент.Параметры.Клиент=ВыборкаПоЗаявке.Клиент;
        ОбластьШапкаКонтрагент.Параметры.Грузополучатель=ВыборкаПоЗаявке.Грузополучатель;
        ОбластьШапкаОтчета.Параметры.ДатаНачала=ДатаНачалаФормат;
        ОбластьШапкаОтчета.Параметры.ДатаКонца=ДатаКонцаФормат;
        ДокументДанных.Вывести(ОбластьШапкаКонтрагент);
        ДокументДанных.Вывести(ОбластьШапкаЗаявки);
        ДокументДанных.Вывести(ОбластьЗаголовок);   
                   
         ВыборкаПоИнвойсу=ВыборкаПоЗаявке.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
                 
         Пока ВыборкаПоИнвойсу.Следующий() Цикл
             
             ДатаИнвойс=ВыборкаПоИнвойсу.ДатаИнвойс;
             ТекЗаявка=ВыборкаПоИнвойсу.Заявка;
                     
                  Если ДатаИнвойс=Null Тогда
                                                 
                        Текст="ВЫБРАТЬ РАЗЛИЧНЫЕ
                                             |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка КАК Заявка,
                                             |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомер КАК НомерЗаказ,
                                             |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.ВнутреннийНомерЗаказаНаПроизводство КАК НомерЗаявка,
                                             |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Дата КАК ДатаЗаявка,
                                             |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.СоставИтогСтоимость КАК СуммаЗаявка,
                                             |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Клиент,
                                             |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Грузополучатель,
                                             |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка.Валюта,
                                             |    ЗаявкаНаПоставкуУсловиеОплаты.ВариантОплаты КАК ВариантОплаты,
                                             |    ЗаявкаНаПоставкуУсловиеОплаты.Процент,
                                             |    ЗаявкаНаПоставкуУсловиеОплаты.СДаты КАК СДаты,
                                             |    ЗаявкаНаПоставкуУсловиеОплаты.ВТечение,
                                             |    ПрохождениеТаможенногоОформления.Период,
                                             |    ПрохождениеТаможенногоОформления.Регистратор КАК Инвойс,
                                             |    ПрохождениеТаможенногоОформления.Регистратор.Номер КАК НомерИнвойс,
                                             |    ПрохождениеТаможенногоОформления.Регистратор.Дата КАК ДатаИнвойс,
                                             |    ПрохождениеТаможенногоОформления.Регистратор.СтоимостьИтог КАК СуммаИнвойс
                                             |ИЗ
                                             |    Документ.ЗаявкаНаПоставку.УсловиеОплаты КАК ЗаявкаНаПоставкуУсловиеОплаты
                                             |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПрохождениеТаможенногоОформления КАК ПрохождениеТаможенногоОформления
                                             |        ПО ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = ПрохождениеТаможенногоОформления.Заявка
                                             |ГДЕ
                                             |    ЗаявкаНаПоставкуУсловиеОплаты.Ссылка = &ТекЗаявка
                                             |ИТОГИ ПО
                                             |    Заявка";
                                             
                    ЗапросТаможня=Новый Запрос;
                    ЗапросТаможня.УстановитьПараметр("ТекЗаявка",ТекЗаявка);
                    ЗапросТаможня.Текст=Текст;
                    ТекРезультат=ЗапросТаможня.Выполнить().Выгрузить();
                 
                         
                     КонецЕсли;
                     
              ДатаЗаявкаФормат=Формат(ВыборкаПоИнвойсу.ДатаЗаявка,"ДФ=dd.MM.yyyy");
              ДатаИнвойсФормат=Формат(ВыборкаПоИнвойсу.ДатаИнвойс,"ДФ=dd.MM.yyyy");
              ОбластьИтог.Параметры.СуммаЗаявка=ВыборкаПоИнвойсу.СуммаЗаявка;
             
              ДниОплаты=ВыборкаПоИнвойсу.ВТечение;
              СрокОплаты=ДатаИнвойс+ДниОплаты*24*60*60;
              СрокОплатыФормат=Формат(СрокОплаты,"ДФ=dd.MM.yyyy");
              ОбластьСтрока.Параметры.СрокОплаты=СрокОплатыФормат;
                     
              Период=ВыборкаПоИнвойсу.Период;
              ПериодФормат=Формат(Период,"ДФ=dd.MM.yyyy");
                     
              Если Период=Неопределено И ТекущаяДата()>СрокОплаты Тогда
                  Долг="Да";
              Иначе
                  Долг="Нет";
              КонецЕсли;
                     
              ОбластьСтрока.Параметры.Долг=Долг;
              ОбластьСтрока.Параметры.ДатаОплаты=ПериодФормат;
              ОбластьСтрока.Параметры.НомерЗаявка=ВыборкаПоИнвойсу.НомерЗаявка;
              ОбластьСтрока.Параметры.ДатаЗаявка=ДатаЗаявкаФормат;                     
              ОбластьСтрока.Параметры.НомерИнвойс=ВыборкаПоИнвойсу.НомерИнвойс;
              ОбластьСтрока.Параметры.ДатаИнвойс=ДатаИнвойсФормат;
              ОбластьСтрока.Параметры.СуммаИнвойс=ВыборкаПоИнвойсу.СуммаИнвойс;
              ОбластьСтрока.Параметры.НомерЗаказ=ВыборкаПоИнвойсу.НомерЗаказ;
              ОбластьСтрока.Параметры.ВариантОплаты=ВыборкаПоИнвойсу.ВариантОплаты;
              ОбластьСтрока.Параметры.Процент=ВыборкаПоИнвойсу.Процент;
              ОбластьСтрока.Параметры.СДаты=ВыборкаПоИнвойсу.СДаты;
              ОбластьСтрока.Параметры.ВТечение=ВыборкаПоИнвойсу.ВТечение;
              ДокументДанных.Вывести(ОбластьСтрока);
                             
     КонецЦикла;
        ДокументДанных.Вывести(ОбластьИтог); 
   КонецЦикла;             
   Возврат ДокументДанных;

Соответственно, условие

ДатаИнвойс=ВыборкаПоИнвойсу.ДатаИнвойс;
             ТекЗаявка=ВыборкаПоИнвойсу.Заявка;
                     
                  Если ДатаИнвойс=Null Тогда

мои потуги реализовать данную задачу. Буду признателен за любые советы.


Оффлайн MuI_I_Ika

  • Гончаров Михаил
  • Администратор
  • *****
  • Сообщений: 6557
  • РЕПУТАЦИЯ: 775
  • КПД: 12%
  • Регистрация: 2012-08-15
    • Skype: MuI_I_Ika
  • Сайт: 
  • Профессия: Программист 1С
А что не получается? А то изучать весь код и смотреть что там неправильно лень.

Оффлайн jonik_joker

  • *
  • Сообщений: 22
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2013-09-17
  • Сайт: 
  • Профессия: Разработчик 1С
все, спасибо, сам разобрался.


Теги:
 

Как объединить объект в реквизите формы с типом "ДокументОбъект" и объект формы, созданной через "ПолучитьФорму()"?

Автор acces969Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 242
Последний ответ 06 Авг 2017, 21:22
от alex0402
Вывод комментария в документ "Расходная накладная" из документа "Заказ покупателя"

Автор ОльгаПлРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 204
Последний ответ 07 Окт 2017, 19:03
от Norfolk
Здравствуйте!!! Необходимо востановить ИБ на определенную дату. Копии через конфигуратор на эту дату не сделали, но есть файл в формате CD в rar (Это программа сама сделала резервную копию). Возможно ли востановит ее в 1с и работать (как при загрузке копи

Автор Лариса198888Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1868
Последний ответ 24 Май 2016, 17:17
от Kironten
Ошибка при загрузке данных через (Обработка "Выгрузка и загрузка данных XML")

Автор Сергей_87Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 8556
Последний ответ 26 Апр 2012, 23:08
от Dethmontt
Вывод линейной таблицы посредством СКД в виде "шахматки"

Автор VdegРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 9
Просмотров: 10706
Последний ответ 19 Апр 2011, 11:12
от Klyacksa

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
170 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
55 Сообщений
alex0402
49 Сообщений
andron81_81
42 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
BuhRust
30 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 311
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal