Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 14:02

Как из справочника вытащить список одной группы справочника и вставить его в поле документа для выбора одного элемента из полученного списка?

Автор ilnur75, 16 авг 2016, 20:58

0 Пользователей и 1 гость просматривают эту тему.

ilnur75

8.3 учебная.
справочник Партнеры, в нем группы Физики, Юрики.
в документе поле ФизЛица, тип данных Спр.Партнеры.Ссылка
это поле планируется заполнять выбранным ФИО из списка Группы Физики спр.Партнеры.

Стандартно поле заполняется выбором из формы выбора, сгенерируемой системой, но сначала надо выбрать нужную папку, потом из неё выбрать нужное ФИО.

Чтобы ускорить процесс выбора нужного ФИО , хотелось бы сделать выбор сразу из списка нужной группы справочника, минуя стадию выбора папки из нескольких папок в справочнике.

Сделал следующее.
в документе для поля ФизЛица создал обработчик события НачалоВыбора и вспомогательную функцию ПоискФизЛица.
В итоге, сразу выводится список группы Физики, можно переходить по строкам списка ,но при выборе любой строки списка , выходит известная нам форма выбора с папками справочника, и снова надо выбирать папку , потом элемент.

Как сделать чтобы выбранное значение из списка записывалось в поле, и сохранялось,т.е при открытии документа было прописано в поле?
Подозреваю что надо дополнить код процедуры НачалоВыбора, но какими методами?
прописал строку СтандартнаяОбработка = Ложь и форма выбора не появляется, но и значение из списка не прописывается , после нажатия на элемент списка в поле документа пустота.
Вот код
&НаСервере
Функция ПоискФизЛица();

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Партнеры.Ссылка КАК Партнер
|ИЗ
| Справочник.Партнеры КАК Партнеры
|ГДЕ
| Партнеры.Родитель В ИЕРАРХИИ(&Родитель)";

Запрос.УстановитьПараметр("Родитель", Справочники.Партнеры.НайтиПоНаименованию("Физики"));
РезультатЗапроса = Запрос.Выполнить();

        Список = Новый СписокЗначений;
Список.ЗагрузитьЗначения(РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("Партнер"));
Возврат Список;
КонецФункции

&НаКлиенте
Процедура ФизЛицаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Объект.ФизЛица = ВыбратьИзСписка(ПоискФизЛица(), Элементы.ФизЛица);
КонецПроцедуры

 

SGIRG



SGIRG

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

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

&НаКлиенте
Процедура ФизЛицаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    Элементы.ФизЛица.РежимВыбораИзСписка = Истина;
    ЗаполнитьСписокВыбора();
КонецПроцедуры


cska-fanat-kz

Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

GadLex

Помогите, нужен пинок в правильном направлении..


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

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

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

&НаКлиенте
Процедура ТаблицаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка);
    ЗаполнитьСписокВыбораНаименования();
КонецПроцедуры

   Процедура ТаблицаНачалоВыбора установлена на События (ОбработкаВыбора) Столбца3. Когда я в этом столбце выбираю значение из списка, запускается Процедура ТаблицаНачалоВыбора и чудесно работает, заполняя соответствующие ячейки Столбца1 и Столбца2.
   Проблема в том, что в ячейках Столбца3 не отображаются выбираемые значения.

Что я делаю не так?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск