Добрый день!
Делаю интеграцию с 1С 8.2 на стороне Terrasoft:
Скриптами получаю "контактную информацию" из "контактного лица". Вот запрос:
var ContactInfo = Object1C.NewObject("Запрос");
ContactInfo.text = "ВЫБРАТЬ КонтактнаяИнформация.Объект," + '\n'+
"КонтактнаяИнформация.Тип," + '\n'+
"КонтактнаяИнформация.Вид," + '\n'+
"КонтактнаяИнформация.Представление," + '\n'+
"КонтактнаяИнформация.Поле1," + '\n'+
"КонтактнаяИнформация.Поле2," + '\n'+
"КонтактнаяИнформация.Поле3," + '\n'+
"КонтактнаяИнформация.Поле4," + '\n'+
"КонтактнаяИнформация.Поле5," + '\n'+
"КонтактнаяИнформация.Поле6," + '\n'+
"КонтактнаяИнформация.Поле7," + '\n'+
"КонтактнаяИнформация.Поле8," + '\n'+
"КонтактнаяИнформация.Поле9," + '\n'+
"КонтактнаяИнформация.Поле10," + '\n'+
"КонтактнаяИнформация.Комментарий," + '\n'+
"КонтактнаяИнформация.ЗначениеПоУмолчанию" + '\n'+
"ИЗ" + '\n'+
"РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация" + '\n' +
"ГДЕ"+ '\n' +
"КонтактнаяИнформация.Объект = &Ссылка1;";
ContactInfo.УстановитьПараметр("Ссылка1", Select1C[QueryLink].Ссылка);
var SContactInfo = ContactInfo.execute()
var RContactInfo = SContactInfo.Выгрузить();
В 1С это так выглядит:
Из "Представление" (1) значение получаю без проблем!
Как получить значение перечисления "Тип" (2)? Может кто-то уже такое делал?
Спасибо!
Нравится
Param.Obj1C.Перечисления.ТипыКонтактнойИнформации.Другое
Если нам нужно получить тип из 1С, тогда вот пример скрипта:
var EnumName = 'ТипыКонтактнойИнформации'; var EnumIndex = Param.Obj1C.Перечисления[EnumName].Индекс(Select1C.Тип); var Name = Select1C.Тип.Метаданные().EnumValues.Get(EnumIndex).Имя;
Обратите внимание, это для 1С 8.х
В 1С 77 название можно было получить проще: Select1C.Тип.Представление()
Пробовал следующий код:
var EnumName = 'ТипыКонтактнойИнформации'; var EnumIndex = Param.Obj1C.Перечисления[EnumName].Индекс(RContactInfo.Получить(i).Тип); var Name = Select1C.Тип.Метаданные().EnumValues.Get(EnumIndex).Имя;
Name из undefined ((((
Это переменная с результатом выполнения запроса:
var SContactInfo = ContactInfo.execute() var RContactInfo = SContactInfo.Выгрузить();
Александр, в данном случае необходимо произвести отладку и выяснить, что у нас в RContactInfo.Получить(i).Тип
Для корректной работы функции должна быть ссылка на элемент перечисления. В случае, если у нас там что-то другое, код работать не будет.
RContactInfo.Получить(i).Тип - закрытый объект, как узнать ссылка это или скажем посмотреть его свойства?
Александр, попробуйте сравнить значение. Например, есть Вам точно известно, что тип в данном регистре - Адрес, тогда:
if (Param.Obj1C.Перечисления.ТипыКонтактнойИнформации.Адрес == RContactInfo.Получить(i).Тип){
//если выполняется, тогда равно.
}else{
это не ссылка на элемент перечисления.
}
Еще один из способов получения названия элемента из ссылки на него описан здесь: http://www.community.terrasoft.ua/blogs/8329#comment-34738