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

Передача ссылки на справочник в поле ввода

Автор ramzes, 27 сен 2011, 10:29

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

ramzes

не то написала-я понимаю что можно получить любой реквизит, но как вывести любой реквизит в поле ввода когда там СправочникСсылка это реально?

has

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

ramzes

Вот именно это я и пытаюсь уточнить, что вывести любой реквизит можно только в строку, а по СправочникСсылка можно только при выводе получить или Код или Наименование( в зависимотси от того что стоит в основном представлении данных справочника))

Beat

Вроде бы у меня похожая проблема, спрошу тут.

Создал обработку, на форме разместил поле ввода.
Хочу выбирать сотрудников из справочника, чтобы потом параметром передавать в запрос.
Однако, назначить этому полю ввода сразу же Справочники.Сотрудники нельзя, ТипЗначения "Произвольный" и поменять нельзя.

Заполняю поле ввода значениями так (ПриОткрытии):
Процедура СотрудникНачалоВыбора(Элемент, СтандартнаяОбработка)
// Вставить содержимое обработчика.

Запрос = Новый Запрос;
Запрос.Текст =
        "ВЫБРАТЬ
        |   *
        |ИЗ
        |   Справочник.Сотрудники КАК Сотр
        |УПОРЯДОЧИТЬ ПО
        |   Сотр.Наименование";


МассивВыбора = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Наименование");
ЭтаФорма.ЭлементыФормы.Сотрудник.СписокВыбора.ЗагрузитьЗначения(МассивВыбора);
   

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


Заполняет список, всё нормально. Но только значениями типа Строка.

Дальше, чтобы воспользоваться выбранным значением приходится делать так:

Процедура РегистрРольНажатие(Элемент)//ПрочитатьЗаписиРегистраСведений()



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


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

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(
            Строка(ВыборкаДетальныеЗаписи.Период) + " " +
ВыборкаДетальныеЗаписи.НомерСтроки + " " +
ВыборкаДетальныеЗаписи.Роль + " " +
            ВыборкаДетальныеЗаписи.ПМ + " " +
ВыборкаДетальныеЗаписи.Активность         );
КонецЦикла;
КонецЕсли;

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


Вот это убивает:
СпрСотрудник = Справочники.Сотрудники;
ПарамСотрудник = СпрСотрудник.НайтиПоНаименованию(Сотрудник);


Заполнять строками поле выбора, чтобы потом по наименованию искать элемент справочника, который уже передавать как параметр в запрос

Запрос.УстановитьПараметр("ПараметрСотрудник",ПарамСотрудник);


Нельзя как-то проще сделать? Например, сразу же назначить справочник Сотрудники полю выбора и выбирать элементы справочника?

vitasw

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

Beat

Цитата: vitasw от 13 фев 2015, 18:32
А вы не пробовали создать реквизит обработки с необходимым типом.
То что вы показали - написано старательно, но уж простите, это как рвать гланды через жопу.

"Однако, назначить этому полю ввода сразу же Справочники.Сотрудники нельзя, ТипЗначения "Произвольный" и поменять нельзя."

В 7.7 было можно, а тут нет.
Перевёл форму на управляемую - можно задать тип Справочники.Сотрудники...

Теги:

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

Рейтинг@Mail.ru

Поиск