Тип данных значения реквизита

Ключевые слова: составной, тип, реквизита, значения

Понятие «тип реквизита» отличается от понятия «тип значения»

Конкретное значение не может быть составного типа. Одно конкретное значение может быть только одного типа данных.

Реквизит может быть как одного типа, так и составного типа. В последнем случае его тип описывается объектом «ОписаниеТипов», т.е. список возможных типов, значения которых могут храниться в этой колонке. Например, СправочникСсылка.М1, СправочникСсылка.М2, Строка, Число, ДокументСсылка.Д1.

В каждой строке (элементе, записи) содержится какое-то свое значение, но каждое из них — одного типа. Например, «СправочникСсылка.М1». Если же в ячейке колонки, имеющей составной тип, даже не выбран (не назначен) тип значения, то оно содержит значение «Неопределено» (это значение и одновременно тип). Если же тип выбран (кнопкой Т или установлен программно), то ячейка содержит пустое значение этого типа, например, пустую ссылку на элемент справочника (см. v8: Пустые ссылки), пустую строку «» или 0.

Чтобы реквизиту составного типа установить конкретный тип, достаточно присвоить ему пустое значение этого типа.

Более подробное описание работы со составными типами

Взято с itland.ru

http://itland.ru/forum//index.php?showtopic=2577

Вопрос:

Какие существуют особенности работы с составными типами данных.

Ответ

Этот вопрос имеет два стороны:

1) Сторона элемента формы.

Для элемента формы мы можем установить только ограничение на типы которые можно выбрать.

Т.е. с помощью кода:

 МассивТипов=Новый Массив();
 МассивТипов.Добавить(Тип("СправочникСсылка.Контрагенты"));
 ЭлементыФормы.ПолеВвода1.ОграничениеТипа=Новый ОписаниеТипов(МассивТипов);

Мы ограничиваем возможный типы только одним «СправочникСсылка.Контрагенты».

НО это не действует на значение которое хранится в источнике данных.

Поэтому если реквизит который связан с «ПолеВвода1» имеет «составной» тип, например Любая ссылка,

он будет неопределенного типа даже после «ЭлементыФормы.ПолеВвода1.ОграничениеТипа=Новый ОписаниеТипов(МассивТипов);»

2) Сторона источника данных.

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

Но если у реквизита установлен «составной» тип значение реквизита будет неопределенно до тех пор, пока ему не будет присвоено значение конкретного типа.

Присвоить конкретное значение можно либо из языка, либо выбрав это значение в форме.

Из выше описанного можно сделать вывод:

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

Если мы хотим оградить пользователя от лишних движений, т.е. выбора единственно возможного типа, нам нужно предварительно установить тип реквизита.

Сделать это можно следующим образом:

//"Значение1" это реквизит связанный с "ПолеВвода1".
Значение1 = ЭлементыФормы.ПолеВвода1.ОграничениеТипа.ПривестиЗначение(Значение1);

Добавление от ezh (особенности при работе с элементами в табличном поле):

1.

Вместо этого:

ЭлементыФормы.ПолеВвода1.ОграничениеТипа=Новый ОписаниеТипов(МассивТипов);

Пишем это:

ЭлементыФормы.ИмяТабличнойЧасти.Колонки.ИмяКолонки.ЭлементУправления.ОграничениеТипа = Новый ОписаниеТипов(МассивТипов);

2.

Вместо этого:

Значение1 = ЭлементыФормы.ПолеВвода1.ОграничениеТипа.ПривестиЗначение(Значение1);

Пишем это:

ЭлементыФормы.ИмяТабличнойЧасти.ТекущаяСтрока.ИмяКолонки = ПривестиЗначение(ЭлементыФормы.ИмяТабличнойЧасти.ТекущаяСтрока.ИмяКолонки);

// можно так, а можно как в примере ниже...

Вот работающий пример:

 МассивТипов = Новый Массив();
 МассивТипов.Добавить(Тип("ПеречислениеСсылка."+Элемент.Значение));
 ОписаниеТипов = Новый ОписаниеТипов(МассивТипов);
 
 ЭлементыФормы.ТабличнаяЧасть1.Колонки.ЗначениеПеречисления.ЭлементУправления.ОграничениеТипа = ОписаниеТипов;
 // ЭлементыФормы.ТабличнаяЧасть1.ТекущаяСтрока.ЗначениеПеречисления = ОписаниеТипов.ПривестиЗначение(ЭлементыФормы.ТабличнаяЧасть1.ТекущаяСтрока.ЗначениеПеречисления);
 ЭлементыФормы.ТабличнаяЧасть1.Колонки.ЗначениеПеречисления.ЭлементУправления.Значение = ОписаниеТипов.ПривестиЗначение(ЭлементыФормы.ТабличнаяЧасть1.Колонки.ЗначениеПеречисления.ЭлементУправления.Значение);

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

Содержание

Вместо предисловия

Статья не ставит целью пересказ встроенной справки или руководства разработчика. Подразумевается, что читатели самостоятельно могут посмотреть необходимую информацию в синтакс-помощнике, глоссарии терминов 1С, или другой документации.

Примитивные типы значений в 1С

Значения примитивных типов не содержат в себе ничего, кроме литерала своего типа. Например, значение типа число может определяться литералом 12345, типа строка – “12345”, типа булево – Истина, и т.д.

Всего примитивных типов в 1С шесть:

  1. Число
  2. Строка
  3. Дата
  4. Булево
  5. Неопределено
  6. NULL

Значения примитивных типов могут преобразовываться к другим типам. Для явного преобразования используются соответствующие методы глобального контекста – например, Строка(12345) приведет число к строке, Дата(“20210101”) – преобразует строку в дату 01.01.2021, и др.

Но самое интересное начинается при неявном преобразовании типов. Значения преобразуются по определенным правилам. Так, например, второй операнд  и последующие преобразуются к первому операнду выражения, до тех пор, пока это подразумевается используемыми операторами Т.е. если первым идет число, последующие операнды также будут преобразовываться к числу, если строка – к строке.
Но если в выражении попадается оператор, который работает только с конкретным типом, то будет повторное преобразование к этому типу.

Пример:

Строка1 = 1;
Строка2 = "2";
Строка3 = Строка1 + Строка2; // Вернет число 3
Строка4 = Строка2 + Строка1; // Вернет строку "21"
Строка5 = "2" + 2 - 2 ; // Вернет число 20, т.к. оператор "минус" не работает со строковыми выражениями, и оба его операнда преобразуются к числу.

Значение типа Неопределено – это специальное значение, которое используется как значение по умолчанию для полей составных типов, а также для обозначения неуказанного значения. Объявленные переменные, в которые еще не поместили значение, будут иметь тип Неопределено.

Значение Null – это литерал, обозначающий отсутствие значения в выборке данных. Прежде всего это значение используется при работе с запросами, например, при левом соединении двух таблиц, отсутствующие значения в левой таблице будут заменены значениями Null. Также значение Null будет иметь реквизит иерархического справочника для элемента-группы, если в свойствах реквизита указано, что данный реквизит используется только для элементов. Аналогично для реквизитов, которые используются только для групп, их значения в обычных элементах справочника будут равны Null.

Прикладные типы значений

Прикладные типы значений создаются платформой, когда разработчик добавляет новые прикладные объекты – документы, справочники, регистры и т.д. При этом при создании одного прикладного объекта становятся доступны сразу несколько прикладных типов данных. Например, при добавлении в конфигурацию справочника “Пользователи”, платформа создаст следующие типы:

  • СправочникСсылка.Пользователи
  • СправочникОбъект.Пользователи
  • СправочникМенеджер.Пользователи
  • СправочникСписок.Пользователи
  • СправочникВыборка.Пользователи

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

Изначально прикладные типы платформой не поддерживаются, и существуют только в конкретном прикладном решении. Следует иметь в виду, что при создании двух разных справочников, даже с одинаковым набором реквизитов, например “Покупатели” и “Поставщики”, для платформы это будут разные типы данных, несмотря на одинаковый реквизитный состав, и унаследованную базовую функциональность типа “Справочники”.

Интерфейсные типы данных в 1С

К интерфейсным типам относятся типы данных, позволяющие организовать интерактивное взаимодействие прикладного решения с пользователем. Прежде всего, это типы, связанные с формами и их элементами, например “КнопкаФормы”, “ПолеФормы” и др. Также к интерфейсным типам данных относятся значения, позволяющие работать с избранным, историей, окном клиентского приложения, и т.д.

Общие типы данных

Платформа предоставляет специфичные объекты языка, отвечающие за различную функциональность: ТабличныйДокумент, Диаграмма, ПостроительЗапроса, Картинка и др.

В отличие от примитивных типов, значения общих типов представляют собой совокупность значений свойств конкретного объекта. Каждое значение общего типа называется “экземпляром объекта”, и создается ключевым словом Новый – Новый ТекстовыйДокумент, Новый ХранилищеЗначения, и т.д.

Универсальные коллекции значений

Для работы с временными наборами данных в течение сеанса работы пользователя используются универсальные коллекции, такие как Массив, ТаблицаЗначений, Структура и др. Они не являются объектами базы данных, и в ней не хранятся. Универсальные коллекции используются для сбора, группировки, анализа и обработки данных.
Значения типа универсальной коллекции создаются при помощи ключевого слова Новый, например – Новый СписокЗначений, Новый ДеревоЗначений.
Платформа также предоставляет разработчику связанные типы значений, такие как КолонкаТаблицыЗначений, СтрокаДереваЗначений,  КлючИЗначение, для работы с содержимым универсальных коллекций.

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

Составные типы значений

Реквизиты объектов конфигурации могут иметь составной тип. Например, для реквизита “Платежный документ” может быть указаны типы “Приходная накладная”, “Авансовый отчет”, “Оприходование товаров”. В этом случае разработчик указывает, что реквизит имеет составной тип, и отмечает нужные типы на этапе конфигурирования, а пользователь в процессе эксплуатации может выбрать в реквизит значение одного из доступных типов. Следует иметь в виду, что в каждый конкретный момент времени значение имеет только один конкретный тип. Если значение составного типа не указано, тип будет Неопределено. Одновременно двух типов значение составного типа быть не может.

Проверка типа конкретного значения

При реализации прикладной логики, часто возникает необходимость проверить, к какому типу принадлежит то или иное значение. Например, если в параметр процедуры передана структура – реализуется одно поведение, а если единственное значение – то другое.

Для такой проверки используется два метода глобального контекста: Тип и ТипЗнч.

Пример. Реквизит Плательщик имеет составной тип – плательщиками могут быть Сотрудники и Контрагенты. Нам нужно проверить, что выбранное значение реквизита является элементом справочника Контрагенты:

Если ТипЗнч(Плательщик) = Тип("СправочникСсылка.Контрагенты") Тогда

Как определить, что значение является справочником или документом?

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

Пример. В подписке ПриЗаписи мы получаем параметр Источник, который может быть как любым элементом любого справочника, так и любым документом.

Если Справочники.ТипВсеСсылки().Содержит(ТипЗнч(Источник)) Тогда
// Это справочник
ИначеЕсли Документы.ТипВсеСсылки().Содержит(ТипЗнч(Источник)) Тогда
// Это документ
КонецЕсли;

Для представления в форме объектов конфигурации (справочники, документы и т.п.) существуют специальные типы данных:

  • ДанныеФормыСтруктура — содержит набор свойств произвольного типа. Свойствами могут быть другие структуры, коллекции или структуры с коллекциями. Таким типом представляется, например, в форме СправочникОбъект.
  • ДанныеФормыКоллекция — это список типизированных значений, похожий на массив. Доступ к элементу коллекции осуществляется по индексу или по идентификатору. Доступ по идентификатору может отсутствовать в некоторых случаях. Это обусловлено типом прикладного объекта, который представлен этой коллекцией. Идентификатором может быть любое целое число. Таким типом представляется, например, в форме табличная часть.
  • ДанныеФормыСтруктураСКоллекцией — это объект, который представлен в виде структуры и коллекции одновременно. С ним можно обращаться как с любой из этих сущностей. Таким типом представляется, например, в форме набор записей.
  • ДанныеФормыДерево — объект предназначен для хранения иерархических данных.

Прикладной объект представлен либо одним, либо несколькими элементами данных формы. Например, документ, содержащий табличную часть, будет представлен объектом типа ДанныеФормыСтруктура (собственно документ), которому подчинен объект типа ДанныеФормыКоллекция (табличная часть документа).

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

В редакторе формы вместо имен этих типов обычно отображаются те типы, данные которых содержит реквизит. Например, если реквизит Объект содержит данные элемента справочника Клиенты, то в колонке «Тип» отображается ненастоящий тип этого реквизита формы — ДанныеФормыСтруктура, а тип прикладного объекта, данные которого содержатся в этом реквизите — СправочникОбъект.Клиенты. Чтобы было понятно, что это «ненастоящий тип» реквизита, тип прикладного объекта показывается в круглых скобках.

Таким образом форма содержит некоторую «проекцию» данных объектов в виде своих собственных типов данных и автоматически выполняет преобразование между ними при необходимости. Однако, можно и самостоятельно преобразовать объект в данные формы и обратно с использованием глобальных методов:

  • ЗначениеВДанныеФормы() — преобразует объект прикладного типа в данные формы;
  • ДанныеФормыВЗначение() — преобразует данные формы в объект прикладного типа.

Аналогичные методы, предназначенные для конвертирования значений реквизитов формы в прикладные объекты и обратно, существуют и у самой управляемой формы:

  • ЗначениеВРеквизитФормы() — преобразует объект прикладного типа в реквизит управляемой формы;
  • РеквизитФормыВЗначение() — преобразует реквизит управляемой формы в значение прикладного типа.

Методы, работающие с прикладными объектами, доступны только в серверных процедурах формы. При выполнении стандартных действий формы с основным реквизитом (открытие формы, выполнение стандартной команды Записать() и т. д.) преобразование выполняется автоматически.

Рассмотрим пример преобразования данных. Пусть у нас есть особенная форма, в которой в качестве одного из реквизитов (ТоварДляМодификации) используются данные элемента справочника Товары. При создании формы на сервере мы по некоторому алгоритму определяем, какой именно это товар, и читаем его данные в реквизит формы. При этом используется преобразование данных ЗначениеВДанныеФормы().

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ОбъектТовар = Справочники.Товары.НайтиПоНаименованию("Кофейник").ПолучитьОбъект();
    ЗначениеВДанныеФормы(ОбъектТовар, ТоварДляМодификации);
КонецПроцедуры

&НаКлиенте
Процедура Записать()
    ЗаписатьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаписатьНаСервере()
    ОбъектТовар = ДанныеФормыВЗначение(
        ТоварДляМодификации,
        Тип("СправочникОбъект.Товары")
    );
    ОбъектТовар.Записать();
КонецПроцедуры

Как уже упоминалось, у формы также есть методы, позволяющие преобразовать прикладные данные в реквизит формы и наоборот. Использование данных методов обычно удобнее, так как они имеют, например, информацию о типе реквизита формы. Кроме этого, метод РеквизитФормыВЗначение() выполняет установку соответствия данных формы и объекта, которая используется при формировании сообщений.

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

&НаСервере
Процедура ПересчитатьНаСервере()
    // Преобразуем реквизит Объект в прикладной объект
    Документ = РеквизитФормыВЗначение("Объект");
    // Выполняем пересчет методом, определенным в модуле документа
    Документ.Пересчитать();
    // Преобразуем прикладной объект обратно в реквизит
    ЗначениеВРеквизитФормы(Документ, "Объект");
КонецПроцедуры

Поиск:
1С:Предприятие • Данные формы в значение • Значение в данные формы • Значение в реквизит формы • Реквизит формы в значение • Типы данных • Управляемая форма

Типы значений 1С

В 1С очень много предопределенных типов значений, их можно подразделить на несколько групп.

Быстрый переход

  • Группы типов данных
    • Простые типы
    • Типы-объекты
    • Объекты из метаданных (прикладные)
    • Интерфейсные
  • Другие варианты подразделения значений
  • Задание типов значений
  • Составные и простые типы
  • Приведение значений
  • Проверка типов
  • Сравнение значений

Группы типов данных

  • простые (примитивные) типы
  • типы-объекты и их подчиненные
  • типы-объекты из метаданных (прикладные типы)
  • интерфейсные типы
  • прочие типы общего назначения

Простые типы

  • Строка  (задается значением в кавычках «»)
  • Число (Задается десятичным числом)
  • Дата (дата и время)
  • Булево (Истина,Ложь.

Типы-объекты

  • Коллекции значений (Массивы, Структуры, ТаблицыЗначений и другие)
  • Интеграционные (Com, файлы, внешние объекты, zip, WS)
  • Общего назначения

Объекты из метаданных (прикладные)

  • Константы
  • Справочники
  • Документы
  • Перечисления
  • Отчеты
  • Обработки
  • Планы счетов
  • Задачи
  • Регистры сведений
  • Регистры накоплений
  • Регистры бухгалтерского учета
  • и другие…

Интерфейсные

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

Другие варианты подразделения значений

  • Значения, которые можно записать в реквизит объекта (в поле информационной базы) и те, которые нельзя
  • Объекты, которые можно визуально представить, и  те, которые имеют виртуальную сущность
  • Типы значений которые, связаны с конфигурацией и ее объектами или работающие обособленно
  • Которые могут быть разграничены по правам пользователей- не могут
  • Могут достаточно просто  преобразовываться  — либо требуется вспомогательная конвертация
  • Есть свойства и методы  — либо отсутствуют

Задание типов значений

Значение может быть установлено:

Непосредственно

Это_Переменная = "Это строковое значение";

Через создание объекта

Это_Переменная = Новый Цвет;

Через результат вызова системной функции

Это_Переменная = Дата(2016,1,1);

Через обращение к свойству объекта

Это_Переменная_Объект_Цвет = Новый Цвет;
Это_Переменная = Это_Переменная_Объект_Цвет.Зеленый;

Составные и простые типы

Если не указано специально, то тип значений не ограничивается.

В случае реквизитов объектов метаданных, тип значений задается на этапе конфигурирования из типов доступных к записи (примитивные, ссылки на объекты, хранилище значений), а так же от вида объекта и контекста(среды, места) исполнения. При этом доступно ограничение реквизита одним типом или несколькими. Например, нам необходимо записывать в одно поле, либо значение «строки», либо «числа».

Для других объектов, тип реквизитов может остаться не ограниченными (произвольного типа), либо ограничен через специальный тип «ОписаниеТипов«

Например, для простого случая

ОписаниеТипа = Новый ОписаниеТипов("Число,Строка");

Данный объект также используется для ограничения выбора или внесения данных в диалоговых  формах

Приведение значений

Производится автоматически при присвоении к реквизиту (свойству) объекта, если данный реквизит не может хранить данное значение

Также при операциях конкатенации, производится к сначала первому слагаемому, при вычитании, если допустимо, ко втором, а затем уже к результату.

Цвет = Новый Цвет(255,0,0);
Цвет2 = Новый Цвет("2"+59-Цвет.Красный,0,0);
//В данном случае произойдет поэтапно
//"2"+59 ="259"
//259-255 = 4
//Цвет2 = Новый Цвет(4,0,0);

Такие «сложные» преобразования требуется проводить с осторожностью.

Приведение значений через встроенные функции преобразования

ЭтоБудетЧисло = Число("15");
ЭтоБудетСтрока = Строка(ЭтоБудетЧисло);
ЭтоБудетСтрока = Формат(ЭтоБудетЧисло,"");//возможно указание строки форматирования значения
ЭтоБудетДата = Дата("201601+ЭтоБудетЧисло);//время будет 00:00:00

//Приведение через объект
МожетБытьТолькоЧислом = Новый ОписаниеТипов("Число");
ЭтоБудетЧисло = МожетБытьТолькоЧислом.ПривестиЗначение("12");

Следует обратить внимание, что некоторые преобразования система не сможет сделать, и это вызовет ошибку исполнения, поэтому проверка должна производится разработчиком

ЭтоПрисвоениеНеПроизойет = Дата("12:45:45");

Проверка типов

Сравнение производится через специальные функции ТипЗнч() и Тип().

Первая возвращает значение передаваемого типа, вторая задает тип для проверки

ЭтоЧисло = 15;

//ответ на вопрос: тип значения переменной "ЭтоЧисло" является ли типом "Число"
ЭтоБулево = ТипЗнч(ЭтоЧисло) = Тип("Число");
//Первый знак "=" - присвоение
//Второй "=" -  сравнение на равенство

Сам объект «Тип» является вспомогательным и не может быть записан в реквизиты

Сравнение значений

Производится:

  • при сравнении на равенство по четкому совпадению типа и значения, приведение не производится
  • сравнение на > или < (на больше-меньше) допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)

Более подробно на типах останавливаться не буду, лучше их прочувствовать в реальных задачах или узких примерах

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

Содержание:

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

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

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

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

 

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

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

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

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

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

Сделать это можно, например, в обработчике события 1С формы «ПриСозданииНаСервере»:

&НаСервере

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

            МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей = Новый Массив;

           МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.Склады»));

            СпискокСкладовПолучателей.ТипЗначения = Новый ОписаниеТипов(МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей);

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

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

Если же требуется разрешить выбирать несколько типов при добавлении или изменении элементов списка значений на форме, то просто следует добавить все необходимые типы в массив, передаваемый в качестве параметра конструктора описания типов, который используется при установке допустимого типа в свойстве «Тип значения» реквизита формы типа «Список значений», например:

&НаСервере

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

            МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей = Новый Массив;

           МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.Склады»));

           МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.ПодразделенияОрганизаций»));

            СпискокСкладовПолучателей.ТипЗначения = Новый ОписаниеТипов(МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей);

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

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

Программную установку допустимого типа(ов) значения(ий) аналогичным образом можно использовать и для колонки с типом «Список значений» реквизита формы с типом «Таблица значений» или «Дерево значений». Единственный нюанс, на который нужно обратить внимание для получения требуемого результата – это то, что установка в таких случаях должна производиться в обработчике события «НачалоВыбора» элемента формы, связанного с соответствующей колонкой реквизита формы с типом «Таблица значений» или «Дерево значений», например:

&НаКлиенте

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

            МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей = Новый Массив;

            МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей.Добавить(Тип(«СправочникСсылка.Склады»));

            Элементы.ТаблицаПолучателейМатериалов.ТекущиеДанные.СпискокСкладовПолучателей.ТипЗначения = Новый ОписаниеТипов(МассивДопустимыхТиповЗначенийСпискаСкладовПолучателей);

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

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

  Специалист компании «Кодерлайн»

Аскер Жансуев

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

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

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

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

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