(протестировано на Зарплата и управление персоналом, редакция 3.1 (3.1.8.112). Работает на веб-клиенте.
26-05-2024
Добавлена внешняя печатная форма печати дополнительного соглашения к трудовому договору для документа «КадровыйПеревод» !!!!
Предлагаю вашему вниманию внешнюю печатную форму трудового договора, формируемого из произвольно настраиваемого шаблона на основе файла Word. Вы сможете скачать собственно файл внешней обработки и пример шаблона договора.
Шаблон из себя представляет обыкновенный документ Word с привычными уже параметрическими вставками вида: [НаименованиеПараметраПодстановки]
Добавляете внешнюю обработку в систему "Дополнительные отчеты и обработки". Подсистема "Печать" добавит у документа "ПриемНаРаботу" дополнительную печатную форму "Трудовой договор (Word Шаблон)", все стандартно.
Вызывая эту печатную форму у конкретного документа, откроется следующее окно
Добавление строки, после ввода наименования шаблона предложит выбрать собственно файл шаблона, после загрузки которого в поле с "Состояние" пропишется "Шаблон загружен" (в противном случае "Загрузите шаблон"). Собственно, после того как шаблон загружен, двойной клик по состоянию "Шаблон загружен" вызывает процедуру формирования файла трудового договора.
Можно воспользоваться так же кнопками: — открыть загруженный шаблон как он есть, — загрузить в текущую строку таблицы шаблонов новый шаблон (перезалить исправленную версию, например), — сохранить текущий шаблон в файл, — сформировать трудовой договор на основе текущего шаблона.
Галочка "Выделять для проверки" по умолчанию стоит — действие ее таково, что те места сформированного документа, в которых параметры шаблона были заменены конкретными значениями будут выделены желтым цветом. Сделано для удобства, чтобы кадровик смог бегло просмотреть критичные места в договоре, а потом распечатать "на чистовую" сняв галочку проверки.
После формирования документа, производится его проверка на оставшиеся в тексте конструкции [ПараметрПодстановки] — они выделяются красным цветом
и на стороне 1С появляются сообщения
В этом примере, как-то так случилось, что в шаблоне документа есть параметр [ТрудовойДоговорНомер], но в списке параметров для подстановки в обработке такой параметр отсутствует.
Так же обрабатывается ситуация, когда параметр для подстановки есть и в шаблоне, и в обработке, но само значение, которое должно быть подставлено пустое (например не до конца заполнен сам документ ПриемНаРаботу, и некоторые параметры подстановки оказались пустыми).
Теперь собственно про список параметров подстановки. Параметры и уже вычисленные значения можно посмотреть раскрыв свертываемую группу "Больше информации" (наверно как-то по другому потом ее назову).
слева наименования параметров, которые в тексте word шаблона вы при его подготовке обрамляете в квадратные скобочки: [ТрудовойДоговорНомер].
За формирования списка этих параметров отвечает функция в модуле формы: ДанныеДляПечатиТрудовогоДоговора. Вы можете ее переписать с нуля и создать свой список параметров. Я же ее честно украл в типовой конфигурации 1С ЗУП 3.1 и добавил пару параметров.
ВНИМАНИЕ. Сохранение списка шаблонов происходит при закрытии окна обработки (см. вопрос ниже).
При первом использовании, когда список шаблонов пользователя пуст, подтягивается из макета пример Word шаблона, чтобы можно было протестировать.
P.S.
Объявляется благодарность автору статьи //infostart.ru/public/675307/ — это волшебник, у которого я просто стырил (с его разрешения, о чем указано в тексте его статьи) механизм работы с .docx на сервере. Вообще предыстория такова, что возникла задача печати кадровых документов, решаю по максимуму переложить создание шаблонов договоров на кадровика, по привычке открываю COM объект Word, радостно и быстро корректирую word документ с помощью вызовов VBA, потом замечаю — в веб-клиенте многие функции и процедуры не работают, заморачиваюсь, чтобы вызовы выбора файла и прочего работали на веб-клиенте и опа — главное то я упустил — в веб-клиенте с COM Объектами не поработаешь. И вот во время поисков решения натыкаюсь на этого волшебника. Пришлось понять как все это работает, и подпилить (изменения в использованном коде помечены // ТрудовойДоговор_WordШаблон) добавление выделения цветом текста, попутно прикоснувшись к тому что же такое xml схема .docx документа ))
В итоге, в обработке сделано так, что если отрытие COM Объекта Word возможно, то все делается через него, если нет — то волшебным образом процедурами и функциями на сервере ковыряемся в формате .docx и получаем тот же самый результат. Через COM Объект удобнее то, что, например, когда открывается сформированный документ, то это новый еще не сохраненный документ и вы можете распечатать и не сохранить его на диск, тогда как через парсинг XML файлов .docx формата обязательно результат сохраняется на диск, а уж потом открывается (если конечно Word установлен), с помощью ЗапуститьПриложение (которое и на веб клиенте работает).
В скриншоте этого нет — добавлена галочка "Формировать на сервере в любом случае (парсинг .docx)" — которая прогоняет подстановку значений параметров шаблона не через COM Объект, а как описано выше, через парсинг *.docx формата, даже если открытие COM Объекта возможно.
P.P.S.
Сохранение списка шаблонов (со сути сохранение настроек обработки) у меня происходит в элементе справочника "ДополнительныеОтчетыИОбработки" (в подсистеме дополнительных отчетов и обработок эта возможность предусмотрена, см. код), а значит нужно обладать правами на добавление и изменение этого справочника. Это наверно не очень хорошо. Поэтому подскажите где почитать — как грамотно организовать сохранение шаблонов у пользователя (явно это будет какое-то ХранилищеНастроек) — нужно хранить соответствие- где ключ — наименование шаблона, а значение — структура, в которой одно из свойств это двоичные данные из word файла шаблона. Может где написано про это простым и понятным языком и с конкретными примерами. Заранее спасибо.
P.P.P.S.
Если на Win компе не установлен Word, то можно сопоставить файл .docx с WordPad, который входит в стандартные приложения windows, и хоть мы обрабатываем .docx парсингом, процедура ЗапуститьПриложение откроет .docx файл в WordPad-е и даже сработает выделение текста цветом. Не знаю какие ограничения есть в этом варианте, но с простыми шаблонами точно все на ура.
26-05-2024 Добавлена внешняя печатная форма печати дополнительного соглашения для документа "КадровыйПеревод" !!!!
Все аналогично, небольшая адаптация для печати дополнительных соглашений в очень ограниченных случаях — никакой универсальности и т.д.
По сути, она создана для того, чтобы облегчить создания печатных ДС для случаев, когда изменен оклад, изменены или должность или подразделение, изменены и оклад и должность или подразделение. Добавлен лишь параметр [ДСДата] (дата дополнительного соглашения, с которого начинаются кадровые изменения), параметры связанные с окладом, подразделением и должностью берутся конечно же из кадрового перевода.
"Внутри" обработки пример шаблона, когда изменен только оклад.
28-06-2024 ИНСТРУКЦИЯ, ЧТО ДЕЛАТЬ, ЕСЛИ ВЫ ОБНОВИЛИ ЗУП НА РЕЛИЗ 3.1.10. (И ФОРМЫ ПЕРЕСТАЛИ РАБОТАТЬ)
Нужно, в модуле формы обработки скорректировать код процедур ЗагрузитьФайлСДискаВХранилищеНаКлиенте и ЗагрузитьИзФайлаПослеВыбораФайла следующим образом (просто удалите эти процедуры и замените на то что видите ниже):
&НаКлиенте
Процедура ЗагрузитьФайлСДискаВХранилищеНаКлиенте()
ОписаниеОповещения = Новый ОписаниеОповещения("ЗагрузитьИзФайлаПослеВыбораФайла", ЭтотОбъект);
ПараметрыЗагрузки = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузки.Диалог.Фильтр = НСтр("ru = '(*.docx) |*.docx'");
ПараметрыЗагрузки.ИдентификаторФормы = УникальныйИдентификатор;
ФайловаяСистемаКлиент.ЗагрузитьФайл(ОписаниеОповещения, ПараметрыЗагрузки);
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьИзФайлаПослеВыбораФайла(ПомещенныеФайлы, ПустойПараметр) Экспорт
Если ПомещенныеФайлы = Неопределено Или ПомещенныеФайлы.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ОчиститьСообщения();
ЭтаФорма.Элементы.WordШаблоны.ТекущиеДанные.АдресВоВременномХранилище = ПомещенныеФайлы.Хранение;
Если ЗначениеЗаполнено(ЭтаФорма.Элементы.WordШаблоны.ТекущиеДанные.АдресВоВременномХранилище) Тогда
ЭтаФорма.Элементы.WordШаблоны.ТекущиеДанные.Состояние = "Шаблон загружен";
Иначе
ЭтаФорма.Элементы.WordШаблоны.ТекущиеДанные.Состояние = "Загрузите шаблон";
КонецЕсли;
КонецПроцедуры
Сделал, как Вы написали, но после переоткрытия опять этот же шаблон. Не сохраняются новые, добавленные шаблоны
Права полные
А когда добавил, как внешнюю, заработало сохранение, а через Файл -открыть не работало!
Кстати поменяйте сам файл обработки на актуальный, это не сложно сделать
(1)
(3)
все верно, шаблоны сохраняются только когда обработка добавлена в дополнительны отчеты, используется реквизит «ХранилищеНастроек» справочника «ДополнительныеОтчетыИОбработки»
обновил файл на актуальный
(6)
А чтобы доп. соглашение работало для сотрудников попавших в базу после перехода с ЗУП 2.5, т.е. у них нет документа прием на работу, можете сделать, хотя бы отдельным файлом?
(7) Добрый день. Взглянул. Точно стало понятно, что быстро адаптировать под эту ситуацию не получится. Пока это пожелание поставлю в режим «не интенсивного размышления».
Подскажите пожалуйста, почему не получается добавить новый шаблон? Нажимаю на кнопку добавить, ввожу наименование и выходит окно «Метод объекта не обнаружен(ПоказатьПомещениеФайла)» А где его указывать?
можно как-то приобрести не имея подписки?
(9) Вам нужно обновить обработку — вы видимо на релиз 3.1.10. ххх — ЗУП перешли. Перезакачайте и должно заработать.
(10) за 1 стартмани, или я не понял вопрос.
я же написал нет подписки
(13) если я правильно все понимаю, то можно на бирже приобрести один стартмани (если у вас их нет) за деньги и все.
я могу купить у вас за деньги? на какой бирже?
(15)
вот ссылка на внутреннюю биржу инфостарта
имхо это самый простой путь.
(16) там надо быть партнером(((
что мешает нам договорится с Вами за реал?
спасибо Вам
(12) Тоже интересует приобретение данной обработки…