• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Помогите Разобраться С Кодом

  • Автор темы sarenod
  • Дата начала
S

sarenod

В общем я в этой сфере совсем недавно, так что я многого не знаю :D
Мне нужно чтобы в word'е прописывались реквизиты контрагента. Решил сделать через поиск и замену, так как нашел готовый код. Только вот одна проблемка, он для семерки. Я же работаю на 8.2 ;)


Процедура Кнопка1Нажатие(Элемент)

Ворд=СоздатьОбьект("Word.Application");

Ворд.Visible=1;
ДокВорд=Ворд.documents;
ТекДокВорд=ДокВорд.Open(СокрЛП("С:\вафывс.dotx")); //путь к шаблону
Содержание=ТекДокВорд.Content;
Содержание.Find.Execute("[ИНН]",0,0,,,,,,,Строка(СокрЛП("ИНН")),1);
Содержание=ТекДокВорд.Content;
Содержание.Find.Execute("[БИК]",0,0,,,,,,,Строка(СокрЛП("БИК")),1);
Содержание=ТекДокВорд.Content;

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


Заранее большое спасибо!
 
R

RZX

На самом деле в твоем конкретном случае поменяется мало чего:

Код:
Процедура КнопкаВыполнитьНажатие(Кнопка)
Ворд = Новый COMОбъект("Word.Application"); // ------- !!!!!! ------- используем COMConnector
Ворд.Visible = 1;
ДокВорд = Ворд.documents;
ТекДокВорд = ДокВорд.Open(СокрЛП("G:\111.doc")); //путь к шаблону 
Содержание = ТекДокВорд.Content;
Содержание.Find.Execute("[ИНН]",0,0,,,,,,,Строка(СокрЛП("ИНН")),1);
Содержание = ТекДокВорд.Content; 
Содержание.Find.Execute("[БИК]",0,0,,,,,,,Строка(СокрЛП("БИК")),1);
Содержание = ТекДокВорд.Content; 
Ворд = 0; // я на всякий случай еще закрываю COM-соединение
КонецПроцедуры
 
S

sarenod

Спасибо) а вот у меня еще такой вопрос я создаю кнопку в реализации товаров и услуг и вставляю в его модуль этот код, но на деле в документе ничего не происходит. Может нужно что-то еще вписать? Справочник_контрагент.ИНН и так далее? как все это прописать и в каком виде? Если не трудно напишите пожалуйста
 
E

evgenyatam

ТекДокВорд = ДокВорд.Open(СокрЛП("G:\111.doc"));
Надо заменить "G:\111.doc" на путь к реальному файлу - шаблону. ковычки оставить.
 
S

sarenod

Путь естественно поменял) я так понял мне нужно ссылку со справочника Контрагенты делать.
 
Д

Дайнеко

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

- Ты суслика видишь?
- Нет.
- Я и "Нет". А он есть
х/ф "ДМБ"

Все происходит, но Вы просто не видите. Ворд открылся в памяти (см. Дипсетчер задач), что надо сделал. Потом 1С закрыла его. Но все не на экране, а внутрях.
В указанном коде не хватает команд:
Код:
ТекДокВорд.Save; // сохранить в этот-же файл 
или
ТекДокВорд.SaveAs; // сохранить в новый файл 
или
ТекДокВорд.Visible = 1; // показать на экране. Пусть юзер сам решает что с ним делать.
Если поставить Visible в начал, после открытия, то все изменения будут делаться прямо на глазах. Если в конце, то увидите уже готовый файл.
Методы пишу предположительно. Параметры не указываю, уточните.

Важное замечание: на исходном файле установите с признак "Только чтение". Иначе затрут к чертям.
 
P

puh14

- справка по ВБА

поиск строк - это не всегда это не всегда хорошо - будет например у гендиро отчество Иннокентиевич - получится 1122234565757окентиевич. На регистр закладываться надо. Я когда-то делал поименованные области и обращался к ним.
 
D

Darlock

Доброго времени суток.

Присоединяюсь к совету от puh14. Могу добавить только, что второй вариант - использовать закладки (bookmarks).
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!