В связи с переходом с НГ в ЗУПГУ3, потребовалось создать внешнюю обработку ТЧ для расчета показателя стаж,
данные в форме не обновляются. Код для форума упростил для большей наглядности.
Code:
&НаКлиенте
Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения) Экспорт
Ссылка = ОбъектыНазначения[0];
Стаж = 6;
Для каждого Элемент из ОбъектыНазначения Цикл
//Зададим ключ поиска документа, из которого вызвана данная обработка,
//чтобы получить ссылку на редактирумый документ в удобном виде для
//функции ОткрытьФорму()
КлючПоиска = Новый Структура("Ключ", Элемент);
Ключ = Элемент;
Окна = ПолучитьОкна();
Для каждого Окно1 из Окна Цикл
Форма = ОткрытьФорму("Документ.ДанныеДляРасчетаЗарплаты.Форма.ФормаДокумента",КлючПоиска,,,Окно);
// //Далее мы получаем объект только, что повторно открытой формы и помещаем её в переменную
// //В объекте содержатся все реквизиты (элементы) формы
НовыйОбъект = Форма.Объект;
ЗаполнитьОбъект(НовыйОбъект, Ссылка);
КонецЦикла;
КонецЦикла;
Форма.ОбновитьОтображениеДанных();
КонецПроцедуры
&НаСервере
Функция ЗаполнитьОбъект(НовыйОбъект,Знач Ссылка)
Стаж = 7;
Для Каждого СтрокаТЧ Из НовыйОбъект.ЗначенияПоказателей Цикл
чение+"Показатель "+СтрокаТЧ.Показатель);
СтрокаТЧ.Значение = Стаж;
КонецЦикла;
Модифицированность = Истина;
КонецФункции
Бился сутки, решение нашел в теме https://infostart.ru/public/84119/.
Все можно делать не заходя на сервер. При регистрации обработки в модуле необходимо использовать код(он отличен от моего и в этом корень зла):
#Область РегистрацияОбработки
Функция СведенияОВнешнейОбработке() Экспорт
Назначения = Новый Массив ;
Назначения.Добавить("Документ.ДанныеДляРасчетаЗарплаты") ;
ПараметрыРегистрации = Новый Структура ;
ПараметрыРегистрации.Вставить("Вид","ЗаполнениеОбъекта");
ПараметрыРегистрации.Вставить("Назначение",Назначения);
ПараметрыРегистрации.Вставить("Наименование","ЗаполнениеОбъекта");
ПараметрыРегистрации.Вставить("Версия","1.0");
ПараметрыРегистрации.Вставить("Информация","ЗаполнениеОбъекта");
ПараметрыРегистрации.Вставить("БезопасныйРежим",Истина);
Команды = ПолучитьТаблицуКоманд() ;
ДобавитьКоманду(Команды, "Заполнить количество месяцев ЕДВ","ИзменитьДокумент","ВызовКлиентскогоМетода",Ложь);
ПараметрыРегистрации.Вставить("Команды",Команды) ;
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений ;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")) ;
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")) ;
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")) ;
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")) ;
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")) ;
Возврат Команды ;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить() ;
НоваяКоманда.Представление = Представление ;
НоваяКоманда.Идентификатор = Идентификатор ;
НоваяКоманда.Использование = Использование ;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение ;
НоваяКоманда.Модификатор = Модификатор ;
КонецПроцедуры
#КонецОбласти
В форме обработки все делается на клиенте используя ВладелецаФормы код:
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт
Стаж=7;
Для каждого ТекущаяСтрока из ВладелецФормы.Объект.ЗначенияПоказателей Цикл
ТекущаяСтрока.Значение = Стаж;
Сообщить(ТекущаяСтрока.Значение) ;
КонецЦикла ;
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения) Экспорт
Ссылка = ОбъектыНазначения[0];
Стаж = 6;
Для каждого Элемент из ОбъектыНазначения Цикл
КлючПоиска = Новый Структура("Ключ", Элемент);
Ключ = Элемент;
Окна = ПолучитьОкна();
Для каждого Окно1 из Окна Цикл
Форма = ОткрытьФорму("Документ.ДанныеДляРасчетаЗарплаты.Форма.ФормаДокумента",КлючПоиска,,,Окно);
// //Далее мы получаем объект только, что повторно открытой формы и помещаем её в переменную
// //В объекте содержатся все реквизиты (элементы) формы
НовыйОбъект = Форма.Объект;
ЗаполнитьОбъект(НовыйОбъект, Ссылка);
КопироватьДанныеФормы(НовыйОбъект, Форма.Объект);
КонецЦикла;
КонецЦикла;
Форма.ОбновитьОтображениеДанных();
КонецПроцедуры
Бился сутки, решение нашел в теме https://infostart.ru/public/84119/.
Все можно делать не заходя на сервер. При регистрации обработки в модуле необходимо использовать код(он отличен от моего и в этом корень зла):
#Область РегистрацияОбработки
Функция СведенияОВнешнейОбработке() Экспорт
Назначения = Новый Массив ;
Назначения.Добавить("Документ.ДанныеДляРасчетаЗарплаты") ;
ПараметрыРегистрации = Новый Структура ;
ПараметрыРегистрации.Вставить("Вид","ЗаполнениеОбъекта");
ПараметрыРегистрации.Вставить("Назначение",Назначения);
ПараметрыРегистрации.Вставить("Наименование","ЗаполнениеОбъекта");
ПараметрыРегистрации.Вставить("Версия","1.0");
ПараметрыРегистрации.Вставить("Информация","ЗаполнениеОбъекта");
ПараметрыРегистрации.Вставить("БезопасныйРежим",Истина);
Команды = ПолучитьТаблицуКоманд() ;
ДобавитьКоманду(Команды, "Заполнить количество месяцев ЕДВ","ИзменитьДокумент","ВызовКлиентскогоМетода",Ложь);
ПараметрыРегистрации.Вставить("Команды",Команды) ;
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений ;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")) ;
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")) ;
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")) ;
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")) ;
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")) ;
Возврат Команды ;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить() ;
НоваяКоманда.Представление = Представление ;
НоваяКоманда.Идентификатор = Идентификатор ;
НоваяКоманда.Использование = Использование ;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение ;
НоваяКоманда.Модификатор = Модификатор ;
КонецПроцедуры
#КонецОбласти
В форме обработки все делается на клиенте используя ВладелецаФормы код:
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт
Стаж=7;
Для каждого ТекущаяСтрока из ВладелецФормы.Объект.ЗначенияПоказателей Цикл
ТекущаяСтрока.Значение = Стаж;
Сообщить(ТекущаяСтрока.Значение) ;
КонецЦикла ;
КонецПроцедуры