helpf.pro
Регистрация

запрос на перебор значений в подчиненном справочнике

mire
24.09.2010 20:12Прочитано: 4376
1с 8.1 Управление торговлей.
На основе примера "Перебрать, выбрать элементы подчиненного справочника",
который выложен у Вас на сайте пытаюсь создать запрос ,который бы выбирал
для конкретного номенклатурного номера все единицы измерения по нему из справочника
Справочник.ЕдиницыИзмерения
Только он возвращает пустое значение.
Я что-то не так написал в коде?
Код 1C v 8.х
 
Функция ЕдиницаШтрих(элемент)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ЕдиницыИзмерения.ЕдиницаПоКлассификатору
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Ссылка = &Владелец
|");


Запрос.УстановитьПараметр("Владелец", Элемент);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Найденноезначение = Выборка.Ссылка;
сообщить(Найденноезначение);
КонецЦикла;
Возврат Истина;
Иначе
сообщить("пусто в запросе");
КонецЕсли;
КонецФункции

Артикул = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",БД.Articul);

ЕдиницаШтрих(Артикул);
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
24.09.2010 20:36Ответ № 1
когда делаешь
Артикул = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",БД.Articul);
что получается в Артикул ?

из кода убери
Возврат Истина;
возвращать здесь нечего
mire
24.09.2010 20:54Ответ № 2
Вы спрашивали:
"когда делаешь
Артикул = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",БД.Articul);
что получается в Артикул ? "
выражение Сообщить (Артикул) - выводит в окне сообщений наименование товара
E_Migachev
24.09.2010 21:24Ответ № 3
ок, тогда вот так:
Код 1C v 8.х
 Функция ЕдиницаШтрих(элемент)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ЕдиницыИзмерения.ЕдиницаПоКлассификатору КАК ЕДИНИЦА
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Ссылка = &Владелец
|");
Запрос.УстановитьПараметр("Владелец", Элемент);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.ЕДИНИЦА);
КонецЦикла;
Иначе
Сообщить("пусто в запросе");
КонецЕсли;
КонецФункции
mire
25.09.2010 09:27Ответ № 4
Здравствуйте!
Переделал код на
Код 1C v 8.х
 
Функция ЕдиницаШтрих(элемент)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ЕдиницыИзмерения.ЕдиницаПоКлассификатору как единица
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Ссылка = &Владелец
|");


Запрос.УстановитьПараметр("Владелец", Элемент);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
// Найденноезначение = Выборка.Ссылка;

Сообщить(Выборка.ЕДИНИЦА);

КонецЦикла;
Иначе
сообщить("пусто в запросе "+Элемент);
КонецЕсли;
КонецФункции


выражение Сообщить ("пусто в запросе "+Элемент) - выводит в окне сообщений
"пусто в запросе + наименование товара"
mire
26.09.2010 21:07Ответ № 5
Добрый вечер.
Вот покапался и нашел накой код;
выборка = Справочники.ЕдиницыИзмерения.Выбрать( ,Артикул);
Пока выборка.Следующий() = 1 Цикл
Сообщить("выбрано " + выборка.ЕдиницаПоКлассификатору);
КонецЦикла;
Он как раз работает.Выбирает все единицы измерения по данному номенклатурному номеру.
А почему не работает вышеизложенный запрос.
Скажите. пожалуйста , в таких случаях чем лучше пользоваться запросом или подобной выборкой?
E_Migachev
27.09.2010 23:33Ответ № 6
(5) всегда лучше всего пользоваться запросом - быстрее работает!

что касается вышеуказанного кода - то в нем похоже ошибка *12 пробуй так:
Код 1C v 8.х
  Функция ЕдиницаШтрих(элемент)
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ЕдиницыИзмерения.ЕдиницаПоКлассификатору КАК ЕДИНИЦА
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Владелец = &Владелец
|");
Запрос.УстановитьПараметр("Владелец", Элемент);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.ЕДИНИЦА);
КонецЦикла;
Иначе
Сообщить("пусто в запросе");
КонецЕсли;
КонецФункции
Подсказка: Для быстрого поиска ответов - используйте 'Поиск'
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.