Имя: Пароль:
1C
1С v8
УФ: Изменить существующий в инфобазе объект и показать изменения на форме
0 Cyberhawk
 
12.01.15
18:26
Друзья, приветствую!
Что-то поиском не нашел верной стратегии по сабжу.
Упрощенный пример: нужно на клиенте по нажатию кнопки показывать список документов (форму выбора), после выбора ссылки (документа) программно вносить изменения в документ (дописывать в комментарий слово "Привет", например) и открывать форму документа (со сделанными изменениями). Решение о сохранении изменения принимает пользователь.

Кинул на форму кнопку-команду, а также добавил реквизит формы "ОбновляемыйДокумент" с типом "ДокументОбъект.ИмяДокумента". У кнопки-команды следующий код:

&НаКлиенте
Процедура ИзменитьДокумент(Команда)
    Оповещение = Новый ОписаниеОповещения("ПослеВыбораДокумента", ЭтаФорма);
    ИмяФормыДляВыбораДокумента = "Документ.ИмяДокумента.ФормаВыбора";
    ОткрытьФорму(ИмяФормыДляВыбораДокумента, , , , , , Оповещение, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры

&НаКлиенте
Процедура ПослеВыбораДокумента(ДокументСсылка, ДополнительныеПараметры) Экспорт
    Если ДокументСсылка <> Неопределено Тогда
        ОбновитьДокументОбъектНаСервере(ДокументСсылка);
        П = Новый Структура("Ключ", ДокументСсылка);
        ФормаОбъекта = ПолучитьФорму("Документ.ИмяДокумента.ФормаОбъекта", П);
        КопироватьДанныеФормы(ОбновляемыйДокумент, ФормаОбъекта.Объект);
        ФормаОбъекта.Модифицированность = Истина;
        ФормаОбъекта.Открыть();
    КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ОбновитьДокументОбъектНаСервере(ДокументСсылка)
    ДокументОбъект = ДокументСсылка.ПолучитьОбъект();
    ДокументОбъект.Комментарий = ДокументОбъект.Комментарий + "Привет";
    ЗначениеВРеквизитФормы(ДокументОбъект, "ОбновляемыйДокумент");
КонецПроцедуры

Подход работает.
Вопроса два:
1. Можно ли в приведенном подходе что-то улучшить?
2. Есть ли в приведенном подходе какие-то косяки?
Буду благодарен за любые комментарии по приведенному коду / методике.
1 Худой
 
13.01.15
05:31
Может чего не понимаю. Как можно до открытия внести в документ изменения и потом его уже открывать? То есть, пользователь будет открывать документ, где уже стоит "Привет". Какое тогда может быть "Решение о сохранении изменения принимает пользователь"? За него до открытия было принято решение.
2 Cyberhawk
 
13.01.15
15:05
(1) пользователь будет открывать форму документа, у объекта изменения есть, а у ссылки - еще нет
3 Адский плющ
 
13.01.15
15:26
Процесс изначально херовый.
4 Cyberhawk
 
14.01.15
09:39
(3) мне тоже не нравится, ибо пользователю не видно, какие изменения были внесены в документ... Он лишь только знает, что там должно дописаться "Привет".
2 + 2 = 3.9999999999999999999999999999999...