|
Управляемые формы: Как изменить документ с помощью подключенной внеш. обработки? | ☑ | ||
---|---|---|---|---|
0
Saari
06.04.16
✎
09:13
|
Подскажите, пожалуйста, начинающему разбираться в управляемых формах.
Требуется: в БУХ 3.0 в документе "Списание материалов из эксплуатации" заполнить ТЧ "Спецодежда" по указанному МОЛ. Сделал следующее: создал внешнюю обработку, которую подключил к документу (через "Администрирование"-"Дополнительные отчеты и обработки"). В документе появилась кнопка "Заполнить", которая вызывает подключенную обработку. В результате на форме табличная часть изменяется. Но после закрытия/открытия документа табличная часть остается старой (до изменения). Как передать изменения в объект базы данных? Описание внешней обработки: Во внешнюю обработку добавил: - реквизит "ДокументСписание" с типом "(ДокументОбъект.СписаниеМатериаловИзЭксплуатации)"; - кнопка "Заполнить ТЧ" Модуль формы внешней обработки: &НаСервере Процедура ЗаполнениеДанных() Об = ДанныеФормыВЗначение(ДокументСписание, Тип("ДокументОбъект.СписаниеМатериаловИзЭксплуатации")); Об.Спецодежда.Очистить(); ЗначениеВДанныеФормы(Об, ДокументСписание); КонецПроцедуры &НаКлиенте Процедура КомандаЗаполнитьТЧ(Команда) //вызывается по нажатии на кнопку формы обработки КопироватьДанныеФормы(ВладелецФормы.Объект, ДокументСписание); ЗаполнениеДанных(); КопироватьДанныеФормы(ДокументСписание, ВладелецФормы.Объект); КонецПроцедуры Покажите, пожалуйста, ошибку в коде и как написать правильно? |
|||
1
Defender aka LINN
06.04.16
✎
09:24
|
Чтобы изменения записались, их надо таки записывать.
|
|||
2
Cyberhawk
06.04.16
✎
09:32
|
Модифицированность у формы не взводишь.
А вообще, если тебе без интерактива надо менять объект, тоиспользуй тип команды "ЗаполнениеФормы" |
|||
3
Saari
06.04.16
✎
11:48
|
(2) подскажи, пожалуйста, как именно обратиться к форме документа чтобы установить Модифицированность = Истина?
|
|||
4
Saari
06.04.16
✎
12:16
|
подскажите, пожалуйста.
|
|||
5
Cyberhawk
06.04.16
✎
12:17
|
(3) Модуль обработки покажи
|
|||
6
Fragster
гуру
06.04.16
✎
12:18
|
ВладелецФормы.Модифицированность = Истина;
|
|||
7
Saari
06.04.16
✎
12:22
|
(5)
Модуль обработки: Функция ПТКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Функция ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецФункции Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; МассивНазначений.Добавить("Документ.СписаниеМатериаловИзЭксплуатации"); ПараметрыРегистрации.Вставить("Вид","ЗаполнениеОбъекта"); ПараметрыРегистрации.Вставить("Назначение", МассивНазначений); ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("Наименование", "Заполнить Аванс "+ПараметрыРегистрации.Версия); ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); ПараметрыРегистрации.Вставить("Информация", "Дополнительная обработка табличной части к документу СписаниеМатериаловИзЭксплуатации"); ТаблицаКоманд = ПТКоманд(); ДобавитьКоманду(ТаблицаКоманд, "Заполнить ТЧ "+ПараметрыРегистрации.Версия, "Заполнить ТЧ "+ПараметрыРегистрации.Версия, "ОткрытиеФормы", Истина); ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции |
|||
8
Saari
06.04.16
✎
12:28
|
(6) сделал так:
Процедура КомандаЗаполнитьТЧ(Команда) КопироватьДанныеФормы(ВладелецФормы.Объект, ДокументСписание); ЗаполнениеДанных(); КопироватьДанныеФормы(ДокументСписание, ВладелецФормы.Объект); ВладелецФормы.Модифицированность = Истина; ЭтаФорма.Закрыть(); КонецПроцедуры теперь вызываемая внешняя обработка закрывается, в документе, из которого она открывается, ТЧ изменена и документ стал измененным, т.е. при закрытии его выдается запрос на записать изменения. Я так понял, что все получилось :) Спасибо! |
|||
9
Cyberhawk
06.04.16
✎
12:34
|
(8) Можно и так.
Но все-таки тебе открытие своей формы-то и не нужно, судя по коду (пользователь ничего не делает в промежутке между вызовом команды и получением результата заполнения), поэтому на будущее рекомендую делать как во втором предложении (2) |
|||
10
Saari
06.04.16
✎
13:20
|
(9) в условии обработки необходимо выбирать МОЛ. Просто я в коде еще его не обрабатывал. Хотел попробовать в принципе менять данные ТЧ. Получилось.
Спасибо вам всем! |
|||
11
Saari
06.04.16
✎
13:34
|
Еще один интересный вопрос возник:
при подключении внешней обработки на форме документа появляется кнопка "Заполнить". На форме документа есть несколько табличных частей, причем у каждой ТЧ на форме есть своя кнопка "Заполнить" с ниспадающим меню действий. Как встроить внешнюю обработку в конкретную кнопку "Заполнить" в конкретной табличной части? В простых формах 8.2 это делалось легко. А как это сделать в управляемых формах? |
|||
12
Cyberhawk
06.04.16
✎
13:39
|
Никак - в разных версиях БСП расположение этого меню меняется (где-то у каждой ТЧ, где-то - в шапке формы).
|
|||
13
Cyberhawk
06.04.16
✎
13:40
|
(штатно никак - только смотреть на код заполнения этого меню и доработать форму по аналогии)
|
|||
14
Saari
06.04.16
✎
14:00
|
Как сделать несколько пунктов в ниспадающем меню из общей кнопки "Заполнить" (которая появилась при подключении внешней обработки) на форме документа?
Во! Проще в одной форме обработки сделать несколько кнопок, которые будут обрабатывать ту или иную ТЧ. А все же, как сделать несколько пунктов в ниспадающем меню одной кнопки? |
|||
15
Cyberhawk
06.04.16
✎
19:43
|
"как сделать несколько пунктов в ниспадающем меню одной кнопки?" // Добавить несколько команд у обработки
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |