Текстовые параметры

1. tatyloo 07.12.17 14:48 Сейчас в теме
Всем привет!
Я очень начинающий программист. Подскажите, пожалуйста.
В 1с добавлена внешняя обработка, выводит на печать вордовский документ.
Если открыть макет этого ворда (двоичные данные), то вижу, что там, где данные должны заполнится автоматически (например, организация, ФИО сотрудника) обозначены как {v8 ОрганизацияНаименование}, {v8 СотрудникФИО} и тд. В связи с этим вопрос, это просто ручками написано и в коде этому что-то присваивается, или это какие то специальные вставки. Не могу разобраться.
Создала обработку, что бы при установке галочки выводился на печать определенный документ. Галку устанавливаю, но на печать выводится пустой вордовский документ, как бы новый создается :(
И вот думаю, может я с этими параметрами что то не так делала
Спасибо!
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. BackinSoda 07.12.17 14:53 Сейчас в теме
(1) Всё что идёт в этих скобках {v8 Что-то} - параметры. В процессе вывода заменяются на значения из документа (или то, что передадут в них).
Создала обработку, что бы при установке галочки выводился на печать определенный документ. Галку устанавливаю, но на печать выводится пустой вордовский документ, как бы новый создается

видимо тут косяк какой-то. нужен код чтоб разобраться
3. SaschaL 07.12.17 15:03 Сейчас в теме
(1) Код обработки в студию
4. Boneman 298 07.12.17 15:06 Сейчас в теме
(1) это имена параметров в макете.
А в коде формирования печатной формы, в эти места, впечатываются нужные данные.

Если макет отредактировали криво, и удалили из документа эти параметры, или переименовали - то естественно, документ не сможет заполнится
5. maks_20 164 07.12.17 15:10 Сейчас в теме
Посмотрите модуль внешней обработки. там все заполнение должно быть прописано, в том числе там сделана замена этих параметров на данные. Возможно вы параметры задали некорректно либо у вас не прописано их заполнение.
6. tatyloo 07.12.17 15:45 Сейчас в теме
(5) Спасибо всем большое!
То есть, если хотя бы один параметр не задан или задан некорректно, то печатная форма выводится вся будет пустой, правильно?
Я просто думала, если косяк с каким-то одним параметром, то документ весь выводится будет, только один параметр - нет.

И эти параметры я просто вручную должна прописать руками? Это не какие то специальные вставки?
8. sssss_aaaaa_2011 07.12.17 16:01 Сейчас в теме
(6)
То есть, если хотя бы один параметр не задан или задан некорректно, то печатная форма выводится вся будет пустой, правильно?
Нет.

(6)
если косяк с каким-то одним параметром, то документ весь выводится будет, только один параметр - нет.
Да.

Но если косяк с заполнением всех параметров, то все равно будет пустая форма.
9. BackinSoda 07.12.17 16:02 Сейчас в теме
(6) скорее всего выводиться будут. Параметры не заменятся и выйдут на печать как и заданы в макете.
10. tatyloo 07.12.17 16:08 Сейчас в теме
(9) странно тогда, почему у меня просто создается новый документ, получается программа просто не видит, что я указала выводить именно тот макет, который я добавила в макеты что ли.
Косяк где-то в этом.
Я не могу сюда закинуть весь код, он большой очень (
12. BackinSoda 07.12.17 16:12 Сейчас в теме
(10) может по кнопке "вставка кода" на форуме выложите часть, где задаются хотяб параметры, типа "Функция ПолучитьДанныеОбъекта" или с похожим названием. Или обработку сразу приложите )
7. tatyloo 07.12.17 15:57 Сейчас в теме
Подскажите еще, пожалуйста, откуда узнать, откуда тянутся эти данные Структура.Вставить("СотрудникФИО", КадровыеДанные.ФамилияИО). Точнее как узнать путь, что именно ФамилияИО хранится в кадровых данных?
11. BackinSoda 07.12.17 16:09 Сейчас в теме
(7)
КадровыеДанные
курсором если встать на переменную и нажать F12 на клавиатуре то он перейдет к месту где его в первый раз задали.
скорее всего там будет примерно такой код :
КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Истина, МассивСотрудников, "ФамилияИО,ИОФамилия,Подразделение,Должность,ТабельныйНомер,Пол,ФИОПолные");
13. tatyloo 07.12.17 16:16 Сейчас в теме
(11) ой, трудно мне понять.

У меня тут создается процедура:
Процедура ЗаполнитьДанныеСотрудника(Структура, КадровыеДанные)
Структура.Вставить("СотрудникФИО", КадровыеДанные.ФамилияИО);
КонецПроцедуры;


А теперь мне нужно сюда добавить еще, что бы заполнился номер трудового договора сотрудника в печатной форме. И вот как мне узнать, что прописывать для него.
14. tatyloo 07.12.17 16:22 Сейчас в теме
(11) ну кстати, это вот и есть эти параметры, которые я указывала в ворде.

Процедура ЗаполнитьДанныеСотрудника(Структура, КадровыеДанные)
	
	Структура.Вставить("СотрудникФИО", КадровыеДанные.ФамилияИО);
	Структура.Вставить("СотрудникАдрес", КадровыеДанные.АдресПоПропискеПредставление);
	
КонецПроцедуры
15. BackinSoda 07.12.17 16:26 Сейчас в теме
(14) добавляете туда
Структура.Вставить("ТрудовойДоговорНомер", КадровыеДанные.ТрудовойДоговорНомер); 
, при этом в ворде должна быть такая вставка
{v8 ТрудовойДоговорНомер}. При этом в кадровых данных, там где через запятую перечисляются реквизиты сотрудника, должно быть поле "ТрудовойДоговорНомер"
16. tatyloo 07.12.17 16:33 Сейчас в теме
Функция ПолучитьДанныеДляПечатиДопСоглашенияНаОбучение(Сотрудник, ДатаВступленияСоглашенияВСилу) Экспорт
	
	Организация = Сотрудник.ГоловнаяОрганизация;
	
	Структура = Новый Структура;
	
	Структура.Вставить("ДатаВступленияСоглашенияВСилу", Формат(ДатаВступленияСоглашенияВСилу, "ДФ='''""''дд''""'' ММММ гггг ''года'''"));
	
	ЗаполнитьДанныеОрганизации(Структура, Организация);
	
	КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Истина, Сотрудник,
		"Должность, АдресПоПропискеПредставление, ФИОПолные, Пол, ФамилияИО, ДокументПредставление");
	Возврат Структура;
		
КонецФункции
Показать


Далее у меня идет процедура заполнения данных сотрудника (выше выкладывала) и заполнение данных по организации. Это все в модуле объекта.

В модуле формы:

&НаКлиенте
Процедура Печать(Команда)
		
	Если ДопСоглашениеНаОбучение Тогда
		ДанныеДляПечати = ПолучитьДанныеДляПечатиДопСоглашенияНаОбучение();
		НапечататьДопСоглашениеНаОбучение(ДанныеДляПечати);
	КонецЕсли;

	
КонецПроцедуры
Показать


&НаСервере
Функция ПолучитьДанныеДляПечатиДопСоглашенияНаОбучение()
	
	мОбъект = РеквизитФормыВЗначение ("Объект");
	ДвоичныеДанные = мОбъект.ПолучитьМакет("ПФ_DOC_ДопСоглашениеНаОбучение");
	Возврат мОбъект.ПолучитьДанныеДляПечатиДопСоглашенияНаОбучение(ОбъектПечати, ДатаВступленияСоглашенияВСилу);
	
КонецФункции

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


Создавала реквизиты Доп соглашение как галку, и дату вступления как дату
17. BackinSoda 07.12.17 16:47 Сейчас в теме
(16) я так понимаю половина кода вырезано..
видно вот что в этом месте :
Функция ПолучитьДанныеДляПечатиДопСоглашенияНаОбучение(Сотрудник, ДатаВступленияСоглашенияВСилу) Экспорт 

Организация = Сотрудник.ГоловнаяОрганизация; 

Структура = Новый Структура; 

Структура.Вставить("ДатаВступленияСоглашенияВСилу", Формат(ДатаВступленияСоглашенияВСилу, "ДФ='''""''дд''""'' ММММ гггг ''года'''")); 

ЗаполнитьДанныеОрганизации(Структура, Организация); 

КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Истина, Сотрудник, 
"Должность, АдресПоПропискеПредставление, ФИОПолные, Пол, ФамилияИО, ДокументПредставление, ТрудовойДоговорНомер"); 
Возврат Структура; 

КонецФункции 
Показать

нет вызова процедуры ЗаполнитьДанныеСотрудника, куда бы передавались КадровыеДанные (в которые неплохо бы вставить "ТрудовойДоговорНомер" см.пример выше)
и в конце возвращается структура в которой только ДатаВступления, дополненная данными по организации ? что-то не то явно.
18. tatyloo 08.12.17 09:28 Сейчас в теме
(17) а если так:

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

	ЗаполнитьДанныеОрганизации(Структура, Организация);
	
	КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Истина, Сотрудник,
		"Организация, НомерДоговораКонтракта, ДатаДоговораКонтракта, АдресПоПропискеПредставление, ФИОПолные, Пол, ФамилияИО, ДокументПредставление");
	
	Если КадровыеДанные.Количество() > 0 Тогда
		СтрокаКадровыеДанные = КадровыеДанные[0];
		ЗаполнитьДанныеСотрудника(Структура, СтрокаКадровыеДанные);
		Структура.Вставить("ИменуемаяЫЙ", ?(КадровыеДанные.Пол = Перечисления.ПолФизическогоЛица.Мужской, "именуемый", "именуемая"));
		
		Если ЗначениеЗаполнено(СтрокаКадровыеДанные.НомерДоговораКонтракта) Тогда
			Структура.Вставить("НомерДоговора", СтрокаКадровыеДанные.НомерДоговораКонтракта);
		Иначе
			Структура.Вставить("НомерДоговора", "______________");
		КонецЕсли;
		
		Если ЗначениеЗаполнено(СтрокаКадровыеДанные.ДатаДоговораКонтракта) Тогда
			Структура.Вставить("ДатаДоговора", Формат(СтрокаКадровыеДанные.ДатаДоговораКонтракта, "ДФ=dd.MM.yyyy"));
		Иначе
			Структура.Вставить("ДатаДоговора", "______________");
		КонецЕсли;

	КонецЕсли;
	
	Возврат Структура;
		
КонецФункции
Показать



При чем потом у меня есть процедура заполнения данных сотрудника

Процедура ЗаполнитьДанныеСотрудника(Структура, КадровыеДанные)

Структура.Вставить("ИменуемаяЫЙ", ?(КадровыеДанные.Пол = Перечисления.ПолФизическогоЛица.Мужской, "именуемый", "именуемая"));

А при выведении на печать ругается, Поле объекта не обнаружено (Пол)
19. BackinSoda 08.12.17 09:45 Сейчас в теме
(18) а что в сотрудника передаётся ?
мОбъект.ПолучитьДанныеДляПечатиДопСоглашенияНаОбучение(ОбъектПечати, ДатаВступленияСоглашенияВСилу);

ОбъектПечати - это точно сотрудник ?
20. tatyloo 08.12.17 10:12 Сейчас в теме
(19) ну да, если нажать на f12 ссылается на справочник сотрудников
21. BackinSoda 08.12.17 10:16 Сейчас в теме
(20) а в предприятии из справочника сотрудники печатается ? пол заполнен у него ?
22. tatyloo 08.12.17 10:21 Сейчас в теме
(21) тут в этой обработке, еще несколько печатных макетов, они все печатаются, в них аналогично указаны именуемый/ая и все нормально.
Но, меня больше волнует, почему у меня пустой документ выводится на печать(
23. BackinSoda 08.12.17 10:24 Сейчас в теме
(22) сравнить с рабочим вариантом и построчно искать где проблема..или под отладчиком. Или выложите тут обработку ? так тяжело сказать
24. tatyloo 08.12.17 10:45 Сейчас в теме
(23) ладно, буду разбираться, спасибо большое)
Оставьте свое сообщение
Вакансии
Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день