Показаны сообщения с ярлыком автоматизация. Показать все сообщения
Показаны сообщения с ярлыком автоматизация. Показать все сообщения

пятница, 10 февраля 2017 г.

Небольшой тюнинг Избранного и окон диалога Открыть/Сохранить как


В левой части окна Проводника находится список «Избранное». В этот список по-умолчанию добавляются ссылки на определенные папки (например, «Рабочий стол»), а также на папки некоторых программ (Google Drive, Dropbox, Яндекс.Диск и др.).
В список «Избранное» легко можно добавить другие папки, простым "перетаскиванием" с помощью мыши.

Решение чтобы добавить файлы - здесь.

Чтобы настроить окна "Открыть" и "Сохранить как" для ускорения навигации, можно воспользоваться редактором групповой политики gpedit.msc.
Открываем его, далее выбираем "Конфигурация пользователя - Административные шаблоны - Компоненты Windows - Проводник Windows - Общее диалоговое окно открытия файлов - Элементы, отображаемые в панели мест". Включаем политику и прописываем от 1 до 5 ссылок.
Вместо gpedit можно воспользоваться редактором реестра, рецепт здесь.

среда, 26 октября 2016 г.

Вывод из 1С 7.7 в Word (OLE, с разбиением страницы на колонки)


Задача: Снова встала задача вывести из 1С в Word немного текста. В этот раз отличительной особенностью стала необходимость вывода шапки на всю ширину страницы, а таблицу - разместить ниже в 2 колонки.

Для небольших таблиц в пару сотен строк кода работает прекрасно. Для больших - лучше формировать не через OLE, иначе можно смело оставлять на пару часов.

Решение: Задача старая, много полезных ссылок:
https://helpf.pro/faq8/view/635.html
http://superadm.net/index.php?name=pages&op=view&id=98
http://infostart.ru/public/67727/ - с готовым примером, много комментариев
http://www.delphimaster.ru/articles/dbtoword/index.html - отличные примеры на Дельфи
Самый лучший и полный  - http://scriptcoding.ru !


Под катом моя версия и копия с инфостарта.


вторник, 28 мая 2013 г.

Пример вывода данных в MS Word из 1С 7.7

Еще один пример работы с Word из 1С 7.7, увидел тут .

Word = CreateObject("Word.Application");
Word.Documents.Add();
Word.Documents(1).Content.InsertAfter(“Уважаемый “ + СокрЛП(Директор)+"!");
MyRange = Word.Documents(1).paragraphs.last.range;
MyRange.Bold = 1;
Word.Documents(1).paragraphs.last.Alignment = 1; //center
Word.Documents(1).Content.InsertParagraphAfter();
Word.Documents(1).Content.InsertAfter("Вы нам должны "+Сумма);
Word.Documents(1).Content.InsertAfter(" "+СокрЛП(Валюта));
Word.Documents(1).paragraphs.last.range.Bold = 0;
Word.Documents(1).paragraphs.last.Alignment = 0; //left
Цифирь = Word.Documents(1).range (Word.ActiveDocument.paragraphs.last.range.End – 1 -СтрДлина(Строка(СокрЛП(Сумма)))-1-СтрДлина(Строка(СокрЛП(Валюта))),
Word.ActiveDocument.paragraphs.last.range.End – 1 -СтрДлина(Строка(СокрЛП(Валюта))));
Цифирь.Font.ColorIndex = 6; //wdRed
// показываем полученный текст
Word.Visible = 1;


Есть несколько тонкостей, на которые следует обратить внимание:
• вызывается объект “Word.Application”;
• нельзя передавать константы Word в качестве параметров функций – только их численные значения. А чтобы быстро узнать их значения, достаточно создать макрос в Word, а в нем воспользоваться процедурой MsgBox(). Например, если передать ей wdRed в качестве параметра, то получим 6 – значение константы;
• вместо True и False надо использовать 1 и 0;
• “Documents(1)” указывает на первый из открытых документов. Надежнее использовать “ActiveDocument” (ведь если Word уже был запущен, то ваш документ может оказаться не первым) – пример просто показывает, что работают оба варианта;
• обратите внимание, что объектом “Range” может быть как весь объект другого вида (слово, абзац, документ), так и конкретная область (ср. “MyRange” и “Цифирь”).
Основным источником информации на эту тему является файл справки по VBA для MS Word.

среда, 11 июля 2012 г.

Заполнение документа WORD из 1С 7.7

Потребовалось заполнить документ Word напрямую из 1С. Нашел несколько методов на pro1c.ru и mista.ru

Первый - через использование закладок Word. В принципе, простой:
1. Делаем шаблон в Word (.DOT-файл)
2. Вставляем в него необходимое количество этих самых закладок через меню "Вставка - Закладка".
3. Даем каждой закладке свой идентификатор. По нему или по номеру потом из 1С обращаемся к закладке и заполняем:
а) по номеру
Word=СоздатьОбъект("Word.Application");
Word.visible=0;
Protokol=Word.Documents.Add(КаталогИБ()+"Dogovor\Protokol.dot",0,0,1);
Protokol.Fields(1).Result.Text=СокрЛП(Протокол);
...
Protokol.Fields(5).Result.Text=НРег(Формат(ДатаТоргов,"Д (0)ДДММММГГГГ"));
Protokol.SaveAs(ИмяФайлаПротокол);
Word.visible=1;

б) по идентификатору
//*******************************************************************
Процедура ПечатьЗакладки(ИмяЗакладки, Font, Bold, Underline, Text);
  ВордДок.Bookmarks(ИмяЗакладки).Range.Font.Name = Font;
  ВордДок.Bookmarks(ИмяЗакладки).Range.Bold      = Bold;
  ВордДок.Bookmarks(ИмяЗакладки).Range.Underline = Underline;
  ВордДок.Bookmarks(ИмяЗакладки).Range.Text      = Text;
КонецПроцедуры
Если есть шаблон .dot в файле FullNameFile, то:
ВордДок = Ворд.Documents.Add(FullNameFile);
И в шаблон вставляем значения наших закладок
ПечатьЗакладки("МояЗакладка", "Times New Roman", 1, 0, СокрЛП(МояЗакладка1С));

в) еще по идетификатору
hvКодЗаказа="Привет";
docWord.Bookmarks("hvКодЗаказа").Select(); docWord.Application.Selection.TypeText(hvКодЗаказа);

Через закладки не понравилось - до заполнения не видно, как будет выглядеть форматирование документа.

Так что использовали второй, более наглядный - через поиск и замену. Создаем шаблон, и в тексте прописываем идентификаторы реквизитов, которые потом будут заменены на их значения. Для избежания случайных срабатываний заключаем идентификаторы в квадратные скобки.

Ворд=СоздатьОбъект("Word.Application"); Ворд.Visible=1; ДокВорд=Ворд.documents; ТекДокВорд=ДокВорд.Open(СокрЛП(ПутьШаблона)); //путь к шаблону (dot) Содержание=ТекДокВорд.Content; Содержание.Find.Execute("[НомерДок]",0,0,,,,,,,Строка(СокрЛП(НомерДок)),1); Содержание=ТекДокВорд.Content; // это каждый раз! Содержание.Find.Execute("[ФИО]",0,0,,,,,,,Строка(СокрЛП(ФИО)),1);
ТекДокВорд.SaveAs(ПодКакимИменемСохранитьФайл+".doc");

С 2003 офисом точно работает, под другими не пробовал.

UPD. 10.03.2017
В 2013 офисе тоже работает, проверено :).
Для замены всех встречающихся значений шаблона в тексте, необходимо установить последний параметр в 2.
Содержание.Find.Execute("[ФИО]",0,0,,,,,,,Строка(СокрЛП(ФИО)),2);
Описание здесь и здесь.
Параметр - wdReplaceAll = 2;
Поиск = ОбъектДокумент.Content.Find;
Поиск.Execute(ИмяПараметра,,,,,,,,,ЗначениеПараметра,2);