Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: v7: работа с word через ole

Всех приветствую. Надо найти в абзаце ворда слово, от него выделить до начала абзаца и заменить текст.
Слово нахожу, его выделяю, дальше затык, не могу передать параметры.
Если нажимать кнопками, контрол+шифт+стрелкаВверх,
в макросе: Selection.MoveUp Unit:=wdParagraph, :=1, Extend:=wdExtend

Word = СоздатьОбъект("Word.Application");
Word.Visible = 1; 
Word.ActiveDocument.Select();
Word.Selection.Find.Text = "тест";
Если Word.Selection.Find.Execute() <> 0 Тогда
Word.Selection.ExtendMode = 1;// указываем на выделение текста

Word.Selection.MoveUp();  // сама команда

Иначе
    Предупреждение("ERROR> ", 2);
КонецЕсли;

Судя по макросу, параметр Extend:=wdExtend я вроде как указал, а вот как остальные (Unit и Count) - затык.
пробовал типа Word.Selection.MoveUp(1, 1, 1); тоже облом((

может, кто сталкивался, поделитесь. В интернете ничего не нашел(((
Ответ: О! допинал))), мало ли, кому сгодится
        Word.ActiveDocument.Select();
        Word.Selection.Find.Text = СловоВхода;
        Если Word.Selection.Find.Execute() <> 0 Тогда  // нашли

            Word.Selection.ExtendMode = 1;
            Word.Selection.MoveUp(4); 
ну и далее замена...
парметр нашел на
Вопрос: Правильно вставить данные в Word-макет ВПФ

Здравствуйте. Возникла следующая ситуация:
Дорабатываю внешнюю обработку с анкетой физического лица в ломбарде.
Макет на печать составлен в MS Word. Есть следующие проблемы:

1) колонка с датой рождения не заполняется (при отрабатывании обработки пустая колонка)
- красным выделено поле, которое должно заполниться. Макет заполнял в соответствии с типовым договором займа. (в типовом параметр называется ДатаРожденияЗалогодателя и у меня так же).
Код:
    Данные.Вставить ("СтоимостьКредита", СтруктУсловияДоговора.СтоимостьКредитаБезПериода);
    Данные.Вставить ("НазваниеОрганизации2", СтруктЛеваяЧасть.ОрганизацияНаименование);
    Данные.Вставить ("ИННОрганизации", СтруктЛеваяЧасть.ОрганизацияИНН);
    Данные.Вставить ("КППОрганизации", СтруктЛеваяЧасть.ОрганизацияКПП);
    Данные.Вставить ("ЮрАдресОрганизации", СтруктЛеваяЧасть.ОрганизацияАдресЮридический);
    Данные.Вставить ("ТелефонОрганизации", СтруктЛеваяЧасть.ОрганизацияТелефон);
    Данные.Вставить ("РуководительОрганизации", СтруктРасчетОплаты.ФИОРуководителя);
    Данные.Вставить ("НазваниеКонтрагента", СтруктЛеваяЧасть.ФИОЗалогодателя);
    Данные.Вставить ("Паспорт", СтруктЛеваяЧасть.ПаспортныеДанныеЗалогодателя); 
    Данные.Вставить ("ДатаРождения", СтруктЛеваяЧасть.ДатаРожденияЗалогодателя);
Часть кода, все отрабатывает, кроме последней строки.

А это весь код функции
Код:
Функция Печать () Экспорт
    Состояние ("Вывод данных в Word...");
   
    Данные = ПолучитьДокументВордИзМакета ("Макет");
   
    Приложение = Данные.Приложение;
    Документ = Данные.Документ;
    Закладки = Документ.Bookmarks;
    Выделение = Приложение.Selection;
   
    Данные = Новый Структура;
   
    СоответствиеПараметров = ЛМБ_ПечатьЗалоговыхБилетов.ПолучитьДанныеПоЗалогу(
        СсылкаНаОбъект);
   
    СтруктЛеваяЧасть      = СоответствиеПараметров.Получить("ОсновныеПараметры");
    СтруктУсловияДоговора = СоответствиеПараметров.Получить("УсловияДоговора");
    СтруктРасчетОплаты    = СоответствиеПараметров.Получить("РасчетОплаты");
    СтруктМобПриложения   = СоответствиеПараметров.Получить("МобильноеПриложение");
   
    Данные.Вставить ("НомерДокумента", СтруктЛеваяЧасть.СерияЗБ + " " +
        СтруктЛеваяЧасть.НомерЗБ);
    Данные.Вставить ("ДатаДокумента", СтруктЛеваяЧасть.ДатаЗалога);
    Данные.Вставить ("ДатаДокумента2", СтруктЛеваяЧасть.ДатаЗалога);
    Данные.Вставить ("НазваниеОрганизации", СтруктЛеваяЧасть.ОрганизацияНаименование);
    Данные.Вставить ("РеквизитыКонтрагента", СтруктЛеваяЧасть.ОписаниеЗалогодателя);
    Данные.Вставить ("ПолнаяСтоимость",
        "" + СтруктУсловияДоговора.ПолнаяСтоимостьКредита + " %");
    Данные.Вставить ("ПолнаяСтоимостьПрописью",
        СтруктУсловияДоговора.ПолнаяСтоимостьКредитаСтрокойСИзмерением);
    Данные.Вставить ("СуммаЗайма", " " + СтруктЛеваяЧасть.СуммаОценки + " (" +  ОбщегоНазначения.СформироватьСуммуПрописью(СтруктЛеваяЧасть.СуммаОценки, Константы.ВалютаРегламентированногоУчета.Получить()) + ")");
   
        Данные.Вставить ("СуммаЗайма2", "" + СтруктЛеваяЧасть.СуммаЗайма + " (" +
        СтруктЛеваяЧасть.СуммаЗаймаСтрокой1 + ")");
        Данные.Вставить ("СрокДействия", СтруктЛеваяЧасть.ДатаВозврата +
        " (" + СтруктЛеваяЧасть.СрокЗайма + ")");
    Данные.Вставить ("ПроцентнаяСтавка",
        СтруктУсловияДоговора.ПолнаяСтоимостьКредитаСИзмерением);
    Данные.Вставить ("ДатаВозврата", СтруктЛеваяЧасть.ДатаВозврата);
    Данные.Вставить ("ДатаВозврата2", СтруктЛеваяЧасть.ДатаВозврата);
        Данные.Вставить ("ЗалоговаяВещь1", СтруктЛеваяЧасть.ЗалоговаяВещь1);
        Данные.Вставить ("ЗалоговаяВещь2", СтруктЛеваяЧасть.ЗалоговаяВещь2);
        Данные.Вставить ("ЗалоговаяВещь3", СтруктЛеваяЧасть.ЗалоговаяВещь3);
        Данные.Вставить ("ЗалоговаяВещь4", СтруктЛеваяЧасть.ЗалоговаяВещь4);
       
    Данные.Вставить ("СуммаПлатежа", СтруктУсловияДоговора.СуммаПриВыкупеВСрок +
        " (" + ОбщегоНазначения.СформироватьСуммуПрописью (
        СтруктУсловияДоговора.СуммаПриВыкупеВСрокРуб,
        Константы.ВалютаРегламентированногоУчета.Получить()) + ")");
    Данные.Вставить ("СрокДействия2", СтруктЛеваяЧасть.ДатаВозврата +
        " + " + СтруктЛеваяЧасть.СрокЗайма);
        Данные.Вставить ("СтоимостьКредита", СтруктУсловияДоговора.СтоимостьКредитаБезПериода);
    Данные.Вставить ("НазваниеОрганизации2", СтруктЛеваяЧасть.ОрганизацияНаименование);
    Данные.Вставить ("ИННОрганизации", СтруктЛеваяЧасть.ОрганизацияИНН);
    Данные.Вставить ("КППОрганизации", СтруктЛеваяЧасть.ОрганизацияКПП);
    Данные.Вставить ("ЮрАдресОрганизации", СтруктЛеваяЧасть.ОрганизацияАдресЮридический);
    Данные.Вставить ("ТелефонОрганизации", СтруктЛеваяЧасть.ОрганизацияТелефон);
    Данные.Вставить ("РуководительОрганизации", СтруктРасчетОплаты.ФИОРуководителя);
    Данные.Вставить ("НазваниеКонтрагента", СтруктЛеваяЧасть.ФИОЗалогодателя);
    Данные.Вставить ("Паспорт", СтруктЛеваяЧасть.ПаспортныеДанныеЗалогодателя); 
    Данные.Вставить ("ДатаРождения", СтруктЛеваяЧасть.ДатаРожденияЗалогодателя);
    //Данные.Вставить ("МестоРождения", СтруктЛеваяЧасть.МестоРожденияЗалогодателя);
    //Данные.Вставить ("ДатаНачалаОтношенийСКлиентом", СтруктЛеваяЧасть.ЛМБ_ДатаНачалаОтношенийСКлиентом);
    //Данные.Вставить ("ДатаОперации", СтруктЛеваяЧасть.ДатаОперации);
    Данные.Вставить ("АдресКонтрагента", СтруктЛеваяЧасть.АдресЗалогодателя);
    Данные.Вставить ("ТелефонКонтрагента", СтруктЛеваяЧасть.ТелефонЗалогодателя);
   
    ЗаполнитьСвойстваДокументаВорд (Выделение, Документ, Данные);
    Приложение.Visible = Истина;
КонецФункции // Печать
Если маловато инфы - поправьте.
Ответ:
Пропустил через отладчик пошагово. Всё заполнилось. Никаких ошибок не выдает, ничего. Я в замешательстве.
Вопрос: 1C ERP 8.3 Установлен безопасный режим. Получение COM для word

Доброго времени коллеги!
После обновления в 8.3, возникла проблема с открытием word через com объект. Ругается на безопасный режим.
Пробовали сначало просто внешней обработкой - не смогли найти решение, пришли к расширениям - аналогичная проблема.
ПРичем пробовали получить com из общего модуля. Процедура "УстановитьБезопасныйРежим(ложь)" выдает другую ошибку (говорит о необходимости работы в безопасном режиме) Права на пользователе полные.
Внешняя обработка работает корректно через Файл/Открыть
Причина написания своей обработки (внешней обработки в т.ч.) - сохранить базовую конфигурацию неизменной для простоты последующих обновлений (для того и в расширения конфигурации ушли)
Может кто сталкивался с подобной проблемой и может подсказать решение? Google ничего путнего не нашел, приведенные примеры в более менее походих ситуациях обойти ошибку не позволили
Ответ: Благодарю! Очень полезная информация и ссылка.
Правда в моем случае все решилось банальней, в настройках расширения (не через свойства пр. кнопки мыши, а через меню конфигурация) есть две галочки по безопасному режиму и опасным действиям. Убрав их, обработки начали выполняться.
Вопрос: 1C (клиент-сервер) и Word

Платформа 8.3.6.2014. Конфигурация УТ 11.1.10.131. У документа есть печатная форма, макет которой имеет тип Active document (файл Word). Поскольку это печатная форма, то все телодвижения происходят в модуле менеджера, НО получить такой макет мы можем только на клиенте.

Макет = ПолучитьМакет("Макет");
Word = Макет.Получить();

На второй строке печать вылетает с ошибкой. Как это обойти, учитывая, что печатная форма должна формироваться по кнопке Печать.
Ответ: Разобрался. Если есть необходимость формировать печатные формы в Word или Open Office по фен-шую, то есть по кнопке Печать, как и обычные формы, то нужно в модуле менеджера в процедуре ДобавитьКомандыПечати указать, что форма начинает формироваться не в менеджере, а в общем модуле, который работает на клиенте. Например,

КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "ОбщийМодульКлиент.СформироватьПечатнуюФормуMSWord";
КомандаПечати.МенеджерПечати = "";
КомандаПечати.Идентификатор = "ФормаMSWord";
КомандаПечати.Представление = "Форма (MS Word)";

А дальше можно у же обращаться к процедурам и функциям менеджера для, например, получения данных.
Вопрос: Работа с шаблонами Word

Приветствую, ребята! У меня тут ступор небольшой. Потребовалось создать ВПФ для БП 3.0, да еще и чтоб шаблон вордовский подгружался. Думаю делать через ActiveDocument и использовать закладки. Вопрос . Не будет ли каких подводных камней, если юзвери будут пользоваться тонким клиентом?
Ответ:
Вроде работает
Вопрос: Как правильно закрыть процесс Word

Добрый день,
Подскажите, как правильно закрыть процесс Word, использовала
Word.Quit(0);
но потом диспетчер задач забивается процессами Word и приходится чистить их в ручную.
Ответ:
Спасибо большое, я опробую, о результатах напишу чуть позже
Вопрос: управление торговлей 11 (Демо) Печатная форма Word

Всем привет. все та же печатная форма, 3 дня с этим разбираюсь. Мне дали уже готовую внешнюю печатную форму (Во вложении). В качестве макета выступает документ MSWord договора купли-продажи (ЗаказКлиента), добавлен в Active Document. Задача: в документе, сделать маленькую правку, Нужно чтобы в нижней таблице был у организации
Закрытое акционерное общество «Торговый дом Комплексный» правильный адрес - "117342, Москва г, Севастопольский пр-кт, дом № 56", а не "г. Иркутск, ул. Щорса, 1". Мне говорили что это можно сделать через само предприятие, а не конфигурацию. вопрос как это сделать? я еще совсем новичок.

Вложения:

  • Размер файла:
    44,7 КБ
    Просмотров:
    3
Ответ:
Спасибо решил проблему
Вопрос: Ошибка при печати в Word на SQL базе

Подскажите как правильно печатать в Word при клиент-серверном варианте базы из внешней обработки?

В Файловом варианте работает так:
Код:
&НаКлиенте
Процедура Команда1(Команда)
       
    Команда1НаСервере();
   
КонецПроцедуры

&НаСервере
Процедура Команда1НаСервере()
   
Макет = ВыбратьМакет();
Замена = Макет.Content.Find;
Замена.Execute("[ФИО абонента]", , , , , , , , , "ФИО", 2);
Макет.Activate();
Макет.Application.Visible = 1;

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

&НаСервере
Функция ВыбратьМакет()
   
    Обработка = РеквизитФормыВЗначение("Объект");
    Макет = Обработка.ПолучитьМакет("Макет").Получить(); //Например: "Макет"
    Возврат Макет;
   
КонецФункции
Макет - соотв. ActiveDocument, MS Word.

Отладку могу делать только на файловой копии скульной базы. Запустить отладку на сервере не могу (нет доступа).

Этот же код на скульной базе вылетает с ошибкой...
Ответ:
Вылетает ранее:
{ВнешняяОбработка.....}: Ошибка при вызове метода контекста (Получить)

Есть рабочий пример кода?)
Вопрос: Можно ли из 1С распечатать макет WORD, не имея его на сервере?

День добрый, собственно вопрос в теме. Юзеры работают по рдп на сервере, там нет word"а. Могу ли я какими-нибудь хитрыми способами таки формировать макет этот и хотя бы сохранять его, раз уж открытие не возможно!?
Ответ:
печалька
Вопрос: Открыть Word файл и переместить таблицу в нем

Здравствуйте! Ситуация такая: есть внешняя печатная форма, которая сохраняет world файл следующим образом:
Код:
ТД.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.DOCX)
И всё бы хорошо, но по какой то причине отступ от левого края всегда 3 см, а мне нужно поставить 2 см, на ум приходит только: открыть заново файл после записи, переместить таблицу (а там таблица, т.к. тд.записать() записывает весь текст как одну, большую таблицу) и записать его. Есть еще вариант (100% рабочий): создать word макет и переделать процедуру печати, но возможно удастся сделать проще, т.к. в той пф около 100 страниц с множеством параметров заполнения и сразу переписывать все как то не хочется.
Ответ:
В справке по VB нужно смотреть, сейчас уже не помню