Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Ошибка: Операция не может быть выполнена из за несоответствия версии или отсутствия записи

Ошибка: Операция не может быть выполнена из за несоответствия версии или отсутствия записи
Я
   Alex2411
 
18.03.21 - 17:49
Добрый день! Столкнулся с такой проблемой, рассказываю, БД самописная на управляемом приложение, 2 ТСД работают одновременно с одним документом, первый ТСД пишет данные в документ второй нет!
вот функция, которую вызывает ТСД в момент записи:

    ДокОбъект = Объект.ДокРаскладка.Ссылка.ПолучитьОбъект();
    
    Если ДокОбъект.ТЧ.Итог("Количество")<>ДокОбъект.ТЧ.Итог("КоличествоФакт") тогда
        СтрокаДок = ДокОбъект.ТЧ[НомерСтрокиДокумента-1];
        Если конечныйШКполучен = 0 Тогда
            СтрокаДок.КоличествоФакт     = ТекКолво;
        КОнецЕсли;    
                
        СтрокаДок.РаскладкаВремя    = Формат(ТекущаяДата(),"ДЛФ=В");
        СтрокаДок.РаскладкаДата        = ТекущаяДата();
        СтрокаДок.СтрокаКЗачету       = 1;
            
        //Если конечныйШКполучен = 1 Тогда// 17-03            .
        Если НЕ ОднаСтрокаВТЧ() Тогда// 17-03        
            СтрокаДок.Комментарий = СокрЛП(СтрокаДок.Комментарий) +  ?(СтрокаДок.Комментарий = "НачалоКонец", "", "Конец");
        Иначе
            Если конечныйШКполучен = 1 Тогда            
                СтрокаДок.Комментарий = СокрЛП(СтрокаДок.Комментарий) + ?(СтрокаДок.Комментарий = "", "", "Конец");        
            КонецЕсли;
        КонецЕсли;
        ТекРежим=8;        

        ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
        Если конечныйШКполучен = 1 Тогда
            ТипЗаписи = 1;
        КонецЕсли;
                        
    КонецЕсли;
   Alex2411
 
1 - 18.03.21 - 17:50
период между записями не меньше 10 сек.
   Alex2411
 
2 - 18.03.21 - 17:52
Может Объект.ДокРаскладка.Ссылка.ПолучитьОбъект() возвращает не измененный объект, со старой версией?
   Alex2411
 
3 - 18.03.21 - 17:53
Платформа 1С:Предприятие 8.3 (8.3.18.1208)
   mikecool
 
4 - 18.03.21 - 17:54
перечитать объект перед записью
   polosov
 
5 - 18.03.21 - 18:00
(0) Так ошибка в какой момент возникает?
Возможно оба клиента делают ПолучитьОбъект()
Один клиент меняет объект, у другого тут же протухает версия полученного ранее объекта.
   Alex2411
 
6 - 18.03.21 - 18:07
разница между запусками функции минимум 10 сек. функция выполняется мгновенно
   Alex2411
 
7 - 18.03.21 - 18:07
база крутиться в SQL
   polosov
 
8 - 18.03.21 - 18:25
(6) Чудес не бывает. Блокируй документ после получения объекта.
   Alex2411
 
9 - 19.03.21 - 12:35
ДокОбъект = Объект.ДокРаскладка.ПолучитьОбъект();
    ДокОбъект.Прочитать();

Написал вот так и все работает!!! До конца только не понятно(((( почему так!!!
   Вафель
 
10 - 19.03.21 - 13:26
между тем как получил и записал ктото еще успел записать
   Вафель
 
11 - 19.03.21 - 13:27
(8) нужно ДО
   Alex2411
 
12 - 19.03.21 - 14:45
(10) Исключено, в журнале регистрации смотрел. Я тесты делал на копии, в которой работали только эти два тсд.
Так работает 
ДокОбъект = Объект.ДокРаскладка.ПолучитьОбъект();
ДокОбъект.Прочитать();

а вот так:
ДокОбъект = Объект.ДокРаскладка.ПолучитьОбъект();

Не работает, в чем разница??? разве когда я пишу ПолучитьОбъект() он мне не последнию версию возвращает????? По сути Прочитать() здесь лишнее.
   vicof
 
13 - 19.03.21 - 14:58
   Вафель
 
14 - 19.03.21 - 15:08
посмотри версии поле получить и после прочитать

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.