Имя: Пароль:
1C
1С v8
Почему при COM коннекте ошибка при создании объекта
0 razbiralshik
 
17.07.13
14:23
&НаКлиенте
Перем СтрокаПодключения;
&НаКлиенте
Перем глБаза;

&НаКлиенте
Функция Подлкючение()
   
   СтрокаПодключения = "Srvr='*****'; Ref='*****'; usr='*****'; pwd='*****'";
   Если глБаза = Неопределено Тогда
       Попытка
           СистемнаяИнформация = Новый СистемнаяИнформация;
           ВерсияПлатфомы = Лев(СистемнаяИнформация.ВерсияПриложения,3);
           Если ВерсияПлатфомы="8.0" Тогда
               COM = Новый COMОбъект("V8.COMConnector");
           ИначеЕсли ВерсияПлатфомы="8.1" Тогда
               COM = Новый COMОбъект("V81.COMConnector");
           ИначеЕсли ВерсияПлатфомы="8.2" Тогда
               COM = Новый COMОбъект("V82.COMConnector");
           КонецЕсли;
           глБаза = COM.Connect(СтрокаПодключения);
           Сообщить("Соеденено");
       Исключение
           Сообщить("Ошибка соединения: " + ОписаниеОшибки());
           глБаза=0;
           Возврат Ложь;
       КонецПопытки;
   Иначе
       Сообщить("Возможно соединение уже установленно");
   КонецЕсли;
   
КонецФункции


&НаКлиенте
Процедура Записывание(Команда)
   
   Подлкючение();
   //НовыйВидСклада=глБаза.Перечисления.ВидыСкладов.Обычный;
   СправочникМенеджер=глБаза.Справочники.Валюты;
   глБаза.НачатьТранзакцию();
   Для i=1 по 2 Цикл
       НовыйОбъект=СправочникМенеджер.СоздатьЭлемент();
       НовыйОбъект.Наименование=Строка(i);
       НовыйОбъект.ПараметрыПрописиНаРусском=Строка(i);
       //НовыйОбъект.ВидСклада=НовыйВидСклада;
       НовыйОбъект.Записать();
   КонецЦикла;
   глБаза.ЗафиксироватьТранзакцию();
   
КонецПроцедуры



Запись дампа и падает )) В Чем причина?
1 Maxus43
 
17.07.13
14:25
на какой строке падает? отладчиком иди
2 Maxus43
 
17.07.13
14:28
и ничего, что
&НаКлиенте
Функция Подлкючение()

будет работать только на 8.2, причем в режиме УФ? и проверки на версию платформы просто смешны...
3 razbiralshik
 
17.07.13
14:30
(1) на строке записи
(2) ну и это помощь? нравится насмехаться?
4 Maxus43
 
17.07.13
14:33
(3) я не намехаюсь, я говорю что код не имеет смысла, чтобы сразу убрал лишнее.

Убери транзакцию, проверь без неё
5 drcrasher
 
17.07.13
14:38
(2) у него кривая копипаста:
  СтрокаПодключения = "Srvr='*****'; Ref='*****'; usr='*****'; pwd='*****'";
   Если глБаза = Неопределено Тогда ---- 8.х
       Попытка
           СистемнаяИнформация = Новый СистемнаяИнформация;
           Исключение
           Сообщить("Ошибка соединения: " + ОписаниеОшибки());
           глБаза=0; --- глХХХХ - это из 7.7, =0 - оттуда же
           Возврат Ложь;
       КонецПопытки;


так что пофиг, что и где будет исполняться =)
а падает из-за кривого подключения (имхо)
6 razbiralshik
 
17.07.13
14:43
(4) транзакция тут не причем. даже попробовал убрать, бестолку.
да и версию платформы получать, разве можно по другому? только если в константе хранить, а ты знаешь другие способы?

(5) а что такое кривое подключение? У меня не из твоего примера, да и подключение стандартное.
7 drcrasher
 
17.07.13
14:46
для начала идём в сп, вики, гугл, чтонитьещё и читаем концептуальную разницу между процедурой и функцией, потом курим функцию "подлючение", потом идём в 1с и внимательно ищем, в какой строке падает обработка.
8 razbiralshik
 
17.07.13
14:50
(7) знаю разницу, это тестовый пример, чтоже все такие умники, но никто не может помочь... и строку нашел где падает и подключение курил
9 razbiralshik
 
17.07.13
14:51
вот сп

// Создается объект-коннектор
cntr = Новый COMObject("V82.COMConnector");
// создается объект COM-соединение
connection = cntr.Connect("File=""c:\InfoBases\Trade"";
       Usr=""Director"";")


если внимательно посмотреть, у меня также!
10 Maxus43
 
17.07.13
14:52
(6) я сказал что версию платофрмы нет смысла проверять тут.
на платформах 8.0 и 8.1 это работать не будет всё равно
11 Галахад
 
гуру
17.07.13
14:59
Может код, надо присвоить?
12 razbiralshik
 
17.07.13
15:05
(11) ты прав здравый человек )) как я мог такое забыть....
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший