Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Отследить печать документа хочется... (число прочтений - 28139 )
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Отследить печать документа хочется...
03. Июля 2006 :: 16:35
Печать  
Оффтоп конечно, но кто как решал?

Имею ввиду успешную печать Таблицы после Показать()
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #1 - 04. Июля 2006 :: 05:29
Печать  
Arta писал(а) 03. Июля 2006 :: 16:35:
Оффтоп конечно, но кто как решал?

Имею ввиду успешную печать Таблицы после Показать()

Успешность печати ни как не отследить. Можно только отследить момент отправки данных драйверу принтера.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #2 - 04. Июля 2006 :: 05:30
Печать  
Цитата:
Успешность печати ни как не отследить. Можно только отследить момент отправки данных драйверу принтера.

Как?
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #3 - 04. Июля 2006 :: 05:36
Печать  
vip писал(а) 04. Июля 2006 :: 05:30:
Цитата:
Успешность печати ни как не отследить. Можно только отследить момент отправки данных драйверу принтера.

Как?

Ну... это я в общем... Надо перехватить CSheetView:УжасnPrint() и вызвать в этом перехвате предопределенную процедуру.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #4 - 04. Июля 2006 :: 05:39
Печать  
Ну, тогда помолчим и подождем. Улыбка
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #5 - 04. Июля 2006 :: 07:39
Печать  
Не помолчим... Лучше громко попросим...  Смех


Ну почему у меня рукм не тем концом, сам бы полез давно уже ломать  Печаль
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #6 - 04. Июля 2006 :: 07:41
Печать  
Если это и будет, то теперь только в отдельной FormEx.
  

FormEx developer
Наверх
www  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #7 - 04. Июля 2006 :: 07:52
Печать  
К этой мысли уже все привыкли, так что другого и ожидаю...
Главное чтобы было, так как данный вопрос на мисте например поднимается раз в месяц точно. Т.е. фича нужная...
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #8 - 04. Июля 2006 :: 08:36
Печать  
По адресу http://www.dorex.ru/?projects&formex&download качаем сегодняшнюю тестовую сборку FormEx (2.0.5.0#4).
Добавлена глобальная предопределенная процедура ПриОтправкеНаПечать(Табл, Режим), где Табл - таблица, которая печатается, Режим - режим предпросмотра (0 - печать; 1 - предпросмотр). Установка статуса возврата в ноль в этой процедуре - отмена отсылки на печать (печать не совсем отменяется, будут просто пустые листы).
Пример.
Код
Выбрать все
Процедура ПриОтправкеНаПечать(Табл, Режим)
	Сообщить("ПриОтправкеНаПечать...................");
	Сообщить(ТипЗначенияСтр(Табл));
	Сообщить(Режим);
	Если Вопрос("Слать на принтер?","Да+Нет") <> "Да" Тогда
		СтатусВозврата(0);
	КонецЕсли;
	Сообщить("...................ПриОтправкеНаПечать");
КонецПроцедуры	// ПриОтправкеНаПечать 


Тестируем.
  

FormEx developer
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #9 - 04. Июля 2006 :: 10:28
Печать  
И?... Работает?
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #10 - 04. Июля 2006 :: 10:42
Печать  
Цитата:
И?... Работает?

Неа. Ничего не происходит. Правда, принтер физически не подключен.
Но это же не должно влиять?
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #11 - 04. Июля 2006 :: 10:50
Печать  
vip писал(а) 04. Июля 2006 :: 10:42:
Цитата:
И?... Работает?

Неа. Ничего не происходит. Правда, принтер физически не подключен.
Но это же не должно влиять?

Предпросмотр работает?
Опиши подробно что делаешь.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #12 - 04. Июля 2006 :: 10:59
Печать  
Цитата:
Предпросмотр работает?
Опиши подробно что делаешь.

Код
Выбрать все
Процедура ПриОтправкеНаПечать(Табл, Режим)
	Сообщить("ПриОтправкеНаПечать...................");
	Сообщить(ТипЗначенияСтр(Табл));
	Сообщить(Режим);
	Если Вопрос("Слать на принтер?","Да+Нет") <> "Да" Тогда
		СтатусВозврата(0);
	КонецЕсли;
	Сообщить("...................ПриОтправкеНаПечать");
КонецПроцедуры	// ПриОтправкеНаПечать

Процедура ПечатьТест()
	Табл=СоздатьОбъект("Таблица");
	Табл.ИсходнаяТаблица("");
	Табл.ВывестиСекцию("Шапка");
	Табл.Показать("","");
КонецПроцедуры
 


После показа таблицы давлю на печать. Идет штатная печать без прикрас.
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #13 - 04. Июля 2006 :: 10:59
Печать  
ПриОтправкеНаПечать - это глобальная процедура.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #14 - 04. Июля 2006 :: 11:04
Печать  
Цитата:
ПриОтправкеНаПечать - это глобальная процедура.

Виноват, не обратил внимания.
Так - работает.
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #15 - 04. Июля 2006 :: 11:08
Печать  
Но непонятно, как отлавливать, какую таблицу хочется так обработать.
  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #16 - 04. Июля 2006 :: 11:09
Печать  
Параметр, что ли, добавить с именем таблицы?
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #17 - 04. Июля 2006 :: 11:13
Печать  
vip писал(а) 04. Июля 2006 :: 11:08:
Но непонятно, как отлавливать, какую таблицу хочется так обработать.

Тут уж извини... Если есть какие-то предложения, то могу их обдумать.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #18 - 04. Июля 2006 :: 11:18
Печать  
Цитата:
Параметр, что ли, добавить с именем таблицы?

Вот такое предложение. Добавить параметр такой же, как первый в методе Показать().
Заголовок таблицы.
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #19 - 04. Июля 2006 :: 11:21
Печать  
Упс... Обнаружился большой минус для режима предпросмотра. Процедура вызывается при каждой отрисовке. Т.е. получается аналог WM_PAINT. Чой-то не учел этот момент. Надо или вообще для предпросмотра не вызывать процедуру, или объявить это документированной фичей. Как лучше?
  

FormEx developer
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #20 - 04. Июля 2006 :: 11:21
Печать  
vip писал(а) 04. Июля 2006 :: 11:18:
Цитата:
Параметр, что ли, добавить с именем таблицы?

Вот такое предложение. Добавить параметр такой же, как первый в методе Показать().
Заголовок таблицы.

Ок.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #21 - 04. Июля 2006 :: 11:25
Печать  
Извиняюсь за OFF.
Алексей, ты вроде ТабличноеПоле широко используешь.
Глянь соседний топик про ОформлениеЯчейки.
Достал меня этот вопрос непонятностью.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #22 - 04. Июля 2006 :: 12:27
Печать  
Цитата:
Упс... Обнаружился большой минус для режима предпросмотра. Процедура вызывается при каждой отрисовке. Т.е. получается аналог WM_PAINT. Чой-то не учел этот момент. Надо или вообще для предпросмотра не вызывать процедуру, или объявить это документированной фичей. Как лучше?


А из предпросмотра если послать на печать то отработает?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #23 - 04. Июля 2006 :: 12:31
Печать  
Arta писал(а) 04. Июля 2006 :: 12:27:
Цитата:
Упс... Обнаружился большой минус для режима предпросмотра. Процедура вызывается при каждой отрисовке. Т.е. получается аналог WM_PAINT. Чой-то не учел этот момент. Надо или вообще для предпросмотра не вызывать процедуру, или объявить это документированной фичей. Как лучше?


А из предпросмотра если послать на печать то отработает?

Да. Но уже с флагом Режим = 0.
  

FormEx developer
Наверх
www  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #24 - 04. Июля 2006 :: 12:32
Печать  
Цитата:
Упс... Обнаружился большой минус для режима предпросмотра. Процедура вызывается при каждой отрисовке. Т.е. получается аналог WM_PAINT. Чой-то не учел этот момент. Надо или вообще для предпросмотра не вызывать процедуру, или объявить это документированной фичей. Как лучше?


Мне кажется вообще не вызывать для предпросмотра. Это никому не нужно, ИМХО.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #25 - 04. Июля 2006 :: 12:35
Печать  
vip писал(а) 04. Июля 2006 :: 11:18:
Цитата:
Параметр, что ли, добавить с именем таблицы?

Вот такое предложение. Добавить параметр такой же, как первый в методе Показать().
Заголовок таблицы.

Сделано и выложено. Третьим параметром в процедуру передается заголовок окна таблицы.
  

FormEx developer
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #26 - 04. Июля 2006 :: 12:36
Печать  
Кстати, не проверял все это дело на таблицах, которые на форме расположены.
  

FormEx developer
Наверх
www  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #27 - 04. Июля 2006 :: 12:42
Печать  
Ночью протестирую...


Спасибо, Алексей, не ожидал такой оперативности Улыбка
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #28 - 04. Июля 2006 :: 12:55
Печать  
Хотел использовать для закрытия окна таблицы после отправки на принтер.
Табл.Показать("ПРОБА","",-1);
1С вылетает Печаль
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #29 - 04. Июля 2006 :: 13:02
Печать  
vip писал(а) 04. Июля 2006 :: 12:55:
Хотел использовать для закрытия окна таблицы после отправки на принтер.
Табл.Показать("ПРОБА","",-1);
1С вылетает Печаль

Хм... Не удивлен. Процедура вызывается из объекта, который ты в этой процедуре удаляешь. Т.е. после вызова процедуры в твоем случае возврат идет внутрь уничтоженного уже объекта. Вот и вылет.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #30 - 04. Июля 2006 :: 13:09
Печать  
Цитата:
Процедура вызывается из объекта, который ты в этой процедуре удаляешь.

Похоже на то. А на кой тогда вообще параметр Табл, если Табл уже умер?
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #31 - 04. Июля 2006 :: 13:16
Печать  
vip писал(а) 04. Июля 2006 :: 13:09:
Цитата:
Процедура вызывается из объекта, который ты в этой процедуре удаляешь.

Похоже на то. А на кой тогда вообще параметр Табл, если Табл уже умер?

Нет. Ты не так понял. Как раз Табл еще не умер.
Смотри:
1. Процедура ПриОтправкеНаПечать вызывается из функции движка CSheetView:УжасnPrint(), где объект CSheetView, из которого идет вызов - это как раз окно таблицы.
2. Ты в процедуре ПриОтправкеНаПечать методом Табл.Показать("","",-1) закрываешь окно таблицы, при этом объект связанный с этим окном уничтожается.
3. После отработки процедуры управление возвращается в CSheetView:УжасnPrint(), чтобы продолжить обработку печати (даже если ты поставил статус возврата в ноль). Но ведь ты уже удалил это объект и фактически управление возвращается неизвестно какому объекту и это вызывает падение.

Короче. С Табл в процедуре ПриОтправкеНаПечать надо обращаться очень аккуратно.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #32 - 04. Июля 2006 :: 13:34
Печать  
Получается управлять Табл в процедуре обработки печати не получится.
Но все равно, большое дело сделал - отследить момент посылки на принтер.
Я все равно печать по своему обрабатываю. Если юзер совсем поражен в правах (нет даже главного меню программы), а печатать из просмотра надо, я в уголок окна таблицы цепляю анимированный гиф с картинкой принтера. При нажатии на него по-простецки посылаю "Ctrl+P".
А теперь, так как я перехватываю окно таблицы по его хэндлу, в твоей процедуре я над этим окном могу изгаляться, в т.ч. и закрывать.
Так что, спасибо. Улыбка
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #33 - 04. Июля 2006 :: 13:45
Печать  
vip писал(а) 04. Июля 2006 :: 13:34:
Получается управлять Табл в процедуре обработки печати не получится.
Но все равно, большое дело сделал - отследить момент посылки на принтер.
Я все равно печать по своему обрабатываю. Если юзер совсем поражен в правах (нет даже главного меню программы), а печатать из просмотра надо, я в уголок окна таблицы цепляю анимированный гиф с картинкой принтера. При нажатии на него по-простецки посылаю "Ctrl+P".
А теперь, так как я перехватываю окно таблицы по его хэндлу, в твоей процедуре я над этим окном могу изгаляться, в т.ч. и закрывать.
Так что, спасибо. Улыбка

И опять же нет.
Ты можешь делать с Табл что угодно. Кроме закрытия окна таблицы.
В принципе, можно сделать небольшой наворот: в ПриОтправкеНаПечать делать таблицу невидимой с помощью Сервис::ПрятатьТаблицу(), запоминать эту таблицу в глобальный список, а потом в уже обработке ожидания физически закрывать все ранее спрятанные таблицы.
  

FormEx developer
Наверх
www  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #34 - 04. Июля 2006 :: 13:59
Печать  
Цитата:
И опять же нет.
Ты можешь делать с Табл что угодно. Кроме закрытия окна таблицы.

Только что попробовал. Все работает.
Дело в том, что что хэндл окна таблицы я определяю по ее заголовку через API и меня не волнует, жив там объект таблицы или нет.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #35 - 04. Июля 2006 :: 14:49
Печать  
vip писал(а) 04. Июля 2006 :: 13:59:
Только что попробовал. Все работает.
Дело в том, что что хэндл окна таблицы я определяю по ее заголовку через API и меня не волнует, жив там объект таблицы или нет.


эээ... с этого места поподробней... Улыбка
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #36 - 04. Июля 2006 :: 14:57
Печать  
Цитата:
эээ... с этого места поподробней...

Я давно уже использую свою ВК semen.dll (назвал в честь любимого кота Семена).
Писал (и постоянно дописываю) только для себя. Аккуратно оформлять лень.
Когда мне чего-то не хватает, по-быстрому дописываю.
Пишу на VB, т.к. сями не владею. Практически 100% использую API.
Поэтому я спокойно перехватываю хэндл окна таблицы и обрабатываю, как хочу.
Так что АЛьФ в этом случае не прав.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #37 - 04. Июля 2006 :: 15:14
Печать  
Понял.

Эхх... семен семеныч...  Улыбка
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #38 - 04. Июля 2006 :: 15:27
Печать  
Цитата:
Эхх... семен семеныч... 

Объект там один "AddIn.MyCatSemen" Улыбка
Методов более 60.
Но они совершенно бессистемные. Многие к тому же делают то же, что и FormEx, но через API.
Я и писать-то стал "в пику" Улыбка АЛьФу, когда он просил деньги за нынешний объект "Окна".
Но спасибо ему, что я решился писать свою ВК. Очень помогает.
Чего и вам желаю Подмигивание
  
Наверх
ICQ  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #39 - 04. Июля 2006 :: 17:00
Печать  
vip писал(а) 04. Июля 2006 :: 14:57:
Пишу на VB, т.к. сями не владею. Практически 100% использую API.

Когда-то на форум.миста.ру был задан вопрос по управлению меню 1С. И один спец (не помню кто) показал решение без использования всяких ВК. Открывался Ексель, создавался VBA проект, в проект импортировались API-функции и вызывались.
Ветку правда не нашел, видно погибла при чистке.. Печаль
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #40 - 04. Июля 2006 :: 17:15
Печать  
steban писал(а) 04. Июля 2006 :: 17:00:
vip писал(а) 04. Июля 2006 :: 14:57:
Пишу на VB, т.к. сями не владею. Практически 100% использую API.

Когда-то на форум.миста.ру был задан вопрос по управлению меню 1С. И один спец (не помню кто) показал решение без использования всяких ВК. Открывался Ексель, создавался VBA проект, в проект импортировались API-функции и вызывались.
Ветку правда не нашел, видно погибла при чистке.. Печаль

Есть такой интересный парень, smaharbA Улыбка
Идеями фонтанирует. Иногда весьма необычными. Почему-то ярый противник ВК.
Но патологически не может идею довести до рабочего состояния.
А так иногда такие перлы выдает Подмигивание
Кстати решение АЛьФа по меню неполное. Невозможно избавиться от меню "Действия".
Оно создается динамически.
Я главное меню во фронт-офисе убираю совсем.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #41 - 04. Июля 2006 :: 18:07
Печать  
Да, Абрахамс иногда выдает такОе...  Улыбка


А по меню действия, а не проще его отключать постоянно? В какой нибудь глобальной предопределенной процедуре?
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отследить печать документа хочется...
Ответ #42 - 04. Июля 2006 :: 18:23
Печать  
Цитата:
А по меню действия, а не проще его отключать постоянно? В какой нибудь глобальной предопределенной процедуре?

Не представляю, как. Оно пересоздается и при переходе между окнами и при открытии нового окна.
Я в свое время намаялся с полным убиранием главного меню. У Штрих-М, по-моему, было сделано его скрытие. Но паскудно, через таймер. Дергалось при попытке появления.
А я сделал через сабклассинг главного окна 1С с перехватом события WM_WINDOWPOSCHANGING. Меню убивается еще до своего появления..
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #43 - 04. Июля 2006 :: 18:57
Печать  
Не задавался этим вопросом, но стало интересно, поиграюсь сегодня  Улыбка
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #44 - 05. Июля 2006 :: 05:58
Печать  
vip писал(а) 04. Июля 2006 :: 13:59:
Цитата:
И опять же нет.
Ты можешь делать с Табл что угодно. Кроме закрытия окна таблицы.

Только что попробовал. Все работает.
Дело в том, что что хэндл окна таблицы я определяю по ее заголовку через API и меня не волнует, жив там объект таблицы или нет.

Ага, тебе-то все равно, а вот процедуре ПриОтправкеНаПечать не все равно. Если у тебя закрытие таблицы в ПриОтправкеНаПечать работает без вылета, значит у тебя где-то получается утечка памяти и объект таблицы ты не уничтожаешь.
Хотя, возможен вариант, что ты посылаешь окну таблицы сообщение на закрытие и окно обрабатывает это сообщение уже после всего, что должно сделать при печати и больше обращений к объекту нет. Тогда да, должно по идее срабатывать нормально.
  

FormEx developer
Наверх
www  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #45 - 05. Июля 2006 :: 15:30
Печать  
Цитата:
Сделано и выложено. Третьим параметром в процедуру передается заголовок окна таблицы.



Если документ многостраничный, то процедура срабатывает для каждый страницы. Так задумано?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #46 - 07. Июля 2006 :: 06:26
Печать  
Arta писал(а) 05. Июля 2006 :: 15:30:
Цитата:
Сделано и выложено. Третьим параметром в процедуру передается заголовок окна таблицы.



Если документ многостраничный, то процедура срабатывает для каждый страницы. Так задумано?

Нет. Это недосмотр. Буду думать как исправить.
  

FormEx developer
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #47 - 10. Июля 2006 :: 12:47
Печать  
Вроде поправил. Проверяем версию #7.
Только процедура теперь называется ПриПечатиТаблицы(). ИМХО это будет правильней.
  

FormEx developer
Наверх
www  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #48 - 10. Июля 2006 :: 13:42
Печать  
Сенкс, сейчас заюзаем...
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #49 - 10. Июля 2006 :: 13:43
Печать  
P.S. А #6 прошла мимо Улыбка
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #50 - 10. Июля 2006 :: 13:44
Печать  
Arta писал(а) 10. Июля 2006 :: 13:43:
P.S. А #6 прошла мимо Улыбка

Локальная сборка Улыбка
  

FormEx developer
Наверх
www  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #51 - 11. Июля 2006 :: 05:56
Печать  
Ну как оно там? Работает?

Перехват OnPrint реализован, но на данный момент остался не у дел. Обидно. Хочется  его задействовть. В связи с этим возникла такая идея: в OnPrint вызывать глобальную предопределенную процедуру ОбработкаПечатиТаблицы(Текст, Режим, Шрифт). Здесь параметру Текст можно присвоить произвольный текст, который будет отрисовываться на каждой распечатываемой таблице; параметр Режим задает место текста (1 - левый верхний угол, 2 - правый верхний угол, 3 - верхний центр, 4 - левый нижний угол, 5 - правй нижний угол, 6 - нижний центр, 7 - по диагонали слева направо снизу вверх, 8- по даигонали слева направо сверху вниз); парметр Шрифт задает, соответственно, шрифт, которым отображается текст (создается методом СоздатьШрифт()).
ИМХО, полезно будет для создания демок Улыбка
  

FormEx developer
Наверх
www  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #52 - 11. Июля 2006 :: 07:39
Печать  
Альф, если печать отменить в дилоговом окне выбора принтера, то будет невозможно узнать, был ли распечатан документ.
Имхо то событие что было раньше, которое было раньше - все равно нужно. Оно создает событие именно во время печати. Если нет возможности изменить поведение при печати многостраничного документа, то фик с ним, будем делать флаг...

Хотя и это событие, котрое возникает ПриНачалеПечати (а не ПриПечати Улыбка тоже нужно
  
Наверх
 
IP записан
 
YuriPar
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 23
Зарегистрирован: 09. Июля 2006
Re: Отследить печать документа хочется...
Ответ #53 - 17. Июля 2006 :: 10:37
Печать  
Кстати.Вот часто встречающаяся ситуация.
1-страница-портрет,2 ландшафт и т.п.
Еще одна ситуация.
Принтер сетевой.
На печать отправили-а принтер выключен.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #54 - 17. Июля 2006 :: 10:42
Печать  
YuriPar писал(а) 17. Июля 2006 :: 10:37:
Еще одна ситуация.
Принтер сетевой.
На печать отправили-а принтер выключен.



Ну это уже не отследишь Улыбка

Событие отлавливает именно факт отправки на печать, но не успешной ее печати Улыбка
  
Наверх
 
IP записан
 
YuriPar
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 23
Зарегистрирован: 09. Июля 2006
Re: Отследить печать документа хочется...
Ответ #55 - 17. Июля 2006 :: 10:45
Печать  
А если EnumJob запускать по таймеру?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #56 - 17. Июля 2006 :: 10:48
Печать  
YuriPar писал(а) 17. Июля 2006 :: 10:45:
А если EnumJob запускать по таймеру?

А смысл? В общем случае на принтер задание может уйти нормально, но это еще не факт, что оно нормально напечатается. Если уж хочешь какие-то случаи отследить, то юзай Сервис::ГотовностьПринтера().
  

FormEx developer
Наверх
www  
IP записан
 
SpeC
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 1
Зарегистрирован: 01. Августа 2006
Re: Отследить печать документа хочется...
Ответ #57 - 01. Августа 2006 :: 07:25
Печать  
У меня вопрос (может быть и глупый), как эту dll'ку подцепить?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отследить печать документа хочется...
Ответ #58 - 01. Августа 2006 :: 08:02
Печать  
SpeC писал(а) 01. Августа 2006 :: 07:25:
У меня вопрос (может быть и глупый), как эту dll'ку подцепить?

ЗагрузитьВнешнююКомпоненту("1cpp.dll");
Улыбка
  

FormEx developer
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать