Имя: Пароль:
1C
1С v8
внешний источник, отмена транзакции выдает ошибку "транзакция не активна"
,
0 mxs089
 
09.10.14
15:41
пишу обработку, которая читает данные внешнего источника и грузит их в 1с. запись делаю в транзакции:

Попытка
ВнешнийИсточник.НачатьТранзакцию();
...
Объект.Записать();
ВнешнийИсточник.ЗафиксироватьТранзакцию();
Исключение
ВнешнийИсточник.ОтменитьТранзакцию();
КонецПопытки;

на отмене вылетает с ошибкой
1 mxs089
 
09.10.14
15:43
вылетает после ~20 минут работы, при повторном запуске продолжает работать где то 20 минут и падает на другом объекте с той же ошибкой
2 Михаил Козлов
 
09.10.14
16:01
Попробуйте Если ТранзакцияАктивна()
3 mxs089
 
09.10.14
16:20
база 1с расположена локальна (файловый вариант), sql на сервере sql. внешний источник ms sql.
4 mxs089
 
09.10.14
16:39
ошибка осталась (2)
5 mxs089
 
09.10.14
17:29
сделал sql трассировку:
SQL:BatchStarting    SET TRANSACTION ISOLATION LEVEL READ COMMITTED    1C:Enterprise 8.3        sa                    19316    53    2014-10-09 17:02:22.130            
SQL:BatchStarting    set implicit_transactions on     1C:Enterprise 8.3        sa                    19316    53    2014-10-09 17:02:22.133            
SQL:BatchStarting    SELECT
T1.CODE1,
T1.CODE2,
T1.FULLNAME,
T1.UNIT,
T1.LASTDATE,
T1."FLAG_LOAD"
FROM "dbo"."ST" T1
WHERE T1."CODE1" = 5655    1C:Enterprise 8.3        sa                    19316    53    2014-10-09 17:02:22.133            
SQL:BatchStarting    IF @@TRANCOUNT > 0 ROLLBACK TRAN    1C:Enterprise 8.3        sa                    19316    53    2014-10-09 17:02:23.640            
SQL:BatchStarting    set implicit_transactions off     1C:Enterprise 8.3        sa                    19316    53    2014-10-09 17:02:23.987            
SQL:BatchStarting    SELECT
T1.CODE1
FROM "dbo"."ST" T1
WHERE T1.CODE1 = 5655    1C:Enterprise 8.3        sa                    19316    53    2014-10-09 17:02:23.987            
Audit Logout        1C:Enterprise 8.3        sa    329    7824    0    1201686    19316    53    2014-10-09 16:42:22.440    2014-10-09 17:02:24.127
6 mxs089
 
09.10.14
17:34
после транзакции следует уже какой-то сокращенный запрос, а после сразу разрыв связи
7 mxs089
 
09.10.14
17:40
в консоли трассировки присутствует показатель READS (bigint
Число логических операций чтения ввода-вывода, выполненных пользователем за время соединения.) на первом запросе - 3, на втором - 2
8 rsv
 
09.10.14
17:50
(0) Седлайте ADO..
9 rsv
 
09.10.14
17:51
Если на ADO  не вылетает ....  значит ..
10 mxs089
 
10.10.14
11:47
разбил сессию, т.е. после загрузки 100 объектов отключаюсь и подключаюсь повторно, продолжаю загрузку

с отменой транзакции ошибок нет.. но теперь вываливается с другой ошибкой - Элемент не выбран!

т.е. создается новый объект в 1с, заполняется часть полей и вываливается с этой ошибкой.. вот что за х...?
11 mxs089
 
10.10.14
11:48
Ошибка при установке значения атрибута контекста (Артикул)
            Приемник[Реквизит.Приемник] = Значение;
по причине:
Элемент не выбран!
12 mxs089
 
10.10.14
11:52
обернул присвоение попыткой, т.е.
попытка
Приемник[Реквизит.Приемник] = Значение;
исключение
сообщить(...);
конецпопытки;

и поставил точку остановки на сообщить(...)
остановился и пытаюсь посмотреть, что же за тип у приемника, я даже выделить переменную не смог, клиентское приложение завершило работу с ошибкой
13 mxs089
 
10.10.14
12:10
все, я не понимаю, переписываю под ADO
14 mxs089
 
10.10.14
13:03
короче, ошибка при подключении к sql:

Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Недопустимый атрибут строки соединения

код:
ВнешнийИсточник.ConnectionString =
"Provider=SQLOLEDB;
|User ID=" + ИмяПользователя + ";
|Password=" + Пароль + ";
|Initial  Catalog=" + "MyBase" + ";
|Data  Source=" + "mySqlServer";
15 mxs089
 
13.10.14
15:00
разобрался с ADO, ошибок с транзакциями нет, косяки платформы...
16 mxs089
 
13.10.14
15:00
зато не нужно конфигурацию изменять..