Имя: Пароль:
1C
1C 7.7
v7: 1c v7 sql вылетает при выполнении типового отчета поступления от поставщиков
,
0 aptomilov
 
04.10.11
10:25
Привет всем, почему может вылетать типовой отчет, отследил - вылетает при исполнении запроса. Расчеты с поставщиками не вылетает.
1 Ёпрст
 
04.10.11
10:28
чего в логах то хоть ?
чего за запрос ?
2 aptomilov
 
04.10.11
10:30
запрос - ничего особенного
пугает что он типовой
3 Попытка1С
 
04.10.11
10:34
ВключитьSQL = 1 ?
4 Попытка1С
 
04.10.11
10:35
Точнее так ВключитьSQL(1)
5 aptomilov
 
04.10.11
10:37
а чо дает данная функция я про такую не слыхал както
6 Попытка1С
 
04.10.11
10:39
ВключитьSQL
Синтаксис:
Объект.ВключитьSQL(парам)
Параметры:
Объект - объект типа Запрос или Регистр. Парам - число 0 или 1.
Назначение:
Включает или выключает обработку запросов, с использованием SQL технологий или по более простому варианту.

Не факт что тебе поможет, но всетаки..
7 aptomilov
 
04.10.11
10:43
уже нашел 2 типовых отчета которые вылетают((
8 aptomilov
 
04.10.11
10:48
волшебная строчка не помогла ((
9 aptomilov
 
04.10.11
10:51
собственно вот и запрос :

//{{ЗАПРОС(ПоступлениеТоваров)
Период с ДатаНач;

ОбрабатыватьДокументы Проведенные;
Обрабатывать НеПомеченныеНаУдаление;

Поставщик    = Документ.ПоступлениеТоваров.Контрагент,
              Документ.ПоступлениеМатериалов.Контрагент,
              Документ.ПоступлениеУслуг.Контрагент,
              Документ.ПоступлениеМПЗИмпорт.Контрагент;

Договор      = Документ.ПоступлениеТоваров.Договор,
              Документ.ПоступлениеМатериалов.Договор,
              Документ.ПоступлениеУслуг.Договор,
              Документ.ПоступлениеМПЗИмпорт.Договор;

ВалютаЦен    = Документ.ПоступлениеТоваров.ВалютаЦен,
              Документ.ПоступлениеУслуг.ВалютаЦен;

Валюта       = Документ.ПоступлениеТоваров.Договор.Валюта,
              Документ.ПоступлениеМатериалов.Договор.Валюта,
              Документ.ПоступлениеУслуг.Договор.Валюта,
              Документ.ПоступлениеМПЗИмпорт.Договор.Валюта;
             

Номенклатура = Документ.ПоступлениеТоваров.Товар,
              Документ.ПоступлениеМатериалов.Материал,
              Документ.ПоступлениеУслуг.Услуга,
              Документ.ПоступлениеМПЗИмпорт.Товар;

Курс          = Документ.ПоступлениеТоваров.Курс,
              Документ.ПоступлениеУслуг.Курс;

Количество   = Документ.ПоступлениеТоваров.Количество,
              Документ.ПоступлениеМатериалов.Количество,
              Документ.ПоступлениеУслуг.Количество,
              Документ.ПоступлениеМПЗИмпорт.Количество;

Всего        = Документ.ПоступлениеТоваров.Всего,
              Документ.ПоступлениеМатериалов.Всего,
              Документ.ПоступлениеУслуг.Всего;

Сумма        = Документ.ПоступлениеМПЗИмпорт.Сумма;
ТаможеннаяСтоимость = Документ.ПоступлениеМПЗИмпорт.ТаможеннаяСтоимость;

НДС          = Документ.ПоступлениеТоваров.НДС,
              Документ.ПоступлениеМатериалов.НДС,
              Документ.ПоступлениеУслуг.НДС;

НП           = Документ.ПоступлениеТоваров.НП,
              Документ.ПоступлениеМатериалов.НП,
              Документ.ПоступлениеУслуг.НП;

ЕдИзм        = Документ.ПоступлениеТоваров.ЕдиницаИзмерения,
              Документ.ПоступлениеМатериалов.ЕдиницаИзмерения,
              Документ.ПоступлениеМПЗИмпорт.ЕдиницаИзмерения;

Функция Кол  = Сумма(ПолучитьБазовоеКоличество(Количество,ЕдИзм));

Функция СумИмпортРуб = Сумма(ТаможеннаяСтоимость);
Функция СумИмпортВал = Сумма(Сумма);

Функция Сум           = Сумма(Всего-НДС-НП) когда (ВалютаЦен <> 2);
Функция СумПоКурсу    = Сумма((Всего-НДС-НП) * Курс) когда (ВалютаЦен = 2);
Функция СумВал        = Сумма(Всего-НДС-НП) когда (ВалютаЦен = 2);
Функция СумВалПоКурсу = Сумма((Всего-НДС-НП) / Курс) когда ((ВалютаЦен <> 2) и (Курс <> 0));
Группировка Поставщик;Группировка Номенклатура;
10 aptomilov
 
04.10.11
11:02
для интереса сравнил скорость выполнения на 10 сек шустрее правда))
11 aptomilov
 
04.10.11
11:05
у кого нить уже была такая проблема кто как решал ?
12 Ёпрст
 
04.10.11
11:09
(9) это не типовой отчет, а рукописный.
13 aptomilov
 
04.10.11
11:25
ну подправленный может, я не трогал))
как думаете что может не нравиться скулю
14 AeDen
 
04.10.11
11:26
функции по одной комментируй и проверяй
подозреваю, что где-то на этапе Функция Кол  = Сумма(ПолучитьБазовоеКоличество(Количество,ЕдИзм));
15 AeDen
 
04.10.11
11:27
кстати,в получении базового количества что есть?
16 Ёпрст
 
04.10.11
11:28
(13) типовых отчетов по документом не бывает. Тем более таких, где на ноль делят в вычислении функции :

Функция СумВалПоКурсу = Сумма((Всего-НДС-НП) / Курс)
17 aptomilov
 
04.10.11
11:31
будем оптимизировать, о результатах отпишу)
18 aptomilov
 
04.10.11
11:40
Функция СумПоКурсу    = Сумма((Всего-НДС-НП) * Курс) когда (ВалютаЦен = 2);

Функция СумВалПоКурсу = Сумма((Всего-НДС-НП) / Курс) когда ((ВалютаЦен <> 2) и (Курс <> 0));

спасибо всем - вот эти 2 функции и портят всю картину))
19 Ёпрст
 
04.10.11
11:41
(18) деление на 0, че ты хотел ?
20 aptomilov
 
04.10.11
11:43
в первой то нет деления
21 aptomilov
 
04.10.11
11:43
первая ему тогда что не нравится
22 ЧеловекДуши
 
04.10.11
11:45
(21)Каким образом ты решил, что все дело в первой?
23 AeDen
 
04.10.11
11:46
потому-что пустое значение - это не 0. А 0 - это не пустое значение.
24 ЧеловекДуши
 
04.10.11
11:47
+ (0)Автор в чем разница в этих двух строках из запроса?

Номенклатура = Документ.ПоступлениеТоваров.Товар,
              Документ.ПоступлениеМатериалов.Материал,
              Документ.ПоступлениеУслуг.Услуга,
              Документ.ПоступлениеМПЗИмпорт.Товар;

И в этом

Курс          = Документ.ПоступлениеТоваров.Курс,
              Документ.ПоступлениеУслуг.Курс;

Думай... думать полезно... :)
25 aka AMIGO
 
04.10.11
11:48
(4) - в случае ТС лучше ВключитьSQL(0);
26 aptomilov
 
04.10.11
11:53
ЧеловекДуши, дело во 5 и 7 функциях - комментировал и запускал , 1С вылетает только когда 5 и 7 функции (сверху вниз)раскоментированны,  в остальных случаях вываливается с ошибкой
27 Ёпрст
 
04.10.11
11:55
(26) ты курс смотришь у 2-х документов, у 2-х остальных он = нулл, если что.
Вот и валится 1с-ина от твоего кода при вычеслении функции.
см. (24)
28 aka AMIGO
 
04.10.11
11:55
(26) попробуй, однако:
ВключитьSQL(0);
29 aptomilov
 
04.10.11
12:02
aka AMIGO, не помогат
30 aptomilov
 
04.10.11
12:03
aka AMIGO, ура помогло теперь деление на ноль игнорируется
31 aptomilov
 
04.10.11
12:04
проблема значит была в лишних скобках
32 aka AMIGO
 
04.10.11
12:04
(29) ((

а нельзя-ли функции перенести в цикл после выполнения запроса?
33 aka AMIGO
 
04.10.11
12:06
(30) а, ну и хорошо..
34 aptomilov
 
04.10.11
12:07
можно канешно но лезть неохото да и смысл  переходим на 8 ку
35 aptomilov
 
04.10.11
12:12
aka AMIGO.. так может и от скобок должно было помоч???
36 aka AMIGO
 
04.10.11
12:15
(35) не могу сказать..
одно известно: функции в запросе, при применении этой недокументированной фичи, считаются по-другому.. не используется механизм SQL, кажется так..
37 aptomilov
 
04.10.11
12:18
прикольно испытаем на другом отчете )