Имя: Пароль:
1C
 
Естm ли где информация по использованию макета Activ Document?
0 УПП
 
15.11.05
09:50
Где можно поподробнее прочитьтать про использование макеты Active Document?
1 колодина
 
15.11.05
09:51
есть в книге "простые примеры разработки" Габеца...
2 УПП
 
15.11.05
09:52
(1)ясно спасибо
3 Sonic_vlad
 
15.11.05
09:53
(1) как там много инфы :(
4 колодина
 
15.11.05
09:54
(3) мне хватило, я сделала свой пример по использвоанию и все получилось...
5 Sonic_vlad
 
15.11.05
09:58
(4)ну открыть, закрыть это не проблема, а вот поймать когда пользователь ручками его изменил и при закрытии сохранить ну никак не получилось
6 колодина
 
15.11.05
09:59
(5) у меня - получилось... я в хранилище записываю...
7 Sonic_vlad
 
15.11.05
09:59
(6) покажи код плиз..именно это мне и нужно..
8 колодина
 
15.11.05
10:00
(7) что нужно? в хранилище записать? и оттуда его достать?
9 Sonic_vlad
 
15.11.05
10:01
это то проблем нету, а вот открыл макет, юзер его изменил, мне нужно сохранить 1й вариант (остался в хранилище) и получить (сохранить) в хранилище другое новый вариант
10 колодина
 
15.11.05
10:03
ну и в чем проблемы?
11 Sonic_vlad
 
15.11.05
10:04
не могу отловить закрытие
12 колодина
 
15.11.05
10:05
не поняла..... ты ведь его достал из хранилища, дал для изменения, а потом на выходе при записи и отловил....
13 Sonic_vlad
 
15.11.05
10:06
вот именно отловить и не получается..
14 Sonic_vlad
 
15.11.05
10:06
покажи как ты закрытие отлавливаешь
15 колодина
 
15.11.05
10:07
(14) да я его не отлавливала, мне не надо было.... но кажется мне, что можно сделать без проблем.... однако сейчас вот web-расширением занимаюсь, надо всю информацию собрать и систематизировать...
16 Sonic_vlad
 
15.11.05
10:18
т.е. ты просто сохраняла и назад в хранилище?
17 колодина
 
15.11.05
10:18
(16) ну да.... мне не надо было сохранять все версии... а тебе это - зачем?
18 Sonic_vlad
 
15.11.05
10:19
да есть один документ..
19 колодина
 
15.11.05
10:20
(18) ну тогда сохраняй каждый раз новый объект в хранилище.... вот только надо будет где-то (скажем в регистре сведений) сохранять что и когда было сохранено... но в целом - можно сделать...
20 Sonic_vlad
 
15.11.05
10:29
покажи как ты затаскиваешь в хранилище плиз
21 колодина
 
15.11.05
10:34
сейчас...
22 УПП
 
15.11.05
10:34
Мне кажется как вот так?

СопроводительнаяИнформация = Новый ХранилищеЗначения(ПомещаемоеЗначение, Новый СжатиеДанных(9)); Помещение в хранилище данных с жатием данных.
23 Sonic_vlad
 
15.11.05
10:36
(21) тут про АД разговор.
24 УПП
 
15.11.05
10:36
ну помещяемоке значение и есть AD
25 УПП
 
15.11.05
10:36
помещяемое sorry :)
26 колодина
 
15.11.05
10:37
эта процедура навешана на кнопку "Заполнить договор" в форме элемента справочника Договоры.
Процедура ОсновныеДействияФормыЗаполнитьДоговор(Кнопка)
   // Вставить содержимое обработчика.
   если ЭтотОбъект.ЭтоНовый()=Истина тогда
       сообщить("Необходимо вначале записать элемент справочника");
       возврат;
   конецесли;                        
   если ЭтотОбъект.ТекстДоговора.Получить() <> неопределено тогда
       сообщить("Текст договора уже записан.");
       возврат;
   конецесли;
   Договор = ПолучитьМакет("Договор3");
   MsWord = Договор.Получить();
   НаименованиеКОнтрагента = Владелец.НаименованиеПолное;
   попытка
   Документ = MsWord.Application.Documents(1);
   Документ.Activate();
   Замена = Документ.Content.Find;
   Замена.Execute("<НаименованиеПокупателя >",Ложь, Истина, Ложь,,,Истина,,Ложь,НаименованиеКОнтрагента);
   Документ.SaveAs("C:\temp\договор");
   ХранилищеДокумента = Новый ХранилищеЗначения(Новый ДвоичныеДанные("C:\temp\договор.doc") , Новый СжатиеДанных(5));
   ЭтотОбъект.ТекстДоговора  = ХранилищеДокумента;
   ЭтотОбъект.Записать();
   // попытка записать договор
   
исключение
   Сообщить(ОписаниеОшибки());
   MsWord.Application.Quit();    
конецпопытки;
27 УПП
 
15.11.05
10:37
помещяемым значением может быть что угодно, хоть дистрибутив Windows :)
28 Sonic_vlad
 
15.11.05
10:39
(26) так ты выполнила замену и сразу сохраняешь документ?
29 Sonic_vlad
 
15.11.05
10:40
+28 а мне надо дать пользователю поработать с ним
30 УПП
 
15.11.05
10:43
(29) Отличная идея, это в основном и нужно, открыть и дать пользователю поработать с ним
31 Sonic_vlad
 
15.11.05
10:43
(30) сохранить после работы!
32 Sonic_vlad
 
15.11.05
10:44
+31 и определить были ли изменения в нем
33 колодина
 
15.11.05
10:44
ну а потом открываешь для работы и сохраняешь после нее... по отдельной кнопке... мне кажется, что нет проблем.
34 УПП
 
15.11.05
10:50
(31) А если надо заполнить несколько варианотов таких документов?
35 УПП
 
15.11.05
10:51
(31) Например в базе ведуться 3 компании и со всеми данный договор заключается, и свои условия договора в зависимости от компаний. Три варианта одногои того же договора
36 колодина
 
15.11.05
10:52
(35) ну это просто решается... цепляется ссылка к элементу справочника и все... нет проблем...
37 УПП
 
15.11.05
10:53
(36) А если такой вариант: Есть шаблон некой декдарации в Excel из Гаранта, необходимо заполнить ее данными, и для каждой фирмы, а их три, нажен свой отчет.
38 Sonic_vlad
 
15.11.05
10:55
(37) ну так цепляй к реквизитам организации
39 УПП
 
15.11.05
10:56
(38) Да эт оне проблема
40 Sonic_vlad
 
15.11.05
10:57
а в чем проблема?
41 УПП
 
15.11.05
10:57
(40)Я делаю макет Active, ципляю файл, он его открывает и виснет платформа.
42 Sonic_vlad
 
15.11.05
10:59
(41) у меня не висло.. может дело в платформе?
43 УПП
 
15.11.05
11:02
(42) У меня 13 ая
44 Sonic_vlad
 
15.11.05
11:02
12.21
45 колодина
 
15.11.05
11:13
у меня 12-ая и ничего не виснет...
46 УПП
 
15.11.05
11:15
У меня ругается на:

 Документ = MsExcel.Application.Documents(1);

Метод Documents не найден
47 УПП
 
15.11.05
11:20
Почему?

{Отчет.Active.Форма.Форма(11)}: Метод объекта не обнаружен (Documents)

Я делаю также как предлагает Габец
48 колодина
 
15.11.05
11:21
(47) внимательно все проверьте.... хотя я с Екселем не пробовала... только с Вордом.
49 УПП
 
15.11.05
11:24
Да я уже напрямую код Из книги скопировал, только подправил малость и все.
50 УПП
 
15.11.05
11:29
(48) А с Word работает, получается что AD работает только с Word, а с Excel не работает. Енто полхо
51 колодина
 
15.11.05
11:32
не может быть... и с екселем тоже работает... я в этом уверена, просто лично вы что-то неправильно делаете...
52 УПП
 
15.11.05
11:35
Что не так?

Договор = ПолучитьМакет("Договор");

// Получить объект из макета.
MSWord = Договор.Получить();
ИНН = "156415641546";

Попытка
   Документ = MSWord.Application.Documents(1);
   Документ.Activate();

   // Получить объект, который будем использовать для поиска и замены.
   Замена = Документ.Content.Find;

   // Заменить заранее определенные ключевые конструкции на требуемый текст.
   Замена.Execute("<ИНН>", Ложь, Истина, Ложь, , , Истина, , Ложь, ИНН);
   
   
   // Далее аналогично для остальных ключевых конструкций.

   // Делаем видимым приложение и активизируем его.
   MSWord.Application.Visible = Истина;
   MSWord.Activate();

Исключение

   // Если произойдет ошибка выводятся данные об ошибке и объект закрывается.
   Сообщить(ОписаниеОшибки());
   MSWord.Application.Quit();

КонецПопытки;


Сейчас AD файл Excel
53 УПП
 
15.11.05
11:35
(51) Меню документ на Word работает
54 колодина
 
15.11.05
11:36
так это с вордом....
55 УПП
 
15.11.05
11:38
Да какая разница, поставить MSWORD или MSEXCEL
MSEXCEL = Договор.Получить();
MSWORD = Договр.Получить();
одно и тоже
56 УПП
 
15.11.05
11:38
Кстати у меня и такие ишибки вылазиют:

{Отчет.Active.Форма.Форма(18)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (0x80020005)
57 колодина
 
15.11.05
11:39
(55) ну почему же... разные это вещи...все зависит от макета.... ведь договор - это макет, к которому подцеплен определнного вида файл...
58 УПП
 
15.11.05
11:40
(57) В моем случае Договор это макет Excel просто я не пререименовывал ничего да и все
59 УПП
 
15.11.05
11:40
(57) + В котором нужно заменить ИНН.
60 УПП
 
15.11.05
11:41
Я единственное что думаю, что для excel вообще как то подругому надо делать?
61 колодина
 
15.11.05
11:41
(58) а вот этого никто не знает... даже интересно стало... думаю, что екселя надо по-другому делать конечно.... а если я сделаю - что мне за это будет?
62 УПП
 
15.11.05
11:47
(61) Прмеия Оскар :)
63 колодина
 
15.11.05
11:47
(62) неинтересно...
64 УПП
 
15.11.05
11:48
(63) Итак, приглашаем на эту сцену для вручения награды... :)
65 УПП
 
15.11.05
11:52
(63) А что тогда Вы хотите?
66 колодина
 
15.11.05
11:56
(на сцену пока рановато... еще не сделала.... а что я хочу - даже не знаю... вот есть у меня проблема - web-расширение под линукс... так вы этого конечно не знаете....
67 УПП
 
15.11.05
11:58
(66) Неа, это даже не наша сфера деятельности, наша Бухучет и Аудит
68 колодина
 
15.11.05
11:59
(67) вот-вот.... ну сейчас попробую, а потом как-нибудь сочтемся... потрачу некоторое время...
69 УПП
 
15.11.05
12:03
(68) да без проблем
70 vgulaev
 
15.11.05
12:12
а я добавил поля в документ и потом у меня текст был намного прозрачнее

   Ворд = Новый COMОбъект("Word.Application");
   Ворд.ChangeFileOpenDirectory(ИмяКаталога);
   Ворд.Documents.Open(ИмяФайла);
   Для каждого Поля из Ворд.ActiveDocument.Fields Цикл
       Поля.Update();
   КонецЦикла;
   Ворд.Visible = True;
71 vgulaev
 
15.11.05
12:16
а поля ассоциированны с XML файлом, который формируется тоже очень просто:

Процедура ПодготовитьХМЛФайл(ИмяКаталога, Контрагент)
   
   ЮрЛицо = Контрагент;
   БанковскийСчет = ЮрЛицо.ОсновнойБанковскийСчет;
   Банк = БанковскийСчет.Банк;
   СведенияОбПокупателе = СведенияОЮрФизЛице(ЮрЛицо, ТекущаяДата());
   
   ФайлХМЛ = Новый    ЗаписьXML();
   
   ФайлХМЛ.ОткрытьФайл(ИмяКаталога+"\БазаДанных.xml");
   ФайлХМЛ.ЗаписатьОбъявлениеXML();
   ФайлХМЛ.ЗаписатьНачалоЭлемента("КореньДокумента");
   ФайлХМЛ.ЗаписатьНачалоЭлемента("НазваниеОрганизации");
   ФайлХМЛ.ЗаписатьТекст(ЮрЛицо.Наименование);
   ФайлХМЛ.ЗаписатьКонецЭлемента();
   ФайлХМЛ.ЗаписатьНачалоЭлемента("НазваниеОрганизацииПолное");
   ФайлХМЛ.ЗаписатьТекст(ЮрЛицо.НаименованиеПолное);
   ФайлХМЛ.ЗаписатьКонецЭлемента();
   
   ФайлХМЛ.ЗаписатьНачалоЭлемента("ЮридическийАдрес");
   Стр = "";
   Если Не СведенияОбПокупателе.Свойство("ЮридическийАдрес", Стр) Тогда
       Стр = "";
   КонецЕсли;
   ФайлХМЛ.ЗаписатьТекст(Стр);
   ФайлХМЛ.ЗаписатьКонецЭлемента();
   
   ФайлХМЛ.ЗаписатьНачалоЭлемента("НомерСчета");
   ФайлХМЛ.ЗаписатьТекст(БанковскийСчет.НомерСчета);
   ФайлХМЛ.ЗаписатьКонецЭлемента();    
   ФайлХМЛ.ЗаписатьНачалоЭлемента("Банк");
   Стр = БанковскийСчет.Банк.Наименование;
   Если СокрЛП(Банк.Город) <> "" Тогда
       Стр = Стр + " г. " +СокрЛП(Банк.Город);
   КонецЕсли;
   ФайлХМЛ.ЗаписатьТекст(Стр);
   ФайлХМЛ.ЗаписатьКонецЭлемента();
   ФайлХМЛ.ЗаписатьНачалоЭлемента("ИНН");
   ФайлХМЛ.ЗаписатьТекст(ЮрЛицо.ИНН);
   ФайлХМЛ.ЗаписатьКонецЭлемента();
   
   ФайлХМЛ.ЗаписатьНачалоЭлемента("КорСчет");
   ФайлХМЛ.ЗаписатьТекст(Банк.КоррСчет);
   ФайлХМЛ.ЗаписатьКонецЭлемента();

   ФайлХМЛ.ЗаписатьНачалоЭлемента("БИК");
   ФайлХМЛ.ЗаписатьТекст(Банк.Код);
   ФайлХМЛ.ЗаписатьКонецЭлемента();
   
   ФайлХМЛ.ЗаписатьНачалоЭлемента("КПП");
   ФайлХМЛ.ЗаписатьТекст(ЮрЛицо.КПП);
   ФайлХМЛ.ЗаписатьКонецЭлемента();

   ФайлХМЛ.ЗаписатьНачалоЭлемента("КодПоОКПО");
   ФайлХМЛ.ЗаписатьТекст(ЮрЛицо.КодПоОКПО);
   ФайлХМЛ.ЗаписатьКонецЭлемента();
   
   ФайлХМЛ.ЗаписатьНачалоЭлемента("Телефоны");
   Стр = ОписаниеОрганизации(СведенияОбПокупателе, "Телефоны,");    
   ФайлХМЛ.ЗаписатьТекст(Стр);
   ФайлХМЛ.ЗаписатьКонецЭлемента();
   
   ФайлХМЛ.ЗаписатьНачалоЭлемента("ДатаНачала");
   Стр = Формат(ДатаНачалаДействияДоговора, "ДЛФ=DD");    
   ФайлХМЛ.ЗаписатьТекст(Стр);
   ФайлХМЛ.ЗаписатьКонецЭлемента();
   
   ФайлХМЛ.ЗаписатьНачалоЭлемента("ДатаКонец");
   Стр = Формат(ДатаОкончанияДействияДоговора, "ДЛФ=DD");    
   ФайлХМЛ.ЗаписатьТекст(Стр);
   ФайлХМЛ.ЗаписатьКонецЭлемента();
   
   ФайлХМЛ.ЗаписатьНачалоЭлемента("ОтветственноеЛицо");
   ФайлХМЛ.ЗаписатьТекст(ЛицоЗаключившееДоговор.Наименование);
   ФайлХМЛ.ЗаписатьКонецЭлемента();
   
   ФайлХМЛ.ЗаписатьНачалоЭлемента("НомерДоговора");
   ФайлХМЛ.ЗаписатьТекст(Строка(НомерДоговораВРеестре));
   ФайлХМЛ.ЗаписатьКонецЭлемента();
   
   ФайлХМЛ.ЗаписатьКонецЭлемента();
   ФайлХМЛ.Закрыть();    
КонецПроцедуры //ПодготовитьХМЛФайл
72 колодина
 
15.11.05
12:21
Договор = ПолучитьМакет("Договор4");
   MsWord = Договор.Получить();
   Документ = MsWord.Application.WorkBooks(1);
   Документ.Activate();

ну а замену уже сами сделаете... через свойства Application Excel
73 Интересующийся
 
15.11.05
12:23
Интересно, а кто нибудь разрабатывал собственные Active Documents?
Кроме VC++ это на чем-то возможно?
74 Asmody
 
15.11.05
12:26
(46) с каких пор у Excel.Application появилось свойство Documents?
75 колодина
 
15.11.05
12:28
(74) да уж... вот я тоже на это посмотрела...
76 Asmody
 
15.11.05
12:28
(74+) и если уж ссылаешься на пример из книги, то хоть страницу указывай
77 УПП
 
15.11.05
12:29
(72) (75) А где можно посмотреть все свойства Application? В СП ничего нет про это.
78 Asmody
 
15.11.05
12:30
(77) Справка Microsoft Visual Basic
79 колодина
 
15.11.05
12:31
а в книге пример по Ворду только есть.... ничего там нет про Ексел... автор видимо посчитал, что все равно, хоть ворд, хоть ексел... вот теперь чего бы попросить... даже не знаю...
80 Asmody
 
15.11.05
12:37
как с Excel работать есть пара примеров в главе COM...