Имя: Пароль:
1C
1С v8
Внешняя обработка для ЗУП 1С 8.3 Заполнение табличной части
,
0 klimbna
 
14.12.17
07:02
Здравствуйте
Делаю обработку для заполнения табличной части документа в конфигурации ЗУП 3.1 платформа 8.3.10.2561 в тонком клиенте.

В модуле объекта объявляю внешнюю обработку:
Функция СведенияОВнешнейОбработке() Экспорт
    
    ДокументНазначение = Новый Массив ;
    ДокументНазначение.Добавить("Документ.ИндивидуальныйГрафик") ;
         
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
    ПараметрыРегистрации.Вид                = "ЗаполнениеОбъекта";
    
    // Допустимые Виды:
    // ДополнительнаяОбработка,
    // ДополнительныйОтчет,                                
    // ЗаполнениеОбъекта,
    // Отчет,
    // ПечатнаяФорма,
    // СозданиеСвязанныхОбъектов
    
    ПараметрыРегистрации.Наименование       = "Очистить график по всем сотрудникам";
    ПараметрыРегистрации.Версия             = "ver.:17.1214";
    ПараметрыРегистрации.Назначение            = ДокументНазначение;
    ПараметрыРегистрации.Информация            = "Очищает часы работы в
    |индивидуальном графике
    |по всем сотрудникам";
    
    ПараметрыРегистрации.БезопасныйРежим    = Истина;
    ПараметрыРегистрации.ВерсияБСП          = "2.2.2.1";
    
    //КомандыОбработки = ПолучитьКомандыОбработки () ;
    
    // Добавляем команды обработки
    ТаблицаКоманд = ПараметрыРегистрации.Команды;
    НоваяКоманда = ТаблицаКоманд.Добавить();
    НоваяКоманда.Представление = ПараметрыРегистрации.Наименование;
    НоваяКоманда.Идентификатор = ПараметрыРегистрации.Наименование;
    НоваяКоманда.Использование = "ЗаполнениеФормы";
    НоваяКоманда.ПоказыватьОповещение = Ложь;
    
    Возврат ПараметрыРегистрации;     
КонецФункции

И на Форме Обработки работаем

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт     
    
    ВидВремениПусто = ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.ПУСТАЯССЫЛКА");         
    
    Для каждого  СтрокаТЗ из ВладелецФормы.Объект.ДанныеОВремени Цикл
        Для НомерДня = 1 По 30 Цикл
            СтрокаТЗ["Часов"+НомерДня]=0;
            СтрокаТЗ["ВидВремени"+НомерДня]=ВидВремениПусто;     
        КонецЦикла;    
    КонецЦикла;
    
    Сообщить("Выполнили обработку");
    
    // МЕТОДЫ КОТОРЫЕ НЕ РАБОТАЮТ
    //1/    п = Новый Структура("Ключ", ВладелецФормы);
    //1/    Форма = ПолучитьФорму("Документ.ИндивидуальныйГрафик.ФормаОбъекта", п);  
    //1/    Форма.Прочитать()
    
    //2/    ВладелецФормы.ОбновитьОтображениеДанных();  
    //3/ВладелецФормы.Активизировать();
    //4/ВладелецФормы.Открыть();
    ВладелецФормы.Записать(); //-/работает но сразу записывает изменения в БД
    
КонецПроцедуры
1 klimbna
 
14.12.17
07:12
В итоге данные изменяются - но пользователь видит все по старому и если вызвать  ВладелецФормы.Записать(); или нажать кнопку записать то данные обновляются и на форме у пользователя но тогда они уже записаны в базу и отменить возможности нет.
Как сделать так что бы обновлять отображение у пользователя без записи, что б пользователь смог оценить и сам принять решение изменять документ или нет?
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший