Вход | Регистрация

1С:Предприятие ::

Метки: 

8.3.12 - 8.3.13 Код который вешает интерфейс... весь...

Я
   prorokk
 
11.06.18 - 11:40
Может кто знает как исправить такую проблему... подскажите пожалуйста:

&НаКлиенте
Процедура Повесить(Команда)    
    
    ОткрытьФорму("ВнешняяОбработка.Вешаем8313.Форма.ФормаОплаты",,ЭтотОбъект,,,,
    Новый ОписаниеОповещения("ЗавершениеОплаты", ЭтотОбъект, Неопределено),РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    
КонецПроцедуры

&НаКлиенте
Процедура ЗавершениеОплаты(РезультатОплаты, ДополнительныеПараметры) Экспорт
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Область("R1"+"C1").Текст = "АААА!!!";
    ТабДок.ИмяПринтера = "Microsoft Print to PDF";
    //ТабДок.Показать();

    Список = Новый СписокЗначений();
    Список.Добавить(ТабДок);
    УправлениеПечатьюКлиент.РаспечататьТабличныеДокументы(Список, Новый СписокЗначений(), Ложь);
    
КонецПроцедуры


Код формы оплаты:

&НаКлиенте
Процедура Команда1(Команда)
    
    Закрыть();
    
КонецПроцедуры
 
  Рекламное место пустует
   Ник080808
 
1 - 11.06.18 - 12:53
(0) ЭтотОбъект на клиенте?
   RomanYS
 
2 - 11.06.18 - 13:02
(0) причина в
    УправлениеПечатьюКлиент.РаспечататьТабличныеДокументы(Список, Новый СписокЗначений(), Ложь);

что там у тебя, никому не известно.
   prorokk
 
3 - 11.06.18 - 16:15
(2) У нас УТ 11.4 примерно там это:

    ПакетОтображаемыхДокументов = Новый ПакетОтображаемыхДокументов;
    ПакетОтображаемыхДокументов.РазборПоКопиям = Истина;
    КоллекцияПечатныхФорм = ТабличныеДокументы.ВыгрузитьЗначения();
    
    Для Каждого ПечатнаяФорма Из КоллекцияПечатныхФорм Цикл
        ПечататьКомплектами = ПечататьКомплектами Или ПечатнаяФорма.ДвусторонняяПечать <> ТипДвустороннейПечати.Нет;
    КонецЦикла;

    ПакетОтображаемыхДокументов.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
   prorokk
 
4 - 11.06.18 - 16:16
(1) Да все так... Это не правильно?
   prorokk
 
5 - 11.06.18 - 16:23
1. Если Вызвать (без открытия формы) так:
ВыполнитьОбработкуОповещения(Новый ОписаниеОповещения("ЗавершениеОплаты", ЭтотОбъект), Истина);
Форма не виснет....

2.Если передать на печать Пустой табличный документ.
Форма не виснет.

3.Не имеет разницы печать на реальный принтер или в файл...
ФОРМА виснет(

Виснет Все, даже крестик основного окна приложения, все панели...
Если нажать Esc тогда закроется окно обработки, НО вся 1с все так же недоступна....
   prorokk
 
6 - 11.06.18 - 16:29
Если РежимОткрытияОкнаФормы.Независимый
Форма не виснет.
   prorokk
 
7 - 11.06.18 - 16:49
Итоговый код:



&НаКлиенте
Процедура Повесить(Команда)    
    
    ОткрытьФорму("ВнешняяОбработка.Вешаем8313.Форма.Форма1",,ЭтотОбъект,,,,
    Новый ОписаниеОповещения("ЗавершениеОплаты", ЭтаФорма, Неопределено),РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
    
КонецПроцедуры

&НаКлиенте
Процедура ЗавершениеОплаты(РезультатОплаты, ДополнительныеПараметры) Экспорт
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Область("R1"+"C1").Текст = "АААА!!!";
    ТабДок.ИмяПринтера = "Microsoft Print to PDF";
    
    ПакетОтображаемыхДокументов = Новый ПакетОтображаемыхДокументов;
    ПакетОтображаемыхДокументов.Состав.Добавить().Данные = ПакетСОднимТабличнымДокументом(ТабДок);
    ПакетОтображаемыхДокументов.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
    
КонецПроцедуры

&НаСервере
Функция ПакетСОднимТабличнымДокументом(ТабличныйДокумент)
    АдресТабличногоДокументаВоВременномХранилище = ПоместитьВоВременноеХранилище(ТабличныйДокумент);
    ПакетСОднимДокументом = Новый ПакетОтображаемыхДокументов;
    ПакетСОднимДокументом.РазборПоКопиям = Истина;
    ПакетСОднимДокументом.Состав.Добавить(АдресТабличногоДокументаВоВременномХранилище);
    ЗаполнитьЗначенияСвойств(ПакетСОднимДокументом, ТабличныйДокумент, "Вывод, ДвусторонняяПечать, ИмяПринтера, КоличествоЭкземпляров, ТочностьПечати");
    Если ТабличныйДокумент.РазборПоКопиям <> Неопределено Тогда
        ПакетСОднимДокументом.РазборПоКопиям = ТабличныйДокумент.РазборПоКопиям;
    КонецЕсли;
    Возврат ПакетСОднимДокументом;
КонецФункции
   mistеr
 
8 - 11.06.18 - 21:09
(0) А принтера такого нет небось...
   prorokk
 
9 - 11.06.18 - 21:36
(8) как и писал ранее хоть печатать на реальный, хоть в PDF, хоть отменить печать результат... зависание (блокировка) интерфейса...
   AlvlSpb
 
10 - 11.06.18 - 22:13
(0)Подвешивает вот это
ОткрытьФорму("ВнешняяОбработка.Вешаем8313.Форма.ФормаОплаты"
Ты обращаешься к ВНЕШНЕЙ обработке. Откуда программа знает ГДЕ искать эту обработку, она (обработка) не объект конфигурации
 Сначала подключи внешнюю обработку, потом открывай форму
 
  Рекламное место пустует
   prorokk
 
11 - 11.06.18 - 22:18
(10) Думал об этом... Оригинальный код Весь в пределах одного расширения конфигурации...

И если посмотреть отладчиком то видно что Весь код выполняется а после ничего не происходит и интерфейс становиться недоступным...

И еще в 8.3.11 ВСЕ РАБОТАЕТ!!!
   prorokk
 
12 - 11.06.18 - 22:23
+(11) тут либо что-то изменилось в механизме открытия,закрытия форм. либо просто "кривая" платформа...
либо нужно чем то заменить:

ПакетОтображаемыхДокументов.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);

т.к. Эта строчка "вешает", а мне кажется открывает МОДАЛЬНОЕ окно. которое я НЕ ВИЖУ... никто не видет....
   AlvlSpb
 
13 - 11.06.18 - 22:30
(11) Странно. Что-то сомневаюсь, что в 8.3.11 работает. Этот код может увидеть форму, если работает в самой обработке Вешаем8313. Вызов из любого другого места требует подключения обработки или указания полного пути к файлу обработки.
(12) Ну так может надо разрешить режим модальности? Хотя если бы ты был прав, вышла бы ошибка "Модальные окна запрещены"
   AlvlSpb
 
14 - 11.06.18 - 22:42
(12) Попробуй так
&НаКлиенте 
Процедура Повесить(Команда)    
    АдресХранилища = "";
    Результат = ПоместитьФайл(АдресХранилища, "C:\ПолныйПутьКФайлу\Вешаем8313.epf", , Ложь);           
    ИмяОб = ПолучитьОбработку(АдресХранилища);
    ОткрытьФорму("ВнешняяОбработка." + ИмяОб +".Форма.ФормаОплаты",,ЭтотОбъект,,,,
    Новый ОписаниеОповещения("ЗавершениеОплаты", ЭтотОбъект, Неопределено),РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
    
КонецПроцедуры

&НаСервере
Функция ПолучитьОбработку(АдресХранилища)

    Возврат ВнешниеОбработки.Подключить(АдресХранилища);

КонецФункции
   prorokk
 
15 - 11.06.18 - 22:52
(14) не помогло( виснет....
   prorokk
 
16 - 11.06.18 - 22:54
БИНГО!!!

ЛЕКАРСТВО!!!

&НаКлиенте
Процедура Повесить(Команда)    
    
    ОткрытьФорму("ВнешняяОбработка.Вешаем8313.Форма.Форма1",,ЭтотОбъект,,,,
    Новый ОписаниеОповещения("ЗавершениеОплатыПромежуток", ЭтаФорма, Неопределено),РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
    
КонецПроцедуры

&НаКлиенте
Процедура ЗавершениеОплатыПромежуток(РезультатОплаты, ДополнительныеПараметры) Экспорт

    ПоказатьПредупреждение(Новый ОписаниеОповещения("ЗавершениеОплаты", ЭтотОбъект, Неопределено),"Печатаем", 1, "Костыль");
    
КонецПроцедуры

&НаКлиенте
Процедура ЗавершениеОплаты(РезультатОплаты) Экспорт
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Область("R1"+"C1").Текст = "АААА!!!";
    ТабДок.ИмяПринтера = "Microsoft Print to PDF";
   
    Список = Новый СписокЗначений();
    Список.Добавить(ТабДок);
    УправлениеПечатьюКлиент.РаспечататьТабличныеДокументы(Список, Новый СписокЗначений(), Ложь);
    
КонецПроцедуры

ВОТ ТАК ВСЕ РАБОТАЕТ... одним словом 1С...
   prorokk
 
17 - 11.06.18 - 22:55
Почему...
   whitedi
 
18 - 11.06.18 - 23:38
на 8.3.6 или 8.3.8 на каком-то релизе при открытие формы с УЖЕ заполненным табличным документом, сформированным из СКД, тонкий клиент напрочь вис. Лечил тогда открытием формы с табличным документом с видимостью Ложь и подключением обработчика  ожидания на 0.1 сек с видимостью Истина. Может это что-то похожее?


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует