Список значений для реквизита

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

Я
   Saval1986

03.08.17 — 17:52

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

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

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

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

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

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

   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. Использование палитры свойств реквизита формы типа «Список значений»
  2. Программная установка допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений»

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

1.   Использование палитры свойств реквизита формы типа «Список значений»

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

 

Рис. 1 Редактирование типа значения в палитре свойств реквизита

В данном случае мы ограничили возможность добавления/изменения элементов списка реквизита «Список складов-получателей» типом «СправочникСсылка.Склады».

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

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

Второй способ: программная установка допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений».

Сделать это можно, например, в обработчике события 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С.

2017-12-18T22:27:10+00:00Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат

ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции

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

Полный синтаксис (нажмите, чтобы раскрыть)

Оглавление (нажмите, чтобы раскрыть)

&НаКлиенте
Процедура ВыполнитьКод(Команда)
 
    /// Как создать список значений в 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].Значение;
	
КонецПроцедуры

Для обычной (не управляемой формы) принцип реализации точно такой же.

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

Вот еще несколько интересных статей нашего сайта:

  • Монгольские компании в москве
  • Мондиал бизнес консорциум ооо
  • Монетка реквизиты организации
  • Монополия на большую компанию
  • Монопольные компании в россии

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

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