![]() |
|
Расчетные листки по V83.Application | ☑ | ||
---|---|---|---|---|
0
Надмозг
04.02.19
✎
13:05
|
Запускаю из ЗУП Корп 3.1 расчетные листки организаций ЗУП 2.5 через V83.Application
Вытащил код процедуры в 2.5 УправлениеОтчетамиПереопределяемый.ВызовРасчетногоЛисткаИзФормыСпискаРР(ЭлементыФормы.РегистрРасчетаСписок.ТекущиеДанные,"ОсновныеНачисленияРаботниковОрганизаций"); Отладил его полностью в ЗУП 2.5 на тестовой обработке. Эта обработка просто создает отчет, заполняет параметры и заполняет результат (таб док) Далее переношу все это в ЗУП 3.1. Соединяюсь через COMОбъект("V83.Application") В отладке смотрю, вроде, все работает аналогично. Но тут есть нюанс, не смог перейти в отладке по внешнему соединению в ЗУП 2.5. Это один из вопросов, как запустить отладку? Галку "Клиентские и внешние соединения на сервере" поставил. В итоге отчет цепляет какие-то сохраненные настройки, с другими параметрами и отборами, хотя проверяю, что там в настройках отчета (отладчиком в ЗУП 3.1) - все ОК. Сделал то же самое с простенькой внешней обработкой, где есть только сотрудник и выводится сообщение - его ФИО. Все передалось и работает, как задумано. Т.е., это похоже, на какую-то специфику отчета или специфику его работы через внешнее соединение. Как победить? |
|||
1
Надмозг
04.02.19
✎
13:09
|
Код процедур такой. Они выдернуты из типового модуля
&НаКлиенте Процедура ВызовРасчетногоЛисткаИзФормыСпискаРР(ТекущиеДанные, ИмяФормы, Соединение) Если ТекущиеДанные <> Неопределено Тогда Если Найти(ИмяФормы,"Организаций") > 0 Тогда РасчетныйЛисток = Соединение.Отчеты.РасчетныеЛисткиОрганизаций.Создать(); РасчетныйЛисток.СохраненнаяНастройка = Соединение.Справочники.СохраненныеНастройки.РасчетныеЛисткиОрганизаций; РасчетныйЛисток.ПрименитьНастройку(); РасчетныйЛистокФорма = РасчетныйЛисток.ПолучитьФорму(); РасчетныйЛистокФорма.Открыть(); Если РасчетныйЛисток.ЗначенияНастроекПанелиПользователя = Неопределено тогда Если РасчетныйЛисток.ЗначенияНастроекПанелиПользователя.Получить().ДинамическиеОтборы.Количество() = 0 тогда РасчетныйЛисток.ЗначенияНастроекПанелиПользователя = Соединение.NewObject("ХранилищеЗначения", Соединение.ТиповыеОтчеты.ПолучитьЗначенияНастроекПанелиПользователя(РасчетныйЛисток, РасчетныйЛистокФорма)); КонецЕсли; КонецЕСли; РасчетныйЛистокФорма.ЭтоОтработкаРасшифровки = истина; УстановитьОтбор(РасчетныйЛисток, "Организация", ТекущиеДанные.ОбособленноеПодразделение, Соединение); Иначе РасчетныйЛисток = Соединение.Отчеты.РасчетныеЛистки.Создать(); РасчетныйЛисток.СохраненнаяНастройка = Соединение.Справочники.СохраненныеНастройки.РасчетныеЛистки; РасчетныйЛисток.ПрименитьНастройку(); РасчетныйЛистокФорма = РасчетныйЛисток.ПолучитьФорму(); РасчетныйЛистокФорма.Открыть(); Если РасчетныйЛисток.ЗначенияНастроекПанелиПользователя = Неопределено тогда Если РасчетныйЛисток.ЗначенияНастроекПанелиПользователя.Получить().ДинамическиеОтборы.Количество() = 0 тогда РасчетныйЛисток.ЗначенияНастроекПанелиПользователя = Соединение.NewObject("ХранилищеЗначения", Соединение.ТиповыеОтчеты.ПолучитьЗначенияНастроекПанелиПользователя(РасчетныйЛисток, РасчетныйЛистокФорма)); КонецЕсли; КонецЕСли; РасчетныйЛистокФорма.ЭтоОтработкаРасшифровки = истина; УстановитьОтбор(РасчетныйЛисток, "Подразделение", ТекущиеДанные.Подразделение, Соединение); КонецЕсли; ЗначенияНастроекПанелиПользователя = РасчетныйЛисток.ЗначенияНастроекПанелиПользователя.Получить(); ЗначенияНастроекПанелиПользователя.СтандартныйПериод.ДатаНачала = НачалоМесяца(ТекущиеДанные.ПериодРегистрации); ЗначенияНастроекПанелиПользователя.СтандартныйПериод.ДатаОкончания = КонецМесяца(ТекущиеДанные.ПериодРегистрации); РасчетныйЛисток.ЗначенияНастроекПанелиПользователя = Соединение.NewObject("ХранилищеЗначения", ЗначенияНастроекПанелиПользователя); Соединение.ТиповыеОтчеты.УстановитьПараметр(РасчетныйЛисток.КомпоновщикНастроек, "Группировать", ложь); Если Найти(ИмяФормы,"Удержания") > 0 или Найти(ИмяФормы,"Организаций") = 0 Тогда Соединение.ТиповыеОтчеты.ДобавитьОтбор(РасчетныйЛисток.КомпоновщикНастроек, "ФизЛицо", ТекущиеДанные.ФизЛицо); Иначе УстановитьОтбор(РасчетныйЛисток, "Сотрудник", ТекущиеДанные.Сотрудник, Соединение); КонецЕсли; ДокументРезультат = РасчетныйЛистокФорма.ЭлементыФормы.Результат; РасчетныйЛистокФорма.ОбновлениеОтображения(); //РасчетныйЛисток.СформироватьОтчет(ДокументРезультат); //РасчетныйЛистокФорма.Модифицированность = Истина; РасчетныйЛистокФорма.ОбновитьОтчет(); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура УстановитьОтбор(Отчет, Поле, Значение, Соединение) Если Отчет.ЗначенияНастроекПанелиПользователя = Неопределено тогда Возврат; КонецЕсли; ЗначениеПользовательскойНастройки = Отчет.ЗначенияНастроекПанелиПользователя.Получить(); Если ЗначениеПользовательскойНастройки = Неопределено тогда Возврат; КонецЕсли; Если ЗначениеПользовательскойНастройки.ДинамическиеОтборы.Получить(Поле) <> Неопределено тогда Если ТипЗнч(ЗначениеПользовательскойНастройки.ДинамическиеОтборы.Получить(Поле).Значение) <> Тип("СписокЗначений") тогда ЗначениеПользовательскойНастройки.ДинамическиеОтборы.Получить(Поле).Значение = Значение; ЗначениеПользовательскойНастройки.ДинамическиеОтборы.Получить(Поле).Использование = истина; Иначе ЗначениеПользовательскойНастройки.ДинамическиеОтборы.Получить(Поле).Значение.Очистить(); ЗначениеПользовательскойНастройки.ДинамическиеОтборы.Получить(Поле).Значение.Добавить(Значение); ЗначениеПользовательскойНастройки.ДинамическиеОтборы.Получить(Поле).Использование = истина; Если ЗначениеПользовательскойНастройки.ДинамическиеОтборы.Получить(Поле).ВидСравнения = "" Тогда ЗначениеПользовательскойНастройки.ДинамическиеОтборы.Получить(Поле).ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; КонецЕсли; КонецЕсли; КонецЕсли; Отчет.ЗначенияНастроекПанелиПользователя = Соединение.NewObject("ХранилищеЗначения", ЗначениеПользовательскойНастройки); КонецПроцедуры |
|||
2
Надмозг
04.02.19
✎
13:10
|
Формирование значений параметров не так важно. Там все ок, Соединение тоже банально, поэтому не скидываю
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |