Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

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

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 или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.