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

СМОТРЕТЬ >>

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

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

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

Оффлайн neek666

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


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

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1096
  • КПД: 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
  • РЕПУТАЦИЯ: 1096
  • КПД: 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
  • РЕПУТАЦИЯ: 1096
  • КПД: 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
  • РЕПУТАЦИЯ: 1096
  • КПД: 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) я бы погуглил дальше, как программно реализуется фунция Ворда "поиск и замена" - тогда бы не пришлось перебирать по-символьно.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.


Теги:
 


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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
143 Сообщений
alex0402
112 Сообщений
Norfolk
51 Сообщений
LexaK
45 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
друган
21 Сообщений
AsadRoman
20 Сообщений
alexandr_ll
20 Сообщений
Константин5825
18 Сообщений
MrLvovsky MrLvovsky
16 Сообщений

* Кто онлайн

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

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

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

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

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

Поиск

 

Dellos Catering - выездной ресторан кейтеринг по всему Миру
SimplePortal 2.3.5 © 2008-2012, SimplePortal