Архив метки: список выбора

1C управляемые формы, выбор из списка значений

1С удивительная платформа. Иногда спотыкаешься на ровном месте на пару часов и не знаешь ты дурак или нет.. Ну вот казалось бы простая вещь — сделать список выбора на управляемой форме, а застрял из-за одного нюанса, из-за которого то что выбрал в списке не отображалось в поле выбора..

Теперь пошагово:

  1. Создаем реквизит, например «Категория». ВАЖНО! — тип — произвольный:
    У меня был затык именно на этом месте.
  2. Далее ставим галочку «Режим выбора из списка» и назначаем обработку начала выбора на клиенте
  3. Собственно сама обработка:
&НаКлиенте
Процедура КатегорияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)	
	Элементы.Категория.СписокВыбора.Очистить();
	Элементы.Категория.СписокВыбора.Добавить(0,"1");
	Элементы.Категория.СписокВыбора.Добавить(1,"2");
	Элементы.Категория.СписокВыбора.Добавить(2,"Тест");
КонецПроцедуры

В чём была моя ошибка? Тип реквизита выбирал текст. Ну да, только когда я добавлял в список выбора цифры в Элементы.Категория.СписокВыбора.Добавить(0,»1″), то 1С их преобразовывала с цифры..

1C выбор из списка на управляемой форме

Задача: организовать на форме выбор из списка, с первоначальным заполнением из запроса

Решение:

1. Создаем на форме реквизит, с типом «Список значений» и обьектом — СправочникСсылка.Склады:

2. Создаем событие формы «При создании на сервере» и заполняем список:

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

    Пока Выборка.Следующий() Цикл
        СписокСкладов.Добавить(Выборка.Ссылка,Выборка.Представление);
    КонецЦикла;	
КонецПроцедуры

Получаем результат вида: