Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Ошибка при вызове метода контекста (Заблокировать) , РегламентноеЗадание обновляет запись и изменяет Реквизит ВерсияДанных          
gololol Подменю пользователя
сообщение 18.11.20, 11:23
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 16
Спасибо сказали: 0 раз
Рейтинг: 0

1С:Предприятие 8.3 (8.3.10.2667)
Толстый Клиент
Обычное приложение


Доброго времени суток.

Есть таблица: ДокументСостояние

В этой таблице одна запись (один документ)

В этом документе есть поля:

Состояние = "1"
ВерсияДанных = "AAAAAABc4OoM"

Есть РегламентноеЗадание: РЗ_ИзменитьСостояние (запускается один раз в период времени)
Это реглмантное задание изменяет значение поля "Состояние"

Ситуация следующая.

РЗ_ИзменитьСостояние - запустилось и изменило значение полей

Состояние = "2"
ВерсияДанных = "AAAAAABc4OoP"

Далее пользователь делает двойной клик на записи
и происходит переход из ФормыСписка в ФормуДокумента

В ФормеДокумента выполняется

Процедура ПриОткрытии()

        ...

    Если Не Ссылка.Пустая() Тогда
         ЭтотОбъект.Заблокировать();
    КонецЕсли;
    

КонецПроцедуры


Проблема в том, что блокируется запись у которой

ВерсияДанных = "AAAAAABc4OoM"

а на самом деле

ВерсияДанных = "AAAAAABc4OoP"

т.е. программа пытается заблокировать запись с несуществующей ВерсиейДанных

ош: Ошибка при вызове метода контекста (Заблокировать)
ЭтотОбъект.Заблокировать();
по причине:
Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных
(возможно, запись была изменена или удалена)!

Всё правильно.

Вопрс: "Как можно решить эту проблему?"

volodya1122 Подменю пользователя
сообщение 18.11.20, 14:38
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 336
Из: Тернопіль
Спасибо сказали: 133 раз
Рейтинг: 135.7

gololol @ Сегодня, 11:23 * ,

такого не должно быть. тут скорее всего что-то "держит" этот документ.
Что проверить:
1. Маловероятно но все же в ПриОткрытии() или в ПередОткрытием() не меняются никакие реквизиты документа?
2. Ваше регламентное задание выполняется не единожды, а крутится по кругу. И поэтому постоянно блокирует документ.
3. В регламентном задании в конце очистить объект документа где вы его меняете ((тот что ПолучитьОбъект()).
4. Возможно где-то в другом месте этот документ блкируете и держите постоянно его в каком то реквизите.

Цитата(gololol @ 18.11.20, 11:23) *
Проблема в том, что блокируется запись у которой

ВерсияДанных = "AAAAAABc4OoM"

а на самом деле

ВерсияДанных = "AAAAAABc4OoP"

т.е. программа пытается заблокировать запись с несуществующей ВерсиейДанных


Тут неверно понимаете поведение платформы 1С. 1С пытается заблокировать не реквизиты в вашем документе а сам документ (и неважно что внутри документа поменялись данные)
Поясню на примере. Например у Вас есть обычная паперовая папка с документами. Лежит у Вас на столе. Вы на ней написали (внутри лежит 10 документов. Другой человек взял эту папку и открыл (заблокировал, в терминологии 1С). Положил туда еще какие-то дукументы, закрыл и положил на место (папка опять доступна). Хотя содержимое внутри уже не соответствует описанию , вы всеравно можете взять эту папку и открыть (заблокировать уже от себя) и при открытии папки можете видеть новое содержимое..
А теперь представте. Другой человек взял эту папку, открыл (ПолучитьОбъект() - в терминологии 1С) положил в нее свои документы (или ничего не положил) и держит в руках. В таком случае Вы не можете взять и заблокировать свою папку. Это вам и сообщает 1С

gololol Подменю пользователя
сообщение 18.11.20, 15:03
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 16
Спасибо сказали: 0 раз
Рейтинг: 0

gololol @ Сегодня, 11:23 * ,

Проблема решена.

Я запускал (вручную) Регламентное Задание находясь в ФормеСписка документа.
А надо было вызвать не Регламентное Задание, а метод этого Регламентного Задания.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.03.24, 17:03
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!