1. Гость 11.10.18 17:34

Подстановка вида товара в зависимости от группы

День добрый. Есть иерархический справочник, и две папки товары и услуги, нужно чтобы в зависимости от группы при создании новой номенклатуры автоматически подставлялось значение ее вида.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Номенклатура.Родитель КАК Родитель,
	|	Номенклатура.Родитель.Наименование КАК РодительНаименование,
	|	ПРЕДСТАВЛЕНИЕССЫЛКИ(Номенклатура.Родитель.Наименование) КАК РодНаи
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура";	
	  РезультатЗапроса = Запрос.Выполнить();
	 ВыборкаТовары = РезультатЗапроса.Выбрать();
	Если ВыборкаТовары.РодНаи = "Товары"  Тогда
		 Объект.Вид = ПредопределенноеЗначение("Перечисление.ВидыНоменклатуры.Товар");
	 ИначеЕсли ВыборкаТовары.РодНаи = "Услуга" Тогда 
		 Объект.Вид = ПредопределенноеЗначение("Перечисление.ВидыНоменклатуры.Услуга");
	 КонецЕсли;	

КонецПроцедуры
Показать

не понимаю почему не работает и ошибок не выдает
Найденный ответ помечайте кнопкой "Это решение", это позволит другим пользователям быстрее находить ответ на данный вопрос.
Ответы
Избранное Подписка Сортировка: Древо
3. alex-l19041 9 11.10.18 17:47 Сейчас в теме
(1) этот запрос вернет ВСЕ группы номенклатуры! и еще столько раз сколько элементов в справочнике...
2. DenisCh 11.10.18 17:42 Сейчас в теме
Выборка.Следующий() за тебя Ангела будет писать?
4. YellowAndBlue 12.10.18 09:06 Сейчас в теме
5. YellowAndBlue 12.10.18 09:48 Сейчас в теме
(2)Есть другая проблема.
Теперь он игнорирует условие Если и подставляет какой-то один вид номенклатуры
Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Номенклатура.Родитель КАК Родитель,
	|	Номенклатура.Родитель.Наименование КАК РодительНаименование,
	|	ПРЕДСТАВЛЕНИЕССЫЛКИ(Номенклатура.Родитель.Наименование) КАК РодНаи,
	|	Номенклатура.Вид КАК Вид
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура";	
	РезультатЗапроса = Запрос.Выполнить();
	ВыборкаТовары = РезультатЗапроса.Выбрать();
	Пока ВыборкаТовары.Следующий() Цикл
	Если ВыборкаТовары.РодНаи = "Услуги" Тогда 
		 Объект.Вид = ПредопределенноеЗначение("Перечисление.ВидыНоменклатуры.Услуга");
	ИначеЕсли ВыборкаТовары.РодНаи = "Товары"  Тогда
		 Объект.Вид = ПредопределенноеЗначение("Перечисление.ВидыНоменклатуры.Товар");		
	КонецЕсли;	 
	КонецЦикла; 
	
Показать

что не так?
6. DenisCh 12.10.18 10:49 Сейчас в теме
(5) Дядя-отладчик что показывает? Не нравится мне тут в твоём запросе ПредставлениеСсылки...
Почему просто наименование не проверить?
8. YellowAndBlue 12.10.18 10:50 Сейчас в теме
(6) нужен отбор в запросе, чтобы отбирать только родителя нужной номенклатуры. но я не знаю как его написать. как он должен выглядить
7. YellowAndBlue 12.10.18 10:49 Сейчас в теме
9. DenisCh 12.10.18 11:15 Сейчас в теме
А где условие на нужную номенклатуру в запросе?
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день

Программист 1С
Воронеж
зарплата до 80 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 80 000 руб.
Полный день