1с как добавить список значений к реквизиту

Реквизит типа «Список значений»

Я
   Saval1986

03.08.17 — 17:52

Всем доброго времени суток.

Исходные данные: 1С 8.3, УФ.

Что хочу: разместить на форме список значений и подбирать в него элементы типа «Справочник.Должности».

Что делаю: в реквизиты объекта (не формы) добавляю реквизит типа «СписокЗначений».

В чем вопрос: как для этого списка указать тип значения, чтобы в дальнейшем выполнять подбор в форме?

P.S. если добавить реквизит не в объект, а в форму — все ок, тип назначить можно. но логика системы мне не понятно. знающие люди, подскажите плиз. Заранее спасибо.

  

Партнерская программа EFSOL Oblako

   Mankubus

1 — 03.08.17 — 17:55

(0) в форме и указывай какой тип будет внутри списка. больше никак

   mistеr

2 — 03.08.17 — 19:38

(0) Логика в том, что тип СписокЗначений не может быть  сохранен в ИБ. Поэтому для реквизита объекта его назначить нельзя.

   runoff_runoff

3 — 03.08.17 — 19:40

(2) реквизит отчета или обработки можно..

   runoff_runoff

4 — 03.08.17 — 19:41

(0)

&НаКлиенте

Процедура СписокОрганизацийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

    
    Объект.СписокОрганизаций.ТипЗначения = Новый ОписаниеТипов(«СправочникСсылка.Организации»);

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

   Saval1986

5 — 04.08.17 — 08:48

Всем спасибо за пояснения

   Cyberhawk

6 — 04.08.17 — 09:24

Не делай как в (4), делай в ПриСОзданииНаСервере тип значений элемента управления, что отображает список значений

   runoff_runoff

7 — 04.08.17 — 15:25

(6) я тоже так сделаю.. надо же я так тупанул ;-)

   runoff_runoff

8 — 04.08.17 — 15:59

(6) я только что проверил.. работает.. если выбирать по кнопке Добавить.. но кнопка Подбор работает только, если перехватывать событие НачалоВыбора..

   runoff_runoff

9 — 04.08.17 — 16:02

(6) (8) хотя нет.. работает Подбор.. не работает он только у тех справочников, для которых по умолчанию ставится Быстрый выбор..

для организаций не работает.. а для номенклатуры запросто..

   Cyberhawk

10 — 04.08.17 — 21:12

Не понял, так все получилось или что-то не получилось?

   HaeMHuK

11 — 04.08.17 — 21:24

Я бы сделал так:

Добавляешь реквизит формы, устанавливаешь тип — СписокЗначений. С свойствах реквизита формы, в самом низу, Объект — Тип значения — устанавливаешь нужный тип.

В объект добавляешь таб. часть и перед записью ее заполняешь из СпискаЗначений.

При открытии из таб.части заполняешь Список значений.

  

runoff_runoff

12 — 04.08.17 — 21:59

(10) всё работает.. супер..

В предыдущей статье «Изучаем список значений 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С для выбора пользователем значения можно расположить непосредственно на форме обработки/документа. Тогда пользователь сможет выбирать несколько значений из списка (зажав CTRL или SHIFT).

Список значений на форме 1С — в толстом клиенте просто размещаем на форме элемент списка, указываем название связанного реквизита формы.

Список значений на форме 1С — в тонком клиенте добавим реквизит формы, у которого выберем тип Список значений. При перетаскивании реквизита на форму, 1С спросит в каком виде мы хотели бы отображать его – чтобы он отображался аналогично толстому клиенту – выберите «Таблица».

В списке элементов формы появятся таблица, а у нее колонка. В свойствах таблицы можно установить запрет на редактирование списка (свойства Изменять состав/порядок строк или галочка Только просмотр).

Работа со списком значений на форме 1С из программного кода ведется по имени реквизита формы, который в толстом клиенте автоматически добавила система, а в тонком – вручную добавили мы самостоятельно. В примере (на картинках) имя реквизита формы – «ВыберитеЗначение».

В обработчике события формы ПриОткрытии() заполним значения списка, чтобы пользователю было из чего выбирать:
&НаКлиенте
Процедура ПриОткрытии(Отказ)

     
     ВыберитеЗначение.Добавить(0, "Создать документ"); //первый параметр – значение, второй параметр – представление значение, представление может отличаться от значения как угодно
     ВыберитеЗначение.Добавить(1, "Редактировать документ");
     ВыберитеЗначение.Добавить(2, "Удалить документ");

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

В обработчике нашего нужного события (например, кнопка выполнения действий) мы можем проверить, что там понавыбирал наш пользователь. Доступ к результату производится также по имени, но через элемент на форме, поэтому перед именем добавляем ЭлементыФормы (для толстого клиента) или Элемент (для тонкого клиента). Также – условие Если/Иначе уже не пойдет – так как могут быть выбраны несколько значений:

Проголосовать за этот пост:

Загрузка…

Posted in Язык 1С

Содержание:

  1. Использование палитры свойств реквизита формы типа «Список значений»
  2. Программная установка допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений»

При разработке интерфейсов 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)

Рейтинг@Mail.ru

Rambler's Top100

Поиск

Задание типа значения для реквизита с типом СписокЗначений в управляемых формах

В управляемых формах невозможно задать тип значения для реквизита, который имеет тип СписокЗначений, хотя в обычных формах такая возможность есть. Если реквизит с типом СписокЗначений является реквизитом формы, то здесь особых сложностей нету, достаточно в обработчике события формы ПриСозданииНаСервере написать код по установке типа для значения списка:


ТипыСписка = "Строка";
ДоступныеТипы = Новый ОписаниеТипов(ТипыСписка);
ЭтаФорма.РеквизитСписокЗначений.ТипЗначения = ДоступныеТипы;

Как видно из примера, тип значения устанавливается через свойство списка значений ТипЗначения, которое имеет тип ОписаниеТипов.

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

1. Реквизит ТЧ с типом СписокЗначений

Для этого напишем код по установке типа значения в обработчике события элемента формы НачалоВыбора:


Процедура РеквизитыТаблицыСписокДоступныхЗначенийНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

ТипыСписка = "Строка";
ДоступныеТипы = Новый ОписаниеТипов(ТипыСписка);
Элемент.Родитель.ТекущиеДанные.РеквизитСписокЗначений.ТипЗначения = ДоступныеТипы;

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

Что бы для типа значения задать составной тип, необходимо в конструктор объекта ОписаниеТипов передать первым параметром массив типов:


ТипыСписка = Массив;
ТипыСписка.Добавить(Тип("Строка"));
ТипыСписка.Добавить(Тип("Число"));
ДоступныеТипы = Новый ОписаниеТипов(ТипыСписка);
ЭтаФорма.РеквизитСписокЗначений.ТипЗначения = ДоступныеТипы;

Единственный минус составного типа в списке значений — это отсутствие множественного выбора (кнопки Подбор), придется добавлять по одному значению в список. а это просто печалит.

Понравилась статья? Поделить с друзьями:
  • 1с как на клиенте получить реквизиты ссылки
  • 1с как на сервере получить реквизит объекта
  • 1с как определить тип реквизита справочника
  • 1с как получить реквизиты всего справочника
  • 1с как получить реквизиты формы справочника