Автор Тема: Запрос с условием  (Прочитано 2977 раз)

0 Пользователей и 1 Гость просматривают эту тему.

DenisS

  • Новичок
  • *
  • Сообщений: 2
Запрос с условием
« : Декабрь 07, 2016, 01:34:34 am »
Есть справочник Ингредиенты и документ Калькуляция блюд с табличной частью Составляющие.
Необходимо при изменении номенклатуры в форме документа поставить значение "Ккал" из справочника Ингредиенты.
&НаКлиенте
Процедура СоставляющиеНаименованиеИнгредиентаПриИзменении(Элемент)
Стр=Элементы.Составляющие.ТекущиеДанные;
Стр.Ккал = ПолучитьКкалории(Стр.НаименованиеИнгредиента);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьКкалории(Ингредиент)

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Ингредиенты.Наименование КАК Наименование,
| Ингредиенты.Ккал КАК Ккал
|ИЗ
| Справочник.Ингредиенты КАК Ингредиенты";

//Запрос.УстановитьПараметр("Наименование", Ингредиент);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Наименование = Ингредиент Тогда

Результат = ВыборкаДетальныеЗаписи.Ккал;
КонецЕсли;
  КонецЦикла;
 

Возврат Результат;
КонецФункции

Но в итоге ничего не меняется. В пошаговой отладке значение "ВыборкаДетальныеЗаписи.Наименование" пишется в двойных ковычках, а "Ингредиент" записывается без ковычек. В результате условие выглядит след.образом Если "Рис" = Рис Тогда....

DenisS

  • Новичок
  • *
  • Сообщений: 2
Re: Запрос с условием
« Ответ #1 : Декабрь 08, 2016, 10:48:37 pm »
Еще актуально


alex1248

  • Призрак форума
  • *****
  • Сообщений: 714
Re: Запрос с условием
« Ответ #2 : Декабрь 09, 2016, 09:45:31 pm »
Думаю, такой код должен работать
Цитировать
&НаКлиенте
Процедура СоставляющиеНаименованиеИнгредиентаПриИзменении(Элемент)
   Стр=Элементы.Составляющие.ТекущиеДанные;
   Стр.Ккал = ПолучитьКкалории(Стр.НаименованиеИнгредиента);
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьКкалории(Ингредиент)
   Возврат Ингредиент.Ккал;
КонецФункции
« Последнее редактирование: Декабрь 09, 2016, 09:48:21 pm от alex1248 »