Вывод информации в поле через систему запросов. (Новичкуи нубу)
Добрый день, дорогие профи, я начинающий 1с-программист, работаю на конф. 1.6. Моя задача состоит в создании поля "Контактное Лицо" в документе "ЗаказПокупателя". При выборе покупателя (контрагента) поле "Контактное Лицо" должно заполнятся автоматически, Если у покупателя (контрагента) только одно контактное лицо, иначе поле должно оставаться пустым с возможностью выбора из нескольких контактных лиц Конкретного покупателя (контрагента). Я знаю, что это надо делать через механизм запросов, возможно из Регистра сведений - СвязиКонтрагентКонтакт в процедуре КонтрагентПриИзменении, но я не понимаю, как вывести результат запроса в виде списка для поля. К примеру у меня контрагент - "ООО Гора" и его контактные лица: Магамед, Ахмед, Артур. Как мне с помощью конструктора запросов выдавать список, при выборе поля из этих трёх достопочтенных господ? Буду очень признателен за помощь.
П.С. Есть похожая тема на этом форуме, но про нее, видимо, все забыли, и то, что выбрано там в виде решения им не является, по заявлению создателя темы форума.
П.С. Есть похожая тема на этом форуме, но про нее, видимо, все забыли, и то, что выбрано там в виде решения им не является, по заявлению создателя темы форума.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) Благодарю за подсказку, нашел вот такой пример выборки
Запрос = Новый Запрос("Выбрать Ссылка, Код, Наименование Из Справочник.Банки");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
//производим интересующие действия со справочником "Банки"
КонецЦикла;
Получается мне нужно написать что то на подобии:
Запрос = Новый Запрос("Выбрать Ссылка, Наименование из Справочник.КонтактныеЛица") или Наименование из Справочник.Контрагенты.КонтактныеЛица")
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
КонецЦикла;
Моя задача получить список контактных лиц определенного контрагента, все было бы проще если бы справочник контактных лиц был подчинен справочнику контрагенты, но увы это не так, и мне нужно в первую очередь понять логику работы запросов, а не просто получить результат.
Запрос = Новый Запрос("Выбрать Ссылка, Код, Наименование Из Справочник.Банки");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
//производим интересующие действия со справочником "Банки"
КонецЦикла;
Получается мне нужно написать что то на подобии:
Запрос = Новый Запрос("Выбрать Ссылка, Наименование из Справочник.КонтактныеЛица") или Наименование из Справочник.Контрагенты.КонтактныеЛица")
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
КонецЦикла;
Моя задача получить список контактных лиц определенного контрагента, все было бы проще если бы справочник контактных лиц был подчинен справочнику контрагенты, но увы это не так, и мне нужно в первую очередь понять логику работы запросов, а не просто получить результат.
(5) Пример кода для ERP, там справочник Контактных лиц партнеров подчинен справочнику Партнеры:
Но там возникла проблема с очисткой истории ввода, которая мешается с заполненным списком выбора, по работе с ней отдельная история
&НаСервереБезКонтекста
Функция ПартнерПриИзмененииНаСервере(Владелец)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КонтактныеЛицаПартнеров.Ссылка КАК КонтактноеЛицо
|ИЗ
| Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
|ГДЕ
| КонтактныеЛицаПартнеров.Владелец = &Владелец";
Запрос.УстановитьПараметр("Владелец", Владелец);
РезультатЗапроса = Запрос.Выполнить();
МассивЗначений = Новый Массив;
Если Не РезультатЗапроса.Пустой() Тогда
МассивЗначений = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("КонтактноеЛицо");
КонецЕсли;
Возврат МассивЗначений;
КонецФункции
&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
МассивКонтактныхЛиц = ПартнерПриИзмененииНаСервере(Объект.Партнер);
ЭтаФорма.Элементы.КонтактноеЛицо.СписокВыбора.Очистить();
Объект.КонтактноеЛицо = "";
Если МассивКонтактныхЛиц.Количество() = 1 Тогда
Объект.КонтактноеЛицо = МассивКонтактныхЛиц[0];
ИначеЕсли МассивКонтактныхЛиц.Количество() > 1 Тогда
ЭтаФорма.Элементы.КонтактноеЛицо.СписокВыбора.ЗагрузитьЗначения(МассивКонтактныхЛиц);
КонецЕсли;
КонецПроцедуры
ПоказатьНо там возникла проблема с очисткой истории ввода, которая мешается с заполненным списком выбора, по работе с ней отдельная история
(7) Спасибо за пример, помогает понять работу запросов, а проблему с очисткой истории ввода вроде можно решить поставив в свойствах что-то вроде "убрать историю выбора" или что-то вроде, по крайней мере для моей задачи этого хватит. Еще раз спасибо за пример.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
