Получить тип реквизита 1с

Обновлено: 04.07.2024

Как сделать ссылку реквизита табличной части справочника
Я недавний пользователь 1с. И я решил сделать на нём диплом (Библиотека). В процессе возник вопрос.

Данные из реквизита типа ПеречислениеСсылка
Управляемое приложение. Создал в справочнике Номенклатура реквизит ВидУслуги (Перечисление.


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

Получить значение дополнительного реквизита
есть дополнительный реквизит Должность у справочника ФизЛица. Как мне получить его значение.

Марианнна, Вы все еще заполняете все что есть, чем нибудь?
Вам нужно получить тип из конкретного значения или из описания метаданных?

Добавлено через 3 минуты

Марианнна, Вы все еще заполняете все что есть, чем нибудь?
Вам нужно получить тип из конкретного значения или из описания метаданных? да,все тем же занимаюсь)
немного не поняла в чем разница
в общем у меня есть какой-то конкретный реквизит,он не заполнен,точно знаю что у него тип ссылка,вот надо получить эту ссылку,а потом уже в зависимости от полученной ссылки заполнять этот реквизит открыть в конфигураторе нужный справочник, 2 раза кликнуть на реквизит тип которого вы хотите узнать, в окошке сведений о реквизите будет строка "ТИП" в нем то и посмотрите. я так по краней мере делаю. мне надо в коде получив реквизит узнать ссылку
а то что так в конфигураторе можно посмотреть я знаю Значение или тип ссылки? Если в ""+Тип() есть "Ссылка", то после точки будет указание на объект.

МасТипов=Ссылка.Метаданные().Тип.Типы();
Для К=0 По МасТипов.ВГраница() Цикл
Сообщить(Строка(МасТипов[К]));
КонецЦикла;

есть и еще варианты.

fimbulwinter, duk337, O-Planet - В контексте решаемой Марианнна, задачи Ваши варианты не подходят. Она на основании метаданных создает элемент в каждом справочнике и заполняет все его реквизиты произвольными значениями.
При создании элемента если пытаться определить тип реквизита через ТипЗнч() будет возвращено Неопределено если тип реквизита составной.
Строка(МасТипов[К]) - вернет например "Номенклатура", без указания того что это за объект.

Это не для средних умов: если значения где-то берутся - какие ж они произвольные? Или рандомайз? Не догоняю .
Мой совет: создать отчет с текстами метаданных - и с ним баловаться, пока просветление не наступит.
А то я начинаю думать, что в разных элементах справочника д.б. реквы разных типов. Значения - могут быть разных типов, но не реквизиты. Они пусть составного, но одного типа, для их заполнения не надо анализировать: ссылка это, контейнер или примитив.

Добавлено через 28 минут
Чтобы получить обрабатываемый стринг типа "СправочникМенеджер.Контрагенты", например, надо написать СтрокаОбМет=""+Справочники.Контрагенты. Как-то можно получить и "СправочникСсылка.". ну не помню я! А некогда. Ну вот поэкспериментируйте в отрадчике!
Fenomen давно дал такой совет, а Вы:"Не царское, мол, это дело. Мы, мол, конфигуратор и так до дыр проглядели"

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

Это не для средних умов: если значения где-то берутся - какие ж они произвольные? Или рандомайз? Не догоняю . Есть переменные Стр="а",Числ=1, и т.д. После получения типа реквизита и квалификаторов идет заполнение,если длина типа строки = 12,то заполнить аааааааааааа,если число содержит 8 знаков и 2 после запятой,то должно заполниться 111111,11 как-то так. Опять об одном: в какой тип должно попасть это квалификационное разнообразие? Это имеет смысл лишь при записи в строку. Вам не создать в структуре базы то, что Вы хотите.
По-моему Вы путаете механизмы визуализации и хранения.

А можно более полное/точное ТЗ? Потому что, приведенные примеры алгоритмически выразить совсем не сложно:

Функция Преобразовать(Зн)
Если ТипЗнч(Зн)="Число" Тогда
Если Найти(Строка(Зн),".")>0 Тогда
Возврат Формат(Зн,"ЧДЦ=2; ЧГ=0");
Иначе
Возврат Формат(Зн,"ЧГ=0");
КонецЕсли;
КонецЕсли;
Возврат Зн;
КонецФункции

Ищем в метаданных например сначала справочники,находим,берем первый справочник,создаем в нем первый элемент,пробегаемся по его реквизитам,получаем первый,смотрим тип,если строка получаем квалификаторы строки,дописываем необходимое количество символов к переменной Стр и заполняем реквизит этим значением,если число так же получаем квалификаторы числа и преобразуем переменную Числ до необходимого количество единиц до и после запятой и указанного знака,так же и с остальными типами.потом берется след.справочник и с ним делается тоже самое.закончились справочники-переходим к документам и т.д,в общем заполнить надо все таким образом.
С типами реквизитов число,строка,дата,булево уже все работает,только с ссылками пока что не получается. Кажется это оказалось то ,что нужно,еще немного допишу и точно узнаю
Спасибо Конфигурация.Отчет по конфигурации.В текст.Выбор объектов. Выбрать справочники

СамСправочник = Метаданные.Справочники[Номер]; // Номер - это порядковый номер справочника в дереве конфигурации.
КоллекцияРеквизитовСправочника = СамСправочник.Реквизиты;
Для каждого Реквизит из КоллекцияРеквизитовСправочника Цикл

ТипРеквизита = Реквизит.Тип;
ИмяРеквизита = Реквизит.Имя;

СинонимТип = Метаданные.НайтиПоТипу(ТипЗнч(Реквизит.Тип.ПривестиЗначение( )));
СинонимТип = СтрЗаменить(СинонимТип," ","");

Если Метаданные.Справочники.Найти(СинонимТип) <> Неопределено Тогда
Вид = "Справочник";
ИначеЕсли Метаданные.Документы.Найти(СинонимТип) <> Неопределено Тогда
Вид = "Документ";
ИначеЕсли Метаданные.Перечисления.Найти(СинонимТип) <> Неопределено Тогда
Вид = "Перечисление";
и т.д. , перечисляем здесь все возможные Типы реквизитов какого-либо справочника
Иначе // Сюда попадут примитивные типы.
Вид = Реквизит.Тип;
КонецЕсли;

Сообщить("Реквизит справочника : " + ИмяРеквизита + " , Тип реквизита Справочника : " + Вид);

Разберем методы, при помощи которых, в 1С 8.3 можно определить тип значения переменной (или реквизита какого-нибудь объекта). Причем, эти методы могут работать со всеми типами: примитивными, объектными и коллекциями значений.

Для работы с типами, в платформе 1С имеется специальный тип, который так и называется Тип. Этот тип необходим для идентификации типов значений различных данных. Значения типа Тип возвращают только две функции Тип и ТипЗнч.

Функция ТипЗнч в 1С

Разберем функцию ТипЗнч. Эта функция принимает в качестве параметра любое значение и возвращает тип этого значения.

Рассмотрим пример: будем использовать в качестве параметра этой функции число, таблицу значений и объект какого-нибудь справочника.

Посмотрим в отладке, что вернет этот метод.

Функция ТипЗнч в 1С

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

Функция Тип в 1С

Функция тип имеет один параметр имя получаемого типа в строковом представлении, возвращает тип Тип.

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

В переменных будут те же значения, что и в прошлый раз.

Функция Тип в 1С

Чтобы быстро получить название какого-то типа, достаточно «задержаться» в написании после первой кавычки, или нажать комбинацию клавиш Ctrl+Пробел.

Функция Тип в 1С

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

Функция Тип в 1С

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

Как проверить тип значения

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

Рассмотрим пример: будем заполнять массив значениями разных типов, потом при помощи генератора случайных чисел выберем нужный элемент массива, и определим какого типа этот элемент массива. В этот массив поместим число, дату, строку и какой-нибудь список значений.

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

Проверить тип значения в 1С

Статьи о примитивных типах в 1С:

Программировать в 1С за 11 шагов

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

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

Основы разработки в 1С такси

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

Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog


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

можно оплатить вручную:

Что такое реквизиты 1С?

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

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


Рассмотрим подробно тему реквизитов в 1С.

Что такое Реквизиты 1С

Каждый справочник и документ 1С состоит из набора полей. Такие поля называются реквизиты 1С (для программиста 1С).

В конфигураторе, в дереве конфигурации 1С, раскройте любой справочник или документ и Вы увидите ветку Реквизиты. Это список реквизитов (полей) справочника.


Поглядите как те же реквизиты 1С выглядят на форме справочника 1С.


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

Нажмите правой кнопкой на любой реквизит 1С и нажмите Свойства. В окне справа откроется список свойств выбранного реквизита.


Основные свойства реквизитов 1С:


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

Стандартные реквизиты 1С

Как Вы заметили, на форме справочника есть реквизиты 1С, которые отсутствуют в списке в конфигураторе: группа, наименование, БИК.


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


Это – стандартные реквизиты 1С. Что это такое? У каждого объекта 1С есть набор реквизитов 1С по умолчанию. У справочников это, например – код и наименование. У документов это – дата и номер.

Стандартные реквизиты 1С можно посмотреть следующим образом:


Общие реквизиты 1С

Начиная с версии 1С 8.2.14 в 1С появился новый Объект 1С – Общие реквизиты 1С. С помощью него можно добавить реквизит (поле), который будет присутствовать сразу во множестве справочников и документов.


Свойства общего реквизита 1С:

  • Автоиспользование – добавляет общий реквизит 1С сразу во все справочники и документы
  • Состав – позволяет добавить общий реквизит 1С только в нужные справочники и документы (автоиспользование тогда в значение Не использовать).


Как добавить реквизит 1С

Нажмем правой кнопкой на ветку Реквизиты 1С нужного справочника и выберем Добавить.


Введем нужно Имя реквизита 1С, например «АдресОфиса» и синоним «Адрес офиса». Тип оставим по умолчанию Строка, но поставим галочку Неограниченная длина.


Добавим еще один реквизит 1С точно так же, только выберем тип Булево, назовем его «РаботаетПоВыходным».

Как вывести реквизит на форму 1С (толстый клиент 1С)


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


В панели конфигуратора нажмите кнопку «Размещение данных». Также можно использовать меню Форма / Размещение данных.


Вы видите – наши реквизиты на форму не выведены. Установите на них галочку. А также галочки Вставить надписи и Разместить автоматически.



Как вывести реквизит на форму 1С (тонкий клиент 1С)

Раскроем ветку Формы того же справочника. Выберем форму элемента и нажмем на нее два раза мышкой.


На закладке Реквизиты раскройте строку Объект. Вы увидите список реквизитов, добавленных ранее в справочник.


Теперь просто перетяните из правого окна в левую нужный реквизит и он появится на форме.



Реквизиты формы 1С

В толстом клиенте у формы есть свои собственные реквизиты. Они находятся на закладке Реквизиты.


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


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


Периодические реквизиты 1С

В 1С версии 7.7 были периодические реквизиты. Их смысл таков: значение у реквизита разное в разные даты. Например, значение на 1 сентября – одно, а на 1 октября – другое. У одного и того же реквизита.

В 1С 8 периодических реквизитов нет. Это реализуется следующим образом:

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


При создании определяемого типа нужно указать его имя и тип. Можно указать составной тип данных:

Определяемый тип

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

Теперь данный определяемый тип можно указывать как тип для реквизитов объектов:

Определяемый тип

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

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

Определяемый тип

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

У определяемого типа есть некоторые ограничения:

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

Определяемый тип программно

Чтобы программно указать тип свойства как определяемый тип можно просто создать Описание типов и перечислить все те типы, которые указаны для определяемого типа. Но можно получить готовое описание типов через метаданные:

Читайте также: