Нужно в поле ввода вывести реквизит из справочника отличный от наименования

1. user876792 08.12.17 12:00 Сейчас в теме
Есть два поля ввода "НоменклатурныйНомерПолеВвода" с типом СправочникСсылка.Номенклатура и "НаименованиеОбъектаПолеВвода" с типом строка. Нужно чтобы при выборе из справочника Номенклатура, НоменклатурныйНомерПолеВвода заполнялось Номером (НоменклатурныйНомер), а НаименованиеОбъектаПолеВвода Наименованием.

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


КонецПроцедуры

Показать


НаименованиеОбъектаПолеВвода - заполняется правильно - наименованием, а вот НоменклатурныйНомерПолеВвода вместо номера тоже подставляется наименование
По теме из базы знаний
Найденные решения
7. Boneman 298 08.12.17 12:26 Сейчас в теме
(6)
Если тип будет строка, то как тогда выбирать из справочника?

делаем активной кнопку выбора,
и в процедуре начало выбора обыгрываем программный выбор элемента списка справочника.
По результату выбора, присваиваем в этот реквизит ВыранныйЭлемент.номер.

Тебе все равно, придется строковый тип делать, т.к. номер у справочника, - это строка.
Либо делай коряво, вешай еще одно строковое поле, по аналогии с НаименованиеОбъектаПолеВвода
Выбирать будешь из ссылочного поля, а по результату заполняй в два строковых поля свои данные.
user876792; +1 Ответить
11. user876792 08.12.17 14:26 Сейчас в теме
(10)
Так работает
Процедура НоменклатурныйНомерПолеВводаНачалоВыбора(Элемент, СтандартнаяОбработка)			
	ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",, Элемент);
КонецПроцедуры

Процедура НоменклатурныйНомерПолеВводаОбработкаВыбора(Элемент, ВыбранныйЭлемент, СтандартнаяОбработка)	
	СтандартнаяОбработка = Ложь;
	НоменклатурныйНомерПолеВвода = ВыбранныйЭлемент.НоменклатурныйНомер;
	НаименованиеОбъектаПолеВвода = ВыбранныйЭлемент.Наименование;
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 298 08.12.17 12:07 Сейчас в теме
(1)
НоменклатурныйНомерПолеВвода вместо номера тоже подставляется наименование

у тебя же тип, справочник ссылка.
Там не может быть наименование, там ссылка и остается. А визуально ты видишь наименование - потому что представление основное ссылки - это наименование.

Если нужен номер, то и тип должен быть строка
user876792; +1 Ответить
6. user876792 08.12.17 12:20 Сейчас в теме
(2) Если тип будет строка, то как тогда выбирать из справочника?

Составной тип строка и ссылка выдает ошибку

Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
Номенклатура.Наименование <<?>>= &Наименование
7. Boneman 298 08.12.17 12:26 Сейчас в теме
(6)
Если тип будет строка, то как тогда выбирать из справочника?

делаем активной кнопку выбора,
и в процедуре начало выбора обыгрываем программный выбор элемента списка справочника.
По результату выбора, присваиваем в этот реквизит ВыранныйЭлемент.номер.

Тебе все равно, придется строковый тип делать, т.к. номер у справочника, - это строка.
Либо делай коряво, вешай еще одно строковое поле, по аналогии с НаименованиеОбъектаПолеВвода
Выбирать будешь из ссылочного поля, а по результату заполняй в два строковых поля свои данные.
user876792; +1 Ответить
10. user876792 08.12.17 13:27 Сейчас в теме
(7)
выбираю элемент справочника, но значение поля ввода не изменяется
Процедура НоменклатурныйНомерПолеВводаНачалоВыбора(Элемент, СтандартнаяОбработка)		
	ФормаП = Справочники.Номенклатура.ПолучитьФормуВыбора("ФормаСписка",ЭтаФорма);
   	ФормаП.Открыть();	
КонецПроцедуры

Процедура НоменклатурныйНомерПолеВводаОбработкаВыбора(Элемент, ВыбранныйЭлемент, СтандартнаяОбработка)	
	НоменклатурныйНомерПолеВвода = ВыбранныйЭлемент.НоменклатурныйНомер;
КонецПроцедуры
Показать
11. user876792 08.12.17 14:26 Сейчас в теме
(10)
Так работает
Процедура НоменклатурныйНомерПолеВводаНачалоВыбора(Элемент, СтандартнаяОбработка)			
	ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора",, Элемент);
КонецПроцедуры

Процедура НоменклатурныйНомерПолеВводаОбработкаВыбора(Элемент, ВыбранныйЭлемент, СтандартнаяОбработка)	
	СтандартнаяОбработка = Ложь;
	НоменклатурныйНомерПолеВвода = ВыбранныйЭлемент.НоменклатурныйНомер;
	НаименованиеОбъектаПолеВвода = ВыбранныйЭлемент.Наименование;
КонецПроцедуры
Показать
3. ryutao 50 08.12.17 12:10 Сейчас в теме
(1)
Запрос.УстановитьПараметр("Наименование", ВыбранноеЗначение);

Запрос.УстановитьПараметр("Наименование", ВыбранноеЗначение.Наименование);
и все заработает
5. user876792 08.12.17 12:16 Сейчас в теме
8. ryutao 50 08.12.17 12:39 Сейчас в теме
(5) Значит у Вас Наименование неограниченной длины? Тогда:
| Номенклатура.Ссылка = &Наименование";
и
Запрос.УстановитьПараметр("Наименование", ВыбранноеЗначение);
9. user876792 08.12.17 12:52 Сейчас в теме
4. user623969_dusa 08.12.17 12:15 Сейчас в теме
как правильно в (1) замечено вместо ссылки выводится ее представление - нужен номер если поменять представление будет номер вместо наименования номенклатуры везде, если такое поведение не надо и требуется номер только здесь то придется поменять тип у поля ввода - использовать свой реквизит тип строка у которого подменять значение как угодно
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот