ERP Ошибка блокировки объекта. Объект уже заблокирован
Интеграция с оборудованием на производстве.
После создания (изменения, удаления) документа в 1с,
нужно отправить в стороннюю базу (не 1с) информацию,
и записать результат в документ id задачи.
Создал подписку на событие у Документа ПередЗаписью
У меня доп.реквизит документа, пытаюсь в него записать.
Если просто выполнить код ниже, ошибок нет (создать отдельную обработку)
А когда Пользователь открывает форму Документа и нажимает Провести и Закрыть,
ошибка -
Ошибка блокировки объекта. Объект уже заблокирован
Как правильно нужно сделать, чтобы удалось записать?
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(Док, ТабЗнач); -- бсп использую
После создания (изменения, удаления) документа в 1с,
нужно отправить в стороннюю базу (не 1с) информацию,
и записать результат в документ id задачи.
Создал подписку на событие у Документа ПередЗаписью
У меня доп.реквизит документа, пытаюсь в него записать.
Если просто выполнить код ниже, ошибок нет (создать отдельную обработку)
Док = СсылкаДок;
ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "Апи_id_2bc314bc370d4bd9bf8a246085953af3");
ТабЗнач = Новый ТаблицаЗначений;
ТабЗнач.Колонки.Добавить("Свойство");
ТабЗнач.Колонки.Добавить("Значение");
НоваяСтрока = ТабЗнач.Добавить();
НоваяСтрока.Свойство = ДопСвойство;
НоваяСтрока.Значение = id;
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(Док, ТабЗнач);
ПоказатьА когда Пользователь открывает форму Документа и нажимает Провести и Закрыть,
ошибка -
Ошибка блокировки объекта. Объект уже заблокирован
Как правильно нужно сделать, чтобы удалось записать?
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(Док, ТабЗнач); -- бсп использую
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
Решение:
Отказался от использования БСП.
Событие формы использую, ниже
Отказался от использования БСП.
Событие формы использую, ниже
&НаСервере
Процедура АПИ_ПриЗаписиНаСервереПосле(Отказ, ТекущийОбъект, ПараметрыЗаписи
ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "Апи_id_2bc314bc370d4bd9bf8a246085953af3");
МассивСтрок = ТекущийОбъект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство", ДопСвойство));
Если МассивСтрок.Количество() Тогда
СтрокаСвойства = МассивСтрок[0];
Иначе
СтрокаСвойства = ТекущийОбъект.ДополнительныеРеквизиты.Добавить();
КонецЕсли;
новСтруктура = Новый Структура("Свойство,Значение,ТекстоваяСтрока");
новСтруктура.Свойство = ДопСвойство;
новСтруктура.Значение = РезультатОтправки.id;
ЗаполнитьЗначенияСвойств(СтрокаСвойства, новСтруктура, "Свойство,Значение,ТекстоваяСтрока");
ТекущийОбъект.Записать();
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(5) У нас на новых релизах перестала выводиться информация в УПП кто заблокировал объект и пользователи бегали искали кто сидит в доке. Прикрутили кнопку с проверкой методом Заблокировать(). Получается согласно этому методу модифицированный объект уже заблокирован, даже до записи - я ввел вас в заблуждение. Но после записи, как только * исчезла он свободен. Почему у вас он все еще заблокирован в "ПослеЗаписиНаСервереПосле" я не понимаю.
Попробуйте использовать метод Заблокирован() у объекта, чтобы выяснить в каком из событий снимется блокировка.
Попробуйте использовать метод Заблокирован() у объекта, чтобы выяснить в каком из событий снимется блокировка.
Решение:
Отказался от использования БСП.
Событие формы использую, ниже
Отказался от использования БСП.
Событие формы использую, ниже
&НаСервере
Процедура АПИ_ПриЗаписиНаСервереПосле(Отказ, ТекущийОбъект, ПараметрыЗаписи
ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "Апи_id_2bc314bc370d4bd9bf8a246085953af3");
МассивСтрок = ТекущийОбъект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство", ДопСвойство));
Если МассивСтрок.Количество() Тогда
СтрокаСвойства = МассивСтрок[0];
Иначе
СтрокаСвойства = ТекущийОбъект.ДополнительныеРеквизиты.Добавить();
КонецЕсли;
новСтруктура = Новый Структура("Свойство,Значение,ТекстоваяСтрока");
новСтруктура.Свойство = ДопСвойство;
новСтруктура.Значение = РезультатОтправки.id;
ЗаполнитьЗначенияСвойств(СтрокаСвойства, новСтруктура, "Свойство,Значение,ТекстоваяСтрока");
ТекущийОбъект.Записать();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот