Имя: Пароль:
1C
1С v8
v8: падает обмен... (куплю клаву без капслока, дорого)
0 Sasha_H
 
21.12.11
12:41
В базе никого кроме меня нету. Фоновые обмены все отрубаны жостко на сервере 1С блокировка фоновых.

И падает с такой вот ошибкой, что может быть такого раньше не было.

Ошибка при вызове метода контекста (Записать): Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Lock request time out period exceeded.
HRESULT=80040E31, SQLSrvr: Error state=33, Severity=10, native=1222, line=1

Техническая информация:
{ПланОбмена.ОбменУТСМагазинами(706)}: Ошибка при вызове метода контекста (Записать): Конфликт блокировок при выполнении транзакции:
1 Axel2009
 
21.12.11
12:41
при обмене лочится таблица изменений. и любые регистрации изменений лягут медным тазом
2 Sasha_H
 
21.12.11
12:43
а где м.б. ошибочка? щас модуль в студию дам
3 rs_trade
 
21.12.11
12:44
(2) не надо.
4 Живой Ископаемый
 
21.12.11
12:45
2(2) но только заглавными буквами, ок?
5 Axel2009
 
21.12.11
12:47
(2) ошибочка в том, что ктото еще работает с базулькой
6 Axel2009
 
21.12.11
12:48
(2) ошибочка еще в переключениях с кода клиента на сервера. обслуживать могут разные коннекты к скулю, что вешает взаимные блокировки.
7 Sasha_H
 
21.12.11
12:49
Кому не интересно желательно вообще сюда не заходить. С базой никто не работает, монитор пуст и на сервере 1С соединеие только я.

Функция    ЗагрузитьИзмененияДанныхДляУзла(УзелОбмена, КоличествоЭлементовВТранзакцииНаЗагрузкуДанных, ЧтениеXML,СтруктураНастроекОбменаДанными) Экспорт
   
   // Создаем чтение сообщения, и читаем из файла его инфу
   ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения();
   Попытка
       ЧтениеСообщения.НачатьЧтение(ЧтениеXML);
   Исключение
       #Если Клиент Тогда
           Сообщить("Не удалось создать чтение сообщения: " + ОписаниеОшибки());
       #КонецЕсли
       Возврат Ложь;
   КонецПопытки;
   
   // Проверяем отправителя сообещния, если он не соответствует данному узлу отправляем "куда по-дальше"
   Если ЧтениеСообщения.Отправитель <> УзелОбмена.Ссылка Тогда
       #Если Клиент Тогда
           Сообщить("Отправитель сообщения не соответствует текущему.");
       #КонецЕсли
       Возврат Ложь;
   КонецЕсли;    
   
   //Удаляем регистрацию изменений для узла отправителя сообщения
   //*** Служба регистрации изменений
   ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель
                                               ,ЧтениеСообщения.НомерПринятого);
                                               
   ИнициализацияРеквизитовИМодульныхПеременных();
   // Теперь читаем данные из файла по очереди и записываем какие нужны
   Пока ВозможностьЧтенияXML(ЧтениеXML) Цикл
       //Читаем очередное значение
       Данные = ПрочитатьXML(ЧтениеXML);
       #Если Клиент Тогда
           ОбработкаПрерыванияПользователя();
       #КонецЕсли        
       
       //**операции с удаленными объектами**
       //ТипЗнч(Данные) = Тип("УдалениеОбъекта")
       
       //**обработка заполнения родителей**
       Если Не ТипЗнч(Данные) = Тип("УдалениеОбъекта")
           И ОбщегоНазначения.ПринадлежностьКлассуМетаданных("Справочники",Данные.Метаданные())
           и УзелОбмена.ГруппыСправочников.Количество() > 0 Тогда
           
           Для Каждого СтрОбъект Из УзелОбмена.ГруппыСправочников Цикл
               
               мСсылкаОбъекта = Данные.Ссылка;
               Если ТипЗнч(СтрОбъект.ТекущаяГруппа) = ТипЗнч(мСсылкаОбъекта)
                   и Данные.Родитель.Пустая()
                   и Не СтрОбъект.ТекущаяГруппа.Пустая() Тогда
                   
                   Данные.Родитель = СтрОбъект.ТекущаяГруппа;
                   Прервать;
                   
               КонецЕсли;    
               
           КонецЦикла;
           
       КонецЕсли;    
       
       Если Не ТипЗнч(Данные) = Тип("УдалениеОбъекта")
           И ОбщегоНазначения.ПринадлежностьКлассуМетаданных("Документы",Данные.Метаданные())
           и ТипЗнч(Данные.Ссылка) = Тип("ДокументСсылка.УстановкаЦенНоменклатуры")
           и УзелОбмена.Цены.Количество() > 0 Тогда
           
           ТипыЦен = Данные.ТипыЦен;
           Товары = Данные.Товары;
           
           Для Каждого СтрокаЦен Из УзелОбмена.Цены Цикл
               
               ПараметрыОтбора = Новый Структура;
               ПараметрыОтбора.Вставить("ТипЦен", СтрокаЦен.ТипЦены);
               
               НайденныеСтроки = ТипыЦен.НайтиСтроки(ПараметрыОтбора);
               Для Каждого СтрокаУдаления Из НайденныеСтроки Цикл
                   ТипыЦен.Удалить(СтрокаУдаления);
               КонецЦикла;    
               
               НайденныеСтроки = Товары.НайтиСтроки(ПараметрыОтбора);
               Для Каждого СтрокаУдаления Из НайденныеСтроки Цикл
                   Товары.Удалить(СтрокаУдаления);
               КонецЦикла;
               
           КонецЦикла;    
           
       КонецЕсли;    
       
       Если Не ТипЗнч(Данные) = Тип("УдалениеОбъекта")
           И ОбщегоНазначения.ПринадлежностьКлассуМетаданных("Документы",Данные.Метаданные())
           И Не Данные.Проведен
           И Не Данные.ЭтоНовый() Тогда
           
           ДвиженияДокумента = Данные.Метаданные().Движения;
           Для Каждого СвойстваОбъекта из ДвиженияДокумента Цикл
               
               НаборЗаписей = Данные.Движения[СвойстваОбъекта.Имя];
               //НаборЗаписей.Отбор.Регистратор.Установить(Данные.Ссылка);
               НаборЗаписей.Записать();
               
           КонецЦикла;

           
       КонецЕсли;    
       
       //Записать полученные данные
       Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель;
       Данные.ОбменДанными.Загрузка = Истина;
       Данные.Записать();
       
       Если Не ТипЗнч(Данные) = Тип("УдалениеОбъекта")
           И ОбщегоНазначения.ПринадлежностьКлассуМетаданных("Документы",Данные.Метаданные())
           и Данные.Ссылка.Метаданные().Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить
           и Данные.Ссылка.Проведен Тогда
           
           ЗаписатьИнформациюОбОтложенныхДвижениях(Данные.Ссылка,Данные.Дата,УзелОбмена);
           
       КонецЕсли;
       
   КонецЦикла;
   
   ЧтениеСообщения.ЗакончитьЧтение();
   ЧтениеXML.Закрыть();
   
   ОбменДаннымиXML = Обработки.ОбменДаннымиXML.Создать();
   ОбменДаннымиXML.УзелДляОбмена = УзелОбмена;
   ОбменДаннымиXML.УзелОбменаЗагрузкаДанных = УзелОбмена;
   ОбменДаннымиXML.ИнициализироватьВедениеПротоколаОбмена();
   РезультатВыполненияОтложенныхДвижений = ОбменДаннымиXML.ВыполнитьОтложенныеОперацииСДокументами(,, 1000, Неопределено);
   ОбменДаннымиXML.ЗавершитьВедениеПротоколаОбмена();
   ОбменДаннымиXML.РезультатВыполненияОтложенныхДвижений = РезультатВыполненияОтложенныхДвижений;
   
   СтруктураНастроекОбменаДанными.Вставить("РезультатОтложенныхДвиженийДокументов", ОбменДаннымиXML.РезультатВыполненияОтложенныхДвижений);
   СтруктураНастроекОбменаДанными.Вставить("КоличествоВыполненныхОтложенныхДвиженийДокументов", ОбменДаннымиXML.мКоличествоВыполненныхОтложенныхДвиженийДокументов);
   
   Возврат Истина
   
КонецФункции

Эта загрузка может призвести к регистрации в других планах обмена?!
8 Живой Ископаемый
 
21.12.11
12:51
безусловно, когда пишешь НаборЗаписей.Записать(); этот набор регистрируется для других узлов. если регистр входит в план обмена
9 Sasha_H
 
21.12.11
12:54
(8) да -да. я перечитал колд и сделал выводы (1) пробую изменить.

просто этот обмен кривой мы его переделали на более правильный.
10 Sasha_H
 
21.12.11
12:56
просто надо протолкнуть старые документы и все ))
11 Sasha_H
 
21.12.11
13:08
я думаю там достаточно написать так: НаборЗаписей.ОбменДанными.Загрузка = Истина;
12 Живой Ископаемый
 
21.12.11
13:14
2(11) м.... может быть
13 Sasha_H
 
21.12.11
13:37
Собственно проблема изкоренна. Спс.
Отдельное спасибо (1),(8).
Программист всегда исправляет последнюю ошибку.