Acid @ Сегодня, 15:02 , Я не создаю в подключаемой базе никаких объектов, мне нужно просто прочитать данные. Если я правильно понимаю, то NewObject и CreateObject используются для создания каких-либо объектов в подключаемой базе.
Группа: Местный
Сообщений: 2908
Из: Київ, Україна
Спасибо сказали: 1159 раз
Рейтинг: 1244.5
Все у вас должно читаться. Попробуйте в отладчике проверить. Попробуйте поставить фильтр по элементам (может вы читаете "производитель" у группы, у которой его и не может быть). Попробуйте решить задачу через запрос.
Допрацьовую: - "Бухгалтерія для України 2.1"; - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
Сделал запросом, теперь можно получить через ссылочный объект его реквизиты.
Запрос = Неопределено; Запрос = Подключение.NewObject("Запрос"); // А вот как раз и нюанс, который отличается от написания запроса при обычном режиме. Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Артикул, | Номенклатура.Производитель, | Номенклатура.Производитель.Наименование, | Номенклатура.ЭтоГруппа |ИЗ | Справочник.Номенклатура КАК Номенклатура";
Результат = Запрос.Выполнить(); Товар = Результат.Выбрать(); Пока Товар.Следующий() Цикл Если Товар.ЭтоГруппа = Ложь Тогда Сообщить(Строка(Товар.Артикул)+Символы.Таб+ Строка(Товар.Производитель)+Символы.Таб+ // Вот здесь выводит СОМОбъект Строка(Товар.Производитель.Наименование)); // А здесь то что надо КонецЕсли; КонецЦикла;
Acid @ Сегодня, 10:45 , Да это я конечно уберу - я выложил, что бы просто показать, что такая строка также выводит СОМОбъект, как и в предыдущих постах, а вторая строка выводит то что надо, когда предыдущие попытки этого не позволяли сделать.
Нашел способ как можно работать с перечислениями через СОМ
Ном = COM_ОбъектБД.Перечисления.ВидыТМЦ.Индекс(COM_ЭлементСправочника.Перечисление); Имя = COM_ОбъектБД.Метаданные().Перечисления.ВидПеречисления.EnumValues.Get(Ном).Name;
Получить значение перечисления
ИмяПеречисления = СсылкаНаПеречисление.Метаданные().Имя; КоличествоЗначенийПеречисления=Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления.Количество(); КолекцияЗначенийПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления; ИндексЗначенияПеречисления=Перечисления[ИмяПеречисления].Индекс(СсылкаНаПеречисление); ИмяЗначенияПеречисления = Метаданные.Перечисления[ИмяПеречисления].ЗначенияПеречисления[ИндексЗначенияПеречисления].Имя //Перебор коллекции значений перечисления Для каждого знач из КолекцияЗначенийПеречисления Цикл Сообщить(знач.Имя); КонецЦикла; ПредставлениеПеречисления=Строка(СсылкаНаПеречисление); //синоним
//полезной будет функция: Функция ПолучитьИмяЗначенияПеречисления(Ссылка) Экспорт
ИмяПеречисления = Ссылка.Метаданные().Имя; Индекс = Перечисления[ИмяПеречисления].Индекс(Ссылка);
// Альтернативный способ получения имени значения перечисления: ИмяЗначенияПеречисления = XMLстрока(СсылкаНаПеречисление);
// Полезный прием для работы с перечислениями при COM соединении с другой ИБ 8.0 (например при обмене данных): // надо передать ссылку на перечисление: // Здесь // V8 - COM объект "V8.Application" - ИБ внешнего соединения // СсылкаНаПеречислениеCOM - COM объект - ссылка на перечисление в ИБ внешнего соединения ИмяЗначенияПеречисленияCOM= V8.XMLString(СсылкаНаПеречислениеCOM); ПредставлениеПеречисленияCOM= V8.String(СсылкаНаПеречислениеCOM); //синоним ИмяПеречисленияCOM= СсылкаНаПеречислениеCOM.Метаданные().Имя; СсылкаНаПеречисление = XMLЗначение(Тип("ПеречислениеСсылка."+ИмяПеречисленияCOM), ИмяЗначенияПеречисленияCOM);
// разумеется имена перечислений в обоих базах должны быть идентичными.
// Пример получения значений перечисления запросом Запрос=новый запрос; запрос.Текст="ВЫБРАТЬ | ВидыОС.Ссылка, | ВидыОС.Порядок КАК Индекс |ИЗ | Перечисление.ВидыОС КАК ВидыОС"; Выборка=Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() цикл Сообщить(""+Выборка.ссылка+" : "+Выборка.индекс); конецЦикла;
// Пример для отбора на стороне COMсервера: Отбор = v8.Новый ("Структура"); МД=v8.XMLTypeOf(v8.Перечисления[ИмяПеречисления].ПустаяСсылка()); Отбор.Вставить("ВидДоговора", v8.XMLЗначение(v8.FromXMLType(МД),ИмяЗначенияПеречисления));
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!