проверка существования предопределенного значения
Показывать по
10
20
40
сообщений
- 1
- 2
18.11.2011
12:54
#1
"Платформа: 8.2.14.540, толстый клиент
Конфигурация: не имеет значения
Каким образом я могу программно проверить существование предопределенного значения в справочнике кроме как таким образом:
Есть ли какой то метод от разработчиков платформы, а то я что то не вижу в документации...
P.S. А как для тонкого клиента?"
Конфигурация: не имеет значения
Каким образом я могу программно проверить существование предопределенного значения в справочнике кроме как таким образом:
Функция ПредопределенноеЗначениеСуществует(ИдСправочника,ИдЗначения) Попытка тест=Справочники[ИдСправочника][ИдЗначения]; Возврат Истина; Исключение Возврат Ложь КонецПопытки; КонецФункции
Есть ли какой то метод от разработчиков платформы, а то я что то не вижу в документации...
P.S. А как для тонкого клиента?"
18.11.2011
13:49
#2
Метаданные.Справочники.Банки.Предопределенные
Программист это поймет? (это все, что здесь моего!)
Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("000000015").Предопределенный
У каждого элемента есть рекивзит «Предопределенный»
Программист это поймет? (это все, что здесь моего!)
Справочники.ВидыКонтактнойИнформации.НайтиПоКоду("000000015").Предопределенный
У каждого элемента есть рекивзит «Предопределенный»
18.11.2011
14:12
#3
Не пойдет.
1. Метаданные.Справочники.ВидыКонтактнойИнформации.Предопределенные
Примечание:
Данное свойство всегда имеет значение Неопределено, т.к. во встроенном языке не предусмотрена работа со значением данного свойства.
Получить предопределенные элементы можно с помощью менеджера справочника по имени предопределенного элемента: ПредопределенныйЭлемент = Справочники.Имя_Справочника.Имя_Предопределенного.
2. Перебор элементов - плохой ход, т.к. если элементов тысячи, то это неоптимально.
Задача: узнать есть ли в предопределенных элемент идентифицируемый неким кодом. Пока сделал как написал, но хотелось бы узнать более простой способ
1. Метаданные.Справочники.ВидыКонтактнойИнформации.Предопределенные
Примечание:
Данное свойство всегда имеет значение Неопределено, т.к. во встроенном языке не предусмотрена работа со значением данного свойства.
Получить предопределенные элементы можно с помощью менеджера справочника по имени предопределенного элемента: ПредопределенныйЭлемент = Справочники.Имя_Справочника.Имя_Предопределенного.
2. Перебор элементов - плохой ход, т.к. если элементов тысячи, то это неоптимально.
Задача: узнать есть ли в предопределенных элемент идентифицируемый неким кодом. Пока сделал как написал, но хотелось бы узнать более простой способ
18.11.2011
16:39
#4
В таком случае это самый быстрый способ получения предопределенного элемента справочника по имени. Но все же не совсем красиво писать код через попытку.
Интересно, в каком же случае это понадобилось?
Интересно, в каком же случае это понадобилось?
18.11.2011
16:44
#5
Обработку небольшую сделал для выгрузки сведений из базы. Специфика такова, что работать она должна не в какой то конкретной конфигурации, а в разных типовых от 1С, проще говоря, должна быть унифицированной. Оказалось, что в контактной информации в Комплексной автоматизации сведения о служебном телефоне физического лица идентифицируются предопределенным элементом с id="ТелефонСлужебный", а в Бухгалтерия предприятия id="ТелефонСлужебныйФизЛицо".
18.11.2011
16:55
#6
Так а зачем же все-таки тебе нужен этот предопределенный, когда синхронизация обычно по Коду или ГУИД-у идет?
24.11.2011
12:35
#7
"Да нет, это не обмен между базами в формате xml, это задача, сформулированная заказчиком как "выдать данные в dbf файл в поля такие то".
Кусок кода, который поможет понять зачем я обращался к предопределенному элементу и зачем нужно заранее знать есть он такой или нет:
Вот этот самый ИдентификаторТелефонСлужебный в
1С:Комплексная автоматизация 1.1 (1.1.14.1), например имеет идентификатор "ТелефонСлужебный", а в Бухгалтерия предприятия, редакция 2.0 (2.0.27.8) = "ТелефонСлужебныйФизЛица".
Обработка должна работать в "произвольной" конфигурации, поэтому я перед запросом проверяю какой предопределенный элемент из этих двух существует и пользуюсь нужным идентификатором."
Кусок кода, который поможет понять зачем я обращался к предопределенному элементу и зачем нужно заранее знать есть он такой или нет:
Запрос.Текст =
"ВЫБРАТЬ
| ФизическиеЛица.ДатаРождения,
| ФизическиеЛица.ИНН,
...
| ФИОФизЛицСрезПоследних.Фамилия,
| ФИОФизЛицСрезПоследних.Имя,
| ФИОФизЛицСрезПоследних.Отчество,
...
| РабочийТелефон.Поле3 КАК НомерРабочегоТелефона,
| РабочийТелефон.Поле4 КАК ДобавочныйНомерРабочегоТелефона,
|ИЗ
| Справочник.ФизическиеЛица КАК ФизическиеЛица
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних(, ФизЛицо = &ФизЛицо) КАК ФИОФизЛицСрезПоследних
| ПО (ФИОФизЛицСрезПоследних.ФизЛицо = ФизическиеЛица.Ссылка)
...
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК РабочийТелефон
| ПО ФизическиеЛица.Ссылка = РабочийТелефон.Объект
| И (РабочийТелефон.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации."+ИдентификаторТелефонСлужебный+"))
|ГДЕ
| ФизическиеЛица.Ссылка = &ФизЛицо";
Вот этот самый ИдентификаторТелефонСлужебный в
1С:Комплексная автоматизация 1.1 (1.1.14.1), например имеет идентификатор "ТелефонСлужебный", а в Бухгалтерия предприятия, редакция 2.0 (2.0.27.8) = "ТелефонСлужебныйФизЛица".
Обработка должна работать в "произвольной" конфигурации, поэтому я перед запросом проверяю какой предопределенный элемент из этих двух существует и пользуюсь нужным идентификатором."
24.11.2011
12:47
#8
А может просто сразу
если ИД="1С:Комплексная автоматизация 1.1 (1.1.14.1)" тогда
ИдентификаторТелефонСлужебный="ТелефонСлужебный "
иначе
ИдентификаторТелефонСлужебный="ТелефонСлужебныйФизЛица "
...
конецесли
если ИД="1С:Комплексная автоматизация 1.1 (1.1.14.1)" тогда
ИдентификаторТелефонСлужебный="ТелефонСлужебный "
иначе
ИдентификаторТелефонСлужебный="ТелефонСлужебныйФизЛица "
...
конецесли
- 1
- 2
Читают тему
(гостей: 1)