Здравствуйте, помогите, пожалуйста, в таком вопросе.
Есть запрос во внешней обработке, который в файловой версии отрабатывает нормально, а на серверной выдает ошибку (ошибка в скрине).
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Справочник.Номенклатура) КАК Объект
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| (ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Значение КАК СТРОКА(50))) = &Значение
| И ЗначенияСвойствОбъектов.Свойство = &Свойство
| И (НЕ ЗначенияСвойствОбъектов.Объект.ПометкаУдаления)";
Запрос.УстановитьПараметр("Значение", Название);
Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Наименование в сертификате"));
Показать
Убираю все условия - нет ошибки, как только добавляю - сразу ошибка.
И (НЕ ЗначенияСвойствОбъектов.Объект.ПометкаУдаления)"
Предполагаю что ошибка сразу исчезнет и запрос будет работать быстрей. Ибо Вы обращаетесь через "." к составному реквизиту, и ему нужно сделать соединения со всеми типами данных по данному реквизиту.
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| ЗначенияСвойствОбъектов.Объект
|ИЗ
| (ВЫБРАТЬ
| СвойстваОбъектов.Ссылка КАК Ссылка
| ИЗ
| ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
| ГДЕ
| СвойстваОбъектов.НазначениеСвойства В(&НазначениеСвойств)
| И НЕ СвойстваОбъектов.ПометкаУдаления
| И СвойстваОбъектов.Ссылка = &Свойство) КАК СвойстваОбъектов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
| ПО (ЗначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка)
|ГДЕ
| ЗначенияСвойствОбъектов.Значение.Наименование = &Значение";
Запрос.УстановитьПараметр("НазначениеСвойств", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура);
Запрос.УстановитьПараметр("Значение", Название);
Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Наименование в сертификате"));
И (НЕ ЗначенияСвойствОбъектов.Объект.ПометкаУдаления)"
Предполагаю что ошибка сразу исчезнет и запрос будет работать быстрей. Ибо Вы обращаетесь через "." к составному реквизиту, и ему нужно сделать соединения со всеми типами данных по данному реквизиту.
Первым условием отбора надо Свойство = &Свойство поставить
и его же в выборку - что бы индекс использовался
ВЫБРАТЬ ПЕРВЫЕ 1
ЗначенияСвойствОбъектов.Свойство КАК Свойство,
ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Справочник.Номенклатура) КАК Объект
ИЗ
РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
ЗначенияСвойствОбъектов.Свойство = &Свойство
И (ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Значение КАК СТРОКА(50))) = &Значение
И (ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Справочник.Номенклатура).ПометкаУдаления = ЛОЖЬ)
Вместо - (ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Значение КАК СТРОКА(50))) = &Значение попробуйте так:
ЗначенияСвойствОбъектов.Значение = &Значение и передавайте значение а не строку.