Здравствуйте. Сделал печатную форму доп соглашения к трудовому договору для зуп 2.5. Дальше задача стоит так: необходимо чтобы шапка и подвал оставались всегда одни и те же, а вот текст самого договора менялся. Возможно ли чтобы текст (пункты) договора можно было раз набить и сохранить с последующем добавлении при необходимости новых, а вот при печати их в зависимости от сотрудника выбирать?
По теме из базы знаний
- Групповая печать "Акт сдачи-приемки по договору подряда" для ЗУП 2.5
- Трудовой договор для 1С: ЗУП 2.5
- Оповещение о скором окончании трудового договора или договора ГПХ для ЗУП 2.5
- Трудовой договор и дополнительные соглашения к трудовому договору (ЗУП 2.5, УПП 1.3)
- Т-1 (Приказ о приеме работника), Т-1а (Приказ о приеме работников), Трудовой договор, Трудовой договор при дистанционной работе, Трудовой договор микропредприятий для ЗУП 2.5 / ЗУП 3.1 / КА 2.4 / 2.5 / ERP 2.4 / 2.5
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Попытка
ОбъектВорд = Новый COMОбъект("Word.Application");
Исключение
Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
КонецПопытки;
ОбъектВорд.Documents.Add("Здесь задаете путь к шаблону");
ШаблонВорд = ОбъектВорд.ActiveDocument;
ШаблонВорд.Bookmarks("Закладка1").Range.Text = Значение1; //Значение1 - нужный текст
ШаблонВорд.Bookmarks("Закладка2").Range.Text = Значение2;
//И так далее
ОбъектВорд.Application.Visible = Истина;
ОбъектВорд.Activate();
ПоказатьВ вордовском файле вбиваете текст, какой нужен, и там, куда надо вставить, например, ФИО и еще какие-то данные, создаете закладки, (можно по справке вордовской посмотреть, как это делается, в разных версиях методы могут отличаться). В 2000-м ворде, помню, переменные можно было создавать. А в 2007-м - закладки делаю.
И из 1С-ки по названиям закладок уже документ заполняете.
Как-то так. Думаю, на этом форуме есть кучка примеров, мне лень искать.
(8) sashasasha89, нет, имя шаблона - там, где путь прописывается, например: ОбъектВорд.Documents.Add("D:\Шаблоны\ИмяФайла.docx");
Значение1, Значение2 - это то, что вам нужно вбить в шаблон: "Иванов Иван Иванович", "грузчик", и т.п. - любые данные, которые Вы предварительно из базы данных собираете запросом из регистров и справочников.
Если надо, могу подробнее написать код.
Значение1, Значение2 - это то, что вам нужно вбить в шаблон: "Иванов Иван Иванович", "грузчик", и т.п. - любые данные, которые Вы предварительно из базы данных собираете запросом из регистров и справочников.
Если надо, могу подробнее написать код.
(8) sashasasha89, у меня в зависимости от данных по сотруднику выводятся разные значения в закладке
Если Данные.ИныеУсловияДоговора ="" тогда
ТекДок.Bookmarks("ИныеУсловияДоговора").Range.Text ="1.8. Договор заключен на неопределенный срок.";
Иначе
ТекДок.Bookmarks("ИныеУсловияДоговора").Range.Text = "1.8. Договор заключен на определенный срок в соответствии с ч. 1 ст. 59 ТК РФ "+Данные.ИныеУсловияДоговора+", за которым в соответствии с трудовым законодательством и иными нормативными правовыми актами, содержащими нормы трудового права, сохраняется место работы.";
КонецЕсли;
ЗапросШапка = Новый Запрос;
ЗапросШапка.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
ЗапросШапка.Текст =
"ВЫБРАТЬ
| КорректировкаДолга.Номер,
| КорректировкаДолга.Дата,
| КорректировкаДолга.КонтрагентДебитор КАК Дебитор,
| КорректировкаДолга.КонтрагентКредитор КАК Кредитор,
| КорректировкаДолга.Организация,
| КорректировкаДолга.ВалютаДокумента
|ИЗ
| Документ.КорректировкаДолга КАК КорректировкаДолга
|ГДЕ
| КорректировкаДолга.Ссылка = &ТекущийДокумент";
Шапка = ЗапросШапка.Выполнить().Выбрать();
Шапка.Следующий();
Запрос = Новый Запрос;
НачалоДня = Новый Граница(КонецДня(Шапка.Дата-1),ВидГраницы.Включая);
КонецДня = Новый Граница(КонецДня(Шапка.Дата),ВидГраницы.Включая);
Запрос.УстановитьПараметр("НаДатуНачало", НачалоДня);
Запрос.УстановитьПараметр("НаДатуКонец", КонецДня);
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.РасчетыСПоставщикамиИПодрядчиками);
Запрос.УстановитьПараметр("Контрагент", Шапка.Кредитор);
Запрос.УстановитьПараметр("Организация", Шапка.Организация);
Запрос.УстановитьПараметр("ВидСубконтоКонтрагенты", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);
Запрос.Текст = "ВЫБРАТЬ
| ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
| ХозрасчетныйОстатки.СуммаОстатокКт КАК СуммаОстатокКт
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(&НаДатуКонец, Счет В ИЕРАРХИИ (&Счет), &ВидСубконтоКонтрагенты, )
| КАК ХозрасчетныйОстатки
|ГДЕ ХозрасчетныйОстатки.Субконто1=&Контрагент";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СуммаОстатокКт=Выборка.СуммаОстатокКт;
КонецЦикла;
НомерСоглашения = ОбщегоНазначения.ПолучитьНомерНаПечать(СсылкаНаОбъект);
ДатаСоглашения = Формат(Шапка.Дата, "ДЛФ=DD");
НаименованиеКонтрагента = ПредставлениеКредитора;
ИННКонтрагента = ИННКредитора;
Если Выборка.СуммаОстатокКт = Неопределено Тогда
ОстатокЗадолженности = "0,00 руб."
Иначе
ОстатокЗадолженности = Формат(Выборка.СуммаОстатокКт,"ЧЦ=15; ЧДЦ=2; ЧН=0,00") + " руб.";
КонецЕсли;
//Попытка создать COM объект
Попытка
ОбъектВорд = Новый COMОбъект("Word.Application");
Исключение
Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат Неопределено;
КонецПопытки;
//Путь к шаблону
ОбъектВорд.Documents.Add("D:\КаталогШаблонов\Шаблон.docx");
ШаблонВорд = ОбъектВорд.ActiveDocument;
ШаблонВорд.Bookmarks("НомерСоглашения").Range.Text = НомерСоглашения;
ШаблонВорд.Bookmarks("ДатаСоглашения").Range.Text = ДатаСоглашения;
ШаблонВорд.Bookmarks("НаименованиеКонтрагента").Range.Text = НаименованиеКонтрагента;
ШаблонВорд.Bookmarks("ИННКонтрагента").Range.Text = ИННКонтрагента;
ШаблонВорд.Bookmarks("ОстатокЗадолженности").Range.Text = ОстатокЗадолженности;
ОбъектВорд.Application.Visible = Истина;
ОбъектВорд.Activate();
ПоказатьВот выдержка из ВПН для документа "Корректировка долга", модуль здесь, конечно, не полный, поэтому могла что-то пропустить или оставить лишнее.
Все, что примерно так обзывается: ШаблонВорд.Bookmarks("ИмяЗакладки").Range.Text - это закладки в тексте шаблона Word, т.е. в ворде я прямо так вбиваю текст: "Акт взаиморасчетов НомерСоглашения от ДатаСоглашения", потом выделяю мышкой НомерСоглашения, и на вкладке "Вставка" выбираю пункт "Закладка", в открывшемся окошке вбиваю наименование закладки, (тупо "НомерСоглашения"), жму "ок", потом то же самое с "ДатаСоглашения" проделываю, - текст закладок выделяется квадратными скобками, и потом программно эти слова в квадратных скобках заменяются на текст, который из 1С-ки грузится.
Как вариант, можете сделать простейший вордовский шаблон с одной закладкой, например, "Закладка1", и в 1С-ке сделать обработку, которая по нажатию кнопки будет запускать процедуру с кодом:
Попытка
ОбъектВорд = Новый COMОбъект("Word.Application");
Исключение
Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат Неопределено;
КонецПопытки;
ОбъектВорд.Documents.Add("D:\КаталогШаблонов\Шаблон.docx"); //путь, естественно, Ваш
ШаблонВорд = ОбъектВорд.ActiveDocument;
ШаблонВорд.Bookmarks("Закладка1").Range.Text = "То, что я хочу видеть в этом тексте, вместо закладки";
ОбъектВорд.Application.Visible = Истина;
ОбъектВорд.Activate();
ПоказатьИ все, при запуске обработки будет открываться Word, с уже обработанным документом.
(13) sashasasha89, у Вас ворд какой версии? Вы закладки обозвали точно так же, как в модуле обработки? (Имею в виду, что можно в вордовском тексте выделить слово "сотрудник", а закладку, привязанную к нему, обозвать "работник", тогда 1С-ка по закладке "сотрудник" ничего не найдет).
(16) us, я параметры передаю через
а в Worde через поля задаю отображение данных параметров
ТекДок.Variables("ВидЗанятости").Value = Данные.ВидЗанятости;
ТекДок.Variables("ДатаДоговора").Value = Данные.ДатаДоговора;
ТекДок.Variables("НомерДоговора").Value = Данные.НомерДоговора;
а в Worde через поля задаю отображение данных параметров
(17) max996, тоже можно, я так в 2000-м ворде делала, (народ, помню, и тупо через замену текста делал даже как-то). Единственно, чем мне в то время не нравился этот метод, - иногда бывали сбои, и на печать выводились имена переменных, а не данные, которые были нужны.
Сейчас, с закладками, вроде, таких проблем не наблюдаю.
Сейчас, с закладками, вроде, таких проблем не наблюдаю.
Переменная не определена (ТекДок). Добавил Перем ТекДок. Теперь: Значение не является значением объектного типа (Variables)
И возможно сделать чтобы при нажатии на кнопку "Печать" выходил список шаблонов который требуется вывести на печать?
И возможно сделать чтобы при нажатии на кнопку "Печать" выходил список шаблонов который требуется вывести на печать?
(19) sashasasha89, ТекДок, в данной случае, не переменная, а ТекДок = Новый COMОбъект("Word.Application");
По кнопке список, конечно, можно сделать. Когда несколько внешних печатных форм, (на каждый шаблон отдельную лучше создать), к нужному объекту подключите, программа, по идее, сама их список сформирует.
По кнопке список, конечно, можно сделать. Когда несколько внешних печатных форм, (на каждый шаблон отдельную лучше создать), к нужному объекту подключите, программа, по идее, сама их список сформирует.
Перем мСохраненныйДок Экспорт;
Функция СформироватьЗапросДляПечатиТрудовогоДоговора(ФИО)
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ФизическиеЛица.Ссылка,
| КонтактнаяИнформация.Вид.ВидОбъектаКонтактнойИнформации.Ссылка,
| КонтактнаяИнформация.Поле1 КАК Индекс,
| КонтактнаяИнформация.Поле2 КАК Регион,
| КонтактнаяИнформация.Поле4 КАК Город,
| КонтактнаяИнформация.Поле6 КАК Улица,
| КонтактнаяИнформация.Поле7 КАК Дом,
| КонтактнаяИнформация.Поле9 КАК Квартира
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
| ПО КонтактнаяИнформация.Объект.Ссылка = ФизическиеЛица.Ссылка
|ГДЕ
| ФизическиеЛица.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ФИО);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Возврат "" + ВыборкаДетальныеЗаписи.Индекс + ", " + ВыборкаДетальныеЗаписи.Регион + ", " + ВыборкаДетальныеЗаписи.Город + ", " + ВыборкаДетальныеЗаписи.Улица + ", " + ВыборкаДетальныеЗаписи.Дом + " - " + ВыборкаДетальныеЗаписи.Квартира;
КонецЦикла;
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
КонецФункции // СформироватьЗапросДляПечати()
Функция ПолучитьПаспортныеДанныеСотрудника(ФИО)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ФизическиеЛица.Ссылка,
| ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид КАК ВидДокумента,
| ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия КАК Серия,
| ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер КАК НомерПаспорта,
| ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи КАК ДатаВыдачи,
| ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК КемВыдан,
| ПаспортныеДанныеФизЛицСрезПоследних.ДокументКодПодразделения КАК КодПодразделения,
| ПаспортныеДанныеФизЛицСрезПоследних.ДатаРегистрацииПоМестуЖительства КАК ДатаРегистрации
|ИЗ
| РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
| ПО ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.Ссылка = ФизическиеЛица.Ссылка
|ГДЕ
| ФизическиеЛица.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ФИО);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Возврат "" + ВыборкаДетальныеЗаписи.ВидДокумента + ", серия: " + ВыборкаДетальныеЗаписи.Серия +" №" + ВыборкаДетальныеЗаписи.НомерПаспорта +
", выдан " + Формат(ВыборкаДетальныеЗаписи.ДатаВыдачи, "ДЛФ=Д") + " г., " + ВыборкаДетальныеЗаписи.КемВыдан ;
КонецЦикла;
КонецФункции
Функция Печать() Экспорт
ТабДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Договор");
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.Номер = СсылкаНаОбъект.НомерДоговора;
ОбластьМакета.Параметры.Дата = Формат(СсылкаНаОбъект.ДатаДоговора, "ДЛФ=ДД");
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Договор");
// ОбластьМакета.Параметры.ФИОСотрудника = СсылкаНаОбъект;
ТекДок = Новый COMОбъект("Word.Application");
ТекДок.Variables("ФИОСотрудника").Value = СсылкаНаОбъект;
Попытка
ОбъектВорд = Новый COMОбъект("Word.Application");
Исключение
Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание);
Возврат Неопределено;
КонецПопытки;
ОбъектВорд.Documents.Add("G:\КЛИЕНТЫ НА ОБСЛУЖИВАНИИ\Солнечный\Договор в 1с.docx"); //путь, естественно, Ваш
ШаблонВорд = ОбъектВорд.ActiveDocument;
ШаблонВорд.Bookmarks("Закладка1").Range.Text = "То, что я хочу видеть в этом тексте, вместо закладки";
ОбъектВорд.Application.Visible = Истина;
ОбъектВорд.Activate();
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
ОбластьМакета.Параметры.ФИО = СсылкаНаОбъект;
ОбластьМакета.Параметры.ДатаРождения = Формат(СсылкаНаОбъект.Физлицо.ДатаРождения, "ДЛФ=ДД") + "р";
ОбластьМакета.Параметры.Адрес = СформироватьЗапросДляПечатиТрудовогоДоговора(СсылкаНаОбъект.Физлицо);
ОбластьМакета.Параметры.Паспорт = ПолучитьПаспортныеДанныеСотрудника(СсылкаНаОбъект.Физлицо);
ОбластьМакета.Параметры.ИНН = СсылкаНаОбъект.Физлицо.ИНН;
ОбластьМакета.Параметры.СНИЛС = СсылкаНаОбъект.Физлицо.СтраховойНомерПФР;
ОбластьМакета.Параметры.ФИО1 = ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица(СсылкаНаОбъект);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подпись");
ОбластьМакета.Параметры.ДатаПодвал = Формат(СсылкаНаОбъект.ДатаДоговора, "ДЛФ=Д");
ТабДокумент.Вывести(ОбластьМакета);
//Возврат ТабДокумент;
КонецФункции
Показать
(23) sashasasha89, ТекДок.Variables("ФИОСотрудника").Value = СсылкаНаОбъект;
я бы здесь ругнулась, однозначно. Что такое "СсылкаНаОбъект"? Но, главное не здесь.
После ТекДок = Новый COMОбъект("Word.Application"); обязательно надо указать, какой файл Вы берете в качестве шаблона, (можно и не указывать, программа создаст новый, без проблем, но Вы-то указываете конктретно - создай новый вордовский документ и замени в нем переменную "ФИОСотрудника", - программа справедливо ругается, что никаких переменных в документе нет).
я бы здесь ругнулась, однозначно. Что такое "СсылкаНаОбъект"? Но, главное не здесь.
После ТекДок = Новый COMОбъект("Word.Application"); обязательно надо указать, какой файл Вы берете в качестве шаблона, (можно и не указывать, программа создаст новый, без проблем, но Вы-то указываете конктретно - создай новый вордовский документ и замени в нем переменную "ФИОСотрудника", - программа справедливо ругается, что никаких переменных в документе нет).
(23) sashasasha89, у меня вот этого вообще нет
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
ОбластьМакета.Параметры.ФИО = СсылкаНаОбъект;
ОбластьМакета.Параметры.ДатаРождения = Формат(СсылкаНаОбъект.Физлицо.ДатаРождения, "ДЛФ=ДД") + "р";
ОбластьМакета.Параметры.Адрес = СформироватьЗапросДляПечатиТрудовогоДоговора(СсылкаНаОбъект.Физлицо);
ОбластьМакета.Параметры.Паспорт = ПолучитьПаспортныеДанныеСотрудника(СсылкаНаОбъект.Физлицо);
ОбластьМакета.Параметры.ИНН = СсылкаНаОбъект.Физлицо.ИНН;
ОбластьМакета.Параметры.СНИЛС = СсылкаНаОбъект.Физлицо.СтраховойНомерПФР;
ОбластьМакета.Параметры.ФИО1 = ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица(СсылкаНаОбъект);
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подпись");
ОбластьМакета.Параметры.ДатаПодвал = Формат(СсылкаНаОбъект.ДатаДоговора, "ДЛФ=Д");
ТабДокумент.Вывести(ОбластьМакета);
//Возврат ТабДокумент;
КонецФункции
Показать
Все же удобнее в моем случаи хотелось бы сделать так: в справочнике "сотрудники" при нажатии на кнопку печать выходил выбор какой макет сформировать. Возможно ли чтобы в одной печатной форме сделать несколько макетом и когда нажимаешь на печать вышел сначала список макетов, которые можно напечатать?
Сделал чтобы выходил список макетов, которые хочу напечатать, но при выборе любого макета печатается только первый.
Функция Печать() Экспорт
ладОтчет = Новый ТабличныйДокумент;
ладОтчет.Очистить();
спМакеты = Новый СписокЗначений;
спМакеты.Добавить("Договор");
спМакеты.Добавить("Договор1");
выб = спМакеты.ВыбратьЭлемент();
Если выб=неопределено Тогда
возврат неопределено;
КонецЕсли;
лаМакет = ПолучитьМакет(выб.Значение);
ТабДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Договор");
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.Номер = СсылкаНаОбъект.НомерДоговора;
ОбластьМакета.Параметры.Дата = Формат(СсылкаНаОбъект.ДатаДоговора, "ДЛФ=ДД");
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Договор");
ОбластьМакета.Параметры.ФИОСотрудника = СсылкаНаОбъект;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Имена");
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
ОбластьМакета.Параметры.ФИО = СсылкаНаОбъект;
ОбластьМакета.Параметры.ДатаРождения = Формат(СсылкаНаОбъект.Физлицо.ДатаРождения, "ДЛФ=ДД") + "р";
ОбластьМакета.Параметры.Адрес = СформироватьЗапросДляПечатиТрудовогоДоговора(СсылкаНаОбъект.Физлицо);
ОбластьМакета.Параметры.Паспорт = ПолучитьПаспортныеДанныеСотрудника(СсылкаНаОбъект.Физлицо);
ОбластьМакета.Параметры.ИНН = СсылкаНаОбъект.Физлицо.ИНН;
ОбластьМакета.Параметры.СНИЛС = СсылкаНаОбъект.Физлицо.СтраховойНомерПФР;
ОбластьМакета.Параметры.ФИО1 = ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица(СсылкаНаОбъект);
ОбластьМакета.Параметры.Дата = Формат(СсылкаНаОбъект.ДатаДоговора, "ДЛФ=ДД");
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
ТабДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет("Договор1");
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.Номер = СсылкаНаОбъект.НомерДоговора;
ОбластьМакета.Параметры.Дата = Формат(СсылкаНаОбъект.ДатаДоговора, "ДЛФ=ДД");
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Договор");
ОбластьМакета.Параметры.ФИОСотрудника = СсылкаНаОбъект;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Имена");
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
ОбластьМакета.Параметры.ФИО = СсылкаНаОбъект;
ОбластьМакета.Параметры.ДатаРождения = Формат(СсылкаНаОбъект.Физлицо.ДатаРождения, "ДЛФ=ДД") + "р";
ОбластьМакета.Параметры.Адрес = СформироватьЗапросДляПечатиТрудовогоДоговора(СсылкаНаОбъект.Физлицо);
ОбластьМакета.Параметры.Паспорт = ПолучитьПаспортныеДанныеСотрудника(СсылкаНаОбъект.Физлицо);
ОбластьМакета.Параметры.ИНН = СсылкаНаОбъект.Физлицо.ИНН;
ОбластьМакета.Параметры.СНИЛС = СсылкаНаОбъект.Физлицо.СтраховойНомерПФР;
ОбластьМакета.Параметры.ФИО1 = ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица(СсылкаНаОбъект);
ОбластьМакета.Параметры.Дата = Формат(СсылкаНаОбъект.ДатаДоговора, "ДЛФ=ДД");
ТабДокумент.Вывести(ОбластьМакета);
Возврат ТабДокумент;
КонецФункции
Показать
Получается можно объединить эти два способа? В Ворде сохраняешь сколько нужно разных текстов договоров, а при нажатии на печать выходил их список и можно было выбрать любой. Только получается его нужно будет предварительно добавить в код?
Ошибка при открытие помощи в обработки:
{ВнешняяОбработка.ВыбратьПечатнуюФорму.МодульОбъекта(248)}: Ошибка при вызове метода контекста (ПолучитьФорму)
Форма = ПолучитьФорму("ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp");
по причине:
Неизвестное имя формы. Имя: "ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp"
И не сохраняется шаблон word.
{ВнешняяОбработка.ВыбратьПечатнуюФорму.МодульОбъекта(248)}: Ошибка при вызове метода контекста (ПолучитьФорму)
Форма = ПолучитьФорму("ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp");
по причине:
Неизвестное имя формы. Имя: "ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp"
И не сохраняется шаблон word.
Пробовал по-разному. Когда открывается форма выбора макетов WORD нажимаю "Добавить". Выбираю Файл и жму "Сохранить" - пишет "Хранилище пустое". Если даже нет ошибка, то окно по кнопке ОК закрывается, а печатная форма не появляется. Если пытаюсь открыть помощь: {ВнешняяОбработка.ВыбратьПечатнуюФорму.МодульОбъекта(248)}: Ошибка при вызове метода контекста (ПолучитьФорму)
Форма = ПолучитьФорму("ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp");
по причине:
Неизвестное имя формы. Имя: "ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp"
Форма = ПолучитьФорму("ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp");
по причине:
Неизвестное имя формы. Имя: "ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp"
Прикрепленные файлы:
И еще вопрос. Есть документ "Кадровое перемещение". В нем может быть несколько сотрудников. Как можно сделать чтобы напечатать договор только для одного выделенного сотрудника в табличной части? Для первого получается, а дальше нет.
(47) sashasasha89,
попробуйте переписать что то типа этого(на многострочные таб части не расчитывал) :
Я так понимаю, что "жму "Сохранить"" - это Вы кнопку в верхней панели жмете? Нееее... Не правильно. Эта кнопка нужна для сохранения уже загруженного шаблона на локальный диск для редактирования текста/исправления/добавления нового параметра и т.д.(об этом написано в части "Как редактировать шаблон?" инструкции) , а вам для начала, нужно указать файл шаблона WORD и нажать кнопку "ОК" в нижней части формы.
По поводу ошибки... Попробуйте
Заменить на
Хотя, сейчас пробовал на ЗУП 2.5.104.1 платформа 8.3.7.2027, все работает, проблем ни каких
Как можно сделать чтобы напечатать договор только для одного выделенного сотрудника
попробуйте переписать что то типа этого(на многострочные таб части не расчитывал) :
ТекущийСотрудник = ТабЧасть.ТекущиеДанные.Сотрудник;
Выбираю Файл и жму "Сохранить" - пишет "Хранилище пустое".
Я так понимаю, что "жму "Сохранить"" - это Вы кнопку в верхней панели жмете? Нееее... Не правильно. Эта кнопка нужна для сохранения уже загруженного шаблона на локальный диск для редактирования текста/исправления/добавления нового параметра и т.д.(об этом написано в части "Как редактировать шаблон?" инструкции) , а вам для начала, нужно указать файл шаблона WORD и нажать кнопку "ОК" в нижней части формы.
По поводу ошибки... Попробуйте
Форма = ПолучитьФорму("ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp");
Заменить на
Форма = ПолучитьФорму("ФормаHelp");
Хотя, сейчас пробовал на ЗУП 2.5.104.1 платформа 8.3.7.2027, все работает, проблем ни каких
(48) vovan_victory, (48) vovan_victory,
ТекущийСотрудник = ТабЧасть.ТекущиеДанные.Сотрудник; - это вроде только на форме работает? Попробую.
Спасибо. Заменил Форма = ПолучитьФорму("ФормаHelp"); Помощь теперь открывается.
И добавить договор в макеты получилось. Сейчас буду пробовать.
ТекущийСотрудник = ТабЧасть.ТекущиеДанные.Сотрудник; - это вроде только на форме работает? Попробую.
Спасибо. Заменил Форма = ПолучитьФорму("ФормаHelp"); Помощь теперь открывается.
И добавить договор в макеты получилось. Сейчас буду пробовать.
Я только не понял как получить параметры для заполнение договора?
Запрос выполнил. Нажимаю параметры запроса и ни чего не появляется. Как я понял там должно быть то, что я хочу из запроса получить в печатную форму?
Запрос выполнил. Нажимаю параметры запроса и ни чего не появляется. Как я понял там должно быть то, что я хочу из запроса получить в печатную форму?
(50) sashasasha89,
Внимательно читаем инструкцию начиная с пункта 8. Для начала, я рекомендую, подключить обработку к справочнику "Сотрудники", открыть форму выбора шаблона и в колонке "Алгоритм" снять флажок.Потом открыть форму настройки печатной формы(контекст - "Настроить печатную форму") и настроить заполнение какого то параметра.При снятой "галке" Алгоритм, писать какие то запросы не нужно. За источник данных для заполнения шаблона принимается типовой запрос, который используется для заполнения печатной формы "Трудовой договор" в справочнике "Сотрудники".
Я только не понял как получить параметры для заполнение договора?
Внимательно читаем инструкцию начиная с пункта 8. Для начала, я рекомендую, подключить обработку к справочнику "Сотрудники", открыть форму выбора шаблона и в колонке "Алгоритм" снять флажок.Потом открыть форму настройки печатной формы(контекст - "Настроить печатную форму") и настроить заполнение какого то параметра.При снятой "галке" Алгоритм, писать какие то запросы не нужно. За источник данных для заполнения шаблона принимается типовой запрос, который используется для заполнения печатной формы "Трудовой договор" в справочнике "Сотрудники".
Если пытаюсь открыть помощь: {ВнешняяОбработка.ВыбратьПечатнуюФорму.МодульОбъекта(248)}: Ошибка при вызове метода контекста (ПолучитьФорму)
За одно, проверил и эту ошибку. Проблем нет! Все работает! Теперь, я совсем не понимаю, что и куда Вы подключаете.
Остановился на обычных макетах. Сделал пока два при необходимости добавлю больше. Вопрос теперь в другом: из документа кадровое перемещение печатает только для первого сотрудника. Как реализовать чтобы печатался для выделенного сотрудника или для всех? Для всех надо в цикл добавить?
(57) sashasasha89,
Для выделенного сотрудника примерный вариант в предыдущих постах, а все нужно добавлять цикл,но нужно анализировать код на предмет что нужно включать в цикл, а что нет. Например, нет смысла 100 раз получать шаблон из базы и т.д.
Как реализовать чтобы печатался для выделенного сотрудника или для всех? Для всех надо в цикл добавить?
Для выделенного сотрудника примерный вариант в предыдущих постах, а все нужно добавлять цикл,но нужно анализировать код на предмет что нужно включать в цикл, а что нет. Например, нет смысла 100 раз получать шаблон из базы и т.д.
(58) vovan_victory,
Если Возврат ТабДокумент; в цикл добавляю тогда печатная форма не формируется.
Если Возврат ТабДокумент; в цикл добавляю тогда печатная форма не формируется.
Функция Печать() Экспорт
ладОтчет = Новый ТабличныйДокумент;
ладОтчет.Очистить();
спМакеты = Новый СписокЗначений;
спМакеты.Добавить("Договор");
спМакеты.Добавить("Договор1");
выб = спМакеты.ВыбратьЭлемент();
Если выб=неопределено Тогда
возврат неопределено;
КонецЕсли;
лаМакет = ПолучитьМакет(выб.Значение);
ТабДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет(выб.Значение);
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакета.Параметры.Номер = Строка(Формат(Число(СсылкаНаОбъект.Номер),"ЧГ=0"));
ОбластьМакета.Параметры.Дата = Формат(СсылкаНаОбъект.Дата, "ДЛФ=ДД");
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Договор");
Для Каждого ФизЛица Из ЭтотОбъект.СсылкаНаОбъект.РаботникиОрганизации Цикл
ОбластьМакета.Параметры.ФИОСотрудника = ФизЛица.Сотрудник;
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Имена");
ТабДокумент.Вывести(ОбластьМакета);
ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
ОбластьМакета.Параметры.ФИО = ФизЛица.Сотрудник;
ОбластьМакета.Параметры.ДатаРождения = Формат(ФизЛица.Сотрудник.Физлицо.ДатаРождения, "ДЛФ=ДД") + "р";
ОбластьМакета.Параметры.Адрес = СформироватьЗапросДляПечатиТрудовогоДоговора(ФизЛица.Сотрудник.Физлицо);
ОбластьМакета.Параметры.Паспорт = ПолучитьПаспортныеДанныеСотрудника();
//ОбластьМакета.Параметры.Паспорт = ПолучитьПаспортныеДанныеСотрудника(ФизЛица.Сотрудник.Физлицо);
ОбластьМакета.Параметры.ИНН = ФизЛица.Физлицо.ИНН;
ОбластьМакета.Параметры.СНИЛС = ФизЛица.Физлицо.СтраховойНомерПФР;
ОбластьМакета.Параметры.ФИО1 = ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица(ФизЛица.Физлицо);
ОбластьМакета.Параметры.Дата = Формат(ФизЛица.ДатаНачала, "ДЛФ=ДД");
ТабДокумент.Вывести(ОбластьМакета);
КонецЦикла;
Возврат ТабДокумент;
КонецФункции
Показать
(66) sashasasha89, я думаю, в этом нет ни какого смысла. Физ лицо считается сотрудником организации после приема на работу. Дата приема и увольнения, регистрируется в периодическом регистре сведений. Для получения статуса сотрудника(работает или уволен) на определенную дату(а не на интервал дат), нужно получить срез последних регистра сведений на нужную дату.Если получать срез последних(т.е последнюю запись по сотруднику/кам) на интервал дат, то, это будет выглядеть как средняя температура по больнице.
(67) vovan_victory, Я уже нашел как сформировать его за период. Не могу как вывести колонку пенсионер сотрудник или нет? Есть про инвалидность - я его вывел. А про пенсию найти не могу.
И плюс сотрудники некоторые задвоились, а то и за троились. Хотя данные во всех строках одинаковый.
И плюс сотрудники некоторые задвоились, а то и за троились. Хотя данные во всех строках одинаковый.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот