|
v7: Перестали работать запросы | ☑ | ||
---|---|---|---|---|
0
Nokia3310
12.04.22
✎
15:33
|
Вопрос знатокам
В SQL(!) базе любой запрос, если в нем есть пользовательская функция, то она всегда возвращает 0 А в DBF базе возвращает нормальное значение В чем секрет? Функция КолвоПлюс(Колво, Плюс) Возврат Колво + Плюс; КонецФункции // ЧислоПлюс Запрос = СоздатьОбъект("Запрос"); Запрос.ВключитьSQL(1); Запрос_текст = " |Ном = Регистр.ПартииНаличие.Номенклатура; |Колво = Регистр.ПартииНаличие.Количество; |Функция КолвоПлюс = Сумма(КолвоПлюс(Колво, 1)); //всегда возвращает 0 |Функция КонОст = КонОст(Колво); |Группировка Ном; |"; |
|||
1
Nokia3310
12.04.22
✎
16:06
|
Получается, что в режиме Запрос.ВключитьSQL(1) эта функция даже не вызывается. Как ее включить?
|
|||
2
Builder
12.04.22
✎
16:28
|
(1) Вообще не использовать Запрос.ВключитьSQL(1) не пробовал?
|
|||
3
Андрей_Андреич
naïve
12.04.22
✎
16:36
|
(0) А что получить-то хочешь? Что за КолвоПлюс
|
|||
4
Nokia3310
12.04.22
✎
16:36
|
(2) Пробовал. Тогда работает. но и скорость падает в 20 раз
|
|||
5
Nokia3310
12.04.22
✎
16:37
|
(3) Это просто пример любой пользовательской функции
|
|||
6
dreizehn
12.04.22
✎
16:38
|
(4) А какого поведения ты ожидаешь от использования недокументированной функции?
|
|||
7
Nokia3310
12.04.22
✎
16:39
|
(6) Хочу чтобы работало
|
|||
8
Андрей_Андреич
naïve
12.04.22
✎
16:47
|
(7) У тебя ИМХО неудачный пример совместного использования функции КонОст и Сумма. Убери КонОст, задай период. В твоем запросе просто выгружаются итоги на точку актуальности, т.е. перебора движений регистров нет. Могу ошибаться - классических запросов 100 лет не писал, а в особо извращенной форме и того более :))
|
|||
9
Nokia3310
12.04.22
✎
16:53
|
(8) Ошибки в запросе нет, он работает в DBF версии, а в SQL функция КолвоПлюс возвращает 0
|
|||
10
Nokia3310
12.04.22
✎
16:59
|
(4) Тут дело в том, что Запрос.ВключитьSQL(1) неявно включается, если платформа запущена в SQL варианте
|
|||
11
Volodja
12.04.22
✎
17:01
|
(10) используй прямые запросы.
|
|||
12
Ёпрст
12.04.22
✎
19:04
|
(0) на то оне и внешние функции..которые работают снаружи запроса. А сам скуль не могёт такое, только если 1с-ина потом сама тебе посчитает.
|
|||
13
Ёпрст
12.04.22
✎
19:04
|
Ну и для скуля (и для дбф) писать черные запросы - моветон.
Единственное, для чего они годны - итоги по иерархии разве что. Всё. |
|||
14
Ёпрст
12.04.22
✎
19:05
|
Хотя, её можно и так собрать, а если спецом озаботиться хранением иерархии в отдельной табличке, так и подавно.
|
|||
15
Злопчинский
12.04.22
✎
19:13
|
(1) запусти отладку. поставь бряк в функции и смотри вызывается или нет. или тупо в функцию Сообщить("работает Имя функции");
|
|||
16
Злопчинский
12.04.22
✎
19:15
|
(9) Сумма() - за какой период? как правильно отметили
|
|||
17
Злопчинский
12.04.22
✎
19:17
|
Еще после того как правильно переписать запрос без неявностей
попробовать |Функция КолвоПлюс = Сумма(КолвоПлюс(Запрос.Колво, 1)); |
|||
18
Chai Nic
12.04.22
✎
19:28
|
Не парь мозги себе и окружающим. Используй прямые запросы. А штатный семерочный запрос - неудачный атавизм.
|
|||
19
Злопчинский
12.04.22
✎
19:33
|
(18) ну, штатный чорный работает изкоробки.
а к прямым - еще кучу приблуд надо ставить - драйвер? строка подключения? правильное указание параметров в строке подключения? |
|||
20
Chai Nic
12.04.22
✎
20:36
|
(19) Для SQL-базы ничего не надо, кроме 1cpp.dll. А оно и само по себе полезно. Та же индексированная таблица открывает новые горизонты возможностей.
|
|||
21
Злопчинский
13.04.22
✎
00:03
|
(20) а, точняк, это я дбфщик, на скуле у клиентов мало баз.
|
|||
22
Arbuz
13.04.22
✎
15:53
|
(21) дык, на дбф есть 1скулайт для прямых
|
|||
23
АгентБезопасной Нацио
13.04.22
✎
16:03
|
(14) или методом ильдаровича, здоровья ему...
|
|||
24
Злопчинский
13.04.22
✎
19:58
|
(22) я в курсе.
но он не всегда хорошо отрабатывает. тот же запрос через VFP может оказаться лучшее существенно. так мну гуру говорили. но может я неправильно понял/здесь озвучиваю |
|||
25
Злопчинский
13.04.22
✎
19:58
|
хотя даже "плохо" работающий скулайт будет лучше сeщественно чорного запроса/
вроде так. |
|||
26
Arbuz
14.04.22
✎
15:54
|
(25) Ну, я тут недавно переписывал один оперативный отчёт на прямые... на чорных формировался пять минут, а в тяжёлых случаях приходилось снимать задачу, а на прямых скулайта - две секунды, в тяжёлых случаях - 15 секунд! В основном из-за того, что почти всю логику, а не просто равнозначные запросы перенёс из 1С на скуль (в 1sqlite есть же cte, оконные, а в последней и математические функции).
|
|||
27
Злопчинский
14.04.22
✎
20:29
|
(26) сте и прочее - это для меня высший пилотадж.
я-то и прямые запросы практически не использую и не пишу виду отсутсвия острой необходимости и слабой квалификации в них. ну вот просто так сложилось.. конторы мелкие, база в родной конторе самая большая в пике под 9Гб. Регистры заркрыты, документов немного - все формируется по-чорному или выборками. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |