вторник, 21 января 2014 г.

Данные были изменены или удалены другим пользователем (тонкий клиент)

Если при попытке записать элемент справочника или документ появляется ошибка "Данные были изменены или удалены другим пользователем", то это значит, что данные, которые отображаются на форме и данные, которые записаны в базе отличаются.



Возможно, их изменил другой пользователь или мы программно их изменили, но форму не обновили. Решить эту проблему можно, используя метод управляемой формы Прочитать(). Этот метод обновляет объект управляемой формы.

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

    Если
ИмяСобытия = "УправлениеКартамиYandex_ВыбраныКоординаты" Тогда
        Если Не
ЗначениеЗаполнено(Объект.Ссылка) Тогда
            Возврат;
        КонецЕсли;
       
ЭтаФорма.Прочитать();
       
ЗаполнитьКоординаты(Параметр);
       
ЭтаФорма.Прочитать();
    КонецЕсли;

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

Процедура
ЗаполнитьКоординаты(Параметр)

   
МассивСтрок = РаботаСоСтроками.РазложитьСтрокуВМассив(Параметр, ";");
    Если
МассивСтрок.Количество()>0 Тогда
       
текОбъект = Объект.Ссылка.ПолучитьОбъект();
       
текОбъект.Долгота = СокрЛП(МассивСтрок[0]);
       
текОбъект.Широта = СокрЛП(МассивСтрок[1]);
       
текОбъект.Записать();
    КонецЕсли;

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

В примере, через обработку оповещения передаем параметр в процедуру, в которой присваиваем полученные координаты долготы и широты и записываем объект. Потом, используя метод Прочитать(), обновляем объект формы. В данном случае метод вызван 2 раза в связи с тем, что до заполнения координат, он изменяется, а второй раз - чтобы прочитать изменения, которые сделали мы.


Добавить комментарий

Комментариев нет :

Отправить комментарий