УТ11: Печатная форма договора в Word/Writer (с использованием БСП)


Печатная форма договора в Word/Writer для Управление Торговлей 11 (с использованием БСП)

Позволяет выводить договор с контрагентом в Word (MS Office) или Writer (OpenOffice/LibreOffice) с заполненными реквизитами обеих сторон, с возможностью правки и сохранения данных о договоре (№, дата, срок действия), о подписантах с обоих сторон (должность, ФИО) и использованием штатных возможностей встроенной в Управление Торговлей 11 Библиотеки Стандартных Подсистем (БСП). Обработка использует исключительно штатные возможности УТ11, поэтому не требует внесения каких-либо изменений в конфигурацию. Тестирование обработки производилось на последних релизах УТ 11.0.8 и 11.0.9, гарантировать работоспособность на старых релизах не могу, обязательно проверяйте работоспособность обработки на тестовых базах перед использованием в рабочих.

Краткое описание возможностей:

1. Установка

Установка производится при помощи штатного функционала панели «Администрирование»»Печатные формы, отчеты и обработки»»Дополнительные отчеты и обработки» — нажимаем «Создать», указываем файл «ПечатьДоговораВOffice.epf», записываем, в итоге получаем две команды для договоров с контрагентами: «Печать договора» и «Печать договора (настройка)». Первая производит непосредственную печать указанного договора с использованием сохранённых настроек, вторая — позволяет просмотреть сохранённые настройки и изменить их, а также вывести на печать.

2. Настройки

Настройки подписанта со стороны организации сохраняются для каждой организации в отдельности кнопкой «Сохранить настройки организации».

Кнопкой «Сохранить» сохраняются глобальные настройки обработки (тип используемого шаблона (Word/Writer), место хранения шаблонов (макеты обработки/справочник приосединённых к физ.лицам файлов)), а также указанные настройки для договора (№, дата, срок действия, данные о подписантах) (последние сохраняются в справочнике присоединённых к договору файлов).

3.Шаблоны

Шаблоны договоров можно размещать как в макетах самой обработки, так и в базе данных, «прикрепив» их к какому-нибудь физ.лицу. Правила именования макетов:

{ТипДоговора}{ТипШаблона}  , где

{ТипДоговора} — Покупатель или Поставщик

{ТипШаблона} — DOC (для Word) или ODT (для Writer)

например, шаблон договора с покупателем для Word должен называться «ПокупательDOC»

Перечень доступных парметров печатной формы можно просмотреть в прилагающихся примерах шаблонов, они имеют вид {v8 ИмяПараметра}

4. Примечания

4.1. Шаблоны для Word

В БСП присутствует ошибка, из-за которой для некоторых типов файлов шаблонов (содержат более одной секции с разными настройками и/или имеют очень большой размер) из них не переносятся параметры страницы в конечный документ. Происходит это из-за использования для доступа к параметрам документа объекта ActiveDocument.PageSetup, который в указанных выше случаях возвращает часть настроек как «Неопределено».

В частности, проблема рассмотрена здесь: http://social.msdn.microsoft.com/Forums/en-US/vsto/thread/85a286b5-91b5-457a-93b5-ef56ff31a116/

Если данная проблема сильно мешает, то устранить её можно следующим образом:

в общем модуле УправлениеПечатьюMSWordКлиент в методе ПолучитьМакетMSWord() ищем строку

Handler.НастройкиСтраницыМакета.Вставить(ИмяНастройки, COMОбъект.ActiveDocument.PageSetup[ИмяНастройки]);

и заменяем её на

Handler.НастройкиСтраницыМакета.Вставить(ИмяНастройки, COMОбъект.ActiveDocument.Sections.Item(1).PageSetup[ИмяНастройки]);

4.2. Шаблоны для Writer

У меня при формировании форм в пакете OpenOffice 3.3 для некоторых участков текста «слетало» форматирование (выравнивание, шрифт и/или его размер, выделение курсивом или жирным), однако из этого же шаблона в LibreOffice 3.5/3.6 всё формировалось корректно, поэтому рекомендую использовать именно этот пакет.

64 Comments

  1. ZhokhovM

    Всем привет. У меня возникли некоторые сложности:

    1.Если в банковском счету проставить галочку «Изменить реквизиты банка», то данные с полями «КонтрагентБик», «КонтрагентБанк» и «КонтрагентКоррСчет» не отображаются.

    2.Шаблон «ДокументDOC» не найден. Что нужно сделать, чтобы выводилась на печать??

    Заранее благодарен!

    Reply
  2. andrewks

    (1) Maxim2012,

    1. посмотрю

    2. данное сообщение выводится при каком значении поля «Место хранения» — «Макеты обработки» или «Спр. физ лиц»? если «Спр. физ лиц» — проверьте в присоединённых файлах указанного физ.лица наличие файла с таким наименованием. выглядеть это должно примерно так:

    Reply
  3. andrewks

    что-то картинка некорректно прикрепилась. ещё раз

    Reply
  4. andrewks

    (1) Maxim2012, он точно говорит именно «Шаблон «ДокументDOC» не найден» ? просто у меня не используются шаблоны с таким наименованием только ПокупательDOC, ПокупательODT, ПоставщикDOC, ПоставщикODT

    если можно, прикрепите скрин сообщения об ошибке

    Reply
  5. ZhokhovM

    (2) andrewks:

    1.аналог организации

    2.всё заработало, забыл прикрепить файл в шаблоне.

    Reply
  6. andrewks

    (5) Maxim2012, по вопросу №1: проблему определил, чтобы не ждать заливки обновления, можно исправить по-быстрому код обработки:

    в модуле формы в функции ПолучитьДанныеОбъекта() замените кусок с текстом запроса на текст из приложенного файла

    Reply
  7. andrewks

    +(6) и не забудьте потом залить исправленную обработку в УТ 11 🙂

    Reply
  8. andrewks

    (5) Maxim2012, рецепт из (6) помог?

    Reply
  9. ZhokhovM

    (8) да, но я сделал по-другому и добавил ещё 2 шаблона (с комитентом и комиссионером).

    Reply
  10. andrewks

    выложил обновление с учётом исправления (6)

    Reply
  11. sashajat

    У меня при печати выходит сообщение «Слишком много фактических параметров». Релиз 11.0.8.13

    Reply
  12. andrewks

    (11) sashajat, ага, нашёл, в чём причина. в УТ 11.0.8.х используется БСП 1.х, а в 11.0.9.х — БСП 2.0.х

    поправил, ограничение: в УТ 11.0.8.х настройки страницы для шаблона ODT (OpenOffice Writer) не сохраняются (из-за отсуствия такового функционала в БСП 1.х), для УТ 11.0.9.х — всё без изменений, согласно описания публикации

    Reply
  13. sashajat

    (12) Отчет стал выводиться в word, но не заполняються поля {v8 ОрганизацияНаименование} и {v8 КонтрагентНаименование}

    Reply
  14. andrewks

    (13) sashajat, странно, у меня всё нормально. только эти два поля не заполняются? а остальные нормально? если можно, покажите скрин, в каком виде выводится документ (можно с тестовой организацией/контрагентом, чтобы не светить конфиденциальные данные)

    Reply
  15. sashajat

    (14) Остальные нормально отправляю оригинал.

    Reply
  16. andrewks

    (15) sashajat, хмм… интересно то, что в шапке договора эти же поля {v8 ОрганизацияНаименование} и {v8 КонтрагентНаименование} заполняются (т.е. сами данные из БД берутся корректно), а вот в разделе реквизитов — нет.

    по ходу, ещё один глюк БСП (как, например, с параметрами макета DOC), но у меня пока не получилось его воспроизвести. вечерком попробую покопаться детальнее, постараюсь обойти

    Reply
  17. andrewks

    (15) sashajat, локализовал проблему. это проявляется только на БСП 1.х (т.е. УТ 11.0.8.х) и только на шаблоне DOC. в той же УТ 11.0.8.х, но с шаблоном ODT — всё нормально.

    значит, точно ошибка в БСП 1.х. видимо, придётся вбивать какой-то костыль

    Reply
  18. andrewks

    (15) sashajat, сделал залипуху для БСП 1.х, теперь должно работать

    Reply
  19. sashajat

    (18) Все отлично заработало. Ставлю +

    Reply
  20. fgremlin

    Однозначно +!

    В связи с тем, что лень двигатель прогресса, [;)] мысль пошла дальше.

    Предложения по модернизации:

    1. Возможность затолкать (потом выбирать при печати) несколько форм договоров к одному типу договора. Я просто предполагаю использовать разные договора, например на разовые работы и на комплексное обслуживание.

    2. (бредовая, наверное мысль) Прикрутить каким-то образом к коммерческому предложению, мол типа предлагаем Вам, и бланк договора с реквизитами сразу на подписание.

    Но вообще и так отлично.

    Reply
  21. andrewks

    (20) fgremlin, по пункту №1 — специально конструировал код так, чтобы можно было легко добавлять любые шаблоны в любом количестве — достаточно немного подкорректировать код и разместить нужные шаблоны

    по пункту №2 — довольно специфично. обычно, если идут обезличенные коммерческие предложения (типа оферты), то либо идёт бланк договора с пустыми реквизитами контрагента, либо ссылка на таковой на сайте.

    если идёт адресное предложение конкретному контрагенту — обычно, если договора с ним ещё нет, то полных его реквизитов в базе тоже нет (как правило, только название, адрес, тел и конт.лицо).

    но, если таковая потребность имеется — реализовать тоже недолго.

    Reply
  22. fgremlin

    (21)Специфики, конечно, разные, я обычно обсуждаю моменты и делаю предварительное обследование заранее, затем стребываю реквизиты у клиента, завожу его в базу, создаю сделку и ком. предложение, потом если сделка не состоялась можно поставить причину отказа и потом проанализировать. Подозреваю, что такой логики и придерживались 1С-ники.

    Только не могу еще разобраться (11 релиз странноват…) как добавлять виды договоров. Мне нужны еще несколько, на разные виды услуг — типа есть разовые услуги, есть на обслуживание и есть на продажу и договора для каждого разные.

    Пока попробую несколько отчетов с разными шаблонами прикрутить и выбирать нужный.

    Но, вообще универсальность и гибкость рулит. 🙂

    Reply
  23. son_v

    Настраивали внешнюю печатную форму для Договоров в Word (Управление торговлей 11.0.9.5). У нас случилось так, что договора по разным видам деятельности подписывают разные люди (по доверенностям), поэтому пришлось подписантов цеплять в карточке договора, и туда же выводить и ответственных подписантов из контактных лиц контрагента. Подписантов от организации храним в регистре сведений, с указанием документа-основания (доверенность, Устав). По срезу последних находим актуальных подписантов по организации, подразделению.

    Reply
  24. vladm2008

    Ошибка, пишет

    Reply
  25. andrewks

    (25) vladm2008, сюда можно прикрепить нормальный скриншот ошибки, на этом ничего не разобрать

    Reply
  26. vladm2008

    Извиняюсь

    Reply
  27. vladm2008

    (26) извиняюсь. Версия 1С:Предприятие 8.2 (8.2.15.289) Управление торговлей, редакция 11.0 (11.0.7.13)

    Reply
  28. vladm2008

    В Сравочник.ДоговорыКонтрагентов реквизит ТипДоговора отсутствует и Справочник.КлассификаторБанковРФ

    Reply
  29. andrewks

    (29) vladm2008, ясно, в описании обработки написано:

    «Тестирование обработки производилось на последних релизах УТ 11.0.8 и 11.0.9, гарантировать работоспособность на старых релизах не могу»

    у вас старый релиз. либо обновляйтесь, либо допиливайте, исходный код открыт

    Reply
  30. andrewks

    если конфа типовая, то лучше обновиться.

    если с наработками — тут уже решайте сами, что вам выгоднее — обновлять конфу, или адаптировать внешние обработки под свою конфу

    Reply
  31. 26178_mail.ru

    как раз искал под УТ 11 шаблон печатной формы с выводом в Word., спасибо боьлшое пригодилась как шаблон для разработки печати этикеток шаблон которой задан в ворде, буду курочить.

    Reply
  32. azs102

    Всем доброго дня!

    Давно ищу подобную обработку, т.е. с возможностью из УТ 11 распечатывать договора, выбирая из нескольких шаблонов. К сожалению, в скрине шаблона печатной формы договора данной обработки я не увидел указания стоимости услуг (товаров) по договору. Вопрос к разработчику (или специалистам): можете ли Вы доработать данную обработку и на каких условиях?

    Reply
  33. Гость

    Добрый день, что за реквизит ищет обработка? Его нет в типовой УТ 11.1.1.13

    «Договоры.Организация.ТекущаяДолжностьРуководителя» ????

    Reply
  34. Гость

    !!!

    Reply
  35. andrewks

    (35) Столяров Павел, я не могу гарантировать работоспособность на всех будущих релизах. тем более, что это не просто новый релиз, а новая редакция

    Reply
  36. Гость

    Обработка для УТ 11.1.1.13 (поправлен запрос, работает)

    Reply
  37. Гость

    При сохранении шаблона в справочнике физлиц получаем:

    Ошибка открытия файла:

    «ПокупательDOC.doc».

    Файл не найден в хранилище файлов.

    Возможно файл удален антивирусной программой.

    Обратитесь к администратору.

    Хотя присоединенный файл вполне себе доступен…

    Reply
  38. Гость

    А при хранении в макете обработки — все нормально…

    Reply
  39. Alran

    Все получилось замечательно, спасибо. Но единственная проблема-у нас много разных шаблонов договоров: договор поставки, договор сопровождения, абонентский договор и т.д. Мне пришлось добавить реквизит формы «ШаблонНазвание» (строка,20 символов), в котором можно указать какой шаблон надо использовать. Но тогда пользователь, при создании шаблона в справочнике физических лиц должен формировать название несколько по иному: {ТипДоговора}{ШаблонНазвание}{ТипШаблона} , где

    {ТипДоговора} — Покупатель или Поставщик

    {ШаблонНазвание} — идентифицирующая шаблон строка (Например «Абонентский»)

    {ТипШаблона} — DOC (для Word) или ODT (для Writer)

    Reply
  40. Alran

    Все замечательно получилось спасибо. Единственное неудобство для нас- у нас несколько шаблонов договоров. Пришлось добавить реквизит формы «ШаблонНазвание»(Строка, 2щ символов) , для возможности идентификации шаблона. Тогда правила именования макетов изменились:

    {ТипДоговора}{ШаблонНазвание}{ТипШаблона} , где

    {ТипДоговора} — Покупатель или Поставщик

    {ШаблонНазвание} — Название для идентификации макета ( например «Абонентский», или «Поставки»)

    {ТипШаблона} — DOC (для Word) или ODT (для Writer)

    Reply
  41. Katano

    {Форма.Форма.Форма(632)}: Ошибка при вызове метода контекста (Выполнить)

    РезЗапроса=Запрос.Выполнить();

    по причине:

    {(9, 23)}: Поле не найдено «Договоры.Организация.ТекущаяДолжностьРуководителя»

    ,Договоры.Организация.<<?>>ТекущаяДолжностьРуководителя as ОрганизацияДолжностьРуководителя

    УТ 11.1.2.10

    Reply
  42. bambula

    Подскажите, может кто решил проблему — если в ворде сделать несколько параметров — то выводится только в первый параметр. А в остальные — просто в виде текста (имя параметра). Как с этим бороться?

    Reply
  43. andrewks

    (43) как раз в данной разработке данная проблема решается, смотрите код

    Reply
  44. allusion

    {(9, 23)}: Поле не найдено «Договоры.Организация.ТекущаяДолжностьРуководителя»

    ,Договоры.Организация.

    Как решить?????

    Reply
  45. andrewks

    (45) allusion, какой релиз УТ?

    Reply
  46. kcerokc

    не могу распечатать договор после обновления на УТ 11.1.4.12, пропала кнопка печать. Где ее искать?

    Reply
  47. belfast

    Установил на 11.1.4.13. Если кто-то устанавливал с этим обновлением, скажите где вообще должна быть кнопка печати?

    Reply
  48. s_uu

    Добрый день, у меня тоже нет кнопки Печать, может напишете, где она должна быть????

    Reply
  49. s_uu

    Управление торговлей, редакция 11.1 (11.1.4.10)

    Reply
  50. oakhead

    (50) s_uu, я в этой версии в команды печати добавлял руками. В 11.1.4.14 она появилась штатно

    Reply
  51. logic251

    (51) oakhead, расскажите как это можно сделать.

    Reply
  52. rozer

    (46)

    чтобы работало в ут11.1.6.20

    надо

    1) строка 662 поменять на

    ОбновитьПолеИзЗначения(«ОрганизацияПодписант»,ФизическиеЛицаУТ.ФамилияИнициалыФизЛица(Выборка.ОрганизацияРуководитель));
    

    2)изменить запрос в строке 613 на

    Запрос.Текст=»ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
    | Договоры.Номер КАК НомерДоговора,
    | Договоры.Дата КАК ДатаДоговора,
    | Договоры.ДатаНачалаДействия КАК ДатаДействияДоговора,
    | Договоры.ДатаОкончанияДействия КАК СрокДействияДоговора,
    | Договоры.ТипДоговора КАК ТипДоговора,
    | Договоры.Организация КАК Организация,
    | Договоры.Контрагент КАК Контрагент,
    | ОтветственныеЛицаОрганизаций.Должность КАК ОрганизацияДолжностьРуководителя,
    | ОтветственныеЛицаОрганизаций.Наименование КАК ОрганизацияРуководитель
    |ИЗ
    | Справочник.ДоговорыКонтрагентов КАК Договоры
    |  ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ОтветственныеЛицаОрганизаций КАК ОтветственныеЛицаОрганизаций
    |  ПО (ОтветственныеЛицаОрганизаций.ОтветственноеЛицо = ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель))
    |   И Договоры.Организация = ОтветственныеЛицаОрганизаций.Владелец
    |ГДЕ
    | Договоры.Ссылка = &ТекДоговор»;
    

    Показать

    т.к. наименование и должность руководителя теперь в спр. «ОтветственныеЛицаОрганизаций»

    а так с виду все работает. Спасибо.

    Reply
  53. rozer

    (45) allusion, см (53)

    Reply
  54. vicmos

    спасибо

    Reply
  55. Jaivan

    кто-нибудь может быть заморачивался добавлением в шаблон и последующим выводом так называемого особого верхнего колонтитула первой страницы?

    для этого я в модулях ввел слещующие функции (аналогично функциям работы с верхним клонтитулом)

    Функция ПолучитьОбластьВерхнегоКолонтитулаПервойСтраницы(Знач Handler) Экспорт
    
    Возврат Новый Структура(«Header», Handler.COMСоединение.ActiveDocument.Sections(1).Headers.Item(2));
    
    КонецФункции
    
    Процедура ДобавитьВерхнийКолонтитулПервойСтраницы(Знач ПечатнаяФорма, Знач ОбластьHandler) Экспорт
    
    ОбластьHandler.Header.Range.Copy();
    ВерхнийКолонтитулПервойСтраницы(ПечатнаяФорма).Paste();
    
    КонецПроцедуры
    
    Процедура ЗаполнитьПараметрыВерхнегоКолонтитулаПервойСтраницы(Знач ПечатнаяФорма, Знач ДанныеОбъекта = Неопределено) Экспорт
    
    Если ДанныеОбъекта = Неопределено Тогда
    Возврат;
    КонецЕсли;
    
    Для Каждого ПараметрЗначение Из ДанныеОбъекта Цикл
    Если ТипЗнч(ПараметрЗначение.Значение) <> Тип(«Массив») Тогда
    Заменить(ВерхнийКолонтитулПервойСтраницы(ПечатнаяФорма), ПараметрЗначение.Ключ, ПараметрЗначение.Значение);
    КонецЕсли;
    КонецЦикла;
    
    КонецПроцедуры
    

    Показать

    Функция ВерхнийКолонтитулПервойСтраницы(ПечатнаяФорма)
    Возврат ПечатнаяФорма.COMСоединение.ActiveDocument.Sections(1).Headers.Item(2).Range;
    КонецФункции
    

    НО! никак не могу найти этот верхний колонтитул первой страницы в com соединении (COMСоединение)

    …далее, непонятен принцип работы этого особенного колонтитула, очевидно, что он должен замещать обычный колонтитул на первой странице

    Reply
  56. chuchi

    При открытии вылетает ошибка

    {Форма.Форма.Форма(672)}: Поле объекта не обнаружено (ОбъектыНазначения)

    ОбъектыНазначения=Параметры[«ОбъектыНазначения»];

    Reply
  57. Baser

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

    http://forum.infostart.ru/forum24/topic143125/message1522475/#message1522475

    Reply
  58. svetik789

    1С:Предприятие 8.3 (8.3.7.1917)

    Управление торговлей, редакция 11.2 (11.2.3.66)

    Ошибка при выборе печатной формы договора или настройки (

    Случаем не будете обновлять для 11.2 ?

    Reply
  59. myoff

    1С:Предприятие 8.3 (8.3.9.1818)

    1С:ERP Управление предприятием 2 (2.2.2.127)

    Ошибка при выборе печатной формы договора или настройки

    Reply
  60. buh.simf

    Добрый день. Управление торговлей, редакция 11 (11.3.4.93)

    Не могу распечатать, не настроить такая же ошибка

    Reply
  61. vovafr1

    Не работает! текст ошибки : {ОбщийМодуль.ДополнительныеОтчетыИОбработкиКлиент.Модуль(382)}: Ошибка при вызове метода контекста (ПолучитьФорму)

    ФормаОбработки = ПолучитьФорму(«ВнешняяОбработка.»+ ИмяОбработки +».Форма», ПараметрыОбработки, Форма);

    по причине:

    Ошибка инициализации модуля: ВнешняяОбработка.ПечатьДоговораВOffice.Форма.Форма.Форма

    по причине:

    {ВнешняяОбработка.ПечатьДоговораВOffice.Форма.Форма.Форма(661,49)}: Переменная не определена (ФизическиеЛица)

    ОбновитьПолеИзЗначения(«ОрганизацияПодписант»,<<?>>ФизическиеЛица.ФамилияИнициалыФизЛица(Выборка.ОрганизацияРуководите

    релиз 11 (11.3.4.112)

    платформа 1С:Предприятие 8.3 (8.3.10.2252)

    Reply
  62. webmastersb

    Аналогичная ошибка

    Reply
  63. MadJhey

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

    1с в своем духе:

    было ИнициализироватьМакет

    стало ИнициализироватьМакетОфисногоДокумента

    и т.д.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *