1с программно добавить реквизит формы список значений

  • Главная
  • О сайте
  • Главная
  • Содержание

Рукопашный бой Карташ

Категории

—>

рубрики: Работа с формами | Дата: 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С на форме

Реквизит с типом список значений можно разместить на форме, где он отобразится или виде таблицы или в виде поля. Для размещения реквизита достаточно мышкой просто перенести его в элементы управляемой формы.

Размещения списка значений на управляемой форме

После начала размещения, будет предложено выбрать тип нового элемента. Можно выбрать или таблицу, или поле.

Выбор типа нового элемента

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

Размещение свойства списка в качестве колонки таблицы

Размещение свойства списка в качестве колонки таблицы

Теперь на форме можно работать с этим списком, выбирая нужные объекты, указанного типа.

Работа со списком значений 1С на форме

С реквизитом формы мы можем работать как с обычным списком значений. Например, заполним созданный нами список всеми складами, которые можно использовать.

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

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

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

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

В этом случае, список заполнится сразу при открытии формы.

Заполненный список значения 1С


Более подробно о работе со списками значений и другими интересными объектами языка программирования в 1С читайте в моей книге «Программировать в 1С за 11 шагов»

Книга «Программировать в 1С за 11 шагов»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

  1. Книга написана понятным и простым языком — для новичка.
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Научитесь понимать архитектуру 1С;
  4. Станете писать код на языке 1С;
  5. Освоите основные приемы программирования;
  6. Закрепите полученные знания при помощи задачника;

Книга «Основы разработки в 1С: Такси»

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным

Промо-код на скидку в 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С:Предприятие • Изменить реквизиты • При создании на сервере • Реквизит • Управляемая форма • Элемент формы

Понравилась статья? Поделить с друзьями:

Другие крутые статьи на нашем сайте:

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии