Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
25 Июл 2017, 21:44
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Работа с Word в 1С 8.2  (Прочитано 3050 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн neek666

  • *
  • Сообщений: 19
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-08-22
  • Сайт: 
  • Профессия: Программист 8.1
Всем доброго времени суток. Простите, если такая тема уже существовала, искал, но не нашел. В принципе задача очень простая, если знать определенные функции работы с Word. Есть файл, формат *.doc. Необходимо его подрузить в 1С 8.2 произвести поиск определенных символов/слов и их последующую замену. Всё, больше ничего делать не надо. Перешурстил уже весь инет, все форумы, найти не могу. Везде пишут как открыть документ из шаблона и его заполнять. Но мне не надо его заполнять, он уже создан, и заполнен как надо. Необходимо только произвести поиск и замену определенных символов/слов. Подскажите пожалуйста, кто знает, или хотя бы скиньте ссылку где искать. Спасибо за понимание.


Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1097
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Re: Работа с Word в 1С 8.2
« Ответ #1: 21 Дек 2015, 07:53 »
гуглите работу с макетом типа ActiveDocument.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн neek666

  • *
  • Сообщений: 19
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-08-22
  • Сайт: 
  • Профессия: Программист 8.1
Re: Работа с Word в 1С 8.2
« Ответ #2: 21 Дек 2015, 08:10 »
да я уже замучился гуглить. Миллиарды пожалуй ссылок на различные форумы и сайты, где описаны приммеры работы с ШАБЛОНАМИ word через МАКЕТЫ. МНЕ ЭТОГО НЕ НАДО!!!! У меня уже есть готовый файл. Мне его надо подгрузить в 1С через функцию:

Файл = новый WordApplication(ПутьКФайлу,, -1);

И далее необходимо запустить некий цикл (как я полагаю) в котором файл будет перебираться ПОСИМВОЛЬНО, и некоторые символы будут меняться.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1097
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Re: Работа с Word в 1С 8.2
« Ответ #3: 21 Дек 2015, 08:19 »
макет ActiveDocument как раз и применяется по тому принципу, который вам надо.
создаете макет этого типа и прицепляете к нему ваш готовый файл.
предварительно в нужные места расставляете (назовем это как) теги для последующей замены.

в коде...
Процедура ПечатьДоговорНаБанкет(ЗаказСсылка) Экспорт

Договор = Документы.фо_Заказ.ПолучитьМакет("ДоговорНаБанкет");
// Получить объект из макета.
MSWord = Договор.Получить();

//Параметры
ПараметрыМакета = Новый Структура("НомерДоговора,
   |ДатаДоговора,
   |Организация,
   |НазваниеКомпании,
   |СуммаНаЧеловека,
   |ПроцентОбслуживания,
   |ДатаБанкета,
   |ВремяНачалаБанкета,
   |ВремяОкончанияБанкета,
   |МестоПроведения,
   |КоличествоПерсон,
   |СуммаДепозита,
   |СверхОплата,
   |ДанныеПоУдостоверению,
   |ИИН_БИН,
   |ОрганизацияПолноеНаименование,
   |ОрганизацияАдрес,
   |ОрганизацияТелефон,
   |ОрганизацияФакс,
   |ОрганизацияРНН,
   |ОрганизацияБИН,
   |ОрганизацияНомерСчета,
   |ОрганизацияБанкБИК,
   |ОрганизацияБанкНаименование,
   |ОрганизацияДиректор");
   
ЗаполнитьЗначенияСвойств(ПараметрыМакета, ЗаказСсылка, "НомерДоговора,
    |ДатаДоговора,
    |Организация,
|СуммаДепозита, МестоПроведения");    
ПараметрыМакета.НазваниеКомпании = ЗаказСсылка.Контрагент.НаименованиеПолное;
ПараметрыМакета.СверхОплата = ЗаказСсылка.ОплатаДопЧас;
ПараметрыМакета.ДатаБанкета = Формат(ЗаказСсылка.Дата,"ДФ=dd.MM.yyyy");
ПараметрыМакета.ДатаДоговора = Формат(ЗаказСсылка.ДатаДоговора,"ДФ=dd.MM.yyyy");
ПараметрыМакета.ВремяНачалаБанкета = Формат(ЗаказСсылка.ДатаНачалаБрони,"ДФ=HH:mm");
ПараметрыМакета.ВремяОкончанияБанкета = Формат(ЗаказСсылка.ДатаОкончанияБрони,"ДФ=HH:mm");
ПараметрыМакета.КоличествоПерсон = ЗаказСсылка.КоличествоГостей;
ПараметрыМакета.СуммаНаЧеловека = ""+Строка(ЗаказСсылка.СуммаНаЧеловека)+" ("+фо_ФормированиеПечатныхФорм.КоличествоПрописью(ЗаказСсылка.СуммаНаЧеловека)+")";
ПараметрыМакета.ПроцентОбслуживания = ""+Строка(ЗаказСсылка.ПроцентОбслуживания)+" ("+фо_ФормированиеПечатныхФорм.КоличествоПрописью(ЗаказСсылка.ПроцентОбслуживания)+")";
ПараметрыМакета.ДанныеПоУдостоверению = ЗаказСсылка.Контрагент.ПаспортныеДанные;
ПараметрыМакета.ИИН_БИН = ЗаказСсылка.Контрагент.ИдентификационныйНомер;
ПараметрыМакета.ОрганизацияПолноеНаименование = ЗаказСсылка.Организация.НаименованиеПолное;
ПараметрыМакета.ОрганизацияАдрес = ЗаказСсылка.Организация.Адрес;
ПараметрыМакета.ОрганизацияТелефон = ЗаказСсылка.Организация.Телефон;
ПараметрыМакета.ОрганизацияФакс = ЗаказСсылка.Организация.Факс;
ПараметрыМакета.ОрганизацияРНН = ЗаказСсылка.Организация.РНН;
ПараметрыМакета.ОрганизацияБИН = ЗаказСсылка.Организация.ИдентификационныйНомер;
ПараметрыМакета.ОрганизацияНомерСчета = ЗаказСсылка.Организация.НомерСчета;
ПараметрыМакета.ОрганизацияБанкБИК = ЗаказСсылка.Организация.БанкБИК;
ПараметрыМакета.ОрганизацияБанкНаименование = ЗаказСсылка.Организация.БанкНаименование;
ПараметрыМакета.ОрганизацияДиректор = ЗаказСсылка.Организация.Директор;
   
Попытка
Документ = MSWord.Application.Documents(1);
Документ.Activate();
Для каждого Параметр Из ПараметрыМакета Цикл
Замена = Документ.Content.Find;
Замена.Execute("<"+Параметр.Ключ+">", Ложь, Истина, Ложь, , , Истина, , Ложь, "" + Строка(Параметр.Значение), 2);
КонецЦикла;
MSWord.Application.Visible = Истина;
MSWord.Activate();
Исключение
// Если произойдет ошибка, выводятся данные об ошибке, и объект закрывается.
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();

MSWord.Application.Quit();
КонецПопытки;

КонецПроцедуры
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн neek666

  • *
  • Сообщений: 19
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-08-22
  • Сайт: 
  • Профессия: Программист 8.1
Re: Работа с Word в 1С 8.2
« Ответ #4: 21 Дек 2015, 08:28 »
макет ActiveDocument как раз и применяется по тому принципу, который вам надо.
создаете макет этого типа и прицепляете к нему ваш готовый файл.
предварительно в нужные места расставляете (назовем это как) теги для последующей замены.

в коде...
Процедура ПечатьДоговорНаБанкет(ЗаказСсылка) Экспорт

Договор = Документы.фо_Заказ.ПолучитьМакет("ДоговорНаБанкет");
// Получить объект из макета.
MSWord = Договор.Получить();

//Параметры
ПараметрыМакета = Новый Структура("НомерДоговора,
   |ДатаДоговора,
   |Организация,
   |НазваниеКомпании,
   |СуммаНаЧеловека,
   |ПроцентОбслуживания,
   |ДатаБанкета,
   |ВремяНачалаБанкета,
   |ВремяОкончанияБанкета,
   |МестоПроведения,
   |КоличествоПерсон,
   |СуммаДепозита,
   |СверхОплата,
   |ДанныеПоУдостоверению,
   |ИИН_БИН,
   |ОрганизацияПолноеНаименование,
   |ОрганизацияАдрес,
   |ОрганизацияТелефон,
   |ОрганизацияФакс,
   |ОрганизацияРНН,
   |ОрганизацияБИН,
   |ОрганизацияНомерСчета,
   |ОрганизацияБанкБИК,
   |ОрганизацияБанкНаименование,
   |ОрганизацияДиректор");
   
ЗаполнитьЗначенияСвойств(ПараметрыМакета, ЗаказСсылка, "НомерДоговора,
    |ДатаДоговора,
    |Организация,
|СуммаДепозита, МестоПроведения");    
ПараметрыМакета.НазваниеКомпании = ЗаказСсылка.Контрагент.НаименованиеПолное;
ПараметрыМакета.СверхОплата = ЗаказСсылка.ОплатаДопЧас;
ПараметрыМакета.ДатаБанкета = Формат(ЗаказСсылка.Дата,"ДФ=dd.MM.yyyy");
ПараметрыМакета.ДатаДоговора = Формат(ЗаказСсылка.ДатаДоговора,"ДФ=dd.MM.yyyy");
ПараметрыМакета.ВремяНачалаБанкета = Формат(ЗаказСсылка.ДатаНачалаБрони,"ДФ=HH:mm");
ПараметрыМакета.ВремяОкончанияБанкета = Формат(ЗаказСсылка.ДатаОкончанияБрони,"ДФ=HH:mm");
ПараметрыМакета.КоличествоПерсон = ЗаказСсылка.КоличествоГостей;
ПараметрыМакета.СуммаНаЧеловека = ""+Строка(ЗаказСсылка.СуммаНаЧеловека)+" ("+фо_ФормированиеПечатныхФорм.КоличествоПрописью(ЗаказСсылка.СуммаНаЧеловека)+")";
ПараметрыМакета.ПроцентОбслуживания = ""+Строка(ЗаказСсылка.ПроцентОбслуживания)+" ("+фо_ФормированиеПечатныхФорм.КоличествоПрописью(ЗаказСсылка.ПроцентОбслуживания)+")";
ПараметрыМакета.ДанныеПоУдостоверению = ЗаказСсылка.Контрагент.ПаспортныеДанные;
ПараметрыМакета.ИИН_БИН = ЗаказСсылка.Контрагент.ИдентификационныйНомер;
ПараметрыМакета.ОрганизацияПолноеНаименование = ЗаказСсылка.Организация.НаименованиеПолное;
ПараметрыМакета.ОрганизацияАдрес = ЗаказСсылка.Организация.Адрес;
ПараметрыМакета.ОрганизацияТелефон = ЗаказСсылка.Организация.Телефон;
ПараметрыМакета.ОрганизацияФакс = ЗаказСсылка.Организация.Факс;
ПараметрыМакета.ОрганизацияРНН = ЗаказСсылка.Организация.РНН;
ПараметрыМакета.ОрганизацияБИН = ЗаказСсылка.Организация.ИдентификационныйНомер;
ПараметрыМакета.ОрганизацияНомерСчета = ЗаказСсылка.Организация.НомерСчета;
ПараметрыМакета.ОрганизацияБанкБИК = ЗаказСсылка.Организация.БанкБИК;
ПараметрыМакета.ОрганизацияБанкНаименование = ЗаказСсылка.Организация.БанкНаименование;
ПараметрыМакета.ОрганизацияДиректор = ЗаказСсылка.Организация.Директор;
   
Попытка
Документ = MSWord.Application.Documents(1);
Документ.Activate();
Для каждого Параметр Из ПараметрыМакета Цикл
Замена = Документ.Content.Find;
Замена.Execute("<"+Параметр.Ключ+">", Ложь, Истина, Ложь, , , Истина, , Ложь, "" + Строка(Параметр.Значение), 2);
КонецЦикла;
MSWord.Application.Visible = Истина;
MSWord.Activate();
Исключение
// Если произойдет ошибка, выводятся данные об ошибке, и объект закрывается.
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();

MSWord.Application.Quit();
КонецПопытки;

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

Я видел уже этот код, он мне не подходит, по одной простой причине - этот код работает с шаблоном Word, заполняя его данными из 1С.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1097
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Re: Работа с Word в 1С 8.2
« Ответ #5: 21 Дек 2015, 08:32 »
шаблон Ворда - это Dot-файл имеется ввиду?
мне чтобы понять, что мы на одном языке говорим.
обычный Doc-файл тоже вполне себе можно прицепить к макету ActiveDocument...

можно и конкретный файл открыть через ОЛЕ.
далее схема - та же.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн vitasw

  • *****
  • Сообщений: 2546
  • РЕПУТАЦИЯ: 309
  • КПД: 12%
  • Регистрация: 2015-02-10
  • Сайт: 
  • Профессия: Программист 1С
Re: Работа с Word в 1С 8.2
« Ответ #6: 21 Дек 2015, 10:49 »
этот код работает с шаблоном Word

Этот код работает с обычным файлом ворда doc, docx.

Оффлайн neek666

  • *
  • Сообщений: 19
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-08-22
  • Сайт: 
  • Профессия: Программист 8.1
Re: Работа с Word в 1С 8.2
« Ответ #7: 21 Дек 2015, 12:53 »
Проблему решил. Вот, Если кому пригодится, я не жадный:

  Документ = WordПриложение.Documents.Open(Файл_н,, -1);
   Документ.Activate();
   
   ДлинаТекста = СтрДлина(Документ.Content.Text);
   
   Для СчетчикЦикла = 1 по ДлинаТекста - 1 цикл
     Если Документ.Range(СчетчикЦикла, СчетчикЦикла + 1).Text = "а" тогда
       Состояние("завершено на " + Строка(СчетчикЦикла/ДлинаТекста*100) + "%");
       Документ.Range(СчетчикЦикла, СчетчикЦикла + 1).Text = "б"
     КонецЕсли;
   КонецЦикла;
   
   Документ.SaveAs(Файл_н + "(копия).doc");
   Документ.Close();

код перебирает текст из документа Word посимвольно, и меняет каждый символ "а" на символ "б".
Добавлено: 21 Дек 2015, 12:55

Все очень просто и легко... именно это я и хотел здесь услышать, и не тратить на это 3 часа своего времени. Всем спасибо. Кстате... эти функции, а вернее их описание я нашел только тогда, когда "гуглил" не "работа с Word в 1С", а "работа с Word  в делфях". Я Х.З. почему, но в 1С интересуются работой с Word только с позиции создания документа по шаблонам на основе данных 1С. А мне необходима была работа с уже созданным файлом.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1097
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Re: Работа с Word в 1С 8.2
« Ответ #8: 21 Дек 2015, 13:34 »
Все очень просто и легко... именно это я и хотел здесь услышать, и не тратить на это 3 часа своего времени. Всем спасибо. Кстате... эти функции, а вернее их описание я нашел только тогда, когда "гуглил" не "работа с Word в 1С", а "работа с Word  в делфях". Я Х.З. почему, но в 1С интересуются работой с Word только с позиции создания документа по шаблонам на основе данных 1С. А мне необходима была работа с уже созданным файлом.

1) 90% задач по работе с вордом - поместить в документ ворда данные из 1С
2) совершенно естественно всех смутила "Необходимо его подрузить в 1С 8.2 произвести поиск определенных символов/слов и их последующую замену". скажите как еще должен на это реагировать среднестатистический 1Сник?
3) я бы погуглил дальше, как программно реализуется фунция Ворда "поиск и замена" - тогда бы не пришлось перебирать по-символьно.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

Смотрите бесплатно более 300 видеоуроков по работе в 1С:Бухгалтерия 8 и 1C:ЗУП 8 ред. 3.0

СМОТРЕТЬ >>

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

alex0402
93 Сообщений
oleg-x
83 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
68 Сообщений
Golickoff Golickoff
51 Сообщений
ilyay ilyay
44 Сообщений
AIFrame
42 Сообщений
Амал
30 Сообщений
lansy
22 Сообщений
Dethmontt Dethmontt
22 Сообщений
xproh
21 Сообщений

* Кто онлайн

  • Точка Гостей: 364
  • Точка Скрытых: 0
  • Точка Пользователей: 9
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal