Имя: Пароль:
1C
1С v8
v8: ЗУП КОРП. Создание внешних печатных форм в Microsoft Word
0 Armando
 
22.11.11
00:15
Есть ЗУП КОРП. В письме ( http://www.1c.ru/news/info.jsp?id=12626 ) прочитал такие слова: "Создание внешних печатных форм в Microsoft Word". Меня привлекло слово "внешних".
У кого получилось создать внешнюю печатную форму в ворде? Поделитесь знанием!
А то надо трудовые договоры прикручивать в формате MSWord, а справочник лишний раз ломать не хочется. Он и так сломатый.
1 IamAlexy
 
22.11.11
00:16
открой инфасрат - примеров море...
2 Armando
 
22.11.11
00:20
(1) Я и без инфасрата могу. И нахер мне инфасрат, если производитель подписался? Там подсистема печати БСПшная, я ее умею. Но как сделать ВНЕШНЮЮ печатную форму в .doc силами типового функционала ЗУП КОРП?
3 luckyluke
 
22.11.11
00:25
(2) ну на инфосрате и есть примеры внешних печатных форм, вот например http://infostart.ru/public/88516/
Что там такого с внешней печатной формой? Есть справочник Сервис-дополнительные обработки - внешние печатные формы. Делаешь обработку, которая формирует печатную форму в ворд и открывает его, запихиваешь в этот справочник и всё.
4 IamAlexy
 
22.11.11
02:08
(2) бгыыыыы
вопрос: как сделать любую внешнюю форму силами любой типовой, если проивзодитель подписался?
ответ: открыть конфигуратор и сделать...
5 Alexandr Puzakov
 
22.11.11
03:38
Так это можно сделать в любой типовой. Фигачишь ВПФ, у которой в макете зашит шаблон в ворде (вместо обычного табличного макета), и все.
6 big
 
22.11.11
05:02
Печатать в шаблон Ворда - не комильфо. Если у всех Ворд купленный, то можно и в него, а если нет? Нет гарантии, что через год не придется убрать пиратский софт и тогда надо будет опять переделывать. Лучше сразу сделать печать в ртф-формате. ))
7 Armando
 
22.11.11
21:12
Сегодня все сделал. В толстом клиенте работает нормально.

(6) У нас все куплено. Проблемы других нас не интересуют) Печать ртф это хорошо, но в БСП для печати используется объект "Word.Application".
8 big
 
23.11.11
05:21
(7) БСП - это религия такая или супертаблетка в светлое будущее? ))
9 guitar_player
 
23.11.11
05:44
(7) ну и как? технология отличается от написания этого с нуля?
10 badboychik
 
23.11.11
05:44
RTF медленный и файл большой получается
11 big
 
23.11.11
06:13
(10) Медленнее, чем сделать через "Word.Application" ??? Да ну нафих! )) Ессно с картинками и бантиками там сложно, но банальный договор накропать - запросто. Работает со сокоростью выстрела.
12 Armando
 
23.11.11
12:08
(8) это удобство
(9) да

Кому интересно вот полный код обработки


Функция Печать() Экспорт
   
   Состояние(НСтр("ru = 'Выполняется формирование печатной формы...'"));
   
   ИмяМакета = "ПФ_DOC_ТрудовойДоговор";
   ТипМакета = "DOC";
   ДвоичныеДанныеМакета = ПолучитьМакет(ИмяМакета);
   Области = ПолучитьОписаниеОбластейМакетаОфисногоДокумента();
   ДанныеОбъекта = ПолучитьДанныеОбъекта();
   
   Попытка
       Макет = УправлениеПечатьюКлиент.ИнициализироватьМакет(ДвоичныеДанныеМакета, ТипМакета);
       Если Макет = Неопределено Тогда
           Возврат Неопределено;
       КонецЕсли;
       ПечатнаяФорма =    УправлениеПечатьюКлиент.ИнициализироватьПечатнуюФорму(ТипМакета, Макет.НастройкиСтраницыМакета);
       Если ПечатнаяФорма = Неопределено Тогда
           Возврат Неопределено;
       КонецЕсли;
       
       Область = УправлениеПечатьюКлиент.ПолучитьОбласть(Макет, Области["ВерхнийКолонтитул"]);
       УправлениеПечатьюКлиент.ПрисоединитьОбласть(ПечатнаяФорма, Область, Ложь);
       
       Область = УправлениеПечатьюКлиент.ПолучитьОбласть(Макет, Области["НижнийКолонтитул"]);
       УправлениеПечатьюКлиент.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта, Ложь);
       
       Область = УправлениеПечатьюКлиент.ПолучитьОбласть(Макет, Области["Договор"]);
       УправлениеПечатьюКлиент.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеОбъекта, Ложь);
       
       УправлениеПечатьюКлиент.ПоказатьДокумент(ПечатнаяФорма);
   Исключение
       ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ИнформацияОбОшибке());
       УправлениеПечатьюКлиент.ОчиститьСсылки(ПечатнаяФорма);
       УправлениеПечатьюКлиент.ОчиститьСсылки(Макет);
       Возврат Неопределено;
   КонецПопытки;
   
   УправлениеПечатьюКлиент.ОчиститьСсылки(ПечатнаяФорма, Ложь);
   УправлениеПечатьюКлиент.ОчиститьСсылки(Макет);
   
КонецФункции

Функция ПолучитьДанныеОбъекта()
   
   Запрос = Новый Запрос;
   Запрос.Текст = ""; // тут запрос
   Выборка = Запрос.Выполнить().Выбрать();
   Выборка.Следующий();    
   
   ДанныеОбъекта = Новый Структура;
   
   ДанныеОбъекта.Вставить("НомерДоговора",        Выборка.НомерДоговора);
   ДанныеОбъекта.Вставить("ДатаДоговора",            Формат(Выборка.ДатаДоговора, "ДФ='dd MMMM yyyy ""г.""'"));
   ДанныеОбъекта.Вставить("ФИО",                    Выборка.ФИО);
   ДанныеОбъекта.Вставить("ФИОИнициалы",            Выборка.ФИОИнициалы);
   ДанныеОбъекта.Вставить("Именуемый",            Выборка.Именуемый);
   ДанныеОбъекта.Вставить("Должность",            Выборка.Должность);
   ДанныеОбъекта.Вставить("Подразделение",        Выборка.Подразделение);
   ДанныеОбъекта.Вставить("СрокДоговора",            Выборка.СрокДоговора);
   ДанныеОбъекта.Вставить("ДатаПриема",            СтрЗаменить(Формат(Выборка.ДатаПриема, "ДФ='dd MMMM yyyy ""г.""'"), " ", Символы.НПП));
   ДанныеОбъекта.Вставить("МестоРаботы",            Выборка.МестоРаботы);
   ДанныеОбъекта.Вставить("Оклад",                Формат(Выборка.Оклад, "ЧДЦ=2"));    
   ДанныеОбъекта.Вставить("ИспытательныйСрок",    Выборка.ИспытательныйСрок);
       
   Возврат ДанныеОбъекта;
   
КонецФункции

Функция ПолучитьОписаниеОбластейМакетаОфисногоДокумента()
   
   ОписаниеОбластей = Новый Структура;
   
   УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "ВерхнийКолонтитул",    "ВерхнийКолонтитул");
   УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "НижнийКолонтитул",    "НижнийКолонтитул");
   УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Договор",                "Общая");
   
   Возврат ОписаниеОбластей;
   
КонецФункции