- Главная
- О сайте
- Главная
- Содержание
Категории
—>
рубрики: Работа с формами | Дата: 22 января, 2016
Скачать обработку с примерами из статьи: professia1c_ListValue.epf
Платформа: 8.3; Тип формы: управляемая.
Рассмотрим как разместить выпадающий список значений на форме. Практиковаться будем на платформе 1С:Предприятие 8.3 на управляемых формах. Предположим, что нам надо разместить на форме список значений как показано на рисунке.
Итак, создаем внешнюю обработку. Создаем для формы реквизит в котором будет содержаться выбранное из списка значение.
Назовем его к примеру – СписокВариантов. Выберем для него тип значения. В нашем случае это будет строка, хотя в зависимости от задачи это может быть и СправочникСсылка, ПеречислениеСсылка и т.д. Хочется только подчеркнуть, что тип не список значений, что на первый взгляд кажется логичным, а именно тот тип, значения которого будут в этом списке отображаться. Далее размещаем наш реквизит на форме как поле ввода.
А для работы со списком значений будем использовать свойство поля ввода – СписокВыбора.
Для этого в свойствах поля ввода включаем флажок РежимВыбораИзСписка
И программно заполняем СписокВыбора нужными нам значениями:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список = Новый СписокЗначений;
Список.Добавить("Вариант 1");
Список.Добавить("Вариант 2");
Список.Добавить("Вариант 3");
Элементы.СписокВариантов.СписокВыбора.ЗагрузитьЗначения(Список.ВыгрузитьЗначения());
СписокВариантов = Элементы.СписокВариантов.СписокВыбора[0].Значение;
КонецПроцедуры
Для обычной (не управляемой формы) принцип реализации точно такой же.
Не вижу пока того, что мне нужно. Еще раз повторю, необходимо (по нажатию на кнопку, она уже создана вместе с обработчиком) вывести список значений, не из справочника, а произвольного, который создается с помощью «новый СписокЗначений». С этим я справился, СписокЗначений заполнен необходимыми для меня значениями.
НУЖНО! Вывести этот список значений(не диалог с открытием файла, честно сказать связи не вижу) на форму, предоставив пользователю выбрать из него значение.
Добавлено через 6 минут
Сообщение от DMV78
так как сам человек не знает даже что «моя процедура» должна быть инициализирована
По поводу инициализаций процедур я в курсе а «МояПроцедура» служит в качестве примера, чтобы мне не писать весь код.
По поводу Вашего примера, что общего между списком значений и диалогом открытия файла?
Список значений на форме 1С для выбора пользователем значения можно расположить непосредственно на форме обработки/документа. Тогда пользователь сможет выбирать несколько значений из списка (зажав CTRL или SHIFT).
Список значений на форме 1С — в толстом клиенте просто размещаем на форме элемент списка, указываем название связанного реквизита формы.
Список значений на форме 1С — в тонком клиенте добавим реквизит формы, у которого выберем тип Список значений. При перетаскивании реквизита на форму, 1С спросит в каком виде мы хотели бы отображать его – чтобы он отображался аналогично толстому клиенту – выберите «Таблица».
В списке элементов формы появятся таблица, а у нее колонка. В свойствах таблицы можно установить запрет на редактирование списка (свойства Изменять состав/порядок строк или галочка Только просмотр).
Работа со списком значений на форме 1С из программного кода ведется по имени реквизита формы, который в толстом клиенте автоматически добавила система, а в тонком – вручную добавили мы самостоятельно. В примере (на картинках) имя реквизита формы – «ВыберитеЗначение».
В обработчике события формы ПриОткрытии() заполним значения списка, чтобы пользователю было из чего выбирать:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ВыберитеЗначение.Добавить(0, "Создать документ"); //первый параметр – значение, второй параметр – представление значение, представление может отличаться от значения как угодно
ВыберитеЗначение.Добавить(1, "Редактировать документ");
ВыберитеЗначение.Добавить(2, "Удалить документ");
КонецПроцедуры
В обработчике нашего нужного события (например, кнопка выполнения действий) мы можем проверить, что там понавыбирал наш пользователь. Доступ к результату производится также по имени, но через элемент на форме, поэтому перед именем добавляем ЭлементыФормы (для толстого клиента) или Элемент (для тонкого клиента). Также – условие Если/Иначе уже не пойдет – так как могут быть выбраны несколько значений:
Проголосовать за этот пост:
Загрузка…
Posted in Язык 1С
В предыдущей статье «Изучаем список значений 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с предприятия он ссылается на Справочник для выбора нескольких значений. Но мне нужно заранее заполнить часть данных из массива. Как это можно сделать?
[IMG]https://i.ibb.co/nBStTRL/image.jpg[/IMG]
Я пробую хотя бы приравнять его к одному значению приравняв к [B]Администратор[/B], которое можно выбрать из списка в режиме 1с предприятие, но у меня так не выходит это сделать, что при открытии в поле ввода у меня было уже прописано [B]Администратор[/B]. Возможно ли такое сделать?
Вот как я пытаюсь добавить значение к реквизиту [B]МойРеквизит[/B] где я в цикле нахожу все возможные реквизиты с этим названием а у меня их несколько.
ЭтаФорма[ЭтаФорма.ПолучитьРеквизиты()[Счч].Имя] = "Администратор";
Для Каждого РеквизитФормы Из ЭтаФорма.ПолучитьРеквизиты() Цикл ЛевыйРеквит = Лев(ЭтаФорма.ПолучитьРеквизиты()[Счч].Имя,11); Если "МойРеквизит" = ЛевыйРеквит Тогда ЭтаФорма[ЭтаФорма.ПолучитьРеквизиты()[Счч].Имя] = "Администратор"; КонецЕсли; Счч = Счч + 1; КонецЦикла;
Посмотрим, как можно программно добавить реквизиты и новые элементы на форму. В форме элемента справочника «Номенклатура» создадим два реквизита формы и элементы для них. Новые элементы объединим в группу с горизонтальной группировкой.
Сейчас форма имеет следующий вид:
После добавления новых элементов она будет иметь вид:
Итак, добавляем реквизиты:
ЕдиницаИзмерения
, типСправочникСсылка.ЕдиницыИзмерения
;ТекущийОстаток
, типЧисло
.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) #Область ДобавлениеРеквизитовФормы // Массив для новых реквизитов ДобавляемыеРеквизиты = Новый Массив(); // Описываем новые ревизиты формы РеквизитЕдиницаИзмерения = Новый РеквизитФормы( "ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.ЕдиницыИзмерения"), , "Единица измерения" ); РеквизитТекущийОстаток = Новый РеквизитФормы( "ТекущийОстаток", Новый ОписаниеТипов("Число", , , Новый КвалификаторыЧисла(10, 3)), , "Текущий остаток" ); // Заполняем массив новых реквизитов ДобавляемыеРеквизиты.Добавить(РеквизитЕдиницаИзмерения); ДобавляемыеРеквизиты.Добавить(РеквизитТекущийОстаток); // Добавляем новые реквизиты в форму ИзменитьРеквизиты(ДобавляемыеРеквизиты); #КонецОбласти #Область ДобавлениеЭлементовФормы // Добавляем группу без отображения на форме НоваяГруппаФормы = Элементы.Добавить( "ЕдиницаИзмеренияОстаток", Тип("ГруппаФормы") ); НоваяГруппаФормы.Вид = ВидГруппыФормы.ОбычнаяГруппа; НоваяГруппаФормы.Отображение = ОтображениеОбычнойГруппы.Нет; НоваяГруппаФормы.ОтображатьЗаголовок = Ложь; НоваяГруппаФормы.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная; // Добавляем элементы внутрь новой группы НовыйЭлемент = Элементы.Добавить( "ЯчейкаХранения", Тип("ПолеФормы"), НоваяГруппаФормы ); НовыйЭлемент.ПутьКДанным = "ЕдиницаИзмерения"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; НовыйЭлемент = Элементы.Добавить( "ТекущийОстаток", Тип("ПолеФормы"), НоваяГруппаФормы ); НовыйЭлемент.ПутьКДанным = "ТекущийОстаток"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ТолькоПросмотр = Истина; #КонецОбласти #Область ЗаполнениеДанных // Имитируем заполнение данных ЭтаФорма.ЕдиницаИзмерения = ПредопределенноеЗначение( "Справочник.ЕдиницыИзмерения.Штука" ); ЭтаФорма.ТекущийОстаток = 12; #КонецОбласти КонецПроцедуры
Для удаления необходимо передать массив реквизитов на удаление в качестве второго параметра метода формы ИзменитьРеквизиты()
. Удалять можно только реквизиты, созданные программно.
Теперь посмотрим, как можно изменить основной реквизит формы. Изменим табличную часть Состав
документа РасходнаяНакладная
:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Массив для новых реквизитов ДобавляемыеРеквизиты = Новый Массив(); // Описываем новый ревизит формы РеквизитЕдиницаИзмерения = Новый РеквизитФормы( "ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.ЕдиницыИзмерения"), "Объект.Состав", "Единица измерения" ); // Заполняем массив новых реквизитов ДобавляемыеРеквизиты.Добавить(РеквизитЕдиницаИзмерения); // Добавляем новый реквизит в форму ИзменитьРеквизиты(ДобавляемыеРеквизиты); // Добавляем элемент формы для нового реквизита НовыйЭлемент = Элементы.Добавить( "ЕдиницаИзмерения", Тип("ПолеФормы"), Элементы.Состав ); НовыйЭлемент.ПутьКДанным = "Объект.Состав.ЕдиницаИзмерения"; НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; КонецПроцедуры
Важно понимать, что данные добавленного реквизита сохраняться в ИБ не будут.
Поиск:
1С:Предприятие • Изменить реквизиты • При создании на сервере • Реквизит • Управляемая форма • Элемент формы