Имя: Пароль:
1C
1С v8
Странное поведение СОМОбъекта
,
0 zhukovia
 
28.11.18
15:12
Имеется 1С:Предприятие 8.3 (8.3.12.1529) SQL + самописанная конфигурация.
Есть следующая задача нужно подключиться к другой базе (тоже SQL на этом же сервере) и создать в ней документ, при этом поискав в справочниках в ней и создав необходимые в случае отсутствия. Создаем подключение, не знаю только, насколько критично что стоит V82COMConnector:
СтрокаПараметров = "Srvr=127.0.0.1;Ref=kassa_sql;Usr=Кассир;Pwd=8888";
V82COMConnector = Новый COMОбъект("V83.COMConnector");
Попытка
   Возврат V82COMConnector.Connect(СтрокаПараметров);
Исключение
   Сообщить("Ошибка подключения!");
   Возврат Неопределено;
КонецПопытки;
МенеджерКонтрагенты = COMОбъект.Справочники.Контрагенты;
СправочникГруппаПоставщики = МенеджерКонтрагенты.НайтиПоНаименованию("Поставщики");
Все хорошо отрабатывает. Потом ищем справочники и тут возникает странность! Если сделать поиск по наименованию в другой базе, примерно так:
СправочникСдатчик = МенеджерКонтрагенты.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.Сдатчик);
то тогда у СправочникСдатчик есть метод Пустая(), а если так
СправочникСдатчик = МенеджерКонтрагенты.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.Сдатчик,,СправочникГруппаПоставщики);
то у СправочникСдатчик метода Пустая() нет. Пишет что метод не найден, но если переделать так то все работает.
МенеджерКонтрагенты.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.Сдатчик,,СправочникГруппаПоставщики).Пустая()
чем может быть причина подобного поведения?
1 Lexey_
 
28.11.18
15:35
(0) что странного?
в одном случае НайтиПоНаименованию() возвращает Неопределено, в другом - Ссылку
2 zhukovia
 
28.11.18
15:37
(1) Да в том то и дело что возвращает не Неопределено, а СОМобъект
3 zhukovia
 
28.11.18
15:38
(1) Конструкция
МенеджерКонтрагенты.НайтиПоНаименованию(ВыборкаДетальныеЗаписи.Сдатчик,,СправочникГруппаПоставщики).Пустая()
выдает Ложь
4 zhukovia
 
28.11.18
15:51
И кстати если создать в другой базе новый элемент справочника вот так

СправочникСдатчик=МенеджерКонтрагенты.СоздатьЭлемент();
СправочникСдатчик.Родитель=СправочникГруппаПоставщики;
СправочникСдатчик.Наименование=ВыборкаДетальныеЗаписи.Сдатчик;
СправочникСдатчик.Записать();

То у СправочникСдатчик тоже не будет метода Пустая(). Но возможно так и должно быть. Тогда вопрос. Как понять что элемент создался и записался? И можно ли его присвоить реквизиту вновь создаваемого в другой базе документа или нужно делать опять НайтиПоНаименованию?
5 Lexey_
 
28.11.18
15:59
(4) "СправочникСдатчик тоже не будет метода Пустая()"
конечно не будет, Пустая() - это метод Ссылки(СправочникСсылка.<Имя справочника>)
6 zhukovia
 
28.11.18
16:44
(5) А вот так получилось, спасибо.
СправочникСдатчик.Ссылка.Пустая()