Имя: Пароль:
1C
1С v8
Запрос в SQL
0 ХочуСпец
 
16.09.11
10:32
Следующий запрос:

   Запрос = Новый Запрос;
   Запрос.Текст =
    "ВЫБРАТЬ
    |    ХозрасчетныйДвиженияССубконто.Регистратор КАК Документ,
    |    ХозрасчетныйДвиженияССубконто.СчетДт,
    |    ХозрасчетныйДвиженияССубконто.СчетКт,
    |    ХозрасчетныйДвиженияССубконто.Сумма,
    |    ХозрасчетныйДвиженияССубконто.Период КАК Период,
    |    ВЫБОР
    |        КОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт1 ССЫЛКА Справочник.ДоговорыКонтрагентов
    |                И ХозрасчетныйДвиженияССубконто.СубконтоДт1 <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
    |        ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт1
    |    ИНАЧЕ ВЫБОР
    |        КОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт2 ССЫЛКА Справочник.ДоговорыКонтрагентов
    |                И ХозрасчетныйДвиженияССубконто.СубконтоДт2 <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
    |        ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт2
    |    ИНАЧЕ ВЫБОР
    |        КОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт3 ССЫЛКА Справочник.ДоговорыКонтрагентов
    |                И ХозрасчетныйДвиженияССубконто.СубконтоДт3 <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
    |        ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт3
    |    ИНАЧЕ ВЫБОР
    |        КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1 ССЫЛКА Справочник.ДоговорыКонтрагентов
    |                И ХозрасчетныйДвиженияССубконто.СубконтоКт1 <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
    |        ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1
    |    ИНАЧЕ ВЫБОР
    |        КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Справочник.ДоговорыКонтрагентов
    |                И ХозрасчетныйДвиженияССубконто.СубконтоКт2 <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
    |        ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2
    |    ИНАЧЕ ВЫБОР
    |        КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3 ССЫЛКА Справочник.ДоговорыКонтрагентов
    |                И ХозрасчетныйДвиженияССубконто.СубконтоКт3 <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
    |        ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3
    |    КОНЕЦ
    |    КОНЕЦ
    |    КОНЕЦ
    |    КОНЕЦ
    |    КОНЕЦ
    |    КОНЕЦ КАК Договор
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
    |            &ДатаНач,
    |            &ДатаКон,
    |            ВидСубконто1 = &ПВХДоговоры
    |                И Субконто1 В (&Договоры),
    |            ,
    |            ) КАК ХозрасчетныйДвиженияССубконто
    |
    |УПОРЯДОЧИТЬ ПО
    |    Договор,
    |    Период";
   
       
   Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
   Запрос.УстановитьПараметр("ДатаКон", ?(ДатаКон = '00010101', ДатаКон, Новый Граница(КонецДня(ДатаКон), ВидГраницы.Включая)));
   Запрос.УстановитьПараметр("ПВХДоговоры", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры);
   Запрос.УстановитьПараметр("Договоры", СЗДоговоры);
       
   Результат = Запрос.Выполнить().Выгрузить();

Отлично отрабатывает в файловом варианте, но в SQL вылазит следующая ошибка: "Ошибка СУБД: Microsoft OLE DB provider for SQL Server: Выражения Case могут быть вложенными только до 10 уровня..."

Т.е. проблема в "Выбор тогда", но там всего 6 уровней
как разрешить проблему?
1 Ненавижу 1С
 
гуру
16.09.11
10:34
а зачем это

   ИНАЧЕ ВЫБОР
          КОГДА

когда можно просто

КОГДА

без всякой вложенности?
2 Amiralnar
 
16.09.11
10:34
ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.СубконтоДт1 КАК Тип)
3 Amiralnar
 
16.09.11
10:35
(1) +1
4 ХочуСпец
 
16.09.11
10:36
(1) не понимаю как без вложенности то?
5 unregistered
 
16.09.11
10:36
| ВЫБОР
|   КОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт1 ССЫЛКА Справочник.ДоговорыКонтрагентов
|      И ХозрасчетныйДвиженияССубконто.СубконтоДт1 <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
|     ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт1
|  КОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт2 ССЫЛКА Справочник.ДоговорыКонтрагентов
|      И ХозрасчетныйДвиженияССубконто.СубконтоДт2 <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
|     ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт2
|  КОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт3 ССЫЛКА Справочник.ДоговорыКонтрагентов
|      И ХозрасчетныйДвиженияССубконто.СубконтоДт3 <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
|     ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоДт3
|  КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1 ССЫЛКА Справочник.ДоговорыКонтрагентов
|      И ХозрасчетныйДвиженияССубконто.СубконтоКт1 <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
|     ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт1
|  КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2 ССЫЛКА Справочник.ДоговорыКонтрагентов
|      И ХозрасчетныйДвиженияССубконто.СубконтоКт2 <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
|     ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт2
|   КОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3 ССЫЛКА Справочник.ДоговорыКонтрагентов
|      И ХозрасчетныйДвиженияССубконто.СубконтоКт3 <> ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
|     ТОГДА ХозрасчетныйДвиженияССубконто.СубконтоКт3
| КОНЕЦ
6 unregistered
 
16.09.11
10:37
(4) см (5)
7 ХочуСпец
 
16.09.11
10:37
(5) точно, туплю
спасибо
8 unregistered
 
16.09.11
10:44
А вообще нафига было брать таблицу движений сс субконто?

Задача решается объединением двух запросов к таблице ОборотыДтКт с периодичностью по регистратору с параметрами у первого - СубконтоДт - договоры и второго - СубконтоКт-договоры.

И не надо будет ни каких выборов делать.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой