УТ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 не будет опубликован. Обязательные поля помечены *