Имя: Пароль:
1C
1С v8
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 сек с видимостью Истина. Может это что-то похожее?
Основная теорема систематики: Новые системы плодят новые проблемы.