Имя: Пароль:
1C
1С v8
Некорректный текст запроса
,
0 gelmoriel
 
07.12.16
20:56
Конфигурация УТ для Украины 3.1.2.4. Не формируется отчет "Ведомость по товарам в ценах номенклатуры". Выдаёт сообщение "Не корректный текст запроса" http://prntscr.com/dgjyde . Конфигурация доработанная, но отчёт не тронутый. Куда можно копать?
1 Dен
 
07.12.16
20:59
Думаю, что начать можно с изучения текста запроса.
2 gelmoriel
 
07.12.16
21:07
СхемаКомпоновкиДанных = Отчеты.ВедомостьПоТоварамНаСкладахВЦенахНоменклатуры.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
        ТекстЗапроса = СхемаКомпоновкиДанных.НаборыДанных[0].Запрос;
        
        ЗаменяемыйТекст =
        "    ВЫБОР
        |        КОГДА ЦеныНоменклатурыА.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
        |                ИЛИ ЕСТЬNULL(ЦеныНоменклатурыА.Упаковка.Коэффициент, 0) = 0
        |            ТОГДА ЦеныНоменклатурыА.Цена
        |        ИНАЧЕ ЦеныНоменклатурыА.Цена / ЦеныНоменклатурыА.Упаковка.Коэффициент
        |    КОНЕЦ КАК Цена,
        |    ВЫБОР
        |        КОГДА ЦеныНоменклатурыБ.Цена ЕСТЬ NULL
        |            ТОГДА 0
        |        КОГДА ЦеныНоменклатурыБ.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
        |                ИЛИ ЕСТЬNULL(ЦеныНоменклатурыБ.Упаковка.Коэффициент, 0) = 0
        |            ТОГДА ЦеныНоменклатурыБ.Цена
        |        ИНАЧЕ ЦеныНоменклатурыБ.Цена / ЦеныНоменклатурыБ.Упаковка.Коэффициент
        |    КОНЕЦ КАК СтараяЦена,
        |    ВЫБОР
        |        КОГДА ЦеныНоменклатурыА.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
        |                ИЛИ ЕСТЬNULL(ЦеныНоменклатурыА.Упаковка.Коэффициент, 0) = 0
        |            ТОГДА ЦеныНоменклатурыА.Цена
        |        ИНАЧЕ ЦеныНоменклатурыА.Цена / ЦеныНоменклатурыА.Упаковка.Коэффициент
        |    КОНЕЦ - ВЫБОР
        |        КОГДА ЦеныНоменклатурыБ.Цена ЕСТЬ NULL
        |            ТОГДА 0
        |        КОГДА ЦеныНоменклатурыБ.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
        |                ИЛИ ЕСТЬNULL(ЦеныНоменклатурыБ.Упаковка.Коэффициент, 0) = 0
        |            ТОГДА ЦеныНоменклатурыБ.Цена
        |        ИНАЧЕ ЦеныНоменклатурыБ.Цена / ЦеныНоменклатурыБ.Упаковка.Коэффициент
        |    КОНЕЦ КАК Дельта";
        
        Если Найти(ТекстЗапроса, ЗаменяемыйТекст) = 0 Тогда
            ВызватьИсключение НСтр("ru='Некорректный текст запроса';uk='Некоректний текст запиту'");
        КонецЕсли;
3 Любопытная
 
07.12.16
21:08
И что непонятно?
4 Torquader
 
07.12.16
21:11
(3) Это в типовой такое что-ли ?
5 Pandoch
 
07.12.16
21:12
КОНЕЦ - ВЫБОР

это что?
6 gelmoriel
 
07.12.16
21:13
(3) не понятно то, что искомый фрагмент запроса есть в исходном тексте запроса, а функция Найти() возвращает 0.
7 gelmoriel
 
07.12.16
21:13
(4) да
8 Любопытная
 
07.12.16
21:13
(6) значит нет такого в тексте запроса
9 gelmoriel
 
07.12.16
21:14
(5) знак минус, вычитание
10 Любопытная
 
07.12.16
21:14
Отладчиком вытаскивай запрос и сравнивай с этим куском
11 gelmoriel
 
07.12.16
21:16
(10) есть какой-то механизм или инструмент для сравнения текстов, кроме разглядывания? Глазами смотрел и всё совпадает.
12 Любопытная
 
