Отладка шаблона печатной формы Word AA 5

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

Страницы: 1
RSS
Отладка шаблона печатной формы Word AA 5
 
Добрый день.

Альфа-Авто: Автосалон+Автосервис+Автозапчасти ПРОФ. Редакция 5 (5.0.07.04)

Сделали вордовский документ с параметрами по примерам, которые зашиты в  конфигурацию.
Запускаем на печать, получаем

При печати Заказ-наряд АВ00000970 от 14.08.2013 12:03:16 обнаружены ошибки :
Обработчик печатной формы Тест догоора (шаблон): {ОбщийМодуль.зфЗащищенныеФункции.Модуль(3456)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,29)}: Ошибка в выражении


Риторический опрос - как отладку сделать, как ошибку отловить?
 
Добрый день!

Отладку можно сделать следующим образом:
На копии базы  в модуле объекта документа Заказ-наряд текст функции Печать() временно замените на следующий:

Функция Печать(НазваниеПечатнойФормы="", КоличествоЭкземпляров=0, НаПринтер=Ложь, Документ=Неопределено, ДопПараметры=Неопределено) Экспорт
Документ = Новый ТабличныйДокумент();
ПечатнаяФорма = Справочники.ВнешниеПечатныеФормы.ЗаказНарядДоговор.ПолучитьОбъект();
Макет = ПечатнаяФорма.Хранилище.Получить();
ИмяМакета = ПечатнаяФорма.Наименование;
Возврат ЭтотОбъект.ПечатьШаблонаЗаказНарядДоговор(Документ,Макет,ИмяМакета);
КонецФункции

Таким образом, сможете зайти в отладке в процедуру ПечатьШаблонаЗаказНарядДоговор() и найти в какой строке ошибка.

Обратите внимание, что имя функции печати шаблона должно образовываться следующим образом "ПечатьШаблона" + ИмяШаблона
где ИмяШаблона - имя элемента в справочнике шаблоны печатных форм.
Например, предопределенный шаблон называется "ЗаказНарядДоговор", поэтому функция в модуле называется "ПечатьШаблонаЗаказНарядДоговор".
 
Спасибо, Михаил.

Попробуем.
 
2 странности.

1. Не изменяя типовую конфигурацию, запускаю на печать шаблон. ЗаказНарядДоговор
Жду 5-10 минут, форма ходит на экран.
Первый опрос -  почему так долго? Сервер очень мощный, загрузка процессора не превышает 10%, памяти более чем достаточно.

второй опрос  - после закрытия введенной формы в  процессах остается процесс ворда.

2. Загружаю свой шаблон, пытаюсь печатать, получаю

Обработчик печатной формы Тест (шаблон): {(1)}: Метод объекта не обнаружен (ПечатьШаблонаТест)

хотите сказать, что для печати каждой формы нужно создавать свой обработчик печати? Т.е. каждый раз нужно привлекать программистов?
 
По пунктам:

1. При формировании шаблонов печатных форм MS Word действительно есть задержка, связанная с использованием COM объектов. Обычно длительность открытия не превышает 10-15 секунд. (тестировалось на компьютере с ЦП: 2,7 Ghz, ОЗУ: 4 Гб). Если Вам удастся сделать замер производительности - можно будет увидеть на каком этапе происходит такая большая задержка. Скорее всего, проблемы происходят на стороне MS Word в момент открытия.

2. После закрытия введенной формы в процессах остается процесс ворда - действительно есть такая ошибка. В функции пчПроверитьCOMСоединениеMSWord() не происходит закрытие созданного объекта. Будет исправлено в следующем релизе.

3. Идея использования шаблонов заключается в следующем: пользователь может выгрузить имеющийся шаблон, внести нужные правки в тексте, переставить,удалить параметры и т.д. После этого измененный шаблон загружается обратно. Такой подход позволяет внести минимальные правки в печатную форму в режиме Предприятия не обращаясь за помощью к разработчику. Если нужно использовать несколько вариантов шаблона или создавать новые шаблоны для других печатных форм, тогда, как Вы правильно отметили, потребуется создание своего обработчика печати. Программа выдала сообщение об ошибке, так как не нашла нужного обработчика печати.
 
Хочу высказаться  по данной теме.
1. Задержка в выводе печатной формы аналогична, не менее 5 мин. Замер производительности выложу попозже.

2. Можно ли пока самим доработать, какие изменения нужно внести?

3. Данная информация противоречит ответу, который мне дали в ветке
http://rarus.ru/forum/forum7/topic4895/#message29065

Я даже параметры из шаблона не удаляла для чистоты эксперимента, почему я не могу подгрузить свой шаблон??
Изменено: Юлия Насонова - 25.10.2013 08:23:30
 
Юлия, здравствуйте!

1. На счет задержки пока не могу ничего ответить.

2. Можно самим исправить:
Нужно в пчПроверитьCOMСоединениеMSWord()
после строки Excel = Новый COMОбъект("Word.Application");
добавить строку Excel.Quit();

3. Посмотрел шаблон, который Вы выкладывали в другой ветке. В шаблоне добавлено множество меток, которых не было в базовом шаблоне. На данный момент процедуры печати заполняют только те метки, которые есть в базовом шаблоне. Доработка механизма, чтобы автоматически заполнялись новые метки, которых нет в базовом шаблоне, не планируется на текущий момент. Обратил внимание, что не все блоки текста находятся внутри областей - это неправильно, такие блоки не будут выведены на печать. Также у областей и меток обязательно должна быть как открывающая, так и закрывающая её метка.

Если нужна существенная переработка шаблона, как в Вашем примере, то проще сделать отдельную внешнюю печатную форму и не использовать механизм шаблонов. Но для этого, конечно, потребуется доработка конфигурации, как было правильно сказано в другой ветке.
 
Цитата
Михаил Шкурла пишет:
Идея использования шаблонов заключается в следующем: пользователь может выгрузить имеющийся шаблон, внести нужные правки в тексте, переставить,удалить параметры и т.д. После этого измененный шаблон загружается обратно. Такой подход позволяет внести минимальные правки в печатную форму в режиме Предприятия не обращаясь за помощью к разработчику. Если нужно использовать несколько вариантов шаблона или создавать новые шаблоны для других печатных форм, тогда, как Вы правильно отметили, потребуется создание своего обработчика печати. Программа выдала сообщение об ошибке, так как не нашла нужного обработчика печати.

Очень странная идея. А в чем сложность сделать автозаполнение параметров ЛЮБОГО документа-шаблона при помощи одной процедуры? тогда пользователи могли бы самостоятельно делать печатные формы
 
Реализация универсального механизма заполнения шаблонов - это достаточно трудоемкий процесс. В ближайшее время усовершенствование этого механизма не планируется.
 
Грубо говоря
Функция ЗаменитьШаблонВВордеНаТекст(Ворд, ШаблонВВорде, ТекстЗамены, Все = Истина)
// здесь в цикле будем искать все шаблоны указанного вида
Ворд.Selection.Find.MatchWholeWord = 1;
Ворд.Selection.Find.MatchCase = 0;
Ворд.Selection.Find.Wrap = 1;
Ворд.Selection.Find.Text = ШаблонВВорде;
Рез = Ворд.Selection.Find.Execute();
Если Все  Тогда
 Пока Рез Цикл
  Если Не ПустаяСтрока(ТекстЗамены) Тогда
   Ворд.Selection.TypeText(ТекстЗамены);  
  Иначе
   Ворд.Selection.Delete(1,1);
  КонецЕсли;
 
  Рез = Ворд.Selection.Find.Execute();
 КонецЦикла;
ИначеЕсли Рез Тогда
 Если Не ПустаяСтрока(ТекстЗамены) Тогда
  Ворд.Selection.TypeText(ТекстЗамены);  
 Иначе
  Ворд.Selection.Delete(1,1);
 КонецЕсли;
Иначе
 Возврат Рез;
КонецЕсли;

Возврат Рез;
КонецФункции // ЗаменитьШаблонВВордеНаТекст()

Процедура ЗаполнитьПараметрыШаблонаWord(ДокументДляЗамены,стрПараметрыЗамены, ТекущийПроцессор)
Если ТекущийПроцессор = ПроцессорОО ТОгда
Replace = ДокументДляЗамены.CreateReplaceDescriptor();
КонецЕсли;
Для Каждого Параметр Из стрПараметрыЗамены Цикл
Если ТекущийПроцессор = ПроцессорВорд Тогда
Попытка
// Заменим теги
ЗаменитьШаблонВВордеНаТекст(ДокументДляЗамены, "{" + СокрЛП(Параметр.Ключ) + "}", Параметр.Значение);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
ИначеЕсли ТекущийПроцессор = ПроцессорОО Тогда

Replace.SearchString  = "{" + СокрЛП(Параметр.Ключ) + "}";
Replace.ReplaceString = Параметр.Значение;
ДокументДляЗамены.ReplaceAll(Replace);
КонецЕсли;
КонецЦикла;
КонецПроцедуры // ЗаполнитьПараметрыШаблонаWord()

Причем это кусок кода из Рарус:Управление Франчайзи пятилетней давности.
Остается добавить регистр сведений с настройкой соответствий  замен и форму мастера создания собственно регистра для пользователей.
Часов 8 работ, не сильно крутого спеца.

Кстати говоря, никаких "областей" в той версии нет -  просто заменялись  шаблоне все соответствия.
в данный момент  ААА последнего релиза, получается, существует совершенно бесполезный механизм -  ни пользователям, ни программистам. (расстроено пожимает плечами)
Изменено: Дмитрий Тарасов - 29.10.2013 08:08:13
 
АП.

Дернули работу с шаблонами с Управление Франчайзи.
документы формируются и выводятся за секунды

Ребят, я все понимаю, зфЗащищенныеФункции, все дела..
кусков кода по созданию таких обработок в интернете пруд пруди.

Мы что, единственные, кто озаботился шаблонами договоров, чтобы у клиента было все быстро и без привлечения программистов для создания шаблонов? или у всех все в порядке и нам не повезло?

Пробовали печатать из шаблона на трех различных серверах - первая печать в сессии висит от трех до пяти минут.
 
Цитата
Дмитрий Тарасов пишет:
Мы что, единственные, кто озаботился шаблонами договоров, чтобы у клиента было все быстро и без привлечения программистов для создания шаблонов? или у всех все в порядке и нам не повезло?

Пробовали печатать из шаблона на трех различных серверах - первая печать в сессии висит от трех до пяти минут.
Я уже писала, что у нас все тоже самое. И если шаблоны переписала под себя вместе с процедурами, то с проблемой долгого открытия так и живем.
Действительно Word долго открывается.
 
Добрый день, Дмитрий, данный вопрос передан разработчикам, ответ будет дан в этой ветке форума.
 
Спасибо :)
 
Дмитрий, проблема все таки в работе самого Word. Альфа-Авто и платформа здесь не причем.
 
У меня, очевидно, проблемы с донесением информации.
Попробую еще раз.
1. Берем кусок кода из Рарус:Управление фирмой франчайзи, запихиваем его в обработку, создаем шаблон документа. запускаем обработку, и, о чудо, тут же получаем на экране заполненный документ Ворд по шаблону.
2. Берем пятую Альфу последнего релиза, печатаем заказ наряд по типовому шаблону -  при первой печати курим 5 минут,последующие открываются адекватно.

Вопрос - вы уверены, что проблема не в Альфа-Авто?

Хотите, вышлю вам обработку из вашей же конфигурации для франчей, чтобы вы убедились, что там нет задержек??  :)
 
Дмитрий, Ваш вопрос передан разработчикам, ответ будет дан в этой ветке форума.
 
Подниму ветку. Что слышно по этой проблеме?
 
Добрый день, Юлия, пока вопрос до конца решить не удалось.
 
жуть конечно, думал у меня сервак зависает при попытке распечатать заказ-наряд по типовому шаблону и пока лазил в отладке и читал эту тему, ПФ так и не отобразилась. по моему лучше такой вариант функционала убрать из конфигурации пока не появится что то более адекватное
 
Добрый день, Василий, как уже сообщалось выше проблема связана с MS Word, c его долгим открытием. Данный функционал работает, убираться из конфигурации он не будет.
Страницы: 1
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С