Имя: Пароль:
1C
1С v8
Импорт данных через СОМ-соединение
,
0 dlogius
 
06.08.24
10:14
Задача. Выкачать данные справочника из ТОЙ базы в ЭТУ.
Справочник простой, маленький, но в нем есть поле-ссылка на другой справочник.
Выполняю СОМ соединение, выполняю СОМ-Запрос и получаю результат, в котором ссылка на другой справочник = это СОМобъект. СОМобъект это не ссылка.

Вот запрос:
ВЫБРАТЬ
	ШтрихКоды.Ссылка,
	ШтрихКоды.Код,
	ШтрихКоды.Материал.Ссылка КАК Материал
ИЗ
	Справочник.ШтрихКоды КАК ШтрихКоды


При заполнении из запроса справочника в ЭТОЙ базе получается то, что совсем никуда не годится, поле "Материал" - пустое, потому что оно СОМ-объект.

При этом первое поле "Ссылка" вполне себе имеет удобоваримое значение.

Вот кусок результата:
Ссылка			   Код			  Материал
000000000001	000000000001	
000000000002	000000000002	
000000000003	000000000003	

Поле Материал - пустое

Отюда вопрос: есть ли какой-то способ вытащить ссылку из СОМобъекта, чтобы вставить ее в соответствующее поле справочника?
1 Волшебник
 
06.08.24
10:13
А точно справочник маленький? Это ж вся номенклатура
2 Ненавижу 1С
 
гуру
06.08.24
10:16
(0) ссылки это абстракции уровня конкретной базы. Поэтому нет смысла их тащить в другую. Все что можно импортировать это элементарные типы: строки, числа, даты, булево...
Возьмите эти необходимые кирпичики и сформируйте на другой стороне объект, который однозначно будет идентифицироваться с образом.
3 Мультук
 
гуру
06.08.24
10:20
(0)

1) Нужно взять и выполнить запрос непосредственно в "Той базе"

ВЫБРАТЬ
    ШтрихКоды.Ссылка,
    ШтрихКоды.Код,
    ШтрихКоды.Материал КАК Материал
ИЗ
    Справочник.ШтрихКоды КАК ШтрихКоды

и посмотреть глазами на то что поле "Материал" заполнено

2) А кто сказал, что материал не число, не дата, не строка, не перечисление, а ссылка ?

3) Непонятно зачем здесь com. Берем типовую обработку выгружаем/загружаем

4) Думаешь вот как кошернее

ШтрихКоды.Материал.Ссылка КАК Материал


чем

ШтрихКоды.Материал КАК Материал
4 dlogius
 
06.08.24
11:12
"и посмотреть глазами на то что поле "Материал" заполнено"
Выполнял на ТОЙ базе. Прекрасно заполняется. Это реально поле типа СправочникСсылка.Номенклатура.

" Думаешь вот как кошернее"
Так меньше уровень вложенности внутри СОМобъекта

(2) Я, в принципе, так и думаю, но хочется чуда.
5 dlogius
 
06.08.24
11:16
(1) Этот справочник касается малой части номенклатуры. И в нем очень мало реквизитов.
6 lEvGl
 
гуру
06.08.24
11:24
Так меньше уровень вложенности внутри СОМобъекта

)) да пох на него)
собственно, что делать, когда ссылка на справочник штрихкоды будет не найдена/найдена в этой базе?
вам же не надо каждый раз загружать весь результат запроса заново?
7 Волшебник
 
06.08.24
11:19
(5) Ну что Вы ерунду пишете? Справочник штрих-кодов просто гигантский. Это ж АШАН, там есть всё: от босоножек до колбасы.
8 Волшебник
 
06.08.24
11:25
(4) >> Я, в принципе, так и думаю, но хочется чуда.

В программировании чудес не бывает.
Программирование — это не магия
https://suno.com/song/47af1bb9-52e2-4da5-856b-519cf4c821d2
9 Garykom
 
гуру
06.08.24
11:32
2124 год напомнило...
10 Garykom
 
гуру
06.08.24
11:33
(0) Забудьте уже про COM.
Используйте другие методы.
11 dlogius
 
06.08.24
11:41
(10) Какие?
12 Garykom
 
гуру
06.08.24
11:42
(11) Как минимум кроссплатформенные
Которые будут работать под linux например

Банальнейший обмен через файлы, если http-сервисы сложна
13 Alex33
 
06.08.24
12:14
(11) Если не нужна кроссплатформенность, то COM это удобно и быстро, почти всё одноразовое делаю через COM.
По поводу проблемы: поле Материал у вас не пустое, это COM объект, у которого есть поля Код, Наименование и т. д., которые прекрасно получаются через точку.
14 Garykom
 
гуру
06.08.24
12:34
(13) Удобно и быстро?
Это когда все под админскими правами на одном компе?
В кровавом энтерпрайзе все совсем не так
15 Alex33
 
06.08.24
13:01
(14) Согласен, именно под админскими правами на одном компе, у меня просто это 99% случаев по моей работе.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn