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

объединение двух запросов..

Автор Андрей Щ, 03 июн 2013, 10:22

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

Андрей Щ

всем привет! делаю веб-сервис в 1с. получилось так, что необходимо объединить два запроса. Проблема в том, что я не знаю как правильно их нужно объединить т.к. моя программа написанная на си шарпе. выдает ошибку. мол в 15 строке ожидается конец функции, и как раз таки на 15 строке происходит объединение второго запроса.

Функция get_all()Экспорт
ДатаОтчета = Дата(dataString);
списокСотрудников="<a>";
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ

| РаботникиОрганизацийСрезПоследних.Должность.Наименование КАК Долж,
| РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации.Наименование КАК Подразд,
| РаботникиОрганизацийСрезПоследних.Сотрудник.Наименование КАК ФИО
|
    |     ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
|
|ОБЪЕДИНИТЬ
|   ВЫБРАТЬ
|      ВЫБОР
| КОГДА СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения >= &ДатаОтчета
| ИЛИ СостояниеРаботниковОрганизацийСрезПоследних.ПериодЗавершения = &НулеваяДата
| ТОГДА СостояниеРаботниковОрганизацийСрезПоследних.Состояние
| ИНАЧЕ СостояниеРаботниковОрганизацийСрезПоследних.СостояниеЗавершения
| КОНЕЦ КАК Поле1,
| РаботникиОрганизацийСрезПоследних.Сотрудник
|ИЗ
| РегистрСведений.РаботникиОрганизаций.СрезПоследних(&ДатаОтчета) КАК РаботникиОрганизацийСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&ДатаОтчета) КАК СостояниеРаботниковОрганизацийСрезПоследних
| ПО (СостояниеРаботниковОрганизацийСрезПоследних.Сотрудник = РаботникиОрганизацийСрезПоследних.Сотрудник)";

Запрос.УстановитьПараметр("ДатаОтчета", ДатаОтчета);
    Запрос.УстановитьПараметр("НулеваяДата", '00010101');
Статус ="Не работает";

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

Пока ВыборкаДетальнойЗаписи.Следующий() Цикл
  Если (ВыборкаДетальныеЗаписи.Сотрудник.ДатаУвольнения >= ДатаОтчета) ИЛИ (ВыборкаДетальныеЗаписи.Сотрудник.ДатаУвольнения = '00010101') Тогда
Если ВыборкаДетальныеЗаписи.Поле1 = null Тогда
Статус ="Работает";
Иначе

temp = ВыборкаДетальныеЗаписи.Поле1;
Статус =Строка(temp);
КонецЕсли;
КонецЕсли;

  списокСотрудников=списокСотрудников+"<b><c>"+сокрЛП(ВыборкаДетальнойЗаписи.Долж)+"</c></b>"+"<b><c>"+сокрЛП(ВыборкаДетальнойЗаписи.Подразд)+"</c></b>" +"<b><c>"+сокрЛП(ВыборкаДетальнойЗаписи.ФИО)+"</c></b>"+сокрЛП(ВыборкаДетальнойЗаписи.Поле1)+"</c></b>"; 
КонецЦикла;

списокСотрудников=списокСотрудников+"</a>";
возврат СписокСотрудников

КонецФункции


и езе проблема в том, что данные до этого вернее до объедингения двух запросов выводились в одну строчку. как сделать чтоб данные выводились как в таблице( по колонкам вернее). за это отвечает этот код :
СписокСотрудников=списокСотрудников+"<b><c>"+сокрЛП(ВыборкаДетальнойЗаписи.Долж)+"</c></b>"+"<b><c>"+сокрЛП(ВыборкаДетальнойЗаписи.Подразд)+"</c></b>" +"<b><c>"+сокрЛП(ВыборкаДетальнойЗаписи.ФИО)+"</c></b>"+сокрЛП(ВыборкаДетальнойЗаписи.Поле1)+"</c></b>"; 
КонецЦикла;

Dethmontt

В объединении запросов главное правило полей выбрано должно быть одинаковое количество во всех объединяемых запросах
Добавлено: 03 июн 2013, 12:50


Т.е.

Выбрать Сумма, Номенклатура, Контрагент Из Чегото
Объединить
Выбрать Сумма2, Номенклатура2, NULL ИЗ Чегото2


//То поле которого нет во втором запросе заменяем на NULL, ну либо на какое то другое значение, например на "0" (Пример выше)
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги: запросы  

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

Рейтинг@Mail.ru

Поиск