Вывод информации в поле через систему запросов. (Новичкуи нубу)

1. Reen 08.12.22 20:38 Сейчас в теме
Добрый день, дорогие профи, я начинающий 1с-программист, работаю на конф. 1.6. Моя задача состоит в создании поля "Контактное Лицо" в документе "ЗаказПокупателя". При выборе покупателя (контрагента) поле "Контактное Лицо" должно заполнятся автоматически, Если у покупателя (контрагента) только одно контактное лицо, иначе поле должно оставаться пустым с возможностью выбора из нескольких контактных лиц Конкретного покупателя (контрагента). Я знаю, что это надо делать через механизм запросов, возможно из Регистра сведений - СвязиКонтрагентКонтакт в процедуре КонтрагентПриИзменении, но я не понимаю, как вывести результат запроса в виде списка для поля. К примеру у меня контрагент - "ООО Гора" и его контактные лица: Магамед, Ахмед, Артур. Как мне с помощью конструктора запросов выдавать список, при выборе поля из этих трёх достопочтенных господ? Буду очень признателен за помощь.

П.С. Есть похожая тема на этом форуме, но про нее, видимо, все забыли, и то, что выбрано там в виде решения им не является, по заявлению создателя темы форума.
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. пользователь 08.12.22 20:45
Сообщение было скрыто модератором.
...
4. Zevzm 08.12.22 21:53 Сейчас в теме
(2) Злой Вы, человек как хочет - так себя и называет. Еще и вежливо просит "дорогие профи", "Буду очень признателен за помощь".
10. user1863362 09.12.22 09:03 Сейчас в теме
(4)
вежливо просит "дорогие профи"

Если он под "дорогие" понимает "недешевые", то это знатный глум =)
3. пользователь 08.12.22 20:52
Сообщение было скрыто модератором.
...
5. Reen 08.12.22 22:14 Сейчас в теме
(3) Благодарю за подсказку, нашел вот такой пример выборки

Запрос = Новый Запрос("Выбрать Ссылка, Код, Наименование Из Справочник.Банки");
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
//производим интересующие действия со справочником "Банки"
КонецЦикла;

Получается мне нужно написать что то на подобии:
Запрос = Новый Запрос("Выбрать Ссылка, Наименование из Справочник.КонтактныеЛица") или Наименование из Справочник.Контрагенты.КонтактныеЛица")
Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл
КонецЦикла;

Моя задача получить список контактных лиц определенного контрагента, все было бы проще если бы справочник контактных лиц был подчинен справочнику контрагенты, но увы это не так, и мне нужно в первую очередь понять логику работы запросов, а не просто получить результат.
6. пользователь 08.12.22 22:17
Сообщение было скрыто модератором.
...
7. Zevzm 08.12.22 22:49 Сейчас в теме
(5) Пример кода для ERP, там справочник Контактных лиц партнеров подчинен справочнику Партнеры:

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

КонецФункции

&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
	
	МассивКонтактныхЛиц = ПартнерПриИзмененииНаСервере(Объект.Партнер);
	ЭтаФорма.Элементы.КонтактноеЛицо.СписокВыбора.Очистить();
        Объект.КонтактноеЛицо = "";
	Если МассивКонтактныхЛиц.Количество() = 1 Тогда
		Объект.КонтактноеЛицо = МассивКонтактныхЛиц[0];
	ИначеЕсли МассивКонтактныхЛиц.Количество() > 1 Тогда
		ЭтаФорма.Элементы.КонтактноеЛицо.СписокВыбора.ЗагрузитьЗначения(МассивКонтактныхЛиц);	
	КонецЕсли;   
	
КонецПроцедуры
Показать

Но там возникла проблема с очисткой истории ввода, которая мешается с заполненным списком выбора, по работе с ней отдельная история https://forum.infostart.ru/forum9/topic114510/
8. Reen 08.12.22 23:33 Сейчас в теме
(7) Спасибо за пример, помогает понять работу запросов, а проблему с очисткой истории ввода вроде можно решить поставив в свойствах что-то вроде "убрать историю выбора" или что-то вроде, по крайней мере для моей задачи этого хватит. Еще раз спасибо за пример.
9. Zevzm 09.12.22 07:52 Сейчас в теме
(8) Да и правда у поля ввода есть свойство ИсторияВыбораПриВводе, сменил значение с Авто на Не использовать. Спасибо.
Оставьте свое сообщение

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