07.12.16
21:17
(11) ну во-первых просто в табло сравнить.
Во-вторых, сохранить оба в текстовые файлы и сравнить два файла
13 Мимохожий Однако
 
07.12.16
21:18
(11) Консоль запросов. Помести туда запрос и поймешь
14 Любопытная
 
07.12.16
21:18
Про "не верь глазам своим" ещё Козьма Прутков сказал
15 Torquader
 
07.12.16
21:22
(11) А где сам текст запроса ?
16 gelmoriel
 
07.12.16
21:45
(15) тут. https://docs.google.com/document/d/1Vp4imzI5blZ07Rp7-xqsJIPOWKB0L7xuwMgAyqJA5eQ/edit?usp=sharing
в сообщение не вставляется почему-то.
17 Torquader
 
07.12.16
22:30
(16)
Как ни странно, но в (15) Действительно находится (2).
Точно (15) Это запись, сделанная при появлении исключения ?
18 Любопытная
 
07.12.16
22:39
Не, ну так сравнивать невозможно. Там же до пробела должно совпадать, иначе разный текст. Возьми этот заменяемый кусок и вставь его в исходный запрос, посмотри, что будет.
И ещё, при обращении к запросу в скд не надо разве писать наборыДанных[0].запрос.текст?
19 gelmoriel
 
07.12.16
23:53
Весь прикол в том, что отчет по сравнению с типовой конфигурацией не изменён. http://prntscr.com/dgm95t Отчетов нет вообще в изменённых объектах. В демо базе отчет работает, а в моей нет. Я уже всё перепробывал. Выкладываю конфигурацию. Кому интересно можете сами посмотреть http://dropmefiles.com/4nD1w
20 Torquader
 
07.12.16
23:58
(19) Язык сравнения какой ? Возможно, он какие-то символы путает.
(18) Я просто взял кусок из (16) сохранил в файл (правда, однобайтный) и сохранил в файл, что, что в (2), вырезав чёрточки слева и то, что до них.
Потом FC сказал, что эти файлы идентичны.
21 Torquader
 
07.12.16
23:59
Я почему и говорю, что вставить в конфу, запись текста запроса в файл и одновременно запись строки поиска в другой, чтобы можно было сравнить.
Ещё лучше кодами символов через запятую, чтобы совпадения искать в одной строке.
22 h-sp
 
08.12.16
04:35
(19) он изменен. Потому что от настроек зависит. Что-то с настройками у вас. Упаковки не так заданы.
23 gelmoriel
 
08.12.16
09:39
(22) у Вас есть доступ к конфигурации. Покажите отличия.
24 catena
 
08.12.16
10:11
(19)Может быть в демо-базе он не доходит до этой проверки?
25 h-sp
 
08.12.16
10:24
(23) какой доступ еще? В предприятие смотрите. Функциональные опции по упаковкам и Номенклатуре. Флаг использовать упаковки, наверняка NULL у номенклатур проставлен, а не булево. Или еще чего-нибудь. Чего вы в конфигурации там сравниваете, если запрос формируется в предприятии. Его и сравнивайте.
26 rabbidX
 
08.12.16
10:24
(18) ".текст" не нужно
НаборДанныхЗапросСхемыКомпоновкиДанных (DataCompositionSchemaDataSetQuery)
Запрос (Query)
Использование:

Чтение и запись.
Описание:

Тип: Строка.
27 rabbidX
 
08.12.16
10:26
(0) найди чем именно различаются тексты, сравнивай в табло куски текстов, пока не найдешь отличие, тогда, возможно, будет понятно из-за чего ошибка.
28 mkalimulin
 
08.12.16
10:42
(2) Имя переменной "ЗаменяемыйТекст" наводит на размышления о тщетности бытия.
29 gelmoriel
 
08.12.16
18:11
красавец, я бы тебя расцеловал, если бы не было гендерного противоречия. В типовой демо базе до этой проверки не доходило. по идее это должны исправить при следующем обновлении разработчики 1С
30 gelmoriel
 
08.12.16
18:34
всем спасибо. Это есть известная задокументированная ошибка конфигурации http://prntscr.com/dgxey5  
http://downloads.v8.1c.ru/content//TradeUkr/3_1_2_4/ErrTradeUkr_3_1_2_4.htm

код ошибки 45749.

Исправлять её я не думаю, а клиенту сделаю какую-то заплатку пока обновление выйдет.