Реквизит типа «Список значений» |
Я |
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С, когда он используется в качестве реквизита этой формы. В этой статье мы разберем вопросы работы со списком значений на форме.
На управляемой форме 1С список значений можно разместить в качестве реквизита управляемой формы.
Мы уже знаем, что каждый элемент списка значений содержит значения типа Элемент списка значений, но можно задать тип данных, которые будут содержаться в этом элементе. Делается это при помощи свойства реквизита – тип значения. В этом случае, все элементы заданного списка значений будут одного типа.
Реквизит с типом список значений можно разместить на форме, где он отобразится или виде таблицы или в виде поля. Для размещения реквизита достаточно мышкой просто перенести его в элементы управляемой формы.
После начала размещения, будет предложено выбрать тип нового элемента. Можно выбрать или таблицу, или поле.
Если мы выберем тип Таблица, то будет размещен элемент с типом Таблица, где в качестве колонок можно размещать соответствующие свойства списка значений.
Теперь на форме можно работать с этим списком, выбирая нужные объекты, указанного типа.
С реквизитом формы мы можем работать как с обычным списком значений. Например, заполним созданный нами список всеми складами, которые можно использовать.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Склады.Ссылка КАК Ссылка, | Склады.Представление КАК Представление |ИЗ | Справочник.Склады КАК Склады |ГДЕ | НЕ Склады.НеИспользовать"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Список.Добавить(Выборка.Ссылка,Выборка.Представление); КонецЦикла; КонецПроцедуры
В этом случае, список заполнится сразу при открытии формы.
Более подробно о работе со списками значений и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»
Книга «Программировать в 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С для выбора пользователем значения можно расположить непосредственно на форме обработки/документа. Тогда пользователь сможет выбирать несколько значений из списка (зажав CTRL или SHIFT).
Список значений на форме 1С — в толстом клиенте просто размещаем на форме элемент списка, указываем название связанного реквизита формы.
Список значений на форме 1С — в тонком клиенте добавим реквизит формы, у которого выберем тип Список значений. При перетаскивании реквизита на форму, 1С спросит в каком виде мы хотели бы отображать его – чтобы он отображался аналогично толстому клиенту – выберите «Таблица».
В списке элементов формы появятся таблица, а у нее колонка. В свойствах таблицы можно установить запрет на редактирование списка (свойства Изменять состав/порядок строк или галочка Только просмотр).
Работа со списком значений на форме 1С из программного кода ведется по имени реквизита формы, который в толстом клиенте автоматически добавила система, а в тонком – вручную добавили мы самостоятельно. В примере (на картинках) имя реквизита формы – «ВыберитеЗначение».
В обработчике события формы ПриОткрытии() заполним значения списка, чтобы пользователю было из чего выбирать:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ВыберитеЗначение.Добавить(0, "Создать документ"); //первый параметр – значение, второй параметр – представление значение, представление может отличаться от значения как угодно
ВыберитеЗначение.Добавить(1, "Редактировать документ");
ВыберитеЗначение.Добавить(2, "Удалить документ");
КонецПроцедуры
В обработчике нашего нужного события (например, кнопка выполнения действий) мы можем проверить, что там понавыбирал наш пользователь. Доступ к результату производится также по имени, но через элемент на форме, поэтому перед именем добавляем ЭлементыФормы (для толстого клиента) или Элемент (для тонкого клиента). Также – условие Если/Иначе уже не пойдет – так как могут быть выбраны несколько значений:
Проголосовать за этот пост:
Загрузка…
Posted in Язык 1С
Содержание:
- Использование палитры свойств реквизита формы типа «Список значений»
- Программная установка допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений»
При разработке интерфейсов 1С на платформе 1С:Предприятие 8 нередки ситуации, когда требуется ограничить допустимые для ввода списки значений для реквизита формы с типом «Список значений». Это можно выполнить несколькими способами.
1. Использование палитры свойств реквизита формы типа «Список значений»
Первый способ: установка допустимого типа в свойстве «Тип значения» в палитре свойств реквизита формы типа «Список значений».
Рис. 1 Редактирование типа значения в палитре свойств реквизита
В данном случае мы ограничили возможность добавления/изменения элементов списка реквизита «Список складов-получателей» типом «СправочникСсылка.Склады».
По умолчанию при создании основного реквизита формы с типом «Список значений» платформа 1С устанавливает данному свойству тип значения «Произвольный».
2. Программная установка допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений»
Второй способ: программная установка допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений».
Сделать это можно, например, в обработчике события 1С формы «ПриСозданииНаСервере»:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей = Новый Массив;
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.Склады»));
СпискокСкладовПолучателей.ТипЗначения = Новый ОписаниеТипов(МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей);
КонецПроцедуры
В данном случае мы также ограничили возможность добавления/изменения элементов списка реквизита «Список складов-получателей» типом «СправочникСсылка.Склады».
Если же требуется разрешить выбирать несколько типов при добавлении или изменении элементов списка значений на форме, то просто следует добавить все необходимые типы в массив, передаваемый в качестве параметра конструктора описания типов, который используется при установке допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений», например:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей = Новый Массив;
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.Склады»));
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.ПодразделенияОрганизаций»));
СпискокСкладовПолучателей.ТипЗначения = Новый ОписаниеТипов(МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей);
КонецПроцедуры
Таким образом, во втором случае для реквизита «Список складов-получателей» к возможности добавления/изменения элементов списка с типом «СправочникСсылка.Склады» мы добавили аналогичную возможность для типа «СправочникСсылка.ПодразделенияОрганизаций».
Программную установку допустимого типа(ов) значения(ий) аналогичным образом можно использовать и для колонки с типом «Список значений» реквизита формы с типом «Таблица значений» или «Дерево значений». Единственный нюанс, на который нужно обратить внимание для получения требуемого результата – это то, что установка в таких случаях должна производиться в обработчике события «НачалоВыбора» элемента формы, связанного с соответствующей колонкой реквизита формы с типом «Таблица значений» или «Дерево значений», например:
&НаКлиенте
Процедура ТаблицаПолучателейМатериаловСпискокСкладовПолучателейНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей = Новый Массив;
МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.Склады»));
Элементы.ТаблицаПолучателейМатериалов.ТекущиеДанные.СпискокСкладовПолучателей.ТипЗначения = Новый ОписаниеТипов(МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей);
КонецПроцедуры
В данном случае для колонки «СпискокСкладовПолучателей» (с типом «Список значений») реквизита формы «ТаблицаПолучателейМатериалов» мы ограничили возможность добавления/изменения элементов списка значений типом «СправочникСсылка.Склады».
Специалист компании «Кодерлайн»
Аскер Жансуев
- Главная
- О сайте
- Главная
- Содержание
Категории
—>
рубрики: Работа с формами | Дата: 22 января, 2016
Скачать обработку с примерами из статьи: professia1c_ListValue.epf
Платформа: 8.3; Тип формы: управляемая.
Рассмотрим как разместить выпадающий список значений на форме. Практиковаться будем на платформе 1С:Предприятие 8.3 на управляемых формах. Предположим, что нам надо разместить на форме список значений как показано на рисунке.
Итак, создаем внешнюю обработку. Создаем для формы реквизит в котором будет содержаться выбранное из списка значение.
Назовем его к примеру – СписокВариантов. Выберем для него тип значения. В нашем случае это будет строка, хотя в зависимости от задачи это может быть и СправочникСсылка, ПеречислениеСсылка и т.д. Хочется только подчеркнуть, что тип не список значений, что на первый взгляд кажется логичным, а именно тот тип, значения которого будут в этом списке отображаться. Далее размещаем наш реквизит на форме как поле ввода.
А для работы со списком значений будем использовать свойство поля ввода – СписокВыбора.
Для этого в свойствах поля ввода включаем флажок РежимВыбораИзСписка
И программно заполняем СписокВыбора нужными нам значениями:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список = Новый СписокЗначений;
Список.Добавить("Вариант 1");
Список.Добавить("Вариант 2");
Список.Добавить("Вариант 3");
Элементы.СписокВариантов.СписокВыбора.ЗагрузитьЗначения(Список.ВыгрузитьЗначения());
СписокВариантов = Элементы.СписокВариантов.СписокВыбора[0].Значение;
КонецПроцедуры
Для обычной (не управляемой формы) принцип реализации точно такой же.
Как заполнить реквизит программно
Автор PahaZybov, 15 авг 2021, 19:33
0 Пользователей и 1 гость просматривают эту тему.
Всем привет, подскажите как правильно можно заполнить программно созданный реквизит с типом (Список значений) он у меня будет привязан к элементу с полем. В режиме 1с предприятия он ссылается на Справочник для выбора нескольких значений. Но мне нужно заранее заполнить часть данных из массива. Как это можно сделать?
Я пробую хотя бы приравнять его к одному значению приравняв к Администратор, которое можно выбрать из списка в режиме 1с предприятие, но у меня так не выходит это сделать, что при открытии в поле ввода у меня было уже прописано Администратор. Возможно ли такое сделать?
Вот как я пытаюсь добавить значение к реквизиту МойРеквизит где я в цикле нахожу все возможные реквизиты с этим названием а у меня их несколько.
Для Каждого РеквизитФормы Из ЭтаФорма.ПолучитьРеквизиты() Цикл
ЛевыйРеквит = Лев(ЭтаФорма.ПолучитьРеквизиты()[Счч].Имя,11);
Если "МойРеквизит" = ЛевыйРеквит Тогда
ЭтаФорма[ЭтаФорма.ПолучитьРеквизиты()[Счч].Имя] = "Администратор";
КонецЕсли;
Счч = Счч + 1;
КонецЦикла;
Для Каждого РеквизитФормы Из ЭтаФорма.ПолучитьРеквизиты() Цикл
Если СтрНачинаетсяС(РеквизитФормы.Имя, "МойРеквизит") Тогда
ЭтаФорма[РеквизитФормы.Имя].ЗагрузитьЗначения(МойМассив);
КонецЕсли;
КонецЦикла;
- 1 пользователь сказал спасибо!
antoneus, Ух ты более адекватный и здоровый код по сравнению с моим костылем , спасибо за помощь. Я затестил, но почему то он занес как <Пустое значение>. Я для эксперемента добавил одно значение в массив, которое есть из списка выбора. Не знаешь, возможно ли это из-за того что у меня у этого поля элемент имеет ОписаниеТипов(«СправочникСсылка.Партнеры). Я в массив добавил одного партера который существует ИБТ, но присвоилось Пустое Значение видимо он ругнулся и не позволил. Либо возможно можно как-то сделать чтобы он понял что такое значение у меня есть в СправочникСсылка.Партнеры, случаем не знаешь?
МойМассив = Новый Массив;
МойМассив.Добавить("ИБТ");
Для Каждого РеквизитФормы Из ЭтаФорма.ПолучитьРеквизиты() Цикл
Если СтрНачинаетсяС(РеквизитФормы.Имя, "МойРеквизит") Тогда
ЭтаФорма[РеквизитФормы.Имя].ЗагрузитьЗначения(МойМассив);
КонецЕсли;
КонецЦикла;
Потому что не надо добавлять в список строку, если там ссылки должны быть.
МойМассив.Добавить(Справочники.Партнеры.НайтиПоНаименованию("ИБТ"));
- 1 пользователь сказал спасибо!
Теги:
- Форум 1С
-
►
Форум 1С — ПРЕДПРИЯТИЕ 8.0 8.1 8.2 8.3 8.4 -
►
Конфигурирование, программирование в 1С Предприятие 8 -
►
Как заполнить реквизит программно
Похожие темы (5)
Поиск
Задание типа значения для реквизита с типом СписокЗначений в управляемых формах
В управляемых формах невозможно задать тип значения для реквизита, который имеет тип СписокЗначений, хотя в обычных формах такая возможность есть. Если реквизит с типом СписокЗначений является реквизитом формы, то здесь особых сложностей нету, достаточно в обработчике события формы ПриСозданииНаСервере написать код по установке типа для значения списка:
ТипыСписка = "Строка";
ДоступныеТипы = Новый ОписаниеТипов(ТипыСписка);
ЭтаФорма.РеквизитСписокЗначений.ТипЗначения = ДоступныеТипы;
Как видно из примера, тип значения устанавливается через свойство списка значений ТипЗначения, которое имеет тип ОписаниеТипов.
Другое дело, когда форма содержит таблицу значений, у которой имеется реквизит с типом СписокЗначений. В такой ситуации через обработчики событий формы к этому реквизиту не достучаться, поэтому нужно использовать обработчики событий элемента формы, связанного с данным реквизитом.
1. Реквизит ТЧ с типом СписокЗначений |
Для этого напишем код по установке типа значения в обработчике события элемента формы НачалоВыбора:
Процедура РеквизитыТаблицыСписокДоступныхЗначенийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТипыСписка = "Строка";
ДоступныеТипы = Новый ОписаниеТипов(ТипыСписка);
Элемент.Родитель.ТекущиеДанные.РеквизитСписокЗначений.ТипЗначения = ДоступныеТипы;
КонецПроцедуры
Что бы для типа значения задать составной тип, необходимо в конструктор объекта ОписаниеТипов передать первым параметром массив типов:
ТипыСписка = Массив;
ТипыСписка.Добавить(Тип("Строка"));
ТипыСписка.Добавить(Тип("Число"));
ДоступныеТипы = Новый ОписаниеТипов(ТипыСписка);
ЭтаФорма.РеквизитСписокЗначений.ТипЗначения = ДоступныеТипы;
Единственный минус составного типа в списке значений — это отсутствие множественного выбора (кнопки Подбор), придется добавлять по одному значению в список. а это просто печалит.