Работа с Word из 1С. Работа с таблицами

04.12.13

Учетные задачи - Печатные формы

Одно дело, когда заранее известно количество строк в таблице. И решение, соответственно, тоже простое: создать в шаблоне таблицу и заполнить переменные программно.
Но вот совсем другой подход, когда количество строк или колонок неизвестно.
В этом примере продемонстрировано, как можно создать табличную часть в документе Word.
Выбор, какой из перечисленных далее методов использовать, за Вами.

Скачать файлы

Наименование Файл Версия Размер
Небольшой пример
.epf 24,57Kb
736
.epf 24,57Kb 736 Скачать

Одно дело, когда заранее известно количество строк в таблице. И решение, соответственно, тоже простое: создать в шаблоне таблицу и заполнить переменные программно. Ссылка на данный пример //infostart.ru/public/18940/

Но вот совсем другой подход, когда количество строк или колонок неизвестно.

История "Как я к этому пришел"

Появилась необходимость распечатывать договора по каждому контрагенту, а как известно договор может быть 1 или несколько.

Тогда, еще в 2006 году вопрос решился 5 шаблонами, в табличных частях которых было от 1 до 5 строк (ограничились 5 договорами). Вопрос решился и забылся. Но вот вопрос стал актуален по причине печати нового договора, в котором задействована номенклатура, а количество строк ведь может переваливать добрую сотню наименований. И следовательно  - выход в создании динамической таблицы в шаблоне Word, который и описан двумя самыми простыми способами.

Есть 2 подхода к созданию таблицы.

1) Вам нужна таблица с равной шириной колонок, так сказать созданная автоматически.

2) У вас есть шаблон таблицы (только шапка и 1 строка).

Код создания таблицы с автоформатом.

Процедура СоздатьПример1(Кнопка)
    НовоеНапоминание = ПолучитьМакет("Пример1");

    Массив = Новый Массив(5);//сделаем таблицу из 5 строк + шапка

    MsWord = НовоеНапоминание.Получить();


    //макет является ActiveDocwment с загруженым в него Word-файлом
    Попытка
        //Вставление таблицы с 10 строки
        MsWord.Application.Visible = 0;
        Word = MsWord.Application;
        Док=Word.Documents(1);
        Док.Activate();

        //подготовка таблицы:
        //Вариант №1 Самый простой
        Word.Selection.MoveDown(,10); //10 строка - первая строка таблицы
        //Конец Варианта №1

        //Вариант №2
        Word.Bookmarks("ff").Select(); //Где ff - это набор любых символов, вплоть до непечатаемых;)
        //Конец Варианта №2
 
        Табл= Word.Selection.Range;
        //Формируем заголовок:
        Табл.InsertAfter("Сумма*Валюта*Назначение*Дата долга*Вид документа*Номер документа* *Дата оплаты");
        Табл.InsertParagraphAfter();
        //сама таблица
        Для й = 1 по Массив.Количество() Цикл
            Табл.InsertAfter(массЗнчСтрокиТЧ[0]+"*"+массЗнчСтрокиТЧ[1]+"*"+массЗнчСтрокиТЧ[2]+"*"+массЗнчСтрокиТЧ[3]+"*"+ массЗнчСтрокиТЧ[4]+ "*"+массЗнчСтрокиТЧ[5]+ "*"+массЗнчСтрокиТЧ[6]+ "*"+массЗнчСтрокиТЧ[7]);
            Табл.InsertParagraphAfter();
        КонецЦикла;

        Табл.ConvertToTable("*");

        //Происходит конвертация строки в таблицу

        //не нравятся звездочки - используйте другой символ
        Док.Tables(1).AutoFormat(1);

        ПечатныйНомер = "-"+Формат(ТекущаяДата(),"ДФ=yyyy.MM.dd")+"-"+Формат(ДатаОтчета,"ДФ=yyyy.MM.dd");
        Файл = КаталогВременныхФайлов() + "\" + ПечатныйНомер + ".doc";

        Док.SaveAs(Файл);
        Док.Close(0);

        //МассивДокументов.Добавить(Файл);  //добавлял в массив путь к файлу и после всех манипуляций открывал каждый файл
        ЗапуститьПриложение("""" + Файл + """");

    Исключение
        Сообщить(ОписаниеОшибки());
        Word.Quit();
    КонецПопытки;

КонецПроцедуры



Код создания таблицы с наследуемым форматом.

Процедура СоздатьПример2(Кнопка)
    НовоеНапоминание = ПолучитьМакет("Пример2");

    Массив = Новый Массив(5);//добавим 4 строки

    MsWord = НовоеНапоминание.Получить();
    //макет является ActiveDocwment с загруженым в него Word-файлом
    Попытка

        MsWord.Application.Visible = 0;
        Word = MsWord.Application;
        Док=Word.Documents(1);
        Док.Activate();


        Если Массив.Количество()>1 Тогда
            //Переместиться вниз на 10 строк от начала документа
            Word.Selection.MoveDown(,10); //10 строка - первая строка таблицы
            //назад на 1 символ (окончание строки таблицы)
            Word.Selection.MoveLeft(,1);
            //кво документов которые необходимо забить в табличную часть
            Word.Selection.InsertRows(Массив.Количество()-1);

            Word.Selection.MoveLeft(,1);
            Для й = 11 по Массив.Количество()+9 Цикл
                ЗаполнитьСтрокуТЧ(0,Word);
                Word.Selection.MoveRight(,1);
            КонецЦикла;
        КонецЕсли;

        ПечатныйНомер = "-"+Формат(ТекущаяДата(),"ДФ=yyyy.MM.dd")+"-"+Формат(ДатаОтчета,"ДФ=yyyy.MM.dd");

        //Таблицу заполнять не буду, только шапку

        Замена = Док.Content.Find;
        Замена.Execute("", Ложь, Истина, Ложь, , , Истина, , Ложь, "ООО 'Пупкин inc.'");

        Замена = Док.Content.Find;
        Замена.Execute("", Ложь, Истина, Ложь, , , Истина, , Ложь, Формат(ТекущаяДата(),"Л=uk; ДЛФ=D"));

        Замена = Док.Content.Find;
        Замена.Execute("", Ложь, Истина, Ложь, , , Истина, , Ложь, ПечатныйНомер );

        Файл = КаталогВременныхФайлов() + "\" + ПечатныйНомер + ".doc";

        Док.SaveAs(Файл);
        Док.Close(0);

        //МассивДокументов.Добавить(Файл);  //добавлял в массив путь к файлу и после всех манипуляций открывал каждый файл
        ЗапуститьПриложение("""" + Файл + """");
    Исключение
        Сообщить(ОписаниеОшибки());
        Word.Quit();
    КонецПопытки;

КонецПроцедуры

Процедура ЗаполнитьСтрокуТЧ(знчЭл,Word)

    Если знчЭл массЗнчСтрокиТЧ.Количество()-1 Тогда
        текЭлем = массЗнчСтрокиТЧ[знчЭл];
        Rng = Word.Selection.Range;
        Rng.InsertAfter(текЭлем);
        ДлинаЗнч = СтрДлина(текЭлем)+1;

        Word.Selection.MoveRight(,ДлинаЗнч);

        Если знчЭл < массЗнчСтрокиТЧ.Количество()-1 Тогда
            знчЭл = знчЭл + 1;
            ЗаполнитьСтрокуТЧ(знчЭл,Word);
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры


word таблицы печать создание

См. также

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    7008    20    6    

37

Универсальная печать по шаблонам Word (Печать договоров из 1С БП 3, УНФ 1.6, ЗУП 3, УТ 11, КА 2, ERP 2, ДО 3)

Печатные формы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Научите вашу 1C печатать из 1С в файл Word (Например: трудовые договоры, договоры с контрагентами, спецификации, дополнительные соглашения, приказы, коммерческие предложения, акты, накладные, карточки партнера или любого справочника и многие другие). Универсальная печать предназначена для формирования печатных форм на основе шаблонов в формате Word из любой конфигурации 1С. С помощью данного инструмента можно самостоятельно заполнить шаблон реквизитами справочника или документа 1С и сформировать печатные формы на основании ссылки на любой объект.

5400 руб.

08.10.2019    42434    142    88    

133

УТ 11, КА 2, ERP 2: Настраиваемые под каждую организацию печать и подпись ответственных лиц в печатных формах (ТОРГ-12, Счёт-фактура, УПД, УКД, Заказ клиента, Акт сверки, М-15 и др.)

Печатные формы Взаиморасчеты Оптовая торговля Производство готовой продукции (работ, услуг) Акт сверки Оперативный учет Управляемые формы 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Задайте для каждой организации свою печать и для каждого физического лица свою подпись. Выберите в документе печатную форму "... с печатью и подписью" - и автоматически сформируется табличный документ с печатью и подписями той организации и ответственных лиц, которые указаны в документе.

12000 руб.

13.03.2018    56268    176    76    

112

Печатные формы КС-2 и КС-3 в "1С:Бухгалтерия 3.0"

Печатные формы Производство готовой продукции (работ, услуг) Платформа 1С v8.3 Бухгалтерский учет Оперативный учет 1С:Бухгалтерия 3.0 Строительство Россия Бухгалтерский учет Платные (руб)

Откройте для себя заполнение КС-2 и КС-3 в "1С:Бухгалтерия 3.0". Вы получаете удобство, скорость и систему, чтобы заполнить, распечатать и сохранить формы КС-2 и КС-3 из документов "Оказание производственных услуг" или "Реализация товаров услуг". Вы можете заполнить дополнительную информацию о материалах из документов "Требование-накладная" и указать сведения, которые не предусмотрены типовой конфигурацией "1С:Бухгалтерия 3.0". Так же доступно множество настроек для формирования КС-2 и КС-3.

3240 руб.

13.02.2019    87640    385    44    

366

Печать актов МХ-1, МХ-3 в 1С:Бухгалтерия 3.0

Печатные формы Логистика, склад и ТМЦ Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обработки для "1С:Бухгалтерия 3.0", которые формируют акты МХ-1 и МХ-3 для документов "ПоступлениеТоваровУслуг", "Реализация товаров услуг", "Возврат товаров поставщику", "Передача материалов в эксплуатацию" соответственно. Так же можно сформировать акты с факсимиле, которая загружена в 1С:Бухгалтерия 3.0.

2520 руб.

18.02.2019    60920    171    14    

138

Путевые листы (расширение)

Печатные формы Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Транспорт, автопарки, такси Бухгалтерский учет Платные (руб)

Учет путевых листов выполнен в виде расширения. Предназначен для учета путевых листов в конфигурации Бухгалтерия предприятия 3.0. и Комплексная автоматизация 2. Печатная форма: Типовая межотраслевая форма № 3. Утверждена постановлением Госкомстата России от 28.11.97 № 78. Типовая межотраслевая форма № 4-П от 18.09.2008 г. N 152 с учетом изменений указанных в Приказе Министерства транспорта Российской Федерации №368 от 11 сентября 2020 г. №368, Типовая межотраслевая форма № ЭСМ-7, и др. ЭСМ-2, 4-С, 3 спец., 6 спец., ПЛ для Автомобильного крана. .

2000 руб.

14.10.2019    36280    221    214    

136
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. JIGIT 24.02.10 12:37 Сейчас в теме
По возможности - пример...
Заранее благодарен
2. endym 214 24.02.10 16:33 Сейчас в теме
Мне не сложно;) будет вечерком.
3. endym 214 24.02.10 19:07 Сейчас в теме
Добавил простенький примерчик. Жду комментов))))
4. Evg-Lylyk 4547 24.02.10 19:48 Сейчас в теме
Покрасьте код http://infostart.ru/public/19856/
еще скриншоты бы не помешали
5. endym 214 25.02.10 10:11 Сейчас в теме
Код подкрашу, а вот скриншоты к чему? это статья.
6. Душелов 4013 25.02.10 10:22 Сейчас в теме
(5) На статью не тянет.
7. endym 214 25.02.10 10:31 Сейчас в теме
Это пример, часть работающего кода. Решил поделиться с теми, кому это может пригодиться. Зачем выпендриваться и придираться к словам? (6)
Prad2002; user925161; user1337521; Eillecho; Teut_Vlad; Alien_job; davdykin; adhocprog; +8 Ответить
8. Evg-Lylyk 4547 25.02.10 15:45 Сейчас в теме
(7) Материал нормальный только пожалуйста оформите нормально
Раскрасте с помощью обработки http://infostart.ru/public/19856/
А скриншоты нужны обязательно т.к. многие и смотреть не будут код и обработку, а плюс поставят за полезный пример (я бы например так и сделал т.к. для меня сейчас материал не актуален, но может потом понадобится). Еще желательно ссылочки на подобные обработки например те, которые работают с вордом.
9. endym 214 25.02.10 16:06 Сейчас в теме
(8) я то и раскрасил вот той обработкой.
а что показывать в скриншотах? листочек word? ;) это же пример.. так сказать заготовка.
Если уж так надо - могу сделать 4 скрина: 2 (по 1 на каждый вариант) "до" и "после".

Причина почему я выложил - нигде толком не было объяснения как же быть в ситуации когда нужна таблица в договоре, а количество строк/столбцов варьируется.

З.Ы. подобные ссылки видны справа.

использовал материал команд VBA для Word.
10. Душелов 4013 25.02.10 16:45 Сейчас в теме
(7) На момент написания комментария кода не было.
А было 5 строк текста и приложенная обработка - это больше к "программе" относилось, чем статье. И последите за словами, перед Вами никто не "выпендривался"
11. endym 214 25.02.10 17:07 Сейчас в теме
(10) Изначально выложил только код.
После попросили (1) пример, для чего прикрепил обработку.
12. Поручик 4670 26.02.10 16:33 Сейчас в теме
Автор, глянь на это
http://infostart.ru/public/18940/
В своё время здорово выручила.
13. endym 214 01.03.10 11:53 Сейчас в теме
(12) видел, и что? это готовый шаблон, который надо заполнять ручками. а если не знать сколько реквизитов, т.е. выбирать через * все поля? как тогда?

в данном примере(если можно так назвать) , повторюсь, описывается возможность создания строк в ЛЮБОМ МЕСТЕ даже не зная сколько строк выйдет всего.

Если есть пожелания - выслушаю. ссылку добавлю в шапку.
57. KostikHvostik 15.05.23 19:17 Сейчас в теме
(13) Здравствуйте такой вопрос, а как можно форматировать конкретные ячейки, строки или столбцы? Добавить жирность или шрифт увеличить.
14. KVS 15.09.11 15:58 Сейчас в теме
Полезный пример. Спасибо
15. Boroda 90 10.10.11 12:04 Сейчас в теме
Спасибо! Пример очень пригодится и в качестве ученого материала. и в качестве его практической реализации в отчётах, которых последнее время треуется всё больше и сложнее.
16. Vovanich 19.10.11 19:12 Сейчас в теме
{ВнешняяОбработка.ПечатьАктаНаСписание.МодульОбъекта(225)}: Ошибка при вызове метода контекста (InsertRows): Произошла исключительная ситуация (Microsoft Word): Метод или свойство недоступны, поскольку некоторые или все объекты не ссылаются на таблицу. Как раз нужно сделать ВПФ Требования накладной в макете Ворд. Вставил твой код и вот такая ошибка.
17. endym 214 20.10.11 16:05 Сейчас в теме
(16) Очень интересно. хотелось бы узнать как появилась такая ошибка. Можно по-подробнее?
18. Vovanich 20.10.11 20:05 Сейчас в теме
Сорри...Вопрос снят таблицу в макете разместил не там где надо вот он и поругался.
19. Vovanich 20.10.11 20:15 Сейчас в теме
Материал очень полезный, но пожалста можно привести пример кода который будет в создаваемую таблицу в макете запихивать данные из моей ТабЗнач.В общем задача такая сделать ВПФ списания материалов из документа Требование накладная. Запросом все данные получил нарисовал стандартный табличный макетик, но заказчик хочет чтоб в Ворде это все выводилось..Если не трудно пособите.
20. endym 214 21.10.11 18:35 Сейчас в теме
(19)
не трудно, надо только ваши исходники;))
21. Vovanich 21.10.11 20:30 Сейчас в теме
куда обработку положить?или прям в сообщение код вставить?
Прикрепленные файлы:
ПечатьАктаНаСписаниеПечФорма_Для 8.2.epf
adhocprog; +1 Ответить
22. endym 214 15.11.11 18:36 Сейчас в теме
(21)весь в работе.
Сегодня посмотрел обработку по печати Акта.
А где Ваш макет word'овский? Ведь ресурс чтобы помогать а не делать за кого-то работу)
23. kuz.mina 106 22.11.11 17:10 Сейчас в теме
Спасибо за материал! но у меня возникла проблема:
В документе 5 листов, таблица на последнем(150 строка), но дальше чем на 44 строке(последняя строка первого листа) программа не видит таблицу:
{ВнешняяОбработка.Договор_поставки.МодульОбъекта(363)}: Ошибка при вызове метода контекста (InsertRows): Произошла исключительная ситуация (Microsoft Word): Метод или свойство недоступны, поскольку некоторые или все объекты не ссылаются на таблицу.
Как добавить таблицу на последний лист?
24. endym 214 23.11.11 11:35 Сейчас в теме
(23)Как добавить таблицу на последний лист?
Можно воспользоваться "шаблоном таблицы" или если используете таблицу с автоформатом - тогда перейти на последнюю страницу командой контрл+ енд
25. kuz.mina 106 23.11.11 20:11 Сейчас в теме
(24) я как раз и делаю через шаблон. если таблица находится не на первой странице, программа ее не находит
26. endym 214 24.11.11 12:27 Сейчас в теме
(25) Значит word не находит текст для замены, хоть на 99 странице будет текст в таблице.
данный механизм успешно работает при заполнении договоров купли-продажи в 15 и более листов)
27. stanru2 25.11.11 12:54 Сейчас в теме
Добрый день!
Спасибо за полезный пример, мне он помог.
По второй части хочу уточнить вот какой момент.
Если документ ворд состоит из некоего текста и шаблона таблицы, и текст динамически генерирует одинэсом, то заранее неизвестно, в каком месте документа будет таблица. Поэтому использовать

Word.Selection.MoveDown(,10); //10 строка - первая строка таблицы

не получится. Предлагаю поставить в первой пустой ячейке таблицы закладку, назвать ее, к примеру, ff и использовать так:

Word.Bookmarks("ff").Select();

ЗЫ и строку в таблице можно добавлять по мере необходимости :) Но это вкусовщина уже, работает и так, и эдак.
freeek; gely; endym; Kamikadze; monkbest; kuz.mina; +6 Ответить
28. endym 214 25.11.11 13:23 Сейчас в теме
(27)Полностью согласен, но! в моем примере таблица на десятой строке;)
можно даже вставить непечатаемый символ и отслеживать его. Мой пример не является аксиомой, а лишь механизмом для дальнейшего развития темы;)

UPD: (27) добавил в шапке в первом примере ;)
29. stanru2 25.11.11 13:44 Сейчас в теме
(28) и этот пример очень полезен! Пожалуй, один из самых наглядных среди n страниц поиска яндекса. Мне ранее не требовалось делать экспорт в вород, благодаря примеру разобрался быстро.
Можно еще в конце статьи добавить ссылок на объектную модель ворда.

А не подскажете, есть ли где пример "пряморукого" импорта из ворда (надо импортировать не тупо текст, текст получается в одном свойстве. Надо анализировать формат текста и в соотв. с ним разносить строки по реквизитам)? Перерыл пол-гугла, не нашел ничего толкового. В результате сделал перебор текста построчно через paragraphs. В каждом параграфе у первого слова проверяется формат, и дальше уже дело техники. Работает прямо скажем небыстро :( А хочется сделать максимально хорошо.

	тд = новый ТекстовыйДокумент;
	текст = док.Content.FormattedText;
	
	ЭлементыФормы.Индикатор1.МаксимальноеЗначение = текст.paragraphs.Count;
	
	
	для с = 1 по ЭлементыФормы.Индикатор1.МаксимальноеЗначение цикл
		
		ЭлементыФормы.Индикатор1.Значение = с;
		текСтр = текст.paragraphs(с).Range.Text;
		если (текст.paragraphs(с).Range.Words(1).Underline = 1) тогда
			текСлово = сокрлп(текст.paragraphs(с).Range.Words(1).Text);
			если (текСлово<>"") и (текСлово<>Символы.ВК) тогда
				текСтр = "$"+текСтр;
			КонецЕсли;
		КонецЕсли;
		тд.ДобавитьСтроку(текСтр);
		
	КонецЦикла;
Показать
adhocprog; +1 Ответить
33. endym 214 30.11.11 16:30 Сейчас в теме
(29) я уже где-то встречал парсер ворда, думаю что он не сложнее парсера mt940 и подобных форматов;)
у Word'a есть команды на VBA, которыми можно позиционироваться на каждом элементе, будь то слово, таблица, рисунок...
34. stanru2 30.11.11 17:46 Сейчас в теме
(33) у меня определенные трудности были не с тем, как обработать данные, а с тем, как их получить :) Объектная модель ворда для меня непривычна и незнакома, вот и сложности возникли :)
52. pyrkin_vanya 487 30.11.16 13:37 Сейчас в теме
(27) не получается определить закладку. У меня пишет, что метод объекта не обнаружен Bookmarks. Попробовал заменить в вашей обработке, тоже самое. Может можно как-то еще определить с какой строки начинается таблица? Или может я просто не правильно пишу?
Word.Bookmarks("ff").Select();
53. endym 214 30.11.16 15:53 Сейчас в теме
(52) "ff" это любой текст.
Можете вставить хоть "Тут должна быть таблица"
и в макете эта фраза должна присутствовать.

А какой офис установлен?
54. pyrkin_vanya 487 30.11.16 20:27 Сейчас в теме
(53) я уж не совсем дурачок :). Я создал закладку на первой строке таблицы с названием ff. Офис 16 года. Не работает. Если честно, то метод слишком запутан. Я реализовал по-другому. Все чудесно работает. Но у меня четкое количество колонок. Хотя, думаю, если поковыряться то можно и произвольное сделать :)
	НомерТаблицы = 1;
	ТаблицаТоваров = Word.ActiveDocument.Tables(НомерТаблицы);
	Сч = 1;
	Для каждого ТекСтрока_Товар Из СсылкаНаДокумент.Товары Цикл
		Сч = Сч + 1;
		СтрокаТаблицы = ТаблицаТоваров.Rows.Add();
		
		// Номенклатура
		Word.Application.ActiveDocument.Tables(НомерТаблицы).Rows(Сч).Cells(1).Range.Text = Строка(ТекСтрока_Товар.Номенклатура);
		// ЕдИзм
		Word.Application.ActiveDocument.Tables(НомерТаблицы).Rows(Сч).Cells(2).Range.Text = Строка(ТекСтрока_Товар.Номенклатура.ЕдиницаИзмерения);
		// КолВо
		Word.Application.ActiveDocument.Tables(НомерТаблицы).Rows(Сч).Cells(3).Range.Text = Строка(Формат(ТекСтрока_Товар.КоличествоУпаковок, "ЧДЦ=; ЧГ=0"));
		// Цена
		Word.Application.ActiveDocument.Tables(НомерТаблицы).Rows(Сч).Cells(4).Range.Text = Строка(Формат(ТекСтрока_Товар.Цена, "ЧЦ=15; ЧДЦ=2"));
		// Сумма
		Word.Application.ActiveDocument.Tables(НомерТаблицы).Rows(Сч).Cells(5).Range.Text = Строка(Формат(ТекСтрока_Товар.Сумма, "ЧЦ=15; ЧДЦ=2"));
		
		// выделяем область яцеек с 1 по 5 для всех строк убираем шрифт "Жирный"
		Word.Application.ActiveDocument.Range(Word.Application.ActiveDocument.Tables(НомерТаблицы).Cell(Сч,1).Range.Start,Word.Application.ActiveDocument.Tables(НомерТаблицы).Cell(Сч,5).Range.End).Font.Bold = Ложь;
		
		// выделяем область яцеек с 1 по 1. Параметр варьируется от 0 до 3. (левый край, центр, правый край, по ширине  соответственно). Номенклатура
		Word.Application.ActiveDocument.Range(Word.Application.ActiveDocument.Tables(НомерТаблицы).Cell(Сч,1).Range.Start,Word.Application.ActiveDocument.Tables(НомерТаблицы).Cell(Сч,1).Range.End).ParagraphFormat.Alignment = 0;
		
		// выделяем область яцеек с 1 по 1. Параметр варьируется от 0 до 3. (левый край, центр, правый край, по ширине  соответственно). Номенклатура
		Word.Application.ActiveDocument.Range(Word.Application.ActiveDocument.Tables(НомерТаблицы).Cell(Сч,4).Range.Start,Word.Application.ActiveDocument.Tables(НомерТаблицы).Cell(Сч,5).Range.End).ParagraphFormat.Alignment = 2;
	КонецЦикла;
Показать
SerafimOd; Dream_kz; independ; agaraev; Team leader; MaxT; +6 Ответить
55. pyrkin_vanya 487 30.11.16 20:40 Сейчас в теме
(54) Все оказалось куда проще. Достаточно прописать это для создания колонки
КолонкаТаблицы = ТаблицаТоваров.Columns.Add();

Я как 1С-ник не могу добавлять строку или колонку как процедуру. Машинально переменную пишу :) Хотя можно и без нее.
56. endym 214 01.12.16 11:08 Сейчас в теме
(55) Возможно за 8 лет офис и обрел новые функции VBA, хотя не исключено что я мог это пропустить;)

30. alecs2004 9 30.11.11 10:10 Сейчас в теме
Полезный пример. Спасибо
31. necropunk 9 30.11.11 10:22 Сейчас в теме
Автору жирный плюс. Опередил ты меня - недавно только закончил обработку, с печатью произвольного числа целой кучи разных таблиц, намучался изрядно.
32. Alex Prikol 30.11.11 16:19 Сейчас в теме
спасибо.
видно, автор копнул глубоко, кое что пригодится
35. SERJ_1CC 49 06.12.11 09:53 Сейчас в теме
То что надо, именно это и искал, примерчик очень хороший... Благодарю плюсом!!!
36. gurovvv 06.12.11 14:54 Сейчас в теме
спасибо!
просто,удобно. для начала обучения работы с вордом - отличный вариант.
37. pavel_pss 289 21.02.13 16:37 Сейчас в теме
Предлагаю так же посмотреть и мой вариант http://infostart.ru/public/95012/
38. endym 214 21.02.13 17:49 Сейчас в теме
(37) apalon_pss, мне кажется или это лишь часть описанного в моей статье?;))
39. lelusha 09.02.14 17:36 Сейчас в теме
спасибо! простой пример и очень понятно. отличный вариант. Автору спасибо, поможет для обучения работы с вордом -
40. Гость 24.02.14 10:26
А как в макете настроить чтобы применить вариант: Word.Bookmarks("ff").Select(); //Где ff - это набор любых символов
41. endym 214 24.02.14 13:03 Сейчас в теме
Нужно просто ввести понравившиеся вам символы в любом месте макета.
Word.Bookmarks("ff").Select() - это команда ищет в макете символы ff
43. monkbest 115 29.07.14 17:00 Сейчас в теме
(41) нет, она не ищет символы ff. она ищет метку с именем ff :)) вставлять метки в документе <> написать имя в текте документа
смотрите http://prosto1s.ru/index.php/24-pechat-v-word-chast-2-metod-zameny-tegov-klonirovanie-abzatsev-stok-tablitsy
там написано как добавлять метки
44. endym 214 29.07.14 19:04 Сейчас в теме
(43) monkbest, именно ищет текст и заменяет его на все что захочет пользователь.
З.Ы. метки это совсем другое;) матчасть рулит
45. monkbest 115 31.07.14 09:14 Сейчас в теме
(44) Word.Bookmarks("ff").Select();
Bookmarks - коллекция меток документа
через скобочки с именем метки, можно получить саму метку
у неё есть метод select, который возвращает выделение области от начала метки до конца метки
это выделение можно скопировать в буфер, вырезать, вставить на его место то что уже лежит в буфере (cut() copy() paste())
42. gull22 95 10.07.14 09:14 Сейчас в теме
Дорога ложка к обеду, спасибо за информацию.
46. script 128 11.12.14 02:14 Сейчас в теме
Вот интересно как сделать две таблицы программно ?

По метке мы заменили одну таблицу, а если нужно вставить еще одну ниже.
Или таблицы нужно создавать в цикле, одна под одной как быть?
Метка уже не сработает, потому что ее перезаписали и на ее месте находится первая таблица.
Получается что метка служит всего навсего начальной областью куда нужно вставить первую таблицу но что дальше?
47. endym 214 11.12.14 11:30 Сейчас в теме
Если Вы заранее знаете что там будет еще одна таблица - тогда добавить еще метку и обработать по уже известному алгоритму)
Метки обрабатываются последовательно.
48. kuza_87 28 18.03.16 07:27 Сейчас в теме
Друзья, кто-нибудь подскажет, можно ли в текст документа вставить специальный символ? Например символ бесконечности, евро или фунта стерлингов.
Прикрепленные файлы:
49. endym 214 18.03.16 11:46 Сейчас в теме
(48) kuza_87,
Можно. Используй комбинацию Аль+
50. DedMoroz1983 2 13.10.16 11:01 Сейчас в теме
Долго формируется таблица.
51. pyrkin_vanya 487 30.11.16 13:12 Сейчас в теме
А как заполнить данные в таблице из табличной части нужного объекта?
58. burza 30.05.23 09:52 Сейчас в теме
прошу прощения ну это что знчЭл ?
59. cargobird 306 04.11.23 10:30 Сейчас в теме
Вот так вывел данные в таблицу из шести колонок с неизвестным количеством строк.
В ворде таблица задана в виде двух строк, первая из которых шапка, вторая - пустая.
НомерТаблицыВВорде = 2; // надо подобрать
Документ.Tables(НомерТаблицыВВорде).Rows(2).Select();
Если ИндексыЗаявлено.Количество() > 1 Тогда  
	MSWord.Application.Selection.InsertRowsBelow(ИндексыЗаявлено.Количество()-1);
КонецЕсли;	
Ном = 1; 
Для Каждого стр Из ИндексыЗаявлено Цикл 
	Документ.Tables(НомерТаблицыВВорде).Cell(Ном+1, 1).Range.Text    = Строка(Ном);
	Документ.Tables(НомерТаблицыВВорде).Cell(Ном+1, 2).Range.Text    = Строка(стр.Номенклатура.Код);
	Документ.Tables(НомерТаблицыВВорде).Cell(Ном+1, 3).Range.Text    = Строка(стр.Номенклатура);
	Документ.Tables(НомерТаблицыВВорде).Cell(Ном+1, 4).Range.Text    = Строка(стр.Комплектов);
	Документ.Tables(НомерТаблицыВВорде).Cell(Ном+1, 5).Range.Text    = Строка(стр.Цена);
	Документ.Tables(НомерТаблицыВВорде).Cell(Ном+1, 6).Range.Text    = Строка(стр.Сумма);
	Ном = Ном + 1;
КонецЦикла;
Показать
Оставьте свое сообщение