|
Управляемое приложение. ЗакончитьРедактированиеСтроки() | ☑ | ||
---|---|---|---|---|
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) почитай что-нить про разработку управляемых форм. По сути алгоритма: программно изменил, программно и запусти пересчёт нужных тебе полей. ИзменитьСтроку(); - вводит строку в режим интерактивного редактирования, проверь отладчиком вход в ПриНачалеРедактирования ЗакончитьРедактированиеСтроки(Ложь); - закрывает интерактивное редактирование строки, проверяй ПередОкончаниемРедактирования и ПриОкончанииРедактирования изменил Количество - да без разницы, интерактивно ничего не изменялось, события поля/формы не запускаются Обновить() - нечего обновлять, ты и так изменял НаКлиенте совсем правильно: Перейди в процедуру НаСервере (форма отправится на сервер полностью), через Объект.ххх полностью (!!!!) пересчитай таблицу, как тебе нужно и вернись НаКлиент (форма приедет на клиент в готовом виде, обновлять ничего не нужно) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |