Имя: Пароль:
1C
1С v8
Управляемое приложение. ЗакончитьРедактированиеСтроки()
0 zscasl
 
06.12.16
07:59
Привет!
Есть таблица на управляемой форме я хочу в цикле пройтись по всем ее строкам и изменить значение в колонке "количество". Сказано — сделано... но при этом хотелось бы чтоб программное изменение инициировало каскад событий которые происходят при интерактивном изменении поля "количество", а именно, пересчет суммы в строке, пересчет суммы НДС, проверка допустимости введенного значения кол-ва, пересчет суммы всего документа и т.д. Можно конечно в цикле после изменения значения последовательно вызывать все многочисленные процедурки. Но... покапавшись в справке нашел несколько методов ТаблицыФормы которые как мне показалось должны эмитировать интерактивное редактирование строки:

ИзменитьСтроку() - Начинает интерактивное изменение данных текущей строки, аналогично выполнению команды "Изменить".

ЗакончитьРедактированиеСтроки(<ОтменаРедактирования>) - Позволяет закончить или отменить редактирование текущей строки.

Обновить() - Обновляет данные в таблице.

Начал писать код в предвкушении, что после вызова метода ЗакончитьРедактированиеСтроки(Ложь) автоматически произойдут все события и пересчет связанных значений:

Для НомСтрДок = 0 По КоличествоСтрДок - 1 Цикл
                
    Элементы.Услуги.ТекущаяСтрока = НомСтрДок;
                
    Строка = Элементы.Услуги.ТекущиеДанные;
                
    Элементы.Услуги.ИзменитьСтроку();
                
    Строка.Количество = НовоеКоличество;
                    
    Элементы.Услуги.ЗакончитьРедактированиеСтроки(Ложь);
    Элементы.Услуги.Обновить();

КонецЦикла;

Однако этого не произошло:(  Я что-то делаю не так или я вообще не правильно понял смысл этих методов ИзменитьСтроку(), ЗакончитьРедактированиеСтроки()?
1 Mauser
 
06.12.16
08:02
покапавшись эмитировать...
Рановато тебе в программирование.
2 Mauser
 
06.12.16
08:03
Там, в 1С, на русском языке, говорят, пишут.
3 zscasl
 
06.12.16
08:04
(2) Ну а если по существу?)
4 catena
 
06.12.16
08:08
Разве при изменении значения не вызывается одна процедура ПриИзменении?
5 Mauser
 
06.12.16
08:20
(3) Тебе показалось
6 Fedor-1971
 
06.12.16
09:45
(3) автоматически - только при интерактивном изменении

(0) почитай что-нить про разработку управляемых форм.
По сути алгоритма: программно изменил, программно и запусти пересчёт нужных тебе полей.
ИзменитьСтроку(); - вводит строку в режим интерактивного редактирования,  проверь отладчиком вход в ПриНачалеРедактирования

ЗакончитьРедактированиеСтроки(Ложь); - закрывает интерактивное редактирование строки, проверяй ПередОкончаниемРедактирования и ПриОкончанииРедактирования

изменил Количество - да без разницы, интерактивно ничего не изменялось, события поля/формы не запускаются

Обновить() - нечего обновлять, ты и так изменял НаКлиенте

совсем правильно: Перейди в процедуру НаСервере (форма отправится на сервер полностью), через Объект.ххх полностью (!!!!) пересчитай таблицу, как тебе нужно и вернись НаКлиент (форма приедет на клиент в готовом виде, обновлять ничего не нужно)
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой