![]() |
|
Вопрос по определению формы владельца вызвавшего внешнюю обработку | ☑ | ||
---|---|---|---|---|
0
DomenER
14.07.22
✎
15:32
|
Всем привет.
написана внешняя обработка с интеграцией в документ табеля (конф. ЗУП 3.1) Создаётся документ, заполняется первичными данными, записывается. далее из этого документа вызывается внешняя обработка, которая дополняет табличную часть данными и документ перезаписывает. Данные дополнились, но форма документа осталась старой, т.е. не дозаполненной. Чтобы увидеть все изменения приходится документ закрывать и открывать снова. Как перечитать данные формы документа табеля после выполнения внешней обработки и обновить отображение этих данных? |
|||
1
DomenER
14.07.22
✎
15:41
|
На форме в разделе "Ещё" есть команда "Перечитать" которая выполняет обновление формы с учётом изменившихся данных.
Но как вызывать это обновление после выполнения внешней обработки? |
|||
2
6awkup_true
14.07.22
✎
15:44
|
Есть медот Прочитать()
|
|||
3
RomanYS
14.07.22
✎
15:45
|
(0) возможно стоит менять данные переданной формы, а не объекта полученного по ссылке. Тогда проблемы не будет.
А вообще данных недостаточно: как минимум стоит указать тип обработки и вариант вызова, ну и код показать |
|||
4
DomenER
14.07.22
✎
15:49
|
(3)
Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки()); ПараметрыРегистрации.Вид = "ЗаполнениеОбъекта"; ПараметрыРегистрации.БезопасныйРежим = ложь; ПараметрыРегистрации.Информация="Заполнение документа табеля данными"; ПараметрыРегистрации.Наименование="Загрузить данные в документ табеля"; ПараметрыРегистрации.Версия = "1.0"; ПараметрыРегистрации.Назначение.Добавить("Документ.ТабельУчетаРабочегоВремени"); НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = Метаданные().Синоним; НоваяКоманда.Идентификатор = Метаданные().Имя; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода(); НоваяКоманда.ПоказыватьОповещение = Ложь; В самой форме должна присутствовать процедура &НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт Ничего, что давало бы нам пояснение запускалась эта обработки из формы или нет. Ещё обработка может запускаться из списка документов по выделенным документам. Тут обновлять формы документов не нужно, т.к. они закрыты |
|||
5
6awkup_true
14.07.22
✎
15:51
|
а у формы обработки Владелец.Владелец что показывает в отладчике?
|
|||
6
DomenER
14.07.22
✎
15:51
|
(2) Прочитать сработает на форме внешней обработки, как я предполагаю, а нам нужна форма вызвавшего обработку документа.
|
|||
7
6awkup_true
14.07.22
✎
15:53
|
(6) в форме обработки перед закрытием пишем Оповестить("ИмяОповещения"). В форме документа в обработке оповещения получаем наше оповещение, документ прочитываем. оповестит он все открытые формы
|
|||
8
DomenER
14.07.22
✎
15:53
|
(5)
Поле объекта не обнаружено (Владелец) {ВнешняяОбработка.ЗагрузкаТабелейИзАвиабит.Форма.Форма.Форма(21)}: Сообщить(строка(ЭтаФорма.Владелец.Владелец)); |
|||
9
6awkup_true
14.07.22
✎
15:53
|
а первый владелец?
|
|||
10
RomanYS
14.07.22
✎
16:03
|
(4) ВызовКлиентскогоМетода - значит я прав, и ты меняешь данные через ПолучитьОбъект, а не данные формы.
Или проблема не основных данных, а в неких служебных (итоги, надписи и т.п.) |
|||
11
DomenER
14.07.22
✎
16:06
|
(9)
Поле объекта не обнаружено (Владелец) {ВнешняяОбработка.ЗагрузкаТабелей.Форма.Форма.Форма(26)}: Сообщить(строка(ЭтаФорма.Владелец)); |
|||
12
DomenER
14.07.22
✎
16:11
|
(10) В самой обработке добавлена табличная часть, которая заполняется списком документов. В целом этого можно не делать, но мне так понятнее в дальнейшем.
Для каждого СтрокаТЧ из ОбъектыНазначенияМассив цикл НоваяСтрока = Объект.Документы.Добавить(); НоваяСтрока.ДокументТабеля =СтрокаТЧ; КонецЦикла; Далее вызывается серверная процедура в которой уже используется табличная часть через Объект.Документы. |
|||
13
DomenER
14.07.22
✎
16:13
|
(12) Сделано это для того, что пользователь может выбрать несколько документов на форме списка документов.
А может открыть конкретный документ и вызвать обработку уже оттуда. |
|||
14
youalex
14.07.22
✎
16:14
|
(11) ВладелецФормы (только клиент)
|
|||
15
DomenER
14.07.22
✎
16:52
|
(7) Оповещение лишь блокирует открытую форму документа, но не обновляет данные на форме. По крайней мере так в ЗУП 3.1 происходит
|
|||
16
DomenER
14.07.22
✎
16:53
|
В общем не знаю как обновлять. Придётся им каждый раз нажимать "Перечитать"
|
|||
17
6awkup_true
14.07.22
✎
16:54
|
(16) прочитай (7). так точно будет работать
|
|||
18
DomenER
14.07.22
✎
16:56
|
(17) В общем доработать конфигурацию для этого документа придётся.
Я надеялся обойтись без этого. |
|||
19
youalex
14.07.22
✎
17:17
|
(18) ВладелецФормы = Неопределено?
|
|||
20
DomenER
15.07.22
✎
11:41
|
(19) ВладелецФормы:ФормаКлиентскогоПриложения
|
|||
21
Мультук
гуру
15.07.22
✎
11:57
|
(20)
тогда что мешает делать так (писать непосредственно в данные формы) НоваяСтрока = ВладелецФормы.Объект.Сотрудники.Добавить(); НоваяСтрока.ДатаНазначения = ВладелецФормы.Объект.ДатаНазначения; НоваяСтрока.ДатаОкончания = ВладелецФормы.Объект.ДатаОкончания; НоваяСтрока.Размер = Сумма; |
|||
22
DomenER
15.07.22
✎
12:22
|
(21) Обработка может быть запущена из формы списка выделив несколько документов, а может быть запущена из открытого документа. После окончания обработки форма открытого документа остаётся без изменений, а чтобы их увидеть приходится нажимать "Перечитать".
|
|||
23
Мультук
гуру
15.07.22
✎
12:54
|
(22)
>> Обработка может быть запущена из формы списка выделив несколько документов, а может быть запущена из открытого документа. &НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт Комментарий = СтрШаблон("Владелец формы %1 - %2 , ОбъектыНазначенияМассив %3 %4" , ВладелецФормы.ИмяФормы, ВладелецФормы.Заголовок, ТипЗнч(ОбъектыНазначенияМассив), ОбъектыНазначенияМассив.Количество() ); Тадам(Комментарий); КонецПроцедуры &НаСервере Процедура Тадам(Комментарий) ЗаписьЖурналаРегистрации("Ура", УровеньЖурналаРегистрации.Информация, ,, Комментарий); КонецПроцедуры 1) Из списка Владелец формы Документ.ЗаказКлиента.Форма.ФормаСпискаДокументов - , ОбъектыНазначенияМассив Массив 1 2) Из открытого документа Владелец формы Документ.ЗаказКлиента.Форма.ФормаДокумента - , ОбъектыНазначенияМассив Массив 1 Как по мне вполне понятно откуда запущено |
|||
24
youalex
15.07.22
✎
15:15
|
(22) Из Списка - можно использовать ОповеститьОбИзменении() - так у тебя данные в списках обновятся
Из формы конкретного документа (которая у тебя ВладелецФормы) - (22), или метод формы (расширение объектов) - Прочитать() |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |