Договор в ЗУП 2.5

1. sashasasha89 13.07.16 13:35 Сейчас в теме
Здравствуйте. Сделал печатную форму доп соглашения к трудовому договору для зуп 2.5. Дальше задача стоит так: необходимо чтобы шапка и подвал оставались всегда одни и те же, а вот текст самого договора менялся. Возможно ли чтобы текст (пункты) договора можно было раз набить и сохранить с последующем добавлении при необходимости новых, а вот при печати их в зависимости от сотрудника выбирать?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ЧерныйКот 13.07.16 13:42 Сейчас в теме
(1) sashasasha89, подели макет на области и выводи нужные в зависимости от сотрудника...
3. sashasasha89 13.07.16 13:45 Сейчас в теме
(2) ЧерныйКот,
Рассматривал такой вариант. Но они могут часто меняться связи с изменениями закона (организация бюджетная) и нужно чтобы можно было пункты заносить в ручную.
4. us 13 13.07.16 13:54 Сейчас в теме
(1) sashasasha89, а сделать шаблон в Word с закладками, (заполнять программно, естесно), и пусть этот шаблон потом кадровик правит, по необходимости, (только обучить,чтобы закладки не грохнул)?
5. max996 3 13.07.16 14:36 Сейчас в теме
(4) us, а можно поподробнее - это как? может есть материал какой по этой теме? тоже нужно 16 впфок примерно одинаковых сделать...
6. us 13 13.07.16 15:06 Сейчас в теме
    Попытка
        ОбъектВорд = Новый 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С-ки по названиям закладок уже документ заполняете.
Как-то так. Думаю, на этом форуме есть кучка примеров, мне лень искать.
7. max996 3 14.07.16 11:28 Сейчас в теме
8. sashasasha89 14.07.16 11:52 Сейчас в теме
(6) us, Значение1, Значение2 и т.д. это имя шаблона в word? Как их потом выбирать при печати?
9. us 13 14.07.16 12:01 Сейчас в теме
(8) sashasasha89, нет, имя шаблона - там, где путь прописывается, например: ОбъектВорд.Documents.Add("D:\Шаблоны\ИмяФайла.docx");
Значение1, Значение2 - это то, что вам нужно вбить в шаблон: "Иванов Иван Иванович", "грузчик", и т.п. - любые данные, которые Вы предварительно из базы данных собираете запросом из регистров и справочников.
Если надо, могу подробнее написать код.
10. sashasasha89 14.07.16 12:14 Сейчас в теме
(9) us, Если можно то поподробнее. Или если есть ссылку дайте почитаю.
12. max996 3 14.07.16 12:49 Сейчас в теме
(8) sashasasha89, у меня в зависимости от данных по сотруднику выводятся разные значения в закладке
	Если  Данные.ИныеУсловияДоговора ="" тогда
				
				ТекДок.Bookmarks("ИныеУсловияДоговора").Range.Text ="1.8. Договор заключен на неопределенный срок.";
			Иначе 
				ТекДок.Bookmarks("ИныеУсловияДоговора").Range.Text = "1.8.	Договор заключен на определенный срок в соответствии с ч. 1 ст. 59 ТК РФ "+Данные.ИныеУсловияДоговора+", за которым в соответствии с трудовым законодательством и иными нормативными правовыми актами, содержащими нормы трудового права, сохраняется место работы."; 
				КонецЕсли;
11. us 13 14.07.16 12:44 Сейчас в теме
     ЗапросШапка = Новый Запрос;
	ЗапросШапка.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект);
	ЗапросШапка.Текст =
	"ВЫБРАТЬ
	|	КорректировкаДолга.Номер,
	|	КорректировкаДолга.Дата,
	|	КорректировкаДолга.КонтрагентДебитор КАК Дебитор,
	|	КорректировкаДолга.КонтрагентКредитор КАК Кредитор,
	|	КорректировкаДолга.Организация,
	|	КорректировкаДолга.ВалютаДокумента
	|ИЗ
	|	Документ.КорректировкаДолга КАК КорректировкаДолга
	|ГДЕ
	|	КорректировкаДолга.Ссылка = &ТекущийДокумент";
	Шапка = ЗапросШапка.Выполнить().Выбрать();
	Шапка.Следующий();

        Запрос = Новый Запрос;
	НачалоДня = Новый Граница(КонецДня(Шапка.Дата-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 14.07.16 13:44 Сейчас в теме
Печатную форму в ворде удалось вывести, но параметры с базы не заполняются. Выходят как в макете:
[ФИО][ДатаРождения] [Адрес] [Паспорт] и т.д.
14. us 13 14.07.16 13:54 Сейчас в теме
(13) sashasasha89, у Вас ворд какой версии? Вы закладки обозвали точно так же, как в модуле обработки? (Имею в виду, что можно в вордовском тексте выделить слово "сотрудник", а закладку, привязанную к нему, обозвать "работник", тогда 1С-ка по закладке "сотрудник" ничего не найдет).
15. sashasasha89 14.07.16 13:55 Сейчас в теме
(14) us, Закладка выходит правильно. Не выводятся данные из базы 1с.
Word 2007, но возможно и на других версия будет работать.
Прикрепленные файлы:
16. us 13 14.07.16 14:22 Сейчас в теме
(15) sashasasha89, у меня в 2007-м все закладки обозначены серыми скобками почему-то:
Прикрепленные файлы:
17. max996 3 14.07.16 15:53 Сейчас в теме
(16) us, я параметры передаю через
 ТекДок.Variables("ВидЗанятости").Value = Данные.ВидЗанятости;
			ТекДок.Variables("ДатаДоговора").Value = Данные.ДатаДоговора;
			ТекДок.Variables("НомерДоговора").Value = Данные.НомерДоговора;

а в Worde через поля задаю отображение данных параметров
18. us 13 14.07.16 16:11 Сейчас в теме
(17) max996, тоже можно, я так в 2000-м ворде делала, (народ, помню, и тупо через замену текста делал даже как-то). Единственно, чем мне в то время не нравился этот метод, - иногда бывали сбои, и на печать выводились имена переменных, а не данные, которые были нужны.
Сейчас, с закладками, вроде, таких проблем не наблюдаю.
19. sashasasha89 15.07.16 04:30 Сейчас в теме
Переменная не определена (ТекДок). Добавил Перем ТекДок. Теперь: Значение не является значением объектного типа (Variables)

И возможно сделать чтобы при нажатии на кнопку "Печать" выходил список шаблонов который требуется вывести на печать?
20. us 13 15.07.16 06:00 Сейчас в теме
(19) sashasasha89, ТекДок, в данной случае, не переменная, а ТекДок = Новый COMОбъект("Word.Application");
По кнопке список, конечно, можно сделать. Когда несколько внешних печатных форм, (на каждый шаблон отдельную лучше создать), к нужному объекту подключите, программа, по идее, сама их список сформирует.
21. sashasasha89 15.07.16 06:27 Сейчас в теме
(20) us, Все равно ошибка: Метод объекта не обнаружен (Variables)
22. us 13 15.07.16 06:29 Сейчас в теме
(21) sashasasha89, давайте код сюда, посмотрим
23. sashasasha89 15.07.16 07:23 Сейчас в теме
Перем мСохраненныйДок Экспорт;

Функция СформироватьЗапросДляПечатиТрудовогоДоговора(ФИО)
	
		//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ФизическиеЛица.Ссылка,
		|	КонтактнаяИнформация.Вид.ВидОбъектаКонтактнойИнформации.Ссылка,
		|	КонтактнаяИнформация.Поле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 = ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица(СсылкаНаОбъект);
    
	ТабДокумент.Вывести(ОбластьМакета);


	ОбластьМакета = Макет.ПолучитьОбласть("Подпись");
	ОбластьМакета.Параметры.ДатаПодвал = Формат(СсылкаНаОбъект.ДатаДоговора, "ДЛФ=Д"); 
	ТабДокумент.Вывести(ОбластьМакета);

	
	//Возврат ТабДокумент;

КонецФункции
Показать
24. us 13 15.07.16 07:32 Сейчас в теме
(23) sashasasha89, ТекДок.Variables("ФИОСотрудника").Value = СсылкаНаОбъект;
я бы здесь ругнулась, однозначно. Что такое "СсылкаНаОбъект"? Но, главное не здесь.
После ТекДок = Новый COMОбъект("Word.Application"); обязательно надо указать, какой файл Вы берете в качестве шаблона, (можно и не указывать, программа создаст новый, без проблем, но Вы-то указываете конктретно - создай новый вордовский документ и замени в нем переменную "ФИОСотрудника", - программа справедливо ругается, что никаких переменных в документе нет).
25. max996 3 15.07.16 13:08 Сейчас в теме
(23) sashasasha89, у меня вот этого вообще нет
   ТабДокумент.Вывести(ОбластьМакета);

    ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
    ОбластьМакета.Параметры.ФИО = СсылкаНаОбъект;
    ОбластьМакета.Параметры.ДатаРождения = Формат(СсылкаНаОбъект.Физлицо.ДатаРождения, "ДЛФ=ДД") + "р";
    
    ОбластьМакета.Параметры.Адрес = СформироватьЗапросДляПечатиТрудовогоДоговора(СсылкаНаОбъект.Физлицо);
    ОбластьМакета.Параметры.Паспорт = ПолучитьПаспортныеДанныеСотрудника(СсылкаНаОбъект.Физлицо);    
    ОбластьМакета.Параметры.ИНН = СсылкаНаОбъект.Физлицо.ИНН;
    ОбластьМакета.Параметры.СНИЛС = СсылкаНаОбъект.Физлицо.СтраховойНомерПФР;
    ОбластьМакета.Параметры.ФИО1 = ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица(СсылкаНаОбъект);
    
    ТабДокумент.Вывести(ОбластьМакета);


    ОбластьМакета = Макет.ПолучитьОбласть("Подпись");
    ОбластьМакета.Параметры.ДатаПодвал = Формат(СсылкаНаОбъект.ДатаДоговора, "ДЛФ=Д"); 
    ТабДокумент.Вывести(ОбластьМакета);

    
    //Возврат ТабДокумент;

КонецФункции
Показать
26. max996 3 15.07.16 13:11 Сейчас в теме
может даже проще свой скинуть посмотритеМой трудовой договор
27. sashasasha89 17.07.16 11:39 Сейчас в теме
28. sashasasha89 18.07.16 04:43 Сейчас в теме
А где МакетПФ который он заполняет? В обработке только МакетСРК и то он уже заполнен без параметров.
29. sashasasha89 18.07.16 06:33 Сейчас в теме
Все же удобнее в моем случаи хотелось бы сделать так: в справочнике "сотрудники" при нажатии на кнопку печать выходил выбор какой макет сформировать. Возможно ли чтобы в одной печатной форме сделать несколько макетом и когда нажимаешь на печать вышел сначала список макетов, которые можно напечатать?
30. sashasasha89 18.07.16 06:34 Сейчас в теме
Второй макет добавил, но тогда сразу два макета выходят на печать.
31. sashasasha89 18.07.16 07:59 Сейчас в теме
Сделал чтобы выходил список макетов, которые хочу напечатать, но при выборе любого макета печатается только первый.
Функция Печать() Экспорт
    
    ладОтчет = Новый ТабличныйДокумент;
    ладОтчет.Очистить();
    спМакеты = Новый СписокЗначений;
    спМакеты.Добавить("Договор");
    спМакеты.Добавить("Договор1");

    выб = спМакеты.ВыбратьЭлемент();
    Если выб=неопределено Тогда
        возврат неопределено;
    КонецЕсли; 
    лаМакет = ПолучитьМакет(выб.Значение);

	ТабДокумент = Новый ТабличныйДокумент;
	Макет       = ПолучитьМакет("Договор");
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
	ОбластьМакета.Параметры.Номер = СсылкаНаОбъект.НомерДоговора;
	ОбластьМакета.Параметры.Дата = Формат(СсылкаНаОбъект.ДатаДоговора, "ДЛФ=ДД");
	ТабДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("Договор");
	ОбластьМакета.Параметры.ФИОСотрудника = СсылкаНаОбъект;
	ТабДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("Имена");
	ТабДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
    ОбластьМакета.Параметры.ФИО = СсылкаНаОбъект;
    ОбластьМакета.Параметры.ДатаРождения = Формат(СсылкаНаОбъект.Физлицо.ДатаРождения, "ДЛФ=ДД") + "р";
	ОбластьМакета.Параметры.Адрес = СформироватьЗапросДляПечатиТрудовогоДоговора(СсылкаНаОбъект.Физлицо);
	ОбластьМакета.Параметры.Паспорт = ПолучитьПаспортныеДанныеСотрудника(СсылкаНаОбъект.Физлицо);	
	ОбластьМакета.Параметры.ИНН = СсылкаНаОбъект.Физлицо.ИНН;
	ОбластьМакета.Параметры.СНИЛС = СсылкаНаОбъект.Физлицо.СтраховойНомерПФР;
    ОбластьМакета.Параметры.ФИО1 = ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица(СсылкаНаОбъект);
    ОбластьМакета.Параметры.Дата = Формат(СсылкаНаОбъект.ДатаДоговора, "ДЛФ=ДД");
	ТабДокумент.Вывести(ОбластьМакета);
	Возврат ТабДокумент;

	
	ТабДокумент = Новый ТабличныйДокумент;
    Макет       = ПолучитьМакет("Договор1");
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
	ОбластьМакета.Параметры.Номер = СсылкаНаОбъект.НомерДоговора;
	ОбластьМакета.Параметры.Дата = Формат(СсылкаНаОбъект.ДатаДоговора, "ДЛФ=ДД");
	ТабДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("Договор");
	ОбластьМакета.Параметры.ФИОСотрудника = СсылкаНаОбъект;
	ТабДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("Имена");
	ТабДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
    ОбластьМакета.Параметры.ФИО = СсылкаНаОбъект;
    ОбластьМакета.Параметры.ДатаРождения = Формат(СсылкаНаОбъект.Физлицо.ДатаРождения, "ДЛФ=ДД") + "р";
	ОбластьМакета.Параметры.Адрес = СформироватьЗапросДляПечатиТрудовогоДоговора(СсылкаНаОбъект.Физлицо);
	ОбластьМакета.Параметры.Паспорт = ПолучитьПаспортныеДанныеСотрудника(СсылкаНаОбъект.Физлицо);	
	ОбластьМакета.Параметры.ИНН = СсылкаНаОбъект.Физлицо.ИНН;
	ОбластьМакета.Параметры.СНИЛС = СсылкаНаОбъект.Физлицо.СтраховойНомерПФР;
    ОбластьМакета.Параметры.ФИО1 = ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица(СсылкаНаОбъект);
    ОбластьМакета.Параметры.Дата = Формат(СсылкаНаОбъект.ДатаДоговора, "ДЛФ=ДД");
	ТабДокумент.Вывести(ОбластьМакета);

	
	Возврат ТабДокумент;

КонецФункции
Показать
32. horoshevall 18.07.16 08:01 Сейчас в теме
(31) sashasasha89, скорее всего, дело в строчке "Макет = ПолучитьМакет("Договор"); ". Вместо нее можно написать "Макет = лаМакет; " или сразу одной строчкой "Макет = ПолучитьМакет(выб.Значение); "
33. sashasasha89 18.07.16 08:16 Сейчас в теме
(32) horoshevall, Спасибо помогло. Есть ли в 1с механизм чтобы пользователь мог отредактировать текст (условия) договора и сохранить его чтобы в последствие можно было его выбирать?
34. max996 3 18.07.16 08:22 Сейчас в теме
(33) sashasasha89, есть изменение типовых макетов, но там каждый раз менять придется
35. sashasasha89 18.07.16 08:24 Сейчас в теме
Получается можно объединить эти два способа? В Ворде сохраняешь сколько нужно разных текстов договоров, а при нажатии на печать выходил их список и можно было выбрать любой. Только получается его нужно будет предварительно добавить в код?
36. vovan_victory 63 18.07.16 08:24 Сейчас в теме
37. sashasasha89 18.07.16 08:30 Сейчас в теме
(36) vovan_victory, Спасибо, попробую сейчас.
38. sashasasha89 18.07.16 08:45 Сейчас в теме
Ошибка при открытие помощи в обработки:
{ВнешняяОбработка.ВыбратьПечатнуюФорму.МодульОбъекта(248)}: Ошибка при вызове метода контекста (ПолучитьФорму)
Форма = ПолучитьФорму("ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp");
по причине:
Неизвестное имя формы. Имя: "ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp"
И не сохраняется шаблон word.
39. vovan_victory 63 18.07.16 09:19 Сейчас в теме
(38) sashasasha89, вы ее как открываете? Через файл --- открыть? Обработку необходимо подключить как внешнюю печатную форму
40. sashasasha89 18.07.16 09:43 Сейчас в теме
(39) vovan_victory, Я её подключил.
41. vovan_victory 63 18.07.16 09:50 Сейчас в теме
(40) sashasasha89, ЗУП то у Вас точно 2.5, а не 3.0?
Еще раз просмотрите инструкцию по настройке и подключению на странице скачивания
42. sashasasha89 18.07.16 11:07 Сейчас в теме
(41) vovan_victory, Точно зуп 2.5. Делал по инструкции.
43. vovan_victory 63 18.07.16 11:14 Сейчас в теме
(42) sashasasha89, у Вас конфигурация типовая? Какой релиз?
44. sashasasha89 18.07.16 11:18 Сейчас в теме
(43) vovan_victory, Типовая. Был 2.5.101.2, обновил до 2.5.107.1.
45. vovan_victory 63 18.07.16 12:23 Сейчас в теме
(44) sashasasha89, в какой момент появляется ошибка? Можете сделать скриншот как Вы вызываете обработку..
46. sashasasha89 18.07.16 16:02 Сейчас в теме
Пробовал по-разному. Когда открывается форма выбора макетов WORD нажимаю "Добавить". Выбираю Файл и жму "Сохранить" - пишет "Хранилище пустое". Если даже нет ошибка, то окно по кнопке ОК закрывается, а печатная форма не появляется. Если пытаюсь открыть помощь: {ВнешняяОбработка.ВыбратьПечатнуюФорму.МодульОбъекта(248)}: Ошибка при вызове метода контекста (ПолучитьФорму)
Форма = ПолучитьФорму("ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp");
по причине:
Неизвестное имя формы. Имя: "ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp"
Прикрепленные файлы:
47. sashasasha89 18.07.16 16:09 Сейчас в теме
И еще вопрос. Есть документ "Кадровое перемещение". В нем может быть несколько сотрудников. Как можно сделать чтобы напечатать договор только для одного выделенного сотрудника в табличной части? Для первого получается, а дальше нет.
48. vovan_victory 63 18.07.16 16:13 Сейчас в теме
(47) sashasasha89,
Как можно сделать чтобы напечатать договор только для одного выделенного сотрудника


попробуйте переписать что то типа этого(на многострочные таб части не расчитывал) :

ТекущийСотрудник = ТабЧасть.ТекущиеДанные.Сотрудник;


Выбираю Файл и жму "Сохранить" - пишет "Хранилище пустое".


Я так понимаю, что "жму "Сохранить"" - это Вы кнопку в верхней панели жмете? Нееее... Не правильно. Эта кнопка нужна для сохранения уже загруженного шаблона на локальный диск для редактирования текста/исправления/добавления нового параметра и т.д.(об этом написано в части "Как редактировать шаблон?" инструкции) , а вам для начала, нужно указать файл шаблона WORD и нажать кнопку "ОК" в нижней части формы.

По поводу ошибки... Попробуйте
Форма = ПолучитьФорму("ВнешняяОбработка.ВыбратьПечатнуюФорму.Форма.ФормаHelp"); 


Заменить на

Форма = ПолучитьФорму("ФормаHelp"); 


Хотя, сейчас пробовал на ЗУП 2.5.104.1 платформа 8.3.7.2027, все работает, проблем ни каких
49. sashasasha89 19.07.16 04:37 Сейчас в теме
(48) vovan_victory, (48) vovan_victory,
ТекущийСотрудник = ТабЧасть.ТекущиеДанные.Сотрудник; - это вроде только на форме работает? Попробую.

Спасибо. Заменил Форма = ПолучитьФорму("ФормаHelp"); Помощь теперь открывается.


И добавить договор в макеты получилось. Сейчас буду пробовать.
50. sashasasha89 19.07.16 05:04 Сейчас в теме
Я только не понял как получить параметры для заполнение договора?
Запрос выполнил. Нажимаю параметры запроса и ни чего не появляется. Как я понял там должно быть то, что я хочу из запроса получить в печатную форму?
51. vovan_victory 63 19.07.16 08:13 Сейчас в теме
(50) sashasasha89,
Я только не понял как получить параметры для заполнение договора?


Внимательно читаем инструкцию начиная с пункта 8. Для начала, я рекомендую, подключить обработку к справочнику "Сотрудники", открыть форму выбора шаблона и в колонке "Алгоритм" снять флажок.Потом открыть форму настройки печатной формы(контекст - "Настроить печатную форму") и настроить заполнение какого то параметра.При снятой "галке" Алгоритм, писать какие то запросы не нужно. За источник данных для заполнения шаблона принимается типовой запрос, который используется для заполнения печатной формы "Трудовой договор" в справочнике "Сотрудники".
52. sashasasha89 19.07.16 09:28 Сейчас в теме
(51) vovan_victory, У меня к справочнику сотрудники подключить нельзя.
Прикрепленные файлы:
54. vovan_victory 63 19.07.16 09:32 Сейчас в теме
(52) sashasasha89,
У меня к справочнику сотрудники подключить нельзя


Проверить не могу. У меня ЗУП КОРП.

А у справочника сотрудники есть какие нибудь печатные формы?
55. vovan_victory 63 19.07.16 09:48 Сейчас в теме
(52) sashasasha89,
У меня к справочнику сотрудники подключить нельзя.


Я не поленился и проверил.
Если честно, то я начинаю думать, что мы с вами вообще говорим на разных языках.
Прикрепленные файлы:
53. sashasasha89 19.07.16 09:32 Сейчас в теме
Плюс параллейно делаю обычную ВПФ со стандартным макет. В отладчике все работает печатная форма формируется, а когда просто выводишь на печать то "Поле объекта не обнаружено (Физлицо)".
56. vovan_victory 63 19.07.16 09:52 Сейчас в теме
Если пытаюсь открыть помощь: {ВнешняяОбработка.ВыбратьПечатнуюФорму.МодульОбъекта(248)}: Ошибка при вызове метода контекста (ПолучитьФорму)


За одно, проверил и эту ошибку. Проблем нет! Все работает! Теперь, я совсем не понимаю, что и куда Вы подключаете.
57. sashasasha89 20.07.16 06:21 Сейчас в теме
Остановился на обычных макетах. Сделал пока два при необходимости добавлю больше. Вопрос теперь в другом: из документа кадровое перемещение печатает только для первого сотрудника. Как реализовать чтобы печатался для выделенного сотрудника или для всех? Для всех надо в цикл добавить?
58. vovan_victory 63 20.07.16 07:59 Сейчас в теме
(57) sashasasha89,
Как реализовать чтобы печатался для выделенного сотрудника или для всех? Для всех надо в цикл добавить?


Для выделенного сотрудника примерный вариант в предыдущих постах, а все нужно добавлять цикл,но нужно анализировать код на предмет что нужно включать в цикл, а что нет. Например, нет смысла 100 раз получать шаблон из базы и т.д.
59. sashasasha89 20.07.16 08:53 Сейчас в теме
(58) vovan_victory,
Если Возврат ТабДокумент; в цикл добавляю тогда печатная форма не формируется.

Функция Печать() Экспорт
    
    ладОтчет = Новый ТабличныйДокумент;
    ладОтчет.Очистить();
    спМакеты = Новый СписокЗначений;
    спМакеты.Добавить("Договор");
    спМакеты.Добавить("Договор1");

    выб = спМакеты.ВыбратьЭлемент();
    Если выб=неопределено Тогда
        возврат неопределено;
    КонецЕсли; 
    лаМакет = ПолучитьМакет(выб.Значение);

	ТабДокумент = Новый ТабличныйДокумент;
	Макет       = ПолучитьМакет(выб.Значение);
    ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
	ОбластьМакета.Параметры.Номер = Строка(Формат(Число(СсылкаНаОбъект.Номер),"ЧГ=0"));
	ОбластьМакета.Параметры.Дата = Формат(СсылкаНаОбъект.Дата, "ДЛФ=ДД");
	ТабДокумент.Вывести(ОбластьМакета);
    ОбластьМакета = Макет.ПолучитьОбласть("Договор");
	Для Каждого ФизЛица Из ЭтотОбъект.СсылкаНаОбъект.РаботникиОрганизации Цикл
		ОбластьМакета.Параметры.ФИОСотрудника = ФизЛица.Сотрудник;
		ТабДокумент.Вывести(ОбластьМакета);
    	ОбластьМакета = Макет.ПолучитьОбласть("Имена");
		ТабДокумент.Вывести(ОбластьМакета);
    	ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
    	ОбластьМакета.Параметры.ФИО = ФизЛица.Сотрудник;
		ОбластьМакета.Параметры.ДатаРождения = Формат(ФизЛица.Сотрудник.Физлицо.ДатаРождения, "ДЛФ=ДД") + "р";
		ОбластьМакета.Параметры.Адрес = СформироватьЗапросДляПечатиТрудовогоДоговора(ФизЛица.Сотрудник.Физлицо);
		ОбластьМакета.Параметры.Паспорт = ПолучитьПаспортныеДанныеСотрудника();	
		//ОбластьМакета.Параметры.Паспорт = ПолучитьПаспортныеДанныеСотрудника(ФизЛица.Сотрудник.Физлицо);
		ОбластьМакета.Параметры.ИНН = ФизЛица.Физлицо.ИНН;
		ОбластьМакета.Параметры.СНИЛС = ФизЛица.Физлицо.СтраховойНомерПФР;
    	ОбластьМакета.Параметры.ФИО1 = ОбщегоНазначенияЗК.ФамилияИнициалыФизЛица(ФизЛица.Физлицо);
    	ОбластьМакета.Параметры.Дата = Формат(ФизЛица.ДатаНачала, "ДЛФ=ДД");
		
		ТабДокумент.Вывести(ОбластьМакета);
        
	КонецЦикла;
Возврат ТабДокумент;	
КонецФункции 
Показать
60. sashasasha89 20.07.16 09:15 Сейчас в теме
В цикл перенес больше информации теперь печатается только последний сотрудник))
Как я понимаю теперь цикл работает, проходит по всем сотрудникам, но печатает последний, а надо всех.
61. vovan_victory 63 20.07.16 09:43 Сейчас в теме
(60) sashasasha89,
но печатает последний, а надо всех.

Возврат ТабДокумент;

ТабДокумент.Показать();// И показывать нужно в цикле


А вообще, нужно смотреть как выводиться на печать в типовом функционале. Там есть специальная процедура в общем модуле для этого.
62. sashasasha89 21.07.16 08:42 Сейчас в теме
Отладчик прохожу по коду и в конце выходят в одном окне на всех сотрудников договора по порядку один за одним, а в 1с без отладчика только на последнего сотрудника.
63. vovan_victory 63 21.07.16 09:06 Сейчас в теме
(62) sashasasha89,на pobratimov@mail.ru отправьте обработку. Появиться время, посмотрю
sashasasha89; +1 Ответить
64. sashasasha89 25.07.16 06:15 Сейчас в теме
(63) vovan_victory, Спасибо. Всё работает. Только в конфигураторе макет смотришь в предварительном просмотре все правильно, а в 1с выводишь много пустого с права остается.
65. vovan_victory 63 25.07.16 08:04 Сейчас в теме
(64) sashasasha89, так это же вы сами такой макет сделали. Переделайте макет. Программная часть ВПФ тут ни при чем
66. sashasasha89 25.07.16 10:19 Сейчас в теме
(65) vovan_victory, В конфигураторе правильно. Буду разбираться.
Есть отчет в зуп 2.5 "Список работников организации". Сделал из него внешний. Не могу разобраться как сделать чтобы он формировался не на дату, а за период?
67. vovan_victory 63 25.07.16 10:33 Сейчас в теме
(66) sashasasha89, я думаю, в этом нет ни какого смысла. Физ лицо считается сотрудником организации после приема на работу. Дата приема и увольнения, регистрируется в периодическом регистре сведений. Для получения статуса сотрудника(работает или уволен) на определенную дату(а не на интервал дат), нужно получить срез последних регистра сведений на нужную дату.Если получать срез последних(т.е последнюю запись по сотруднику/кам) на интервал дат, то, это будет выглядеть как средняя температура по больнице.
68. sashasasha89 25.07.16 11:27 Сейчас в теме
(67) vovan_victory, Я уже нашел как сформировать его за период. Не могу как вывести колонку пенсионер сотрудник или нет? Есть про инвалидность - я его вывел. А про пенсию найти не могу.
И плюс сотрудники некоторые задвоились, а то и за троились. Хотя данные во всех строках одинаковый.
69. sashasasha89 25.07.16 12:02 Сейчас в теме
Сделал на копии. Все настроил, работает как надо. В рабочий базе установил те же настройки отчета, но строки задваиваются не по всем сотрудникам, а по некоторым сотрудником по 5 строк одинаковых.
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот