Имя: Пароль:
1C
1С v8
Выполнение пакетного запроса на сервере
,
0 Maлblш
 
18.04.13
17:18
День добрый. Столкнулась с такой проблемой. Есть пакетный запрос, при выполнении его в файловой ИБ проблем не возникает. Но в той же базе на сервере запрос выполняется с ошибками (неверно рассчитывается сумма в одном из запросов). В чем может быть причина и какие варианты решения этой ситуации существуют?
1 Classic
 
18.04.13
17:19
Текст запроса мы должны угадать?
2 shuhard
 
18.04.13
17:19
(0)[В чем может быть причина] -кривая сортировка
[ какие варианты решения этой ситуации существуют]
- переписать запрос
- нанять специалиста
4 Maлblш
 
18.04.13
17:21
ВЫБРАТЬ РАЗЛИЧНЫЕ
   Аналит_ИзделияДляРаспределенияЗатратЗаПериод.НоменклатурнаяГруппа,
   Аналит_ИзделияДляРаспределенияЗатратЗаПериод.ДокументОснование,
   Аналит_ИзделияДляРаспределенияЗатратЗаПериод.Количество
ПОМЕСТИТЬ ВТ_ПлановыйВыпуск
ИЗ
   РегистрСведений.Аналит_ИзделияДляРаспределенияЗатратЗаПериод КАК Аналит_ИзделияДляРаспределенияЗатратЗаПериод
ГДЕ
   Аналит_ИзделияДляРаспределенияЗатратЗаПериод.Период МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
   И Аналит_ИзделияДляРаспределенияЗатратЗаПериод.Организация = &Организация
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Аналит_СпецификацияНаИзделие.Регистратор,
   Аналит_СпецификацияНаИзделие.Изделие,
   Аналит_СпецификацияНаИзделие.СтатьяЗатрат,
   Аналит_СпецификацияНаИзделие.Сумма
ПОМЕСТИТЬ ВТ_ПлановыеЗатраты
ИЗ
   РегистрСведений.Аналит_СпецификацияНаИзделие КАК Аналит_СпецификацияНаИзделие
ГДЕ
   Аналит_СпецификацияНаИзделие.Регистратор В
           (ВЫБРАТЬ
               А.ДокументОснование
           ИЗ
               ВТ_ПлановыйВыпуск КАК А)
   И Аналит_СпецификацияНаИзделие.СтатьяЗатрат <> &ПустаяСтатьяЗатрат
   И Аналит_СпецификацияНаИзделие.Месяц МЕЖДУ НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ) И КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ)
   И Аналит_СпецификацияНаИзделие.Сумма <> 0
   И Аналит_СпецификацияНаИзделие.Организация = &Организация
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Аналит_СпецификацияНаИзделиеЕжемесячная.Регистратор,
   Аналит_СпецификацияНаИзделиеЕжемесячная.Изделие,
   Аналит_СпецификацияНаИзделиеЕжемесячная.СтатьяЗатрат,
   Аналит_СпецификацияНаИзделиеЕжемесячная.Сумма
ПОМЕСТИТЬ ВТ_ПлановыеЗатратыЕж
ИЗ
   РегистрСведений.Аналит_СпецификацияНаИзделиеЕжемесячная КАК Аналит_СпецификацияНаИзделиеЕжемесячная
ГДЕ
   Аналит_СпецификацияНаИзделиеЕжемесячная.Регистратор В
           (ВЫБРАТЬ
               А.ДокументОснование
           ИЗ
               ВТ_ПлановыйВыпуск КАК А)
   И Аналит_СпецификацияНаИзделиеЕжемесячная.Организация = &Организация
   И Аналит_СпецификацияНаИзделиеЕжемесячная.СтатьяЗатрат <> &ПустаяСтатьяЗатрат
   И Аналит_СпецификацияНаИзделиеЕжемесячная.Сумма <> 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_ПлановыйВыпуск.НоменклатурнаяГруппа,
   ВТ_ПлановыйВыпуск.ДокументОснование,
   ВТ_ПлановыйВыпуск.Количество,
   ВТ_ПлановыеЗатраты.СтатьяЗатрат,
   ВТ_ПлановыеЗатраты.Сумма,
   ВТ_ПлановыеЗатратыЕж.СтатьяЗатрат КАК СтатьяЗатратЕж,
   ВТ_ПлановыеЗатратыЕж.Сумма КАК СуммаЕж,
   ЕСТЬNULL(ВТ_ПлановыеЗатраты.СтатьяЗатрат, ВТ_ПлановыеЗатратыЕж.СтатьяЗатрат) КАК СтатьяЗатратОб,
   ЕСТЬNULL(ВТ_ПлановыеЗатраты.Сумма, ВТ_ПлановыеЗатратыЕж.Сумма) * ВТ_ПлановыйВыпуск.Количество КАК СуммаОб
ПОМЕСТИТЬ ВТ_ПланРазвернутый
ИЗ
   ВТ_ПлановыйВыпуск КАК ВТ_ПлановыйВыпуск
       ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПлановыеЗатраты КАК ВТ_ПлановыеЗатраты
       ПО ВТ_ПлановыйВыпуск.ДокументОснование = ВТ_ПлановыеЗатраты.Регистратор
       ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПлановыеЗатратыЕж КАК ВТ_ПлановыеЗатратыЕж
       ПО ВТ_ПлановыйВыпуск.ДокументОснование = ВТ_ПлановыеЗатратыЕж.Регистратор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_ПланРазвернутый.НоменклатурнаяГруппа,
   ВТ_ПланРазвернутый.СтатьяЗатратОб,
   СУММА(ВТ_ПланРазвернутый.СуммаОб) КАК СуммаОб
ПОМЕСТИТЬ ВТ_План
ИЗ
   ВТ_ПланРазвернутый КАК ВТ_ПланРазвернутый

СГРУППИРОВАТЬ ПО
   ВТ_ПланРазвернутый.НоменклатурнаяГруппа,
   ВТ_ПланРазвернутый.СтатьяЗатратОб
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ХозрасчетныйОбороты.Субконто1 КАК НоменклатурнаяГруппа,
   ВЫБОР
       КОГДА ХозрасчетныйОбороты.Субконто2.Родитель = &НакладныеРасходыРодитель
           ТОГДА &НакладныеРасходыЭлемент
       ИНАЧЕ ХозрасчетныйОбороты.Субконто2
   КОНЕЦ КАК СтатьяЗатрат,
   ХозрасчетныйОбороты.СуммаОборотДт
ПОМЕСТИТЬ ВТ_РазвернутыйФакт
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), , Счет В ИЕРАРХИИ (&ЗатратныеСчета20), &Субконто20, Организация = &Организация, , ) КАК ХозрасчетныйОбороты
ГДЕ
   ХозрасчетныйОбороты.Субконто2 <> &ПустаяСтатьяЗатрат

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   ХозрасчетныйОбороты.Субконто1,
   ВЫБОР
       КОГДА ХозрасчетныйОбороты.Субконто2.Родитель = &НакладныеРасходыРодитель
           ТОГДА &НакладныеРасходыЭлемент
       ИНАЧЕ ХозрасчетныйОбороты.Субконто2
   КОНЕЦ,
   ХозрасчетныйОбороты.СуммаОборотДт
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), , Счет В ИЕРАРХИИ (&ЗатратныеСчета08), &Субконто08, Организация = &Организация, , ) КАК ХозрасчетныйОбороты
ГДЕ
   ХозрасчетныйОбороты.Субконто2 <> &ПустаяСтатьяЗатрат
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ_РазвернутыйФакт.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
   ВТ_РазвернутыйФакт.СтатьяЗатрат,
   СУММА(ВТ_РазвернутыйФакт.СуммаОборотДт) КАК СуммаФакт
ПОМЕСТИТЬ ВТ_Факт
ИЗ
   ВТ_РазвернутыйФакт КАК ВТ_РазвернутыйФакт

СГРУППИРОВАТЬ ПО
   ВТ_РазвернутыйФакт.НоменклатурнаяГруппа,
   ВТ_РазвернутыйФакт.СтатьяЗатрат
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЕСТЬNULL(ВТ_План.НоменклатурнаяГруппа, ВТ_Факт.НоменклатурнаяГруппа) КАК НоменклатурнаяГруппа,
   ЕСТЬNULL(ВТ_План.СтатьяЗатратОб, ВТ_Факт.СтатьяЗатрат) КАК СтатьяЗатрат,
   ВТ_План.СуммаОб,
   ВТ_Факт.СуммаФакт,
   ЕСТЬNULL(ВТ_План.СуммаОб, 0) - ЕСТЬNULL(ВТ_Факт.СуммаФакт, 0) КАК ПланМинусФакт
ИЗ
   ВТ_План КАК ВТ_План
       ПОЛНОЕ СОЕДИНЕНИЕ ВТ_Факт КАК ВТ_Факт
       ПО ВТ_План.НоменклатурнаяГруппа = ВТ_Факт.НоменклатурнаяГруппа
           И ВТ_План.СтатьяЗатратОб = ВТ_Факт.СтатьяЗатрат

УПОРЯДОЧИТЬ ПО
   НоменклатурнаяГруппа,
   СтатьяЗатрат
5 Maлblш
 
18.04.13
17:22
На выходе сумма фактическая получается равна плановой и это неправильно.
6 Classic
 
18.04.13
17:23
(5)
У тебя там три суммы
7 Maлblш
 
18.04.13
17:25
(6) Да, ВТ_Факт.СуммаФакт и ПланМинусФакт равны ВТ_План.СуммаОб. Этого быть не должно. На клиенте запрос выполняется верно.
8 GANR
 
18.04.13
17:28
круто! напиши [email protected]
9 Maxus43
 
18.04.13
17:35
есть различия между файловой и клиент-серверной конечно, а вот искать их тут незнаю даже как. Может итоги покривились в клиент-серверной? сравните результаты например куска по Хозрасчетный.Обороты
10 Maлblш
 
18.04.13
17:35
(8) косяк платформы?)
11 Maxus43
 
18.04.13
17:36
сравни все отдельные пакеты запросов с файловой, вычлени косячный
12 Maлblш
 
18.04.13
17:36
(9) Если выполнять в клиент-серверной базе все запросы по отдельности, все отрабатывают правильно.
13 Maлblш
 
18.04.13
17:37
А пакет кривой получается %)
14 Maxus43
 
18.04.13
17:37
(12) в каком месте конкретно косяк тогда? в каком пакете?
15 Maxus43
 
18.04.13
17:39
хотя если в отдельности всё норм - то чудеса...
16 Maлblш
 
18.04.13
17:44
(14) в последнем
17 Maлblш
 
18.04.13
17:44
(15) вот именно! чудеса)
18 Maxus43
 
18.04.13
17:45
ЕСТЬNULL(ВТ_План.СуммаОб, 0),
ЕСТЬNULL(ВТ_Факт.СуммаФакт, 0)

на всякий тоже сделай
19 Maлblш
 
18.04.13
17:46
(18) непонятно зачем, но попробую))
20 Maxus43
 
18.04.13
17:47
(19) чтобы просто было красиво и не было в результате запроса Null в колонках
21 Classic
 
18.04.13
17:50
(19)
А если послушать (2) и убрать упорядочивание? Или хотя бы переписать его на

УПОРЯДОЧИТЬ ПО
   ЕСТЬNULL(ВТ_План.НоменклатурнаяГруппа, ВТ_Факт.НоменклатурнаяГруппа),
   ЕСТЬNULL(ВТ_План.СтатьяЗатратОб, ВТ_Факт.СтатьяЗатрат)
22 GANR
 
18.04.13
17:58
(11) +1. Вот точно (0) раздели запрос на отдельные подзапросы вроде http://ximage.ru/data/imgs/1366272523.jpg и посмотри отладчиком каком именно подзапросе результат расходится. Только помимо создания ВТ там надо будет, естественно, просто выгружать её ещё.
23 Maлblш
 
19.04.13
09:46
(18) поставила ЕстьNull, проблема ушла)))
ЕСТЬNULL(ВТ_План.СуммаОб, 0),
ЕСТЬNULL(ВТ_Факт.СуммаФакт, 0)

спасибо, ребят!