Имя: Пароль:
1C
1С v8
Два com-соединения
0 Vadimir
 
13.01.13
18:37
Здравствуйте, уважаемые!
Проблема - пытаюсь из УТ-шки соединиться с 2-мя бухгалтериями по com. Если постоянно связываться только с одной (любой) - все нормально. Только пытаешься свзаться со 2-й - начинают идти ошибки на метод Очистить таб. части отчета комиссионера.
Сначала думал, может в переносе проблема. Смоделировал ситуацию на простой обработке. Если в этой обработке постоянно надимать только на одну кнопку(любую) - все отлично. Если после этого нажать на вторую - та же самая ошибка.
Кто-нибудь сталкивался с таким?
вот код:

Перем V8, БазаБГ, БазаФС;

Процедура БГНажатие(Элемент)
   док = БазаБГ.Документы.ОтчетКомиссионераОПродажах.НайтиПоНомеру("БПБГ140", Дата("20121221")).получитьобъект();
   док.Товары.Очистить();
   док.Покупатели.Очистить();
   Сообщить("ГотовоБГ");
КонецПроцедуры

Процедура ФСНажатие(Элемент)
   док = БазаФС.Документы.ОтчетКомиссионераОПродажах.НайтиПоНомеру("БПФС0000001", Дата("20121011")).получитьобъект();
   док.Товары.Очистить();
   док.Покупатели.Очистить();
   Сообщить("ГотовоФС");
КонецПроцедуры

ПараметрСоединения = "File=""D:\1cBases\БГ Бух"";Usr=""Администратор"";Pwd=""718070""";
V8 = Новый COMОбъект ("V82.COMConnector");
Попытка
   БазаБГ = V8.Connect (ПараметрСоединения);
Исключение
   Сообщить(ОписаниеОшибки());
КонецПопытки;
ПараметрСоединения = "File=""D:\1cBases\Фудснаб""";
Попытка
   БазаФС = V8.Connect (ПараметрСоединения);
Исключение
КонецПопытки;
1 vicof
 
13.01.13
18:49
Какие ошибки конкретно?
Во второй базе точно табличная часть называется "Товары"?
2 Vadimir
 
13.01.13
19:02
конкретно
{Форма.Форма.Форма(12)}: Значение не является значением объектного типа (Очистить)
   док.Товары.Очистить();

я же говорю, если вызывать только ФСНажатие или БГНажатие хоть сколько раз - все прорабатывает на ура. Только стоит вызвать вторую процедуру - эта ошибка :(

Платформа 8.2.17.153
Конфигурации бухгалтерий изменены, но они идентичны
3 andry73
 
13.01.13
19:03
Может попробовать для каждого соединения свой COMОбъект создавать?
4 vicof
 
13.01.13
19:03
(2) Назови ПараметрСоединения2
и потом БазаФС = V8.Connect (ПараметрСоединения);
5 vicof
 
13.01.13
19:03
т.е. БазаФС = V8.Connect (ПараметрСоединения2);
6 vicof
 
13.01.13
19:06
Ну и описаниеОшибки() во второй попытке выведи
7 Vadimir
 
13.01.13
19:19
попробовал и свой com-объект, и ПараметрСоединения2 - не помогает. ОписаниеОшибки() выдает
{Форма.Форма.Форма(13)}: Значение не является значением объектного типа (Очистить)
8 Fragster
 
гуру
13.01.13
19:27
сделай 2 разных объекта Новый COMОбъект ("V82.COMConnector")
9 Vadimir
 
13.01.13
19:32
не работает
ПараметрСоединения = "File=""D:\1cBases\БГ Бух"";Usr=""Администратор"";Pwd=""718070""";
V8 = Новый COMОбъект ("V82.COMConnector");
V81 = Новый COMОбъект ("V82.COMConnector");
Попытка
   БазаБГ = V8.Connect (ПараметрСоединения);
Исключение
   Сообщить(ОписаниеОшибки());
КонецПопытки;
ПараметрСоединения2 = "File=""D:\1cBases\Фудснаб""";
Попытка
   БазаФС = V82.Connect (ПараметрСоединения2);
Исключение
КонецПопытки;
10 Vadimir
 
13.01.13
19:33
т.е.

ПараметрСоединения = "File=""D:\1cBases\БГ Бух"";Usr=""Администратор"";Pwd=""718070""";
V8 = Новый COMОбъект ("V82.COMConnector");
V82 = Новый COMОбъект ("V82.COMConnector");
Попытка
   БазаБГ = V8.Connect (ПараметрСоединения);
Исключение
   Сообщить(ОписаниеОшибки());
КонецПопытки;
ПараметрСоединения2 = "File=""D:\1cBases\Фудснаб""";
Попытка
   БазаФС = V82.Connect (ПараметрСоединения2);
Исключение
КонецПопытки;
11 vicof
 
13.01.13
19:43
(7) Чего-то ты не договариваешь...
Форма в COM-соединении не доступна, если чо.
12 andry73
 
13.01.13
19:48
(11) в (7) просто значит что код, работающий с COMОбъектом размещен в форме
13 vicof
 
13.01.13
19:48
(12) Да, ступил, спасибо)
14 Vadimir
 
13.01.13
19:53
да, код размещен именно в форме. перенес все в модуль обработки. Результат:

{ВнешняяОбработка.ВнешняяОбработка1.МодульОбъекта(13)}: Значение не является значением объектного типа (Очистить)


:(:(:(:(:(
15 vicof
 
13.01.13
19:57
(14) я имел ввиду, что в базе, к которой цепляешься по сом-соединению, нельзя обращаться к формам объектов.
Короче, бери в руки отладчик и смотри, чего не так.

Кстати, выведи Сообщить(Док);
Если подозрение, что документ просто не находится.
16 vicof
 
13.01.13
19:57
*Есть подозрение
17 Vadimir
 
14.01.13
05:07
Сообщить(Док) не поможет, потому что выведется "COMОбъект". А сам документ находится, смотрел в отладчике. Да и, если бы он не находился, то уже при первой попытке подключения была бы ошибка. А к любой базе подключается на ура и все прорабатывает. Тут дело именно в com-соединении... может косяк платформы? Только вот он нигде не документирован
18 Vadimir
 
14.01.13
09:41
есть еще одна зацепка...
в одной из бухгалтерий я создавал реквизит документа(НЕ реквизит ТЧ, а именно документа) для синхронизации. так вот... если этот реквизит удалить - все шикарно работает. Если его добавить(неважно как он называется и какой тип имеет) - все слетает.
есть соображения?