|
|
|
Ест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...
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |