Скачать шаблоны для cms Joomla 3.
Бесплатные шаблоны джумла

Уважаемые коллеги! Наши программы можно приобрести по безналичному расчету. Напишите нам по адресу task@moscowsoft.com или позвоните по телефону +7 (926) 177-35-78. Ответим на все Ваши вопросы, оформим все необходимые документы. Территориально находимся в г. Москва, в другие регионы документы отправляем почтой России.

Являюсь автором всех программ и переносов данных, представленных на этом сайте. Можете позвонить +7 (926) 177-35-78, задать вопросы по программам.

Создание документов Word средствами 1С

Создание документов doc в 1С (Active Document)

Давайте рассмотрим на примерах как это делается! =) Мне известно 2 способа: 
1. Путем замены шаблонного текста в макете Wordа. 
2. Путем вставки текста с помощью закладок в Wordе, 

В первом случае сразу скажу, что длина строки передаваемая в функцию замены, довольно небольшая  255 символов, да и расстановка шаблонных выражений в макете Word занимает довольно много времени. Через процедуру Content.Find.Execute.

 

Во втором случае длина, насколько мне известно неограниченна, также воськаться с закладками намного быстрее и удобнее, чем расставлять шаблонный текст. Используя Bookmarks().select(). Поэтому давайте на коде рассмотрим второй пример. 

И так, для начала необходимо добавить Word макет к документу. Добавляем макет с помощью конструктора макетов указав Active document и выбрав соответствующий макет. 

Называем его Акт. Открываем макет в 1Ске, ставим курсор в нужном месте, переходим в меню Вставка закладка нажимаем добавить закладку к примеру у меня это НарушенияТекст 

Теперь кидаем на форму документа кнопку Сформировать и по нажатию на нее пишем код который открывает наш макет Word ищем закладку по имени и вставляет туда текст: 

Код 1C v 8.х
 //инициализация часть 1  СсылкаМакет = ПолучитьМакет(Акт);  MSWord = СсылкаМакет.Получить();  Попытка  СсылкаМакет = MSWord.Application.Documents(1);  СсылкаМакет.Activate();   //выгружаем табличную часть с нарушениями в строку часть 2  str = Новый COMОбъект(ADODB.Stream);  str.Open();  СтрочкаТаблицы = ЭлементыФормы.Нарушения.ТекущиеДанные;  Для Каждого СтрочкаТаблицы Из Нарушения Цикл  str.WriteText( + СтрочкаТаблицы.Описание +  Нарушены требования СНИПФЗГОСТ:  + СтрочкаТаблицы.СНИПФЗГОСТ  +  Статья:  + СтрочкаТаблицы.ЧастьСтатья  + Символ(13),0);  КонецЦикла;  str.Position = 0;  НарушенияТекст = str.readText();  //вставляем в закладку текст с нарушениями часть 3  MSWord.Bookmarks(НарушенияТекст).select();  MSWord.Application.selection.TypeText(НарушенияТекст);  //открыть Word часть 4  СсылкаМакет.Application.Visible = Истина;  СсылкаМакет.Activate();  Исключение  //если ошибка   Сообщить(ОписаниеОшибки());  MSWord.Application.Quit();  КонецПопытки;   


Это пример вывода множества строчек из табличной части  одной строкой, если нужно просто выгрузить какой-то реквизит то можно пропустить часть 2 и перейти к части 3. 

Для выгрузки табличной части в форме таблицы можно использовать функцию автоформата, примеру код выгрузки табличной части документа Предписание: 

Код 1C v 8.х
 Word = MSWord.Application;  Документ = Word.ActiveDocument();  //Переместиться вниз на 22 строк  Word.selection.MoveDown(,22);  Документ.Paragraphs.Add();  //подготовка таблицы:  Rng = Word.selection.Range;  //Формируем заголовок:  Rng.I_nsertAfter(№ п/п*Установленные нарушения и меры по их устранению*Основания);   Rng.I_nsertParagraphAfter();  //сама таблица  СтрочкаТаблицы = ЭлементыФормы.НарушенияПредписание.ТекущиеДанные;  Для Каждого СтрочкаТаблицы из НарушенияПредписание Цикл   Rng.I_nsertAfter(Строка(СтрочкаТаблицы.НомерСтроки)+*+СтрочкаТаблицы.Описание + ;  + СтрочкаТаблицы.Предписание +* + СтрочкаТаблицы.СНИПФЗГОСТ +   + СтрочкаТаблицы.ЧастьСтатья);  Rng.I_nsertParagraphAfter();   КонецЦикла;   Rng.ConvertToTable(*);  Документ.Tables(1).AutoFormat(17); //номер таблицы в шаблоне  Word.Visible = Истина;   


Ну вот и все =) 
Автор: saylolpls



Еще способ Active document 
В Конфигураторе Макеты - правый клик - Добавить 
Тип макета: Active document 
Создать новый - Документ Microsoft Word 

Меню Вставка - Поле - Автоматизация - DocVariable 
Написать имя поля в графе "Новое имя:" ДатаПриказа 

В модуле формы документа создаем кнопку, и в ее обработчике пишем: 

Код 1C v 8.х
 Процедура ОсновныеДействияФормыWord(Кнопка)     АктивныйДокумент = ПолучитьМакет("Макет");     КомОбъект = АктивныйДокумент.Получить();          КомОбъект.Application.Visible=1;     КомОбъект.Variables.Item("ДатаПриказа").Value="24.01.2007";     КомОбъект.Fields.UpDate();     КомОбъект.PrintOut(); //распечатать документ     //Ожидание окончания отправки на печать...     Пока objWord.Application.BackgroundPrintingStatus<>0 Цикл       Предупреждение("Ожидание",1);     КонецЦикла;       КомОбъект.Application.Quit(); //закрыть Word     КомОбъект = 0;  КонецПроцедуры     



2) добавляем не поле, а Закладку 
Меню Вставка - Закладка и далее указываем ее имя ("ИмяЗакл") 

Код 1C v 8.х
 Процедура ОсновныеДействияФормыWord(Кнопка)     АктивныйДокумент = ПолучитьМакет("Макет");     КомОбъект = АктивныйДокумент.Получить();     КомОбъект.Application.Visible=1;     КомОбъект.Bookmarks(СокрЛП("ИмяЗакл")).select();     КомОбъект.Application.selection.TypeText(СокрЛП("тест проверка"));  КонецПроцедуры   




Код 1C v 8.2 УП
 // Параметры договора обозначены в тексте переменными вида "[%НомерДоговора%]"  Функция ПечатьДокумента() Экспорт             Договор = ПолучитьМакет("ActiveDocument_ДоговорПоставки"); // получим макет-ActiveDocument       MSWord = Договор.Получить();        Попытка  	Doc = MSWord.Application.Documents(1);          Doc.Activate();                   Replace = Doc.Content.Find;                        FindText = "{НомерДоговора}";     // что искать - имя_шаблона          MatchCase = Ложь;                 // использовать регулярные выражения                  MatchWholeWord = Истина;          // искать слово целиком          MatchWildcards = Ложь;            // испоьзовать регулярные выражения           MatchSoundsLike = Неопределено;   // искать созвучные           MatchAllWordForms = Неопределено; // искать все формы слова          Forward = Истина;                 // искать вперед          Wrap = Неопределено;              // что должен вернуть Find-объект           Format_ = Ложь;                   // использовать форматирование          ReplaceWith = "N777";             // текст, на который надо заменить имя_шаблона                    // кратко:                  //Replace.Execute(FindText,Ложь,Истина,Ложь,,,Истина,,Ложь,НомерДоговора);                            Replace.Execute(              FindText,               MatchCase,               MatchWholeWord,               MatchWildcards,               MatchSoundsLike,               MatchAllWordForms,               Forward,              Wrap,              Format_,              НомерДоговора);                        MSWord.Application.Visible = Истина;          MSWord.Activate();      Исключение          Сообщить(ОписаниеОшибки());          MSWord.Application.Quit();          КонецПопытки;             возврат 0;  КонецФункции   

Источник
:..
Joomla SEF URLs by Artio

Оказываем следующие услуги на платформе 1С:
- Автоматизация бизнес-процессов компании и рутинных операций (от загрузки из Excel до процессного подхода к управлению предприятием);
- Перенос данных между программами 1С, MSPA, Navision, SAP, Folio (настройка обменов и разработка);
- Абонентское обслуживание информационных баз предприятия, обновление по ИТС;
- Консультации пользователей по работе в программах 1С;
- Создание прикладных программ на заказ.

Почему мы?
- Опыт работы 7 лет по автоматизации торговых и производственных предприятий;
- Лучшие специалисты по доступным ценам;
- Решаем Ваши задачи БЫСТРО.

Наши особенности:
- Техподдержка 7 дней  в неделю;
- Решение проблем в течение 24 часов;
- Удаленное подключение к Вашим компьютерам;
- Работаем только с лицензионными версиями программ;
- Один месяц абонентской поддержки в формате "тест-драйв" - наведем порядок в 1С или вернем деньги!