|
8.3.12 - 8.3.13 Код который вешает интерфейс... весь... | ☑ | ||
---|---|---|---|---|
0
prorokk
11.06.18
✎
11:40
|
Может кто знает как исправить такую проблему... подскажите пожалуйста:
&НаКлиенте Процедура Повесить(Команда) ОткрытьФорму("ВнешняяОбработка.Вешаем8313.Форма.ФормаОплаты",,ЭтотОбъект,,,, Новый ОписаниеОповещения("ЗавершениеОплаты", ЭтотОбъект, Неопределено),РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаКлиенте Процедура ЗавершениеОплаты(РезультатОплаты, ДополнительныеПараметры) Экспорт ТабДок = Новый ТабличныйДокумент; ТабДок.Область("R1"+"C1").Текст = "АААА!!!"; ТабДок.ИмяПринтера = "Microsoft Print to PDF"; //ТабДок.Показать(); Список = Новый СписокЗначений(); Список.Добавить(ТабДок); УправлениеПечатьюКлиент.РаспечататьТабличныеДокументы(Список, Новый СписокЗначений(), Ложь); КонецПроцедуры Код формы оплаты: &НаКлиенте Процедура Команда1(Команда) Закрыть(); КонецПроцедуры |
|||
1
Ник080808
11.06.18
✎
12:53
|
(0) ЭтотОбъект на клиенте?
|
|||
2
RomanYS
11.06.18
✎
13:02
|
(0) причина в
УправлениеПечатьюКлиент.РаспечататьТабличныеДокументы(Список, Новый СписокЗначений(), Ложь); что там у тебя, никому не известно. |
|||
3
prorokk
11.06.18
✎
16:15
|
(2) У нас УТ 11.4 примерно там это:
ПакетОтображаемыхДокументов = Новый ПакетОтображаемыхДокументов; ПакетОтображаемыхДокументов.РазборПоКопиям = Истина; КоллекцияПечатныхФорм = ТабличныеДокументы.ВыгрузитьЗначения(); Для Каждого ПечатнаяФорма Из КоллекцияПечатныхФорм Цикл ПечататьКомплектами = ПечататьКомплектами Или ПечатнаяФорма.ДвусторонняяПечать <> ТипДвустороннейПечати.Нет; КонецЦикла; ПакетОтображаемыхДокументов.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать); |
|||
4
prorokk
11.06.18
✎
16:16
|
(1) Да все так... Это не правильно?
|
|||
5
prorokk
11.06.18
✎
16:23
|
1. Если Вызвать (без открытия формы) так:
ВыполнитьОбработкуОповещения(Новый ОписаниеОповещения("ЗавершениеОплаты", ЭтотОбъект), Истина); Форма не виснет.... 2.Если передать на печать Пустой табличный документ. Форма не виснет. 3.Не имеет разницы печать на реальный принтер или в файл... ФОРМА виснет( Виснет Все, даже крестик основного окна приложения, все панели... Если нажать Esc тогда закроется окно обработки, НО вся 1с все так же недоступна.... |
|||
6
prorokk
11.06.18
✎
16:29
|
Если РежимОткрытияОкнаФормы.Независимый
Форма не виснет. |
|||
7
prorokk
11.06.18
✎
16:49
|
Итоговый код:
&НаКлиенте Процедура Повесить(Команда) ОткрытьФорму("ВнешняяОбработка.Вешаем8313.Форма.Форма1",,ЭтотОбъект,,,, Новый ОписаниеОповещения("ЗавершениеОплаты", ЭтаФорма, Неопределено),РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); КонецПроцедуры &НаКлиенте Процедура ЗавершениеОплаты(РезультатОплаты, ДополнительныеПараметры) Экспорт ТабДок = Новый ТабличныйДокумент; ТабДок.Область("R1"+"C1").Текст = "АААА!!!"; ТабДок.ИмяПринтера = "Microsoft Print to PDF"; ПакетОтображаемыхДокументов = Новый ПакетОтображаемыхДокументов; ПакетОтображаемыхДокументов.Состав.Добавить().Данные = ПакетСОднимТабличнымДокументом(ТабДок); ПакетОтображаемыхДокументов.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать); КонецПроцедуры &НаСервере Функция ПакетСОднимТабличнымДокументом(ТабличныйДокумент) АдресТабличногоДокументаВоВременномХранилище = ПоместитьВоВременноеХранилище(ТабличныйДокумент); ПакетСОднимДокументом = Новый ПакетОтображаемыхДокументов; ПакетСОднимДокументом.РазборПоКопиям = Истина; ПакетСОднимДокументом.Состав.Добавить(АдресТабличногоДокументаВоВременномХранилище); ЗаполнитьЗначенияСвойств(ПакетСОднимДокументом, ТабличныйДокумент, "Вывод, ДвусторонняяПечать, ИмяПринтера, КоличествоЭкземпляров, ТочностьПечати"); Если ТабличныйДокумент.РазборПоКопиям <> Неопределено Тогда ПакетСОднимДокументом.РазборПоКопиям = ТабличныйДокумент.РазборПоКопиям; КонецЕсли; Возврат ПакетСОднимДокументом; КонецФункции |
|||
8
mistеr
11.06.18
✎
21:09
|
(0) А принтера такого нет небось...
|
|||
9
prorokk
11.06.18
✎
21:36
|
(8) как и писал ранее хоть печатать на реальный, хоть в PDF, хоть отменить печать результат... зависание (блокировка) интерфейса...
|
|||
10
AlvlSpb
11.06.18
✎
22:13
|
(0)Подвешивает вот это
ОткрытьФорму("ВнешняяОбработка.Вешаем8313.Форма.ФормаОплаты" Ты обращаешься к ВНЕШНЕЙ обработке. Откуда программа знает ГДЕ искать эту обработку, она (обработка) не объект конфигурации Сначала подключи внешнюю обработку, потом открывай форму |
|||
11
prorokk
11.06.18
✎
22:18
|
(10) Думал об этом... Оригинальный код Весь в пределах одного расширения конфигурации...
И если посмотреть отладчиком то видно что Весь код выполняется а после ничего не происходит и интерфейс становиться недоступным... И еще в 8.3.11 ВСЕ РАБОТАЕТ!!! |
|||
12
prorokk
11.06.18
✎
22:23
|
+(11) тут либо что-то изменилось в механизме открытия,закрытия форм. либо просто "кривая" платформа...
либо нужно чем то заменить: ПакетОтображаемыхДокументов.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать); т.к. Эта строчка "вешает", а мне кажется открывает МОДАЛЬНОЕ окно. которое я НЕ ВИЖУ... никто не видет.... |
|||
13
AlvlSpb
11.06.18
✎
22:30
|
(11) Странно. Что-то сомневаюсь, что в 8.3.11 работает. Этот код может увидеть форму, если работает в самой обработке Вешаем8313. Вызов из любого другого места требует подключения обработки или указания полного пути к файлу обработки.
(12) Ну так может надо разрешить режим модальности? Хотя если бы ты был прав, вышла бы ошибка "Модальные окна запрещены" |
|||
14
AlvlSpb
11.06.18
✎
22:42
|
(12) Попробуй так
&НаКлиенте Процедура Повесить(Команда) АдресХранилища = ""; Результат = ПоместитьФайл(АдресХранилища, "C:\ПолныйПутьКФайлу\Вешаем8313.epf", , Ложь); ИмяОб = ПолучитьОбработку(АдресХранилища); ОткрытьФорму("ВнешняяОбработка." + ИмяОб +".Форма.ФормаОплаты",,ЭтотОбъект,,,, Новый ОписаниеОповещения("ЗавершениеОплаты", ЭтотОбъект, Неопределено),РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); КонецПроцедуры &НаСервере Функция ПолучитьОбработку(АдресХранилища) Возврат ВнешниеОбработки.Подключить(АдресХранилища); КонецФункции |
|||
15
prorokk
11.06.18
✎
22:52
|
(14) не помогло( виснет....
|
|||
16
prorokk
11.06.18
✎
22:54
|
БИНГО!!!
ЛЕКАРСТВО!!! &НаКлиенте Процедура Повесить(Команда) ОткрытьФорму("ВнешняяОбработка.Вешаем8313.Форма.Форма1",,ЭтотОбъект,,,, Новый ОписаниеОповещения("ЗавершениеОплатыПромежуток", ЭтаФорма, Неопределено),РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс); КонецПроцедуры &НаКлиенте Процедура ЗавершениеОплатыПромежуток(РезультатОплаты, ДополнительныеПараметры) Экспорт ПоказатьПредупреждение(Новый ОписаниеОповещения("ЗавершениеОплаты", ЭтотОбъект, Неопределено),"Печатаем", 1, "Костыль"); КонецПроцедуры &НаКлиенте Процедура ЗавершениеОплаты(РезультатОплаты) Экспорт ТабДок = Новый ТабличныйДокумент; ТабДок.Область("R1"+"C1").Текст = "АААА!!!"; ТабДок.ИмяПринтера = "Microsoft Print to PDF"; Список = Новый СписокЗначений(); Список.Добавить(ТабДок); УправлениеПечатьюКлиент.РаспечататьТабличныеДокументы(Список, Новый СписокЗначений(), Ложь); КонецПроцедуры ВОТ ТАК ВСЕ РАБОТАЕТ... одним словом 1С... |
|||
17
prorokk
11.06.18
✎
22:55
|
Почему...
|
|||
18
whitedi
11.06.18
✎
23:38
|
на 8.3.6 или 8.3.8 на каком-то релизе при открытие формы с УЖЕ заполненным табличным документом, сформированным из СКД, тонкий клиент напрочь вис. Лечил тогда открытием формы с табличным документом с видимостью Ложь и подключением обработчика ожидания на 0.1 сек с видимостью Истина. Может это что-то похожее?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |