1с как получить типы реквизитов по метаданным

Как получить тип объекта метаданных?

Я
   Oven2009

09.06.10 — 11:37

Вопрос такой. В платформе 8.1 была возможность вывести все реквизиты документа и определить тип каждого реквизита реквизита в виде например: Справочник.Валюты. В платформе 8.2 та же процедура выводит тип такого вида: Валюты. Каким образом определить является данный реквизит справочником или документом?

  

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

   H A D G E H O G s

1 — 09.06.10 — 11:38

(0) Ткнуть его

   H A D G E H O G s

2 — 09.06.10 — 11:39

ЭтоДокумент=Истина;
Попытка
тмп=Объект.Метаданные().ДлинаНомера;
Исключение
ЭтоДокумент=Ложь;
КонецПопытки

   Дикообразко

3 — 09.06.10 — 11:43

(2) а что метод содержит, у метаданных убрали?

   Defender aka LINN

4 — 09.06.10 — 11:47

(0) При чем тут строковое представление?

Или это очередная волна массового наступления на грабли?

(2) Да вы, батенька, извращенец :)

   H A D G E H O G s

5 — 09.06.10 — 11:50

Кто здесь?

Медленнный этот метод Содержит()

Надо мне определить — к какому КЛАССу метаданных относится объект — замучаешься Содержит() вызывать.
А тут — раз метаданные получил — живи и радуйся.

   Дикообразко

6 — 09.06.10 — 11:53

(5) так он же не один раз будет проверять… можно и за кэшировать…

а с попыткой потом отлаживать морока, остановку по ошибке толком не поюзаешь

   Oven2009

7 — 09.06.10 — 11:53

Нет текст кода такой:

имеется объектметаданных — какой-то документ

реквизиты = объект.реквизиты

для каждого реквизит из реквизиты цикл

типы = реквизит.тип.типы()

для каждого типр из типы цикл

////////////////

тип этого типр такой: контрагент, валюты и т.д., а раньше был справочник. контрагент, справочник.валюты и т.д.

   Defender aka LINN

8 — 09.06.10 — 11:56

(7) «тип этого типр такой: контрагент, валюты и т.д., а раньше был справочник. контрагент, справочник.валюты и т.д.» — атомный феерический бред. Тип как был типом, так и остался.

(5) «Медленнный этот метод Содержит()» — зато правильный. А если кэшировать в Соответствии, то и вообще разницы не будет.

Еще есть СодержитТип(). В разы быстрее и тоже правильно.

   H A D G E H O G s

9 — 09.06.10 — 11:56

(6) Что ты там закешируешь?

Если Метаданные.Справочники.Содержит(МетаданныеОбъекта) Тогда
Возврат «Справочник»;
ИначеЕсли Метаданные.Документы.Содержит(МетаданныеОбъекта) Тогда
…..

   Дикообразко

10 — 09.06.10 — 11:56

(9) Метаданные().ПолноеИмя() в 8.2 тоже нет?

   Дикообразко

11 — 09.06.10 — 11:57

(9) оно при первом обращение закэшируется

   Дикообразко

12 — 09.06.10 — 11:58

О_о в 8.1 еще можно так

Если Объект.Метаданные().Родитель = Метаданные.Справочники Тогда
  ЭтоСправочник = Истина;
КонецЕсли;

   Oven2009

13 — 09.06.10 — 11:59

Метаданные().ПолноеИмя() выдает такого видат строку например:

Документ.Событие.Реквизит.Важность

Класса объекта метаданных тоже здесь нет

   Oven2009

14 — 09.06.10 — 12:00

В 8.1 документ работал отлично, после перехода на 8.2 возникла описываемая мною проблема

   H A D G E H O G s

15 — 09.06.10 — 12:00

Мне лениво спорить.

   Дикообразко

16 — 09.06.10 — 12:00

(15) в (12) наврал

   Дикообразко

17 — 09.06.10 — 12:01

(7) Метаданные.НайтиПоТипу() в 8,2 тоже убрали?

   Oven2009

18 — 09.06.10 — 12:02

Если я вставляю в найтипотипу слово Валюты без слова справочник, то он ничего не находит

   Oven2009

19 — 09.06.10 — 12:03

Видимо придется использовать Содержит(). Непонятно просто зачем были внесены такие изменения в платформу.

   Дикообразко

20 — 09.06.10 — 12:04

(18) ты не слово вставляй… а тип

реквизиты = объект.реквизиты
для каждого реквизит из реквизиты цикл
типы = реквизит.тип.типы()
для каждого тип из типы цикл
 МетаТипа = Метаданные.НайтиПоТипу(Тип);

   Дикообразко

21 — 09.06.10 — 12:05

+20

а уж потом
МетаТипа.ПолноеИмя()

   Oven2009

22 — 09.06.10 — 12:05

Пробую. Ставит слово Валюты тип- ОбъектМетаданных

   Oven2009

23 — 09.06.10 — 12:06

О получилось, спасибо!!!

   Дикообразко

24 — 09.06.10 — 12:06

реквизиты = объект.реквизиты
для каждого реквизит из реквизиты цикл
Типы = реквизит.тип.типы()
Для каждого тип из Типы цикл
 Если Найти(Метаданные.НайтиПоТипу(Тип).ПолноеИмя(), «Справочник») > 0 Тогда
   // это справочник;
 КонецЕсли;
КонецЦикла;

   Oven2009

25 — 09.06.10 — 12:06

После ПолноеИмя() выдал правильно

  

Oven2009

26 — 09.06.10 — 12:07

Спасибо еще раз

В предыдущей статье типы и значения 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С переменной:
Если ТипЗнч(Переменная) = Тип("ИмяТипа") Тогда

Какие типы писать в качестве ИмяТипа?

Базовые типы

Базовые типы 1С — число, строка, дата, булево.

Например:
Знч = 12;
Если ТипЗнч(Знч) = Тип("Число") Тогда
ИначеЕсли Знч = Тип("Строка") Тогда
ИначеЕсли Знч = Тип("Дата") Тогда
ИначеЕсли Знч = Тип("Булево") Тогда
КонецЕсли;

Типы базы данных

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С для фильтра – используется список типов 1С, как с ним работать – см. «Описание типов» в разделе «Язык 1С».

Загрузка…

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

1C
1
2
3
    Для каждого реквизит Из Метаданные.Справочники.Номенклатура.Реквизиты Цикл
        Сообщить(реквизит.тип);
    КонецЦикла;

Например, если реквизит с именем «БазоваяЕдиницаИзмерения» имеет тип «СправочникСсылка.КлассификаторЕдиницИзмерения «, то у меня в сообщении он выдает просто синоним справочника, на который ссылается реквизит: «Классификатор единиц измерения».
А нужно получить строку со значением «СправочникСсылка.КлассификаторЕдиницИзмерения «.

Не так давно пришлось приводить конфигурацию заказчика в соответствие с законом «О защите персональных данных», который гласит, что при отказе клиенту в одобрении заявки все личные данные о нем должны удаляться из информационной системы обработки персональных данных, которой является 1С. Реквизитов и таблиц с личными данными было достаточно много, поэтому вручную прописывать очистку было нецелесообразно. А удалять сам элемент справочника было нельзя, потому что к нему был привязан документ рассмотрения заявки, и удаление нарушило бы логическую целостность информационной базы.

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

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

В нашем случае потребуются Реквизиты и Табличные части. Эти компоненты метаданных содержат значение КоллекцияОбъектовМетаданных, которую можно обойти в цикле Для каждого.

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

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

Контрагент=КонтрагентСсылка.ПолучитьОбъект();
//Переменная КонтрагентСсылка должна содержать ссылку на элемент</p>
Для Каждого Реквизит Из Контрагент.Метаданные().Реквизиты Цикл
Контрагент[Реквизит.Имя] = Неопределено;
КонецЦикла;

Для Каждого ТаблЧасть Из Контрагент.Метаданные().ТабличныеЧасти Цикл
Контрагент[ТаблЧасть.Имя].Очистить();
КонецЦикла;

Контрагент.Записать();

Функция Метаданные() применяется как для самого объекта, так и для ссылки на него. В нашем случае необходимо было изменить значения реквизитов, поэтому объект нужно было получить. Данная функция работает не только для справочников, но и для других объектов конфигурации 1С, но состав свойств будет иным.

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

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

В учебной конфигурации, справочник Номенклатура – это объект метаданных. Документ Закупка товаров – тоже объект метаданных.

Все объекты метаданных 1С перечислены в дереве конфигурации.

Метаданные 1С

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

Например, у справочника Номенклатура прототип Справочники.

Прототип объекта метаданных 1С

А у документа Закупка товаров – прототип Документы.

Прототип объекта метаданных 1С

У объектов одного прототипа похожие свойств и методы. Кроме принадлежности к прототипу свойства и методы объектов метаданных определяются дополнительными характеристиками. Например, включена у справочников иерархия или нет.

В процессе конфигурирования разработчик настраивает свойства объектов метаданных. Например, длина кода справочника 1С это свойство. В учебной конфигурации у справочника Номенклатура длина кода 9.

Свойство объекта метаданных 1С

А у справочника Валюта – 3.

Свойство объекта метаданных 1С

На свойства объекта метаданных можно посмотреть, как в редакторе объекта. Редактор открывается при двойном клике мышкой по объекту. Так и в палитре свойств объекта. Для того, чтобы открыть палитру свойств, следует выделить объект, вызвать контекстное меню и выполнить команду «Свойства».

Свойство объекта метаданных 1С

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

Свойство объекта метаданных 1С

К свойствам объектов метаданных можно обратиться при помощи программного кода. Сделать это можно воспользовавшись свойством глобального контекста, которое так и называется Метаданные.

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

Метаданные 1С

У свойства Метаданные имеются свойства, которые отображают прототипы объектов. Это тоже коллекции. Например, для справочников имеется свое свойство.

Метаданные 1С

Которое, также является коллекцией.

Метаданные 1С

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

Мы можем прочитать свойство того или иного объекта метаданных. Например, длину кода у справочника Валюта.

Метаданные 1С

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

Например, обойдем циклом справочники и выведем имя справочника, синоним и длину кода.

Для Каждого стрСправочника из Метаданные.Справочники Цикл 
		
	Сообщить("Имя " + стрСправочника.Имя + 
			 ", синоним: " + стрСправочника.Синоним + 
			 " (длина кода: " + стрСправочника.ДлинаКода + ")");
		
КонецЦикла;	

В учебной конфигурации, у этого кода будет следующий результат.

Метаданные 1С

Обратите внимание, что этот код должен выполняться в серверном контексте (или в клиентском на толстом клиенте), поскольку у свойства Метаданные доступность Сервер, Толстый клиент и т.д.

Метаданные 1С

Кроме свойств объекта можно получить доступ к свойствам реквизитов при помощи всё того же свойства глобального контекста Метаданные. Для того, чтобы обратиться к реквизитам объекта, необходимо получить доступ к этому объекту посредством свойства глобального контекста Метаданные, а потом уже обратиться к свойству Реквизиты полученного объекта.

Например, к реквизитам конкурентного справочника можно обратиться так:

РеквизитыСправочника = Метаданные.Справочники.Контрагенты.Реквизиты;

А к реквизитам конкурентного документа – так:

РеквизитыДокумента = Метаданные.Документы.ЗакупкаТоваров.Реквизиты;

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

РеквизитыДокумента = Метаданные.Документы.ЗакупкаТоваров.Реквизиты;
	
Сообщить("Выводим реквизиты документа " + Метаданные.Документы.ЗакупкаТоваров.Синоним); 
	
Для Каждого стрРеквизит из РеквизитыДокумента Цикл 
		
	Сообщить("	Имя: " + стрРеквизит.Имя + ", синоним " + стрРеквизит.Синоним);
		
КонецЦикла;	

Результат работы этого кода в учебной конфигурации будет следующим.

Метаданные 1С

Некоторые свойства объектов имеют перечисленный тип, т.е. перечисление определенных значений.  Например, у документов имеется свойство Проведение. У этого свойства есть несколько значений: Разрешить и Запретить. Свойство Проведение и является перечисленным типом.

Перечисленный тип 1С

При помощи свойства глобального контекста Метаданные  мы можем проверить какое значение перечисленного типа установлено у того или иного объекта. Для этого нужно воспользоваться свойством СвойстваОбъектов. Оно содержит в себе все перечисленные типы и их значения.

Перечисленный тип 1С

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

Для Каждого стрДокумент Из Метаданные.Документы Цикл 
		
	Сообщить("Выводим " + стрДокумент.Представление() + "(" + стрДокумент.ПолноеИмя() + ")");
		
	Если СтрДокумент.Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда 
		Сообщить(Символы.Таб + "Документ можно проводить");
	ИначеЕсли СтрДокумент.Проведение = Метаданные.СвойстваОбъектов.Проведение.Запретить Тогда  
		Сообщить(Символы.Таб + "Документ нельзя проводить");
	КонецЕсли;	
		
КонецЦикла;

Перечисленный тип 1С

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

Читайте также по теме:

Объект в 1С

Ссылка в 1С

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

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

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

Книга написана понятным и простым языком — для новичка.

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

О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»

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

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

Промо-код на скидку в 15% — 48PVXHeYu

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


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

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

Яндекс.Деньги — 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. Извините за тему, не знала как назвать

    Вообщем, вот такая запись — это один вариант :

    НаименованиеСправочника = ТИПРеквизита.Метаданные().Имя;
    ЗначениеРеквизита = Справочники[НаименованиеСправочника].НайтиПоНаименованию(СтрЗначение);
    

    Тут все правильно , работает.
    Но проблема в том, что ТИПРеквизита, это переменное значение: справочник, перечисление и что-там еще есть в ПланеВидовХарактеристикСубконто.

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


  2. alexburn

    Offline

    alexburn
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    15.150
    Симпатии:
    560
    Баллы:
    204

    Составной тип у реквизита выставьте и отметьте всевозможные типы.

  3. разве это то о чем я спросила?
    ТИПРеквизита определяется программно, я его не знаю зарание.
    Если это будет перечисление , то вторая строка кода , приведенного выше , явно не сработает…:(


  4. nbIpKuH_BaH9I

    Offline

    nbIpKuH_BaH9I
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.117
    Симпатии:
    550
    Баллы:
    204

    Если ТипЗнч(ВашеЗначение) = Тип("СправочникСсылка.Номенклатура") Тогда
       // пропишите что хотите
    КонецЕсли;

    — Объединение сообщений, 17 сен 2015

    Не перечьте нам никогда :)

  5. Я не могу проверять на равенство определенному справочнику! Их огромное количество , и какой конкретно из них , неизвестно заранее

    — Объединение сообщений, 17 сен 2015

    ой , а я это вообще не Вам писала, а
    [​IMG]
    alexburn


  6. nbIpKuH_BaH9I

    Offline

    nbIpKuH_BaH9I
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    8.117
    Симпатии:
    550
    Баллы:
    204

    У реквизита есть тип. Он явно указан в конфигураторе. Давайте тогда полностью опишите задачу?

  7. загрузка из excel в док. Установка правил ссответствия счетов БУ и МСФО, вот задача

    — Объединение сообщений, 17 сен 2015

    у реквизита есть, но мне надо заполнить его автоматом

    В коде выше реквизит — это как бы не какойто там реквизита документа:eek:


  8. shurikvz

    Offline

    shurikvz
    Модераторы
    Команда форума
    Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.547
    Симпатии:
    344
    Баллы:
    104

      Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(<...>)) Тогда
      ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(<...>)) Тогда
      ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипЗнч(<...>)) Тогда
    и.т.д.

  9. nomad_irk

    Offline

    nomad_irk
    Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204

    Имя объекта можно узнать из метаданных ссылки на объект:

    СсылкаНаОбъект.Метаданные().Имя;

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


  10. rur39

    Offline

    rur39

    Регистрация:
    15 мар 2016
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1

    Функция ПреобразоватьЗначенияПеречисленияВUUID(ЗначенияПеречисления) Экспорт

    Если Не ЗначениеЗаполнено(ЗначенияПеречисления) Тогда
    Возврат «»;
    КонецЕсли;
    ЗначВнутр = ЗначениеВСтрокуВнутр(ЗначенияПеречисления);
    Массив = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ЗначВнутр, «:»);
    Если Не Массив.Количество() = 2 Тогда
    Возврат «»;
    КонецЕсли;
    UUID = СтрЗаменить(Массив[1], «}», «»);
    Если Не СтрДлина(UUID) = 32 Тогда
    Возврат «»;
    КонецЕсли;
    UUID = Лев(UUID, 8) + «-» + Сред(UUID, 9, 4) + «-» + Сред(UUID, 13, 4) + «-» + Сред(UUID, 18, 4) + «-» + Прав(UUID, 12);
    Попытка
    ф = новый Уникальныйидентификатор(UUID);
    Исключение
    Возврат «»;
    КонецПопытки;
    Возврат UUID;

    КонецФункции

Похожие темы

  1. Tashiro
    Ответов:
    13
    Просмотров:
    11.823


1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

17 правил для составления оптимального ЗАПРОСа к данным базы 1С 47
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ


1C и Google Maps 21
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во время решения задачи было реш


1Cv8.1CD — Файл данных достиг максимального размера! 8
1С выдает предупреждение » Файл данных достиг максимального размера» .
Подскажите из — за чего это и как можно решить ?
Превышен размер файла, обычно это сообщение возникает, когда размер файла 1Cv8.1CD приближается к 10 гигабайтам или размер ка


1С 8.x : Как убрать лидирующие нули в номере Документа (вариант2) 0
Скопировать строку с номером, с лидирующими нулями, в числовом поле (с форматом без групп, без группировки), и вернуть(скопировать) обратно в строковом поле с номером. Возвращает без нулей.


1С Предприятие что это? 12
Что такое 1С?
1С — это фирма , у которой одно из направлений деятельности — разработка программного обеспечения для автоматизации бизнес-процессов предприятий. « 1С:Предприятие » — конкретный продукт, который выпускает компания 1С .
Что такое


Посмотреть все результаты поиска похожих

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