Реквизит типа «Список значений» |
Я |
03.08.17 — 17:52
Всем доброго времени суток.
Исходные данные: 1С 8.3, УФ.
Что хочу: разместить на форме список значений и подбирать в него элементы типа «Справочник.Должности».
Что делаю: в реквизиты объекта (не формы) добавляю реквизит типа «СписокЗначений».
В чем вопрос: как для этого списка указать тип значения, чтобы в дальнейшем выполнять подбор в форме?
P.S. если добавить реквизит не в объект, а в форму — все ок, тип назначить можно. но логика системы мне не понятно. знающие люди, подскажите плиз. Заранее спасибо.
1 — 03.08.17 — 17:55
(0) в форме и указывай какой тип будет внутри списка. больше никак
2 — 03.08.17 — 19:38
(0) Логика в том, что тип СписокЗначений не может быть сохранен в ИБ. Поэтому для реквизита объекта его назначить нельзя.
3 — 03.08.17 — 19:40
(2) реквизит отчета или обработки можно..
4 — 03.08.17 — 19:41
(0)
&НаКлиенте
Процедура СписокОрганизацийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Объект.СписокОрганизаций.ТипЗначения = Новый ОписаниеТипов(«СправочникСсылка.Организации»);
КонецПроцедуры
5 — 04.08.17 — 08:48
Всем спасибо за пояснения
6 — 04.08.17 — 09:24
Не делай как в (4), делай в ПриСОзданииНаСервере тип значений элемента управления, что отображает список значений
7 — 04.08.17 — 15:25
(6) я тоже так сделаю.. надо же я так тупанул 
8 — 04.08.17 — 15:59
(6) я только что проверил.. работает.. если выбирать по кнопке Добавить.. но кнопка Подбор работает только, если перехватывать событие НачалоВыбора..
9 — 04.08.17 — 16:02
(6) (8) хотя нет.. работает Подбор.. не работает он только у тех справочников, для которых по умолчанию ставится Быстрый выбор..
для организаций не работает.. а для номенклатуры запросто..
10 — 04.08.17 — 21:12
Не понял, так все получилось или что-то не получилось?
11 — 04.08.17 — 21:24
Я бы сделал так:
Добавляешь реквизит формы, устанавливаешь тип — СписокЗначений. С свойствах реквизита формы, в самом низу, Объект — Тип значения — устанавливаешь нужный тип.
В объект добавляешь таб. часть и перед записью ее заполняешь из СпискаЗначений.
При открытии из таб.части заполняешь Список значений.
runoff_runoff
12 — 04.08.17 — 21:59
(10) всё работает.. супер..
Содержание:
- Использование палитры свойств реквизита формы типа «Список значений»
- Программная установка допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений»
При разработке интерфейсов 1С на платформе 1С:Предприятие 8 нередки ситуации, когда требуется ограничить допустимые для ввода списки значений для реквизита формы с типом «Список значений». Это можно выполнить несколькими способами.
1. Использование палитры свойств реквизита формы типа «Список значений»
Первый способ: установка допустимого типа в свойстве «Тип значения» в палитре свойств реквизита формы типа «Список значений».

Рис. 1 Редактирование типа значения в палитре свойств реквизита
В данном случае мы ограничили возможность добавления/изменения элементов списка реквизита «Список складов-получателей» типом «СправочникСсылка.Склады».
По умолчанию при создании основного реквизита формы с типом «Список значений» платформа 1С устанавливает данному свойству тип значения «Произвольный».
2. Программная установка допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений»
Второй способ: программная установка допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений».
Сделать это можно, например, в обработчике события 1С формы «ПриСозданииНаСервере»:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей = Новый Массив;
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.Склады»));
СпискокСкладовПолучателей.ТипЗначения = Новый ОписаниеТипов(МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей);
КонецПроцедуры
В данном случае мы также ограничили возможность добавления/изменения элементов списка реквизита «Список складов-получателей» типом «СправочникСсылка.Склады».
Если же требуется разрешить выбирать несколько типов при добавлении или изменении элементов списка значений на форме, то просто следует добавить все необходимые типы в массив, передаваемый в качестве параметра конструктора описания типов, который используется при установке допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений», например:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей = Новый Массив;
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.Склады»));
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.ПодразделенияОрганизаций»));
СпискокСкладовПолучателей.ТипЗначения = Новый ОписаниеТипов(МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей);
КонецПроцедуры
Таким образом, во втором случае для реквизита «Список складов-получателей» к возможности добавления/изменения элементов списка с типом «СправочникСсылка.Склады» мы добавили аналогичную возможность для типа «СправочникСсылка.ПодразделенияОрганизаций».
Программную установку допустимого типа(ов) значения(ий) аналогичным образом можно использовать и для колонки с типом «Список значений» реквизита формы с типом «Таблица значений» или «Дерево значений». Единственный нюанс, на который нужно обратить внимание для получения требуемого результата – это то, что установка в таких случаях должна производиться в обработчике события «НачалоВыбора» элемента формы, связанного с соответствующей колонкой реквизита формы с типом «Таблица значений» или «Дерево значений», например:
&НаКлиенте
Процедура ТаблицаПолучателейМатериаловСпискокСкладовПолучателейНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей = Новый Массив;
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.Склады»));
Элементы.ТаблицаПолучателейМатериалов.ТекущиеДанные.СпискокСкладовПолучателей.ТипЗначения = Новый ОписаниеТипов(МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей);
КонецПроцедуры
В данном случае для колонки «СпискокСкладовПолучателей» (с типом «Список значений») реквизита формы «ТаблицаПолучателейМатериалов» мы ограничили возможность добавления/изменения элементов списка значений типом «СправочникСсылка.Склады».
Специалист компании «Кодерлайн»
Аскер Жансуев
В предыдущей статье «Изучаем список значений 1С» я показал, каким образом можно программного работать со списком значений. Мы научились добавлять, вставлять и загружать нужные элементы в список. Но со списком значений можно работать на управляемой форме 1С, когда он используется в качестве реквизита этой формы. В этой статье мы разберем вопросы работы со списком значений на форме.
На управляемой форме 1С список значений можно разместить в качестве реквизита управляемой формы.
Мы уже знаем, что каждый элемент списка значений содержит значения типа Элемент списка значений, но можно задать тип данных, которые будут содержаться в этом элементе. Делается это при помощи свойства реквизита – тип значения. В этом случае, все элементы заданного списка значений будут одного типа.
Реквизит с типом список значений можно разместить на форме, где он отобразится или виде таблицы или в виде поля. Для размещения реквизита достаточно мышкой просто перенести его в элементы управляемой формы.
После начала размещения, будет предложено выбрать тип нового элемента. Можно выбрать или таблицу, или поле.
Если мы выберем тип Таблица, то будет размещен элемент с типом Таблица, где в качестве колонок можно размещать соответствующие свойства списка значений.
Теперь на форме можно работать с этим списком, выбирая нужные объекты, указанного типа.
С реквизитом формы мы можем работать как с обычным списком значений. Например, заполним созданный нами список всеми складами, которые можно использовать.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Склады.Ссылка КАК Ссылка, | Склады.Представление КАК Представление |ИЗ | Справочник.Склады КАК Склады |ГДЕ | НЕ Склады.НеИспользовать"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Список.Добавить(Выборка.Ссылка,Выборка.Представление); КонецЦикла; КонецПроцедуры
В этом случае, список заполнится сразу при открытии формы.
Более подробно о работе со списками значений и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009
Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
2017-12-18T22:27:10+00:00Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат
ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции


Полный синтаксис (нажмите, чтобы раскрыть)
Оглавление (нажмите, чтобы раскрыть)
&НаКлиенте Процедура ВыполнитьКод(Команда) /// Как создать список значений в 1с 8.3, 8.2 Список = Новый СписокЗначений; /// Как добавить элемент в список значений в 1с 8.3, 8.2 // параметры метода добавить: // - значение // - представление // - отметка (необ.) // - картинка (необ.) Список.Добавить( 1980, // значение элемента "Год рождения Васи" // представление ); Список.Добавить(1985, "Год рождения Юли"); // значения могут быть разных типов Список.Добавить("Полина", "Имя ребёнка"); /// Как вставить элемент в список значений в 1с 8.3, 8.2 // вставляем в позицию №2 (элементы нумеруются с 0) // элемент со значением 2010 и представлением // "Год рождения их совместной дочки" Список.Вставить(2, 2010, "Год рождения их совместной дочки"); /// Как обойти элементы списка значений в 1с 8.3, 8.2 Для Каждого Элемент Из Список Цикл Сообщить( Элемент.Представление + ": " + Строка(Элемент.Значение) ); КонецЦикла; /// Как очистить список значений в 1с 8.3, 8.2 Список.Очистить(); Список.Добавить("Понедельник"); Список.Добавить("Вторник"); Список.Добавить("Среда"); /// Как узнать количество элементов списка значений, а также /// получить элемент списка по его индексу в 1с 8.3, 8.2 // нумерация с нуля Для Индекс = 0 По Список.Количество() - 1 Цикл Сообщить(Список[Индекс]); КонецЦикла; /// Как найти элемент списка по его значению в 1с 8.3, 8.2 ЗначВторник = Список.НайтиПоЗначению("Вторник"); /// Как узнать индекс элемента в списке в 1с 8.3, 8.2 Сообщить(Список.Индекс(ЗначВторник)); // 1, так как нумерация с нуля /// Как отсортировать список по его значениям в 1с 8.3, 8.2 // было: понедельник, вторник, среда Список.СортироватьПоЗначению(НаправлениеСортировки.Убыв); // стало: среда, понедельник, вторник /// Как удалить элемент из списка значений в 1с 8.3, 8.2 // удаляем первый элемент // параметр: элемент списка // или индекс элемента // можно так Список.Удалить(Список[0]); // или так // Список.Удалить(0); /// Как сдвинуть элемент списка значений в 1с 8.3, 8.2 // сдвигаем нулевой элемент на одну позицию вперёд // было: понедельник вторник Список.Сдвинуть(0, 1); // стало: вторник понедельник /// Как сделать копию списка в 1с 8 КопияСписка = Список.Скопировать(); Цвета = Новый СписокЗначений; Цвета.Добавить("Красный"); Цвета.Добавить("Зелёный"); Цвета.Добавить("Синий"); /// Как выгрузить значения списка в массив в 1с 8.3, 8.2 МассивЦветов = Цвета.ВыгрузитьЗначения(); /// Как загрузить значения списка из массива в 1с 8.3, 8.2 Цвета.ЗагрузитьЗначения(МассивЦветов); КонецПроцедуры /// Как сделать немодальный выбор значения из списка /// значений в 1с 8.3, 8.2 &НаКлиенте Процедура КакСделатьНемодальныйВыборЗначения(Команда) Цвета = Новый СписокЗначений; Цвета.Добавить("Красный"); Цвета.Добавить("Зелёный"); Цвета.Добавить("Синий"); // процедура ПослеВыбораЭлемента определена чуть ниже ОповещениеПослеВыбораЭлемента = Новый ОписаниеОповещения( "ПослеВыбораЭлемента", ЭтотОбъект ); Цвета.ПоказатьВыборЭлемента( ОповещениеПослеВыбораЭлемента, "Выберите любимый цвет" ); КонецПроцедуры &НаКлиенте Процедура ПослеВыбораЭлемента(Элемент, Параметры) Экспорт Если Элемент <> Неопределено Тогда Сообщить(Элемент.Значение); КонецЕсли; КонецПроцедуры /// Как сделать немодальную отметку значений из списка /// значений в 1с 8.3, 8.2 &НаКлиенте Процедура КакСделатьНемодальнуюОтметкуЗначений(Команда) Цвета = Новый СписокЗначений; Цвета.Добавить("Красный"); Цвета.Добавить("Зелёный"); Цвета.Добавить("Синий"); // процедура ПослеОтметкиЭлементов определена чуть ниже ОповещениеПослеОтметкиЭлементов = Новый ОписаниеОповещения( "ПослеОтметкиЭлементов", ЭтотОбъект ); Цвета.ПоказатьОтметкуЭлементов( ОповещениеПослеОтметкиЭлементов, "Выберите любимые цвета" ); // а вот так можно разом установить все отметки // списка в определенное значение Цвета.ЗаполнитьПометки(Истина); КонецПроцедуры &НаКлиенте Процедура ПослеОтметкиЭлементов(Элементы, Параметры) Экспорт Если Элементы <> Неопределено Тогда Для Каждого Цвет Из Элементы Цикл Если Цвет.Пометка Тогда Сообщить(Цвет.Значение); КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры /// Как сделать модальный выбор значения из списка в 1с 8.3, 8.2 &НаКлиенте Процедура КакСделатьМодальныйВыборЗначения(Команда) Цвета = Новый СписокЗначений; Цвета.Добавить("Красный"); Цвета.Добавить("Зелёный"); Цвета.Добавить("Синий"); ВыбЦвет = Цвета.ВыбратьЭлемент("Выберите любимый цвет"); Если ВыбЦвет <> Неопределено Тогда Сообщить(ВыбЦвет.Значение); КонецЕсли; КонецПроцедуры /// Как сделать модальную отметку значений из списка /// значений в 1с 8.3, 8.2 &НаКлиенте Процедура КакСделатьМодальнуюОтметкуЗначений(Команда) Цвета = Новый СписокЗначений; Цвета.Добавить("Красный"); Цвета.Добавить("Зелёный"); Цвета.Добавить("Синий"); Если Цвета.ОтметитьЭлементы("Выберите любимые цвета") Тогда Для Каждого Цвет Из Цвета Цикл Если Цвет.Пометка Тогда Сообщить(Цвет.Значение); КонецЕсли; КонецЦикла; КонецЕсли; // а вот так можно разом установить все отметки // списка в определенное значение Цвета.ЗаполнитьПометки(Истина); КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере

Список значений в языке 1С 8.3, 8.2 (в примерах)
Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат
ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
- Главная
- О сайте
- Главная
- Содержание
Категории
—>
рубрики: Работа с формами | Дата: 22 января, 2016
Скачать обработку с примерами из статьи: professia1c_ListValue.epf
Платформа: 8.3; Тип формы: управляемая.
Рассмотрим как разместить выпадающий список значений на форме. Практиковаться будем на платформе 1С:Предприятие 8.3 на управляемых формах. Предположим, что нам надо разместить на форме список значений как показано на рисунке.

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

А для работы со списком значений будем использовать свойство поля ввода – СписокВыбора.
Для этого в свойствах поля ввода включаем флажок РежимВыбораИзСписка
И программно заполняем СписокВыбора нужными нам значениями:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список = Новый СписокЗначений;
Список.Добавить("Вариант 1");
Список.Добавить("Вариант 2");
Список.Добавить("Вариант 3");
Элементы.СписокВариантов.СписокВыбора.ЗагрузитьЗначения(Список.ВыгрузитьЗначения());
СписокВариантов = Элементы.СписокВариантов.СписокВыбора[0].Значение;
КонецПроцедуры
Для обычной (не управляемой формы) принцип реализации точно такой же.












