|
Вывод макета двоичных данных word во внешней обработке | ☑ | ||
---|---|---|---|---|
0
ivangrant
06.03.20
✎
10:23
|
Вывожу двоичные данные в макет word.
Данные берутся из внешней обработки, из списка сотрудников. Вопрос: как вывести по порядку данные нескольких сотрудников в макет? При этом при каждой обработке количество сотрудников может быть разные. То есть заранее не прописать количество пунктов в макете. Часть макета постарался прикрепить) [img]https://forum.infostart.ru/upload/forum/upload/bee/bee6833f5849d4f26a11fb8ddfc74ec8[/img] |
|||
1
Случайный прохожий
06.03.20
✎
10:27
|
Через таблицу
|
|||
2
ivangrant
06.03.20
✎
10:49
|
ПРИКАЗЫВАЮ:
1. C [ДатаНачала] по [ДатаОкончания] поручить [ЗамещающийСотрудникДолжностьдп] [ЗамещающийСотрудникФИОдп] исполнение обязанностей [ЗамещаемыйСотрудникДолжностьрп] в течение установленной продолжительности рабочего дня наряду с работой, определенной трудовым договором. 2. C [ДатаНачала] по [ДатаОкончания] поручить [ЗамещающийСотрудникДолжностьдп] [ЗамещающийСотрудникФИОдп] исполнение обязанностей [ЗамещаемыйСотрудникДолжностьрп] в течение установленной продолжительности рабочего дня наряду с работой, определенной трудовым договором. _______ Данные в word'е. Т.о., если в обработке указан один сотрудник, то выводится только один пункт. Если неск. сотрудников, то пунктов по количеству человек. (1) не совсем понял. |
|||
3
famnam
06.03.20
✎
11:19
|
(2) через шаблон таблицы
пример кода Документ.Bookmarks("моя таблица").Select(); Word.Selection.InsertRows(Выборка.Количество()-1); Word.Selection.MoveLeft(,1); Сч = 0; Пока Выборка.Следующий() Цикл Сч = Сч + 1; стрСчет = Строка(Сч); Табл = Word.Selection.Range; Табл.InsertAfter(стрСчет); Word.Selection.MoveRight(,СтрДлина(стрСчет)+1); стрНоменклатура = СокрЛП(Строка(Выборка.Номенклатура)); Табл = Word.Selection.Range; Табл.InsertAfter(стрНоменклатура); Word.Selection.MoveRight(,СтрДлина(Строка(стрНоменклатура))+1); ... Word.Selection.MoveRight(,1); КонецЦикла; |
|||
4
ivangrant
13.03.20
✎
12:53
|
(3) ваш вариант не подходит. Т.к. в документе текст с разным шрифтом. И его нужно выводить, если сотрудников больше одного. Например, даты должны быть выделены жирным шрифтом.
|
|||
5
ivangrant
17.03.20
✎
13:52
|
Пока получилось вот так (ТекстСтрокиПриказа - это закладка в документе):
[CODE] Для Каждого Параметр Из СтруктураПараметров.Значение Цикл ТекстСтрокиПриказа = Строка(Параметр.Номер) + ". С [ДатаНачала] по [ДатаОкончания] поручить [ЗамещающийСотрудникДолжностьдп] [ЗамещающийСотрудникФИОдп] исполнение обязанностей [ЗамещаемыйСотрудникДолжностьрп] в течение установленной продолжительности рабочего дня наряду с работой, определеённой трудовым договором." + Символы.ПС; СсылкаМакет.Bookmarks("ТекстСтрокиПриказа").Select(); СсылкаМакет.Application.Selection.TypeText(ТекстСтрокиПриказа); СсылкаМакет.Bookmarks.Add("ДатаНачала", Word.Application.Selection.Range()); СсылкаМакет.Bookmarks("ДатаНачала").Select(); СсылкаМакет.Application.Selection.BoldRun(); СсылкаМакет.Application.Selection.TypeText(Параметр.ДатаНачала); СсылкаМакет.Bookmarks.Add("ДатаОкончания", Word.Application.Selection.Range()); СсылкаМакет.Bookmarks("ДатаОкончания").Select(); СсылкаМакет.Application.Selection.BoldRun(); СсылкаМакет.Application.Selection.TypeText(Параметр.ДатаОкончания); СсылкаМакет.Bookmarks.Add("ЗамещающийСотрудникДолжностьдп", Word.Application.Selection.Range()); СсылкаМакет.Bookmarks("ЗамещающийСотрудникДолжностьдп").Select(); СсылкаМакет.Application.Selection.BoldRun(); СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещающийСотрудникДолжностьдп); СсылкаМакет.Bookmarks.Add("ЗамещающийСотрудникФИОдп", Word.Application.Selection.Range()); СсылкаМакет.Bookmarks("ЗамещающийСотрудникФИОдп").Select(); СсылкаМакет.Application.Selection.BoldRun(); СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещающийСотрудникФИОдп); СсылкаМакет.Bookmarks.Add("ЗамещаемыйСотрудникДолжностьрп", Word.Application.Selection.Range()); СсылкаМакет.Bookmarks("ЗамещаемыйСотрудникДолжностьрп").Select(); СсылкаМакет.Application.Selection.BoldRun(); СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещаемыйСотрудникДолжностьрп); КонецЦикла;[/CODE] Но при двух строках в ТЗ, выходит вот такая каша(20.03.2020 и Иванову Ивану Ивановичу - в документе выделено полужирным шрифтом): _________________________ 1. С [ДатаНачала] по [ДатаОкончания] поручить [ЗамещающийСотрудникДолжностьдп] [ЗамещающийСотрудникФИОдп] исполнение обязанностей [ЗамещаемыйСотрудникДолжностьрп] в течение установленной продолжительности рабочего дня наряду с работой, определеённой трудовым договором. 17.03.202020.03.2020инженеру Иванову Ивану Ивановичуначальника отдела ________________________ Что ещё поправить можно? |
|||
6
ivangrant
18.03.20
✎
07:08
|
! [B]Решение[/B]
Данные помещаются в ТЗ и оттуда выводятся на документ. В документе добавлена только одна закладка ( ТекстСтрокиПриказа ). Остальное выводится программно. Можно конечно было и её выводить программно, но надо было в документе отметить необходимое место, откуда добавлять закладки. Код: Для Каждого Параметр Из СтруктураПараметров.Значение Цикл ТекстСтрокиПриказа = Строка(Параметр.Номер) + ". С "; СсылкаМакет.Bookmarks("ТекстСтрокиПриказа").Select(); СсылкаМакет.Application.Selection.TypeText(ТекстСтрокиПриказа); СсылкаМакет.Bookmarks.Add("ДатаНачала", Word.Application.Selection.Range()); СсылкаМакет.Bookmarks("ДатаНачала").Select(); СсылкаМакет.Application.Selection.BoldRun(); СсылкаМакет.Application.Selection.TypeText(Параметр.ДатаНачала); СсылкаМакет.Bookmarks.Add("по", Word.Application.Selection.Range()); СсылкаМакет.Bookmarks("по").Select(); СсылкаМакет.Application.Selection.BoldRun(); СсылкаМакет.Application.Selection.TypeText(" по "); СсылкаМакет.Bookmarks.Add("ДатаОкончания", Word.Application.Selection.Range()); СсылкаМакет.Bookmarks("ДатаОкончания").Select(); СсылкаМакет.Application.Selection.BoldRun(); СсылкаМакет.Application.Selection.TypeText(Параметр.ДатаОкончания); СсылкаМакет.Bookmarks.Add("поручить", Word.Application.Selection.Range()); СсылкаМакет.Bookmarks("поручить").Select(); СсылкаМакет.Application.Selection.BoldRun(); СсылкаМакет.Application.Selection.TypeText(" поручить "); СсылкаМакет.Bookmarks.Add("ЗамещающийСотрудникДолжностьдп", Word.Application.Selection.Range()); СсылкаМакет.Bookmarks("ЗамещающийСотрудникДолжностьдп").Select(); СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещающийСотрудникДолжностьдп + " "); СсылкаМакет.Bookmarks.Add("ЗамещающийСотрудникФИОдп", Word.Application.Selection.Range()); СсылкаМакет.Bookmarks("ЗамещающийСотрудникФИОдп").Select(); СсылкаМакет.Application.Selection.BoldRun(); СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещающийСотрудникФИОдп); СсылкаМакет.Bookmarks.Add("исполнениеобязанностей", Word.Application.Selection.Range()); СсылкаМакет.Bookmarks("исполнениеобязанностей").Select(); СсылкаМакет.Application.Selection.BoldRun(); СсылкаМакет.Application.Selection.TypeText(" исполнение обязанностей "); СсылкаМакет.Bookmarks.Add("ЗамещаемыйСотрудникДолжностьрп", Word.Application.Selection.Range()); СсылкаМакет.Bookmarks("ЗамещаемыйСотрудникДолжностьрп").Select(); СсылкаМакет.Application.Selection.TypeText(Параметр.ЗамещаемыйСотрудникДолжностьрп + " в течение установленной продолжительности рабочего дня наряду с работой, определённой трудовым договором." + Символы.ПС); СсылкаМакет.Bookmarks.Add("ТекстСтрокиПриказа", Word.Application.Selection.Range()); КонецЦикла; _____ Итог: 1. С [B]18.03.2020[/B] по [B]20.03.2020[/B] поручить ведущему инженеру [B]Иванову Ивану Ивановичу[/B] исполнение обязанностей начальника отдела в течение установленной продолжительности рабочего дня наряду с работой, определённой трудовым договором. 2. С [B]25.03.2020[/B] по [B]27.03.2020[/B] поручить инженеру [B]Петрову Петру Петровичу[/B] исполнение обязанностей начальника отдела в течение установленной продолжительности рабочего дня наряду с работой, определённой трудовым договором. [U]Всем спасибо за подсказки[/U]. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |