Ошибка: Данные были изменены или удалены другим пользователем
Всем доброго времени суток. В общем пытаюсь научиться программировать на 1С, создал обработку которая при попытке удаления строки из ТЧ справочника уточняет его намерение и удаляет те же данные в РС. Все вроде бы как должно отрабатывать но при попытке записать данные (нажатие кнопки "записать" или "записать и закрыть") начинает выдавать ошибку "Данные были изменены или удалены другим пользователем". При этом при любых других изменениях справочника и регистра никаких проблем нет. Подскажите пожалуйста в какую сторону копать или в чем может быть причина-решение?
По теме из базы знаний
- Git с человеческим лицом для тех, кто устал терять данные
- Обманчивая ошибка "Данные были изменены или удалены другим пользователем"
- Заполнение дополнительных реквизитов в модуле на сервере, в правилах КД 2.0, в модуле внешней обработки
- Автоматическая классификация ошибок технологического журнала
- Утилита тестирования сервера 1С от HADGEHOGs
Найденные решения
(4) Ну как и говорил, ты программно изменил и записал объект, который пытаешься записать интерактивно.
Не знаю, зачем это все нужно, наверное в качестве эксперимента.
Ты в объекте, который получил на сервере, поменял только родителя и записал, в объекте ты строки ТЧ не менял.
ЭФО_Объект = СтруктураЗаписи.Изделие.ПолучитьОбъект();
ЭФО_Объект.Родитель = Справочники.ЭФО.ПустаяСсылка();
....
ЭФО_Объект.Записать();
Этот код и приводит к ошибке, что данные уже изменены.
Либо удаляй строки в Объекте, либо записывай его интерактивно.
Не знаю, зачем это все нужно, наверное в качестве эксперимента.
Ты в объекте, который получил на сервере, поменял только родителя и записал, в объекте ты строки ТЧ не менял.
ЭФО_Объект = СтруктураЗаписи.Изделие.ПолучитьОбъект();
ЭФО_Объект.Родитель = Справочники.ЭФО.ПустаяСсылка();
....
ЭФО_Объект.Записать();
Этот код и приводит к ошибке, что данные уже изменены.
Либо удаляй строки в Объекте, либо записывай его интерактивно.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Не уверен в чем именно проблема
&НаКлиенте
Процедура ТаблицаРесурсыИзделияПередУдалением(Элемент, Отказ)
ДанныеСтроки = Элемент.ТекущиеДанные;
СтруктураЗаписи = Новый Структура("Изделие,РесурсИзделия", ДанныеСтроки.НаименованиеИзделия, ДанныеСтроки.НаименованиеИзделия);
ТекущаяСтрока = Элемент.ТекущаяСтрока;
Оповещение = Новый ОписаниеОповещения("ТаблицаРесурсыИзделияПередУдалениемЗавершение", ЭтотОбъект, Новый Структура("СтруктураЗаписи,ТекущаяСтрока", СтруктураЗаписи, ТекущаяСтрока));
ТекстВопроса = "Ресурс изделия будет удален из табличной части.
|Продолжить?";
Отказ = Истина;
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет, 30, КодВозвратаДиалога.Нет);
КонецПроцедуры
&НаКлиенте
Процедура ТаблицаРесурсыИзделияПередУдалениемЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ <> КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;
СтруктураЗаписи = ДополнительныеПараметры.СтруктураЗаписи;
Отказ = Ложь;
ТаблицаРесурсыИзделияПередУдалениемНаСервере(СтруктураЗаписи, Отказ);
Если Отказ = Истина Тогда
Возврат;
КонецЕсли;
ТекущаяСтрока = ДополнительныеПараметры.ТекущаяСтрока;
СтрокаТаблицы = Объект.ТаблицаРесурсыИзделия.НайтиПоИдентификатору(ТекущаяСтрока);
Объект.ТаблицаРесурсыИзделия.Удалить(СтрокаТаблицы);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ТаблицаРесурсыИзделияПередУдалениемНаСервере(СтруктураЗаписи, Отказ)
НаборЗаписей = РегистрыСведений.Ресурсы.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.РесурсИзделия.Установить(СтруктураЗаписи.РесурсИзделия);
НаборЗаписей.Отбор.Изделие.Установить(СтруктураЗаписи.Изделие);
ЭФО_Объект = СтруктураЗаписи.Изделие.ПолучитьОбъект();
ЭФО_Объект.Родитель = Справочники.ЭФО.ПустаяСсылка();
Попытка
НачатьТранзакцию();
НаборЗаписей.Записать();
ЭФО_Объект.Записать();
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Произошла ошибка при удалении табличной части";
Сообщение.Сообщить();
ЗаписьЖурналаРегистрации("Произошла ошибка при удалении табличной части ресурсов изделия");
Отказ = Истина;
КонецПопытки;
КонецПроцедуры
Показать
(4) Ну как и говорил, ты программно изменил и записал объект, который пытаешься записать интерактивно.
Не знаю, зачем это все нужно, наверное в качестве эксперимента.
Ты в объекте, который получил на сервере, поменял только родителя и записал, в объекте ты строки ТЧ не менял.
ЭФО_Объект = СтруктураЗаписи.Изделие.ПолучитьОбъект();
ЭФО_Объект.Родитель = Справочники.ЭФО.ПустаяСсылка();
....
ЭФО_Объект.Записать();
Этот код и приводит к ошибке, что данные уже изменены.
Либо удаляй строки в Объекте, либо записывай его интерактивно.
Не знаю, зачем это все нужно, наверное в качестве эксперимента.
Ты в объекте, который получил на сервере, поменял только родителя и записал, в объекте ты строки ТЧ не менял.
ЭФО_Объект = СтруктураЗаписи.Изделие.ПолучитьОбъект();
ЭФО_Объект.Родитель = Справочники.ЭФО.ПустаяСсылка();
....
ЭФО_Объект.Записать();
Этот код и приводит к ошибке, что данные уже изменены.
Либо удаляй строки в Объекте, либо записывай его интерактивно.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот