Имя: Пароль:
1C
1С v8
Замена картинки в Word
0 ffess
 
26.02.15
12:19
Здравствуйте, коллеги.

Нужно программно из 1С добавить штрих-код к документу Word.
Штрих-код должен быть размещен в определенном пользователем месте.

Пока что склоняюсь к такому решению:
с помощью компоненты от 1С формировать картинку со штрих-кодом и вставлять ее вместо картинки, которую пользователь разместит в  документе Word.

Однако столкнулся с проблемой - не могу найти примеры, как можно из 1С заменить одну картинку в Word на другую.

Может кто подскажет как найти в Word определенную картинку и заменить её на свою?

Или, если кто сталкивался с аналогичной задачей, то как в итоге решили?
1 DrZombi
 
гуру
26.02.15
12:33
(0) Делай это через Запись Макроса в офисе.
А в 1С уже пишешь работу по ОЛЕ :)
2 Остап Сулейманович
 
26.02.15
12:36
(0) Не взлетит.
Именно вот это вот : "с помощью компоненты от 1С формировать картинку со штрих-кодом и вставлять ее вместо картинки".
3 DrZombi
 
гуру
26.02.15
12:38
(2) Почему?
Записать её в файл. И уже вставлять через макрос, этот файл в Ворд :)
4 Остап Сулейманович
 
26.02.15
12:40
(3) "Записать её в файл". Кого? Компонента <> Картинка.
5 Остап Сулейманович
 
26.02.15
12:41
+ (4) Вот вставить ее (компоненту) в Вордовский документ и по ОЛЕ установить свойства из 1С - это да. Так отработает.
6 DrZombi
 
гуру
26.02.15
12:43
+(0)

Sub Макрос1()
'
' Макрос1 Макрос
'
'
    Selection.InlineShapes.AddPicture FileName:= _
        "C:\Users\\Pictures\1.jpg", LinkToFile:=False, _
        SaveWithDocument:=True

(4) Да, картинка пишется в файл, знай это! :)
7 DrZombi
 
гуру
26.02.15
12:44
(5) Вы не в курсе :)
8 DrZombi
 
гуру
26.02.15
12:45
+(6) Остается только определится с координатами и размером картинки :)
9 ffess
 
26.02.15
13:30
(5) Остап Сулейманович, подскажите, как вставить компоненту в Вордовский документ и потом через OLE найти её?
10 ffess
 
26.02.15
13:32
(8) DrZombi, как раз это и проблема, установить картинку в нужное место, которое определяет пользователь
11 DrZombi
 
гуру
26.02.15
13:37
(10) Это не проблема. Просто Пиши макрос и смотри, как он там выставляет координаты картинки и нужные свойства.
12 DrZombi
 
гуру
26.02.15
13:38
13 DrZombi
 
гуру
26.02.15
13:42
14 ffess
 
26.02.15
13:48
(12) эту темы я смотрел). Про Яндекс тоже слышал). Как добавить картинку в Word уже знаю.

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

Как писать макрос на действия пользователя, которых ещё нет?

Предполагалось что пользователь сам поставит некую шаблонную картинку в произвольное место, а обработка заменит его картинку на картинку со штрих-кодом, которую сама сгенерит.
15 osa1C
 
26.02.15
15:20
(0) Документ Word формируется из 1С ?
16 ffess
 
26.02.15
17:04
(15) Шаблон документ Word формируют сотрудники. Впоследствии заполняется данными из 1С и нужно ещё добавить штрих-код.
17 osa1C
 
26.02.15
17:31
(16) Пусть юзверь ставит на месте картинки пометки вроде {НачалоКартинки {/КонецКартинки, а потом из 1С ищем эти пометки и между ними вставляем картинку. (Пометки удаляем посимвольно)
18 Torquader
 
26.02.15
19:38
Самый простой способ вставки Штрих-кода в любое место - это специальный Шрифт, который представляет собой штрихи для Штрих-кода.
Можно не только в Word, но и в любом месте, где можно задавать шрифты, нарисовать Штрих-код без проблем.

P.S. в Word или Excel есть объект "Диаграмма", при определённых действиях с ним вместо диаграммы рисуется Штрих-код.
19 osa1C
 
27.02.15
08:08
(0) + (16)  Делал так. Создал первоначальный шаблон Word сам. в котором текстовая информация заключена в таблицу (с невидимыми границами), таблицы (те что должны быть таблицами на выходе) нарисованы в виде двух-трех строк + строка итогов. Для картинок делал выделенную позицию.

  Все это делилось на области вида: <ОбластьТекстШапки>...<ОбластьТекстШапки/>, <ОбластьСтрокаТаблицы>...<ОбластьСтрокаТаблицы/> <Картинка> <Картинка/>(начало /конец области) и т.д.
  В тексте и таблицах необходимая из 1С информация вставлялась по меткам вида <Организация>, <ЮрАдресОрганизации> и т.д. Также через переменные и метки заполняются таблицы. В строке таблицы например: <Номенклатура> <Цена>, <Количество>, <Сумма>.
ПОД КАРТИНКИ ОТВОДИТСЯ ОТДЕЛЬНАЯ ОБЛАСТЬ. заключённая в таблицу без границ (для того, чтобы не было смещения области картинки).
Далее этот шаблон из Word выставляется как шаблон в 1С и заполняется.

При изменении шаблона юзвер меняет в Word всё как ему надо, не трогая служебные метки (их в шаблоне лучше сразу красным пометить), отредактированный шаблон грузиться в 1С на место старого и упппс... готово.

p.s. при сильном изменении первоначального шаблона. лучше сохранять в шаблонах отчёта 1С оба. и при необходимости прописывать использование отчётом нужного в данный момент шаблона
20 osa1C
 
27.02.15
08:14
(0) Простите за сумбурные объяснения... торопился писать, времени мало было... На доп. вопросы отвечу, могу прислать пример.
21 Симпатяга
 
27.02.15
08:14
(0) если картинку сохранили в файл, то можно её вставить в документ Word использую закладки.

Шаблон.Bookmarks("ИмяЗакладки").Range.Select();
Selection = Word.Selection;                      
Попытка
   Picture = Selection.InlineShapes.AddPicture(СсылкаНаФайлКартинки, Ложь, Истина);  
   // Зададим размер                                                
   Picture.Height = 300;                      
   Picture.Width  = 500;
Исключение
КонецПопытки;
22 osa1C
 
27.02.15
08:18
(21) Как я понял у ТС нет точного места вставки картинки, это место определяет юзверь, поэтому имхо надо чтобы сначала юзверь в шаблоне Ворд нарисовал таблицу на нужном для картинки месте (с размерами соответствующими), и только потом по меткам в эту таблицу вставляется картинка
23 НоваяВолна
 
27.02.15
08:37
Интересно ведь, как ТС решил вопрос. ТС расскажи уже, не томи  : )
24 Симпатяга
 
27.02.15
08:49
(19) Насколько я помню, если добавляешь новую таблицу в макет ворд, то нумерация таблиц едет. Она в документе по порядку.
Так что если в обработке есть заполнение таблицы с обращением к ней по номеру, то придется этот момент учесть
25 osa1C
 
27.02.15
10:05
(24) Нумерация таблиц в Word не имеет значения в данном случае. Таблицы создаются в макете Word для всего (текста, таблиц. картинок, диаграмм). Задача создания таблиц в макете в том, чтобы определить нужные координаты расположения всех этих блоков. В макете Word пользователь расставляет все по своим местам (как выглядеть должно)
26 osa1C
 
27.02.15
10:07
(25)+ всё остальное, как в (19)
27 Симпатяга
 
27.02.15
10:09
(25) тогда таблица должна быть одна наверное.
28 Симпатяга
 
27.02.15
10:09
(27) + со сложной структурой
29 osa1C
 
27.02.15
11:52
(27) Не уверен, что вы поняли задачу. В (19) решение по шаблону word. Имхо ТС нужен шаблон. который составляет юзер, с местом для вставки штрих-кода. Это место выделяется в шаблоне word таблицей, а таблица имеет свои координаты
30 ffess
 
27.02.15
17:20
(29) osa1C, спасибо за участие! Совершенно неожиданно сотрудники решили формировать макет в формате mxl, так что тема пока теряет актуальность.
До момента, когда они это решили, надумал сделать так:

В нужном пользователю месте они пишет ключевое слово, например <#ШТРИХКОД#>; Обработка ищет такие слова и вставляет в эти места сгенерированную 1С компонентой картинку штрих-кода; затем удаляет эти ключевые слова.

Предлагаемое в (19) решение с двумя шаблонами плохо понял, пришлите, пожалуйста, пример на [email protected]
31 ffess
 
27.02.15
17:45
(18) Специальный шрифт хорош, когда уверен что у контрагента, которому высылаешь документ Word установлен такой же)
Изначально этот вариант рассматривался в первую очередь.
Потом задача несколько раз поменялась) В итоге будет формироваться pdf на основании макетов 1С.
32 osa1C
 
02.03.15
10:24
(30) Всё вы прекрасно поняли... Есть один шаблон word для юзера, где все необходимые для заполнения из 1С области он помечает ключевыми словами. Только ключевых слов два, в вашем случае <#ШТРИХКОД#> - это начало области, далее в шаблоне рисуется таблица с невидимыми границами, с размерами для штрихкода и нужной позицией, потом должен быть определён конец области вставки: <////#ШТРИХКОД#> например. Данный шаблон грузится как макет в 1С и заполняется
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.