![]() |
|
Ошибка: Операция не может быть выполнена из за несоответствия версии или отсутствия записи | ☑ | ||
---|---|---|---|---|
0
Alex2411
18.03.21
✎
17:49
|
Добрый день! Столкнулся с такой проблемой, рассказываю, БД самописная на управляемом приложение, 2 ТСД работают одновременно с одним документом, первый ТСД пишет данные в документ второй нет!
вот функция, которую вызывает ТСД в момент записи: ДокОбъект = Объект.ДокРаскладка.Ссылка.ПолучитьОбъект(); Если ДокОбъект.ТЧ.Итог("Количество")<>ДокОбъект.ТЧ.Итог("КоличествоФакт") тогда СтрокаДок = ДокОбъект.ТЧ[НомерСтрокиДокумента-1]; Если конечныйШКполучен = 0 Тогда СтрокаДок.КоличествоФакт = ТекКолво; КОнецЕсли; СтрокаДок.РаскладкаВремя = Формат(ТекущаяДата(),"ДЛФ=В"); СтрокаДок.РаскладкаДата = ТекущаяДата(); СтрокаДок.СтрокаКЗачету = 1; //Если конечныйШКполучен = 1 Тогда// 17-03 . Если НЕ ОднаСтрокаВТЧ() Тогда// 17-03 СтрокаДок.Комментарий = СокрЛП(СтрокаДок.Комментарий) + ?(СтрокаДок.Комментарий = "НачалоКонец", "", "Конец"); Иначе Если конечныйШКполучен = 1 Тогда СтрокаДок.Комментарий = СокрЛП(СтрокаДок.Комментарий) + ?(СтрокаДок.Комментарий = "", "", "Конец"); КонецЕсли; КонецЕсли; ТекРежим=8; ДокОбъект.Записать(РежимЗаписиДокумента.Запись); Если конечныйШКполучен = 1 Тогда ТипЗаписи = 1; КонецЕсли; КонецЕсли; |
|||
1
Alex2411
18.03.21
✎
17:50
|
период между записями не меньше 10 сек.
|
|||
2
Alex2411
18.03.21
✎
17:52
|
Может Объект.ДокРаскладка.Ссылка.ПолучитьОбъект() возвращает не измененный объект, со старой версией?
|
|||
3
Alex2411
18.03.21
✎
17:53
|
Платформа 1С:Предприятие 8.3 (8.3.18.1208)
|
|||
4
mikecool
18.03.21
✎
17:54
|
перечитать объект перед записью
|
|||
5
polosov
18.03.21
✎
18:00
|
(0) Так ошибка в какой момент возникает?
Возможно оба клиента делают ПолучитьОбъект() Один клиент меняет объект, у другого тут же протухает версия полученного ранее объекта. |
|||
6
Alex2411
18.03.21
✎
18:07
|
разница между запусками функции минимум 10 сек. функция выполняется мгновенно
|
|||
7
Alex2411
18.03.21
✎
18:07
|
база крутиться в SQL
|
|||
8
polosov
18.03.21
✎
18:25
|
(6) Чудес не бывает. Блокируй документ после получения объекта.
|
|||
9
Alex2411
19.03.21
✎
12:35
|
ДокОбъект = Объект.ДокРаскладка.ПолучитьОбъект();
ДокОбъект.Прочитать(); Написал вот так и все работает!!! До конца только не понятно(((( почему так!!! |
|||
10
Вафель
19.03.21
✎
13:26
|
между тем как получил и записал ктото еще успел записать
|
|||
11
Вафель
19.03.21
✎
13:27
|
(8) нужно ДО
|
|||
12
Alex2411
19.03.21
✎
14:45
|
(10) Исключено, в журнале регистрации смотрел. Я тесты делал на копии, в которой работали только эти два тсд.
Так работает ДокОбъект = Объект.ДокРаскладка.ПолучитьОбъект(); ДокОбъект.Прочитать(); а вот так: ДокОбъект = Объект.ДокРаскладка.ПолучитьОбъект(); Не работает, в чем разница??? разве когда я пишу ПолучитьОбъект() он мне не последнию версию возвращает????? По сути Прочитать() здесь лишнее. |
|||
13
vicof
19.03.21
✎
14:58
|
||||
14
Вафель
19.03.21
✎
15:08
|
посмотри версии поле получить и после прочитать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |