Имя: Пароль:
1C
 
Запрос не дружит с SQL
0 Lusent
 
16.11.10
15:05
Платформа 1С:Предприятие 8.1 (8.1.15.14)
Конфигурация: Бухгалтерия предприятия, редакция 1.6 (1.6.26.3)
SQL Sever Enterprise Edition 8.00.2039 (SP4)

На запрос:

ВЫБРАТЬ
   ОперацииПоТехнологическомуИЛицевомуСчету.ЛицевойСчетМегаФон КАК ЛицевойСчетМегаФон,
   ОперацииПоТехнологическомуИЛицевомуСчету.ЭтоПриход,
   ОперацииПоТехнологическомуИЛицевомуСчету.ДатаОперации,
   ОперацииПоТехнологическомуИЛицевомуСчету.НаименованиеОперации,
   ОперацииПоТехнологическомуИЛицевомуСчету.УменьшениеБаланса КАК УменьшениеДолга,
   ОперацииПоТехнологическомуИЛицевомуСчету.НомерКвитанции,
   ОперацииПоТехнологическомуИЛицевомуСчету.Комментарий
ПОМЕСТИТЬ ВТ_ОперацииПоТехнологическомуИЛицевомуСчету
ИЗ
   &ОперацииПоТехнологическомуИЛицевомуСчету КАК ОперацииПоТехнологическомуИЛицевомуСчету

ИНДЕКСИРОВАТЬ ПО
   ЛицевойСчетМегаФон
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ОстаткиПоЛицевымСчетам.ЛицевойСчетМегаФон КАК ЛицевойСчетМегаФон,
   ОстаткиПоЛицевымСчетам.ДоговорКонтрагента КАК ДоговорКонтрагента,
   ОстаткиПоЛицевымСчетам.БанковскийСчет КАК БанковскийСчет
ПОМЕСТИТЬ ВТ_ЛицевыеСчетаДоговораБанковскиеСчета
ИЗ
   &ОстаткиПоЛицевымСчетам КАК ОстаткиПоЛицевымСчетам
ГДЕ
   ОстаткиПоЛицевымСчетам.ЛицевойСчетМегаФон <> ""
   И ОстаткиПоЛицевымСчетам.ДоговорКонтрагента <> &ПустойДоговорКонтрагента
   И ОстаткиПоЛицевымСчетам.БанковскийСчет <> &ПустойБанковскийСчет

ИНДЕКСИРОВАТЬ ПО
   ДоговорКонтрагента,
   БанковскийСчет
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ОпрацииПоЛицевомуСчету.ЛицевойСчетМегаФон,
   ОпрацииПоЛицевомуСчету.ЭтоПриход,
   ОпрацииПоЛицевомуСчету.ДатаОперации КАК ДатаОперации,
   ОпрацииПоЛицевомуСчету.НаименованиеОперации,
   ОпрацииПоЛицевомуСчету.УвеличениеДолга,
   ОпрацииПоЛицевомуСчету.УменьшениеДолга,
   ОпрацииПоЛицевомуСчету.НомерКвитанции,
   ОпрацииПоЛицевомуСчету.Комментарий
ИЗ
   (ВЫБРАТЬ
       РеализацияТоваровУслуг.Ссылка КАК НаименованиеОперации,
       РеализацияТоваровУслуг.Дата КАК ДатаОперации,
       ЛОЖЬ КАК ЭтоПриход,
       РеализацияТоваровУслуг.СуммаДокумента КАК УвеличениеДолга,
       NULL КАК УменьшениеДолга,
       ЛицевыеСчетаДоговораБанковскиеСчета.ЛицевойСчетМегаФон КАК ЛицевойСчетМегаФон,
       NULL КАК НомерКвитанции,
       ВЫРАЗИТЬ(РеализацияТоваровУслуг.Комментарий КАК СТРОКА(1000)) КАК Комментарий
   ИЗ
       Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
           ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ЛицевыеСчетаДоговораБанковскиеСчета КАК ЛицевыеСчетаДоговораБанковскиеСчета
           ПО РеализацияТоваровУслуг.ДоговорКонтрагента = ЛицевыеСчетаДоговораБанковскиеСчета.ДоговорКонтрагента
   ГДЕ
       РеализацияТоваровУслуг.Проведен
       И РеализацияТоваровУслуг.Организация = &Организация
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ПлатежноеПоручениеИсходящее.Ссылка,
       ПлатежноеПоручениеИсходящее.Дата,
       ИСТИНА,
       NULL,
       ПлатежноеПоручениеИсходящее.СуммаДокумента,
       ЛицевыеСчетаДоговораБанковскиеСчета.ЛицевойСчетМегаФон,
       NULL,
       ВЫРАЗИТЬ(ПлатежноеПоручениеИсходящее.Комментарий КАК СТРОКА(1000))
   ИЗ
       Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее
           ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ЛицевыеСчетаДоговораБанковскиеСчета КАК ЛицевыеСчетаДоговораБанковскиеСчета
           ПО ПлатежноеПоручениеИсходящее.СчетКонтрагента = ЛицевыеСчетаДоговораБанковскиеСчета.БанковскийСчет
   ГДЕ
       ПлатежноеПоручениеИсходящее.Проведен
       И ПлатежноеПоручениеИсходящее.Организация = &Организация
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ОперацииПоТехнологическомуИЛицевомуСчету.НаименованиеОперации,
       ОперацииПоТехнологическомуИЛицевомуСчету.ДатаОперации,
       (НЕ ОперацииПоТехнологическомуИЛицевомуСчету.ЭтоПриход),
       NULL,
       ОперацииПоТехнологическомуИЛицевомуСчету.УменьшениеДолга,
       ОперацииПоТехнологическомуИЛицевомуСчету.ЛицевойСчетМегаФон,
       ОперацииПоТехнологическомуИЛицевомуСчету.НомерКвитанции,
       ОперацииПоТехнологическомуИЛицевомуСчету.Комментарий
   ИЗ
       ВТ_ОперацииПоТехнологическомуИЛицевомуСчету КАК ОперацииПоТехнологическомуИЛицевомуСчету
   ГДЕ
       ОперацииПоТехнологическомуИЛицевомуСчету.ЛицевойСчетМегаФон <> ""
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       КорректировкаДолга.Ссылка,
       КорректировкаДолга.Дата,
       ЛОЖЬ,
       КорректировкаДолга.СуммаДтЗадолженности,
       NULL,
       ЛицевыеСчетаДоговораБанковскиеСчета.ЛицевойСчетМегаФон,
       NULL,
       ВЫРАЗИТЬ(КорректировкаДолга.Комментарий КАК СТРОКА(1000))
   ИЗ
       Документ.КорректировкаДолга КАК КорректировкаДолга
           ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ЛицевыеСчетаДоговораБанковскиеСчета КАК ЛицевыеСчетаДоговораБанковскиеСчета
           ПО (КорректировкаДолга.Комментарий ПОДОБНО "Лицевой счет " + ЛицевыеСчетаДоговораБанковскиеСчета.ЛицевойСчетМегаФон + "%")) КАК ОпрацииПоЛицевомуСчету

УПОРЯДОЧИТЬ ПО
   ДатаОперации

Получаю завершение работы системы:

Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Intra-query parallelism caused your server command (process ID #59) to deadlock/ Return the query without intra-query parallelism by using the query hint option (maxdop 1).
HRESULT=80040E14, SQLSrvr: Error state=7F, Severity=D, native=8650, line=1.
1 Lusent
 
16.11.10
15:08
Под администратором ОС работает, а под обычным пользователем нет. При чем к ошибке приводит добавление четвертого объединения во вложенном запросе.
В чем проблема не могу понять.
2 МихаилМ
 
16.11.10
15:17
Вам перевести, что написано в сообщении об ошибке
или воспользуетесь поиском ?
3 Lusent
 
16.11.10
15:21
Что написано в сообщении я понимаю. Но как я установлю эту опцию "maxdop" в значение 1? Да еще и в 1С.
4 Жан Пердежон
 
16.11.10
15:24
(0) баян, в настройках сервака запрети ему параллелить запросы
5 szhukov
 
16.11.10
15:25
6 МихаилМ
 
16.11.10
15:50
(3)
ну не делайте палалельного (4 го) запроса
вынесите его отдельно. те еще одну временную таблицу.
7 Lusent
 
16.11.10
16:18
Запретил распараллеливание выполнения запросов - все работает. Вынес выполнение 4-ого объединения из вложенного запроса в виртуальную таблицу - тоже все работает (при разрешенном распараллеливание). Решил оставить второй вариант решения проблемы. Всем спасибо.
8 Lusent
 
16.11.10
16:20
Но почему работало под администратором и не работало под простым пользователем так и не понял...
9 Жан Пердежон
 
16.11.10
17:54
(8) у меня подобная ошибка возникала на совсем примитивном запросе (то ли реквизиты документа выбирались по ссылке, то ли реквизиты контрагента)
10 igork1966
 
16.11.10
17:56
(8) Возможно есть РЛС
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн