Имя: Пароль:
1C
1C 7.7
v7: Запрос: Ошибка в индексном выражении
0 Злопчинский
 
24.01.18
13:05
Не часто, но регулярно выскакивает такая ошибка:
Если глЗапрос.Выполнить(глТекстЗапроса) <> 1 Тогда глВоспроизвестиГолос(""); Возврат "ОШИБКА"; КонецЕсли; : {Глобальный модуль(3874)}: Ошибка в индексном выражении

Запрос такой
    глТекстЗапроса = "
    |Период с ДатаН По ДатаК; Без итогов;
    |
    |Заказ         = Регистр.Заказы.Заказ;
    |Номенклатура     = Регистр.Заказы.Номенклатура;
    |КолЗаказано     = Регистр.Заказы.Заказано;
    |КолПринято     = Регистр.Заказы.Принято;
    |
    |Функция Заказано  = Сумма(КолЗаказано);
    |Функция НеПринято = Сумма(КолЗаказано-КолПринято);
    |
    |Группировка Номенклатура Без Групп;
    |
    |Условие(Заказ = ВыбЗаказ);
    |Условие(Номенклатура = ВыбНоменклатура);
    |";


Регистр.Заказы.Заказ - документ неопределенного типа.
(видов документов в конфе - 13 шт)

При этом, в подавляющем большинстве случаев все отрабатывает без проблем.

Куда копать/что смотреть/почему это и что значит?
7.7 файловая
1 Ёпрст
 
гуру
24.01.18
13:16
неопределенного типа ?
Ты туда число/строку/дату/справочник пихаешь еще ?
:)
2 Злопчинский
 
24.01.18
13:51
(1) нет, просто "Документ".
туда пихается всего два дока
Документ.ЗаказНаОтгрузку или Документ.ЗаказНаПриемку
3 Смотрящий
 
24.01.18
13:52
(2) уловие наложи в запрове на вид документа
4 1Сергей
 
24.01.18
13:53
Нет ли в текущем контексте сущностей Заказ и Номенклатура?
5 Злопчинский
 
24.01.18
13:59
(4) ????
6 Злопчинский
 
24.01.18
14:00
(3) как?
7 Смотрящий
 
24.01.18
14:07
|Условие(Найти("ЗаказНаОтгрузку/ЗаказНаПриемку/", Заказ.Вид()) > 0);
8 Смотрящий
 
24.01.18
14:10
Заказ.Вид() + "/"
пардон
9 Злопчинский
 
24.01.18
14:10
(7) что это даст?
10 Злопчинский
 
24.01.18
14:11
в контексте решаения проблемы..?
11 Смотрящий
 
24.01.18
15:11
(10) Напиши - пропадет ошипка
12 Ёпрст
 
гуру
24.01.18
15:16
(2)  тогда, это значение неопределенного вида.
ЗЫ: не припомню такой ошибки вообще, чтоб запрос вообще выдавал. Точно это на строку выполнения запроса ошибка ?
В любом случае, перепиши запрос на прямой. Будет и быстрее и никаких ошибок.
13 Злопчинский
 
24.01.18
21:37
(12) да, на строку запроса.
и что, холера, - не каждый раз... обращений к этому запросу прилично, отрабатывает же норм! а вот где-то - раз! и тупит...
может быть это с транзакцией связано? с блокировками? с доступом к одному и тому же объекту?
14 Злопчинский
 
24.01.18
21:47
А Запрос.Выполнить() - в Попытку обернуть можно? прокатит, отловится при ошибке?
15 Ёпрст
 
гуру
24.01.18
23:05
у тя какая то шляпа в итогах регистра,т для начала, пересчитай итоги по этому регистру.
16 Ёпрст
 
гуру
24.01.18
23:07
ну и посмотреть в структуру регистра, на каких измерениях включен отбор итогов или отбор движений..там и битый индекс
17 Злопчинский
 
25.01.18
00:14
(15) пересчитал
(16) буду искать
18 Злопчинский
 
27.01.18
01:50
(16) вот откуда он битый-то... каждую ночь в обязательном порядке реиндексится
19 h-sp
 
27.01.18
07:41
(18) "в обязательном порядке реиндексится"
это туфта всё, битый так и останется. Ты удали индексные файлы полностью. И потом переиндексируй
20 Злопчинский
 
27.01.18
09:15
(19) таки
21 Злопчинский
 
27.01.18
09:15
Так и делается