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

Выпадающий список в поле ввода

Автор Ивашка, 11 авг 2021, 11:01

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

Ивашка

Добрый день! Пришло задание: Есть док ""ЗаявкаНаРасходованиеСредств", у нее есть ТЧ: WG_Комментарий, и реквизит у ТЧ: комментарий(тип строка). Надо сделать выпадающий список в поле «комментарий» с возможностью его редактирования. Вот перечень комментариев:
-Нет документов
-Нет договора
Мое решение:
Создал внешнюю обработку, реквизит НастройкаПользователей(тип Произвольный), ТЧ: "тзКомментарий", реквизит у нее "Комментарий",
В в модуле объекта:
НастройкаПользователей = Справочники.СохраненныеНастройки.НайтиПоНаименованию(ЭтотОбъект.Метаданные().ПолноеИмя());
Если НастройкаПользователей = Справочники.СохраненныеНастройки.ПустаяСсылка() Тогда
НовыйСписок = Справочники.СохраненныеНастройки.СоздатьЭлемент();
НовыйСписок.Наименование = ЭтотОбъект.Метаданные().ПолноеИмя();
НовыйСписок.Записать();
НастройкаПользователей = НовыйСписок.Ссылка;
КонецЕсли;
В модуле формы:
Процедура КнопкаВыполнитьНажатие(Кнопка)

СохраненныеНастройки = Новый Структура;
СохраненныеНастройки.Вставить("тзКомментарии", тзКомментарии.Выгрузить());
                 
Если ЗначениеЗаполнено(НастройкаПользователей) Тогда
обНастройка = НастройкаПользователей.ПолучитьОбъект();
обНастройка.ХранилищеНастроек = Новый ХранилищеЗначения(СохраненныеНастройки);
обНастройка.Записать();
КонецЕсли;

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

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

// Вставить содержимое обработчика.
Если ЗначениеЗаполнено(НастройкаПользователей) Тогда
СохраненныеНастройки = НастройкаПользователей.ХранилищеНастроек.Получить();
Если ТипЗнч(СохраненныеНастройки) = Тип("Структура") Тогда
ТЗНастройки = Новый ТаблицаЗначений;
СохраненныеНастройки.Свойство("тзКомментарии", ТЗНастройки);
тзКомментарии.Загрузить(ТЗНастройки);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
а модуле формы документа "ЗаявкаНаРасходованиеСредств" в обработчике ПриОткрытии указал такой код:
АдресОбработки = ПолучитьИмяВременногоФайла("epf");
НашаОбработка = Справочники.ВнешниеОбработки.НайтиПоКоду("000000244");
Обработка = НашаОбработка.ХранилищеВнешнейОбработки.Получить();
Обработка.Записать(АдресОбработки);
ВнешняяОбработка = ВнешниеОбработки.Создать(АдресОбработки, Ложь);
Если ЗначениеЗаполнено(ВнешняяОбработка.НастройкаПользователей) Тогда
СохраненныеНастройки = ВнешняяОбработка.НастройкаПользователей.ХранилищеНастроек.Получить();
Если ТипЗнч(СохраненныеНастройки) = Тип("Структура") Тогда
ТЗКомментарии = Новый ТаблицаЗначений;
СохраненныеНастройки.Свойство("тзКомментарии", ТЗКомментарии);
КонецЕсли;
КонецЕсли;

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

ВыбранныйЭлемент = ВыбратьИзСписка(СписокВыбораКомментарии, ЭлементыФормы.WG_КомментарийФО);
Если ВыбранныйЭлемент <> Неопределено Тогда
СтрКомментарий = ВыбранныйЭлемент.Значение;
КонецЕсли;
по сути эта обработка, сохраняет значения в хранилище значения
у меня в поле список пуст, хотя в свойствах поставил РежимВыбораИзСписка
может есть другое решение?

antoneus

А свойство "Список выбора" у реквизита формы чем не устроило?

Ивашка

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

antoneus

Зачем подправлять? Загружать список выбора при создании на сервере из хранилища настроек, в самом списке в самом низу сделать пункт <Редактировать список>, при выборе этого пункта показывать ввод строки, эту строку добавлять в список выбора реквизита и в сохраненный в хранилище настроек.

Ивашка

Цитата: antoneus от 11 авг 2021, 11:59Загружать список выбора при создании на сервере из хранилища настроек,
а как загружать из хранилище настроек? с помощью Получить()
antoneus, По сути же у меня значения поля комментарии хранятся в тзКомментарии

antoneus

Примерно так и не надо огород городить с внешними обработками.

Теги:

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

Рейтинг@Mail.ru

Поиск