Для тех, кто хорошо знаком, как создать внешнюю печатную форму, этот материал может оказаться интересным. Остальным рекомендую изучить «Внешние печатные формы в восьмерке» //infostart.ru/public/16952/
Для НЕ ПРОГРАММИСТОВ! Хотите свою печатную форму, а программировать не хотите? Нет ничего невозможного. Пишите. Договоримся.
Многие печатные формы в 1С 8 автоматом проставляют ФИО руководителя в разделе Подписи. При этом руководитель берется из Реестра сведений «Ответственные лица организаций». Но в реальных условиях требуется часто подписывать документ заместителю руководителя. Обычно в таких случаях автоматически внесенное значение «пербивается» вручную нужным, что совсем не удобно, особенно, когда документов более десятка в день.
Что делают некоторые программисты? Создают внешнюю печатную форму, в которой «намертво» в макет впечатан заместитель. Если заместителей несколько, то и печатных форм столько же. Понятно, что когда меняется заместитель, приходиться добавлять форму с новым заместителем.
Предлагаемая форма на примере документа «Акт об оказании производственных услуг» позволяет произвольным образом менять физическое лицо для подписи, с указанием должности и доверенности (в некоторых документах требуется доверенность, на основании которой зам может подписывать документы за руководителя).
Первоначально я полагал, что заместитель может быть один. К сожалению в «Ответственные лица организаций» нет возможности указать ответственное лицо «Заместитель», не меняя конфигурацию. Поэтому использовал ответственное лицо «Уполномоченный представитель» вместо заместителя.
Первоначально я полагал, что заместитель может быть один. К сожалению в «Ответственные лица организаций» нет возможности указать ответственное лицо «Заместитель», не меняя конфигурацию. Поэтому использовал ответственное лицо «Уполномоченный представитель» вместо заместителя.
Но когда выяснилось, что заместителей, подписывающих один и тот же тип документа, может быть несколько, пришлось использовать дополнительную форму.
После активного изучения вопроса «как привинтить форму к печатной форме» в интернете и исходных кодах, использовал следующий вариант:
Функция Печать() Экспорт Форма = ПолучитьФорму("ВыборОтветственногоЛица"); Если Форма.Открыта() тогда Форма.Закрыть("Да"); Иначе Тест = Форма.ОткрытьМодально(); Если (Тест <> "Да") Тогда Возврат Неопределено; КонецЕсли; КонецЕсли; Возврат ПечатьАктаОбОказанииУслуг(); КонецФункции // Печать
Для указания доверенности использовал поле «Комментарий» (Вкладка «Прочее» поле «Дополнительная информация») в справочнике «Физические лица». При этом комментарий должен иметь вначале ключевое слово «ДОВЕРЕННОСТЬ:». По нему определяется, что это не произвольный комментарий, а именно доверенность.
Для сохранения настроек (чтобы не вводить каждый раз ФЛ) добавил реквизиты ФизЛицо, Должность и ВариантОЛ, которые сохраняю при выходе из формы.
Процедура ПриОткрытии() ФизЛицо = ВосстановитьЗначение("ФизЛицо"); Должность = ВосстановитьЗначение("Должность"); ВариантОЛ = ВосстановитьЗначение("ВариантОЛ"); АктивностьСписков(); КонецПроцедуры Процедура ПриЗакрытии() СохранитьЗначение("ФизЛицо", ФизЛицо); СохранитьЗначение("Должность", Должность); СохранитьЗначение("ВариантОЛ", ВариантОЛ); КонецПроцедуры
Поле ВариантОЛ назначается переключателями «Руководитель», «Заместитель» (привет от «Уполномоченного представителя») и «Другой». При активном «Другой» становятся доступны поля «Физическое лицо» и «Должность».
Когда стал делать аналогичную форму для счета-фактуры, меня ожидал сюрприз. Так как формы ВыборОтветственногоЛица и в Акте и в Счете-Фактуре были идентичны, то 1С сохранил настройки формы по одному адресу. Теперь не нужно было выбирать Ответственное лицо для каждого вида печатной формы! Достаточно один раз указать, и для данного пользователя это значение подхватывалось на всех печатных формах, имеющих форму ВыборОтветственногоЛица.
При переносе логики формирования печати из стандартных модулей, достаточно в Модуле объекта добавить
Функция ОтветственныеЛицаОрганизаций(Организация, ДатаСреза, Исполнитель = Неопределено) // Переопределенная функция из общих модулей, возвращающая УполномоченныйПредставительДолжность, УполномоченныйПредставительДоверенность, УполномоченныйПредставительФизЛицо Функция ФИОФизЛица() // Иванов И. И. Функция ДоверенностьФизЛица() Процедура ВернутьПодписиРуководителей(ДанныеДляПечати, Организация, Дата)
А в самой функции, возвращающей ТабличныйДокумент, заменить присвоение ОбластьМакета.Параметры.ФИОРуководителя = Руководитель;
на свое, добавив должность и доверенность:
ОбластьМакета = Макет.ПолучитьОбласть("Подписи"); ДанныеДляПечати = Новый Структура(); ВернутьПодписиРуководителей(ДанныеДляПечати, Шапка.Организация, СсылкаНаОбъект.Дата); ОбластьМакета.Параметры.Заполнить(ДанныеДляПечати); ТабДокумент.Вывести(ОбластьМакета);
Следует обратить внимание, что в одних стандартных печатных формах руководитель обозначен как параметр ФИОРуководителя, в других – по-другому. Когда будете писать свой макет, указывайте параметры:
ФИОРуководителя ДолжностьРуководителя ДоверенностьРуководителя ФИОГлавногоБухгалтера
Желаю успехов в написании своих красивых и удобных внешних печатных форм!