|
Запуск процедуры формы из расширения. | ☑ | ||
---|---|---|---|---|
0
Azgerd
23.01.20
✎
14:00
|
Здравствуйте! В ЗУП 3.1 Возникла необходимость пересчитать документы "Разовое начисление" списком. Для этого создал расширение, в расширение добавил форму списка документа "Разовое начисление", в эту форму добавил команду "Пересчитать". В модуле формы вставил код;
&НаКлиенте Процедура Расш1_ПересчитатьПосле(Команда) МассивВыделенныхДокументов = Элементы.Список.ВыделенныеСтроки; Для Каждого ЭлМасДок из МассивВыделенныхДокументов Цикл ФормаДокумента = ПолучитьФорму("Документ.РазовоеНачисление.Форма.ФормаДокумента", Новый Структура("Ключ",ЭлМасДок), ЭтаФорма); ИмяТаблицы = "Начисления"; ВедущееПоле = "Сотрудник"; ТипВедущегоПоля = Тип("СправочникСсылка.Сотрудники"); ФормаДокумента.ПересчитатьДокументНаКлиенте(); ФормаДокумента.Записать(); КонецЦикла; Элементы.Список.Обновить(); ЭтаФорма.ОбновитьОтображениеДанных(); КонецПроцедуры Ругается "Метод объекта не обнаружен ПересчитатьДокументНаКлиенте()" В модуле типовой формы документа "Разовые начисления" эта процедура есть. Как правильноеё запустить из формы списка ? Спасибо. |
|||
1
Mankubus
23.01.20
✎
14:23
|
у процедуры ПересчитатьДокументНаКлиенте должен быть Экспорт
|
|||
2
Azgerd
23.01.20
✎
14:28
|
(1) "у процедуры ПересчитатьДокументНаКлиенте должен быть Экспорт." Эта процедура в типовой форме документа "разовые начисления", а вызываю её из расширения формы списка. Менять модуль формы документа не могу, не сняв конфигурацию с поддержки. Может есть какое другое решение ?
|
|||
3
Sasha_H
23.01.20
✎
15:08
|
ОткрытьФорму() - Вызвать процедуру и закрыть форму ..
При этом придется расширением сделать несколько перехватов чтобы научить. А иначе никак. Либо Экспорт процедуры. Либо то что тебе надо выноси на расширение например в модуль менеджера весь механизм процедуры из формы. Либо делай ОткрытьФорму, а в расширении формы добавить ПриОткрытииПосле //в открытии передаешь како-то параметр наприимер ВызватьПроцедуруПересчетаПриОткрытии = Истина Проверяешь если параметр твой вызываешь процедуру пересчета, записываешь текущий документ если такое необходимо по алгоритму я ж не знаю что там у тебя и закрываешь документ |
|||
4
pechkin
23.01.20
✎
15:09
|
доавть ту форму в расширение и добавь новый экспортный метод, который будет вызывать твой не экспортный
|
|||
5
Sasha_H
23.01.20
✎
15:11
|
Но можно столкнуться с кучей дополнительных проблем поэтому следует щательно изучить код. Во-впервых процедура пересчета может иметь асинхронные вызовы. Поэтому тут следует хитро все сделать
Добавить ключевой параметр формы БылПерерасчетПриОткрытии (Булеов) если асинхроники есть то придется в расширении делать методы После где и указывать, что твоя процедура закончила работу и установить значение параметра БылПерерасчетПриОткрытии и вызвать метод Записи объекта и последующего его закрытия |
|||
6
Sasha_H
23.01.20
✎
15:11
|
(4) он хочет Вызвать из формы списка процедуры формы Объекта.
|
|||
7
НадюшаЯЯ
23.01.20
✎
15:11
|
(4) +
|
|||
8
Масянька
23.01.20
✎
15:13
|
Все собрались - я спрошу: общие модули реализовали?
|
|||
9
Sasha_H
23.01.20
✎
15:14
|
(4), действитель сразу не понял. Сделай как написано в (4).
|
|||
10
Sasha_H
23.01.20
✎
15:15
|
Но.. внимательно изучи, что процедура делает, елси там задются еще вопросы пользователю то работать не будет!
|
|||
11
НадюшаЯЯ
23.01.20
✎
15:19
|
(10) там вроде бы сразу на сервер без вопросов идет, но форму все равно открывать надо, как я понимаю, чтобы у нее отработало присозданиинасервере и приоткрытии ну и остальные процедуры
|
|||
12
НадюшаЯЯ
23.01.20
✎
15:23
|
А тут как раз уже асинхронность получим.
|
|||
13
pechkin
23.01.20
✎
15:24
|
(11) при создании без открытия срабатывает
|
|||
14
НадюшаЯЯ
23.01.20
✎
15:37
|
(13) Точно, уже закрыла, не смогу посмотреть что там в при открытии
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |