В типовой конфигурации 1С:Управление нашей фирмой (УНФ) печать полноценного договора традиционно привязана к справочнику Договоры контрагентов или документам продажи. Однако на практике часто возникает ситуация, когда именно покупатель (пользователь базы) должен сформировать и распечатать договор для поставщика на основании конкретного Заказа поставщику. Рассмотрим, как решить эту задачу, используя штатные инструменты системы, программные доработки и механизмы расширений.
Разберем ситуацию: стандартная логика бизнес-процессов предполагает, что договор — это первичный юридический документ, а заказ — лишь уточнение спецификации. В 1С:УНФ документ ЗаказПоставщику ориентирован на складской и финансовый учет. В нем отсутствуют поля для хранения данных о подписантах со стороны поставщика (например, на основании какого документа действует директор контрагента). Именно поэтому универсальную форму найти сложно: каждому внедрению требуются свои уникальные данные, которые часто приходится добавлять через Дополнительные реквизиты.
Проанализируем самый простой и эффективный способ, не требующий программирования — использование шаблонов в формате MS Word (.docx) или OpenOffice (.odt). Этот функционал позволяет «втянуть» данные из заказа в готовый текст договора.
Пошаговая инструкция по настройке:
Заказ поставщику.Заказ поставщику. После создания доп. реквизита «Подписант поставщика», он также станет доступен для выбора в шаблоне.Этот метод позволяет быстро менять текст договора без участия программиста, что крайне важно для малого бизнеса.
Если нам требуется строгая форма в формате табличного документа 1С (MXL) или сложная логика заполнения, которую нельзя реализовать в Word, рассмотрим вариант создания ВПФ. Как отмечалось в обсуждении на форуме, за основу можно взять любую печатную форму для заказа и заменить в ней макет.
Проанализируем техническую реализацию. Нам необходимо создать внешнюю обработку, которая подключается через механизм Дополнительные отчеты и обработки. Рассмотрим пример кода, который формирует данные для печати:
// В модуле объекта внешней обработки
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ДоговорПоставки");
Если ПечатнаяФорма <> Неопределено Тогда
ПечатнаяФорма.ТабличныйДокумент = СформироватьПечатнуюФормуДоговора(МассивОбъектов, ОбъектыПечати);
КонецЕсли;
КонецПроцедуры
Функция СформироватьПечатнуюФормуДоговора(МассивОбъектов, ОбъектыПечати)
ТабДок = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("МакетДоговора"); // Ваш макет MXL
Для Каждого СсылкаИзМассива Из МассивОбъектов Цикл
// Извлекаем данные из Заказа поставщику
ДанныеЗаказа = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СсылкаИзМассива, "Номер, Дата, Организация, Контрагент, СуммаДокумента");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.Заполнить(ДанныеЗаказа);
ТабДок.Вывести(ОбластьШапка);
// Обработка табличной части товаров
// ... (цикл по строкам заказа)
КонецЦикла;
Возврат ТабДок;
КонецФункции
Главное преимущество этого метода — возможность программно склонять ФИО подписантов и преобразовывать суммы в текст («Сумма прописью»), используя встроенные функции 1С:УНФ.
В современных релизах 1С:УНФ 1.6 и 3.0 наиболее правильным с точки зрения архитектуры является использование Расширений. Это позволяет добавить кнопку «Договор поставки» непосредственно в меню «Печать» документа Заказ поставщику, не изменяя типовую конфигурацию.
Почему это удобно:
Рассмотрим ситуацию, когда данных в заказе недостаточно. Мы можем через расширение добавить в форму заказа гиперссылку на создание Договора контрагента, если он еще не создан, и автоматически заполнить его данными из текущего заказа. Это восстановит логическую цепочку «Заказ -> Договор», о которой спорили участники форума.
Независимо от выбранного технического метода, выясним, какие нюансы важно учесть при создании формы договора для поставщика:
Заказ поставщику идеально подходит для формирования Приложения №1 к договору. Сделайте макет таким образом, чтобы табличная часть с номенклатурой, артикулами и ценами выводилась на отдельной странице или в конце текста.УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице, чтобы получить полные данные (ИНН, КПП, ОГРН, расчетные счета) для подвала договора.Подведем итог: если вам нужна оперативная печать, лучше всего воспользоваться встроенными Шаблонами документов с форматом Word. Если же требуется сложная автоматизация и интеграция в интерфейс — выбирайте создание ВПФ или Расширения с использованием программного кода для вывода данных из документа ЗаказПоставщику в макет.