Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Вывод макета двоичных данных word во внешней обработке

Вывод макета двоичных данных word во внешней обработке
Я
   ivangrant
 
06.03.20 - 10:23
Вывожу двоичные данные в макет word.
Данные берутся из внешней обработки, из списка сотрудников.
Вопрос: как вывести по порядку данные нескольких сотрудников в макет? При этом при каждой обработке количество сотрудников может быть разные. То есть заранее не прописать количество пунктов в макете.
Часть макета постарался прикрепить)
[img]https://forum.infostart.ru/upload/forum/upload/bee/bee6833f5849d4f26a11fb8ddfc74ec8[/img]
   Случайный прохожий
 
1 - 06.03.20 - 10:27
Через таблицу
   ivangrant
 
2 - 06.03.20 - 10:49
ПРИКАЗЫВАЮ:

1.    C [ДатаНачала] по [ДатаОкончания] поручить [ЗамещающийСотрудникДолжностьдп] [ЗамещающийСотрудникФИОдп] исполнение обязанностей [ЗамещаемыйСотрудникДолжностьрп] в течение установленной продолжительности рабочего дня наряду с работой, определенной трудовым договором.
2.    C [ДатаНачала] по [ДатаОкончания] поручить [ЗамещающийСотрудникДолжностьдп] [ЗамещающийСотрудникФИОдп] исполнение обязанностей [ЗамещаемыйСотрудникДолжностьрп] в течение установленной продолжительности рабочего дня наряду с работой, определенной трудовым договором.

_______
Данные в word'е.
Т.о., если в обработке указан один сотрудник, то выводится только один пункт. Если неск. сотрудников, то пунктов по количеству человек.
(1) не совсем понял.
   famnam
 
3 - 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);
            

КонецЦикла;
   ivangrant
 
4 - 13.03.20 - 12:53
(3) ваш вариант не подходит. Т.к. в документе текст с разным шрифтом. И его нужно выводить, если сотрудников больше одного. Например, даты должны быть выделены жирным шрифтом.
   ivangrant
 
5 - 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инженеру Иванову Ивану Ивановичуначальника отдела
________________________
Что ещё поправить можно?
   ivangrant
 
6 - 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].

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.