Группа: Пользователи
Сообщений: 68
Спасибо сказали: 0 раз
Рейтинг: 0
ЕСТЬ ФУНКЦИЯ -которая должна возвращать существующую характеристику или создавать новую, если текущая не найдена, причем сам запрос в консоли запросов отрабатывает, но в функции не хочет. В результате функция создаёт к одной номенклатуре 16 характеристик одинаковых, а должна только одну. В чем ошибка?
Функция СоздатьХарактеристику(Номенклатура,Цвет) // ХарактеристикиНоменклатуры перем kol; kol=0; Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ | количество(ХарактеристикиНоменклатуры.Ссылка) КАК Количество_Характеристик |ИЗ | Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатуры |ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура | ПО ХарактеристикиНоменклатуры.Ссылка.Владелец = Номенклатура.Ссылка |ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения | ПО ХарактеристикиНоменклатуры.Свойство = ДополнительныеРеквизитыИСведения.Ссылка |ГДЕ | Номенклатура.Наименование = &Номенклатура_ | И ДополнительныеРеквизитыИСведения.Наименование = ""Цвет (Мотоциклы (Для характеристик))"" | И ХарактеристикиНоменклатуры.Значение = &Цвет_ |";
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0
В условии ДополнительныеРеквизитыИСведения.Наименование = ""Цвет (Мотоциклы (Для характеристик))"" используйте вместо равно Подобно с соответствующими литералами, поскольку длина этого поля явно больше, чем количество переданных Вами символов.
+ если у вас есть ссылки на справочник, почему Вы сравниваете не их, а строки из наименования?
Правильно поставленный вопрос содержит до 90% ответа.
Группа: Местный
Сообщений: 237
Спасибо сказали: 47 раз
Рейтинг: 42
svetas_l @ 15.03.20, 20:13
,
Пробуйте так:
Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ //| количество(ХарактеристикиНоменклатуры.Ссылка) КАК Количество_Характеристик | ХарактеристикиНоменклатуры.Ссылка |ИЗ | Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатуры //|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура //| ПО ХарактеристикиНоменклатуры.Ссылка.Владелец = Номенклатура.Ссылка |ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения | ПО ХарактеристикиНоменклатуры.Свойство = ДополнительныеРеквизитыИСведения.Ссылка |ГДЕ | ХарактеристикиНоменклатуры.Ссылка.Владелец = &Номенклатура_ | И ДополнительныеРеквизитыИСведения = &Цвет_ | И ХарактеристикиНоменклатуры.Значение = &Цвет_ //| И ДополнительныеРеквизитыИСведения.Наименование = ""Цвет (Мотоциклы (Для характеристик))"" //| И ХарактеристикиНоменклатуры.Значение = &Цвет_ |";
Запрос.УстановитьПараметр("Номенклатура_", Номенклатура); // здесь ссылки Запрос.УстановитьПараметр("Цвет_", Цвет); // здесь ссылки //Запрос.УстановитьПараметр("Номенклатура_", СокрЛП(Строка(Номенклатура))); //Запрос.УстановитьПараметр("Цвет_", СокрЛП(Строка(Цвет)));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДокументов = РезультатЗапроса.Выбрать();
Если ВыборкаДокументов.Следующий() Тогда Возврат ВыборкаДокументов.Ссылка; Иначе // создаем новую КонецЕсли;
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!