:: Visual Foxpro, Foxpro for DOS
DBF в WORD И HTML
tata

Сообщений: 3458
Откуда: Казань
Дата регистрации: 23.10.2005
Задача.
При массовом перерасчете ФСД я допустила ошибку.
Я собрала расчеты в файл csv, начала собирать PDF и заметила, что подписи в документах стоят управления, а не Центра (гады, кто-то исправил во время массового перерасчета).
Решила удалить расчет и сделать все заново, оказалось, наш пакет такое не поддерживает.
В результате осталась без документов, загружать в электронные дела нечего.
Пока меня отправили на недельку на карантин, решила написать программку, устраняющую мой косяк.
Сделала из имеющегося CSV DBF-ку, создала шаблон в WORD.
Создает ровно один документ и затем пишет "OLE Dispatch exception code 0 from Microsoft Word: Запрашиваемый номер семейства не существует."
Почитала форум. Тема подобная есть, но как-то для меня невнятно-непонятно.
Может, кто-то тоже сидит дома и может мне помочь?
Мне нужна четкая технология действий по шагам.
1. Как сделать один большой PDF-файл из шаблона документа и таблицы.
2. Как сделать множество HTML-файлов из того же шаблона для загрузки в УПД (управление пенсионными документами).

[attachment 33039 EXPER.zip]

[attachment 33040 HTML.zip]



Исправлено 2 раз(а). Последнее : tata, 28.03.20 10:30
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
tata
Сделала из имеющегося CSV DBF-ку, создала шаблон в WORD.
И этот шаблон для всего множества записей или таки для одной записи?
Цитата:
Создает ровно один документ и затем пишет "OLE Dispatch exception code 0 from Microsoft Word: Запрашиваемый номер семейства не существует."
Почитала форум. Тема подобная есть, но как-то для меня невнятно-непонятно.
Может, кто-то тоже сидит дома и может мне помочь?
Мне нужна четкая технология действий по шагам.
1. Как сделать один большой PDF-файл из шаблона документа и таблицы.
Для каждой записи заполнить шаблон и потом все заполненные вместе выложить в PDF?
Цитата:
2. Как сделать множество HTML-файлов из того же шаблона
Не уловил зачем из Word делать HTML?
Цитата:
для загрузки в УПД (управление пенсионными документами).
Если бы мы еще знали, что это такое и что ему нужно для загрузки.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
tata
Сделала из имеющегося CSV DBF-ку,
Bltkftoim это при каждом запуске программы. Зачем?
Кстати, первая запись какая-то не такая, проверь.
Цитата:
создала шаблон в WORD.
Создает ровно один документ и затем пишет "OLE Dispatch exception code 0 from Microsoft Word: Запрашиваемый номер семейства не существует."
Разумеется.
1. Ты не сделала хоть что-нибудь по размножению шаблона для каждой записи, а всю свою таблицу пытаешься запихнуть в место, расчитанное ьтольок на одну запись.
2. Заполненные букмарки перестают существовать, потому на второй записи их уже нет и нечего заполнять.
Цитата:
Почитала форум. Тема подобная есть, но как-то для меня невнятно-непонятно.
Про MailMerge в Word'е не пробовала почитать?

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
1. Вместо свой проги запускаешь это:
Use rasp
Select ndoc, b1, c1, Str(rasp.AF,10,2) as af, Str(rasp.AG,10,2) as ag from rasp into cursor tmp
Copy To r1 type fox2x as 866
2. Открываешь приложенный файл в Word
3. В закладке Рассылки нажимаешь Просмотр результатов и с помошью рядом расположенных кнопок смотришь результат для каждой строки данных
4. Еще правее кнопка Найти и объединить. Нажми на кнопку - получишь результат.


------------------
Лень - это неосознанная мудрость.




Исправлено 1 раз(а). Последнее : ssa, 28.03.20 13:38
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
tata

Сообщений: 3458
Откуда: Казань
Дата регистрации: 23.10.2005
ssa
tata
Сделала из имеющегося CSV DBF-ку,
Bltkftoim это при каждом запуске программы. Зачем?
Кстати, первая запись какая-то не такая, проверь.
Цитата:
создала шаблон в WORD.
Создает ровно один документ и затем пишет "OLE Dispatch exception code 0 from Microsoft Word: Запрашиваемый номер семейства не существует."
Разумеется.
1. Ты не сделала хоть что-нибудь по размножению шаблона для каждой записи, а всю свою таблицу пытаешься запихнуть в место, расчитанное ьтольок на одну запись.
2. Заполненные букмарки перестают существовать, потому на второй записи их уже нет и нечего заполнять.
Цитата:
Почитала форум. Тема подобная есть, но как-то для меня невнятно-непонятно.
Про MailMerge в Word'е не пробовала почитать?
Не только попробовала почитать, но попробовала сделать.
Не очень понравилось. Много ручных действий.
Программа должна делать все автоматически. Файлов таких много, я только один привела как пример.


Bltkftoim - а это что?
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
tata
Bltkftoim - а это что?
Русское слово на непереключенной на русский раскладке. И делаешь


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
tata
Не только попробовала почитать, но попробовала сделать.
Не очень понравилось. Много ручных действий.
Настроить шаблон один раз - много ручных действий?
Цитата:
Программа должна делать все автоматически. Файлов таких много, я только один привела как пример.
Каких ТАКИХ? Рекомендованное как раз и генерит тучу файлов по шаблону. За ОДИН раз.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
tata
Не только попробовала почитать, но попробовала сделать.
Не очень понравилось. Много ручных действий.
Настроить шаблон один раз - много ручных действий?
Цитата:
Программа должна делать все автоматически. Файлов таких много, я только один привела как пример.
Каких ТАКИХ? Рекомендованное как раз и генерит тучу файлов по шаблону. За ОДИН раз.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
tata

Сообщений: 3458
Откуда: Казань
Дата регистрации: 23.10.2005
ssa
Каких ТАКИХ? Рекомендованное как раз и генерит тучу файлов по шаблону. За ОДИН раз.
CSV-шек таких вагон у меня. Вот. Не одна она. И шаблон для каждой SCV свой.
К тому же в этой MAilMerge у меня почему-то получаются числа с большим количеством знаков после запятой, хотя в таблице они округлены.
и вообще, столько лет фоксу, наверняка уже написали кучу программ по автоматизации таких отчетов.
Я даже сама как-то такое делала, только с OpenOffice, поля какие-то создавала, помнится.
Сейчас найти не могу. Понаписала за 15 лет работы столько, что в написанном уже сама с трудом ориентируюсь.



Исправлено 3 раз(а). Последнее : tata, 28.03.20 13:52
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
tata
ssa
Каких ТАКИХ? Рекомендованное как раз и генерит тучу файлов по шаблону. За ОДИН раз.
CSV-шек таких вагон у меня. Вот. Не одна она. И шаблон для каждой SCV свой.
А, опять условия задачи появлюяются уже во время решения задачи...
Так тебе надо создать тучу вордовских файлов по другой туче файлов csv и с шаблоном к каждому из этой тучи csv? Если да, то зачем в проге создаешь только один файл и пытаешься всё впихнуть в него?
Цитата:
К тому же в этой MAilMerge у меня почему-то получаются числа с большим количеством знаков после запятой, хотя в таблице они округлены.
Я показал как делать источник данных, позволяющий получать нормальный вид. Можно просто сразу в таблицу писать
M.AF=STR(M.d1+M.i1+M.ac,10,2)
M.AG=STR(M.r1 - M.y1,10,2)
не забыв заменить этих полей при создании таблицы.
Цитата:
и вообще, столько лет фоксу, наверняка уже написали кучу программ по автоматизации таких отчетов.
Я даже сама как-то такое делала, только с OpenOffice, поля какие-то создавала, помнится.
Сейчас найти не могу. Понаписала за 15 лет работы столько, что в написанном уже сама с трудом ориентируюсь.
Ну посмотри, например, Advanced RTF Report
Если таки решишь свое ваять, то переделай цикл на создание нового файла по каждой записи, а не все записи в один файл. Ну и имена им всем придумай.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
tata

Сообщений: 3458
Откуда: Казань
Дата регистрации: 23.10.2005
ssa
Если таки решишь свое ваять, то переделай цикл на создание нового файла по каждой записи, а не все записи в один файл. Ну и имена им всем придумай.
Мне так нельзя, не загрузится.
Только в одном файле все, причем каждое распоряжение на след.странице.
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
tata
ssa
Если таки решишь свое ваять, то переделай цикл на создание нового файла по каждой записи, а не все записи в один файл. Ну и имена им всем придумай.
Мне так нельзя, не загрузится.
Только в одном файле все, причем каждое распоряжение на след.странице.
Хорошо, тогда оставляй цикл как есть, но перед каждой записью, кроме первой, вставляй разрыв страницы и копию всего текста шаблона, сделанную перед обработкой первой записи.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
Короче, дело к ночи...
Вот набросок на основе твоего кода, который в один файл по одному шаблону создает страницы на каждую запись:
Set Default To
Close All
Clear
Set Deleted On
Set Century On
Set Sysmenu Off
Set Date To Germ
Set Exclusive Off
Set Safety Off
Set Near On
Set Optimize On
Set Cpdialog On
On Key Label Escape Do Shutdown
** Определяем путь запуска программы
Public lcpath
lcpath = Justpath(Sys(16,0))
lcpath=Iif(Right(Alltrim(lcpath),1)="\",lcpath,lcpath+"\")
Set Default To (lcpath)
Set Path To PRG;Forms;Class;Menus;Data;Other;REPORTS;Include;Help;BMP
** Делаем видимым окно фокса
_Screen.Visible=.T.
namebase='rasp'
filename=Getfile("csv","Выберите файл")
FILENAME1=Justfname(filename)
nHandle=Fopen(filename)
If nHandle<0
Wait Window Nowait 'Файл не открывается !'
Retu
Endif
If nHandle > 0
Create Table rasp (A1 c(6), B1 c(14), C1 c(120), D1 N(15,2), E1 c(3), F1 N(15,2), G1 N(15,2),;
H1 N(15,2), I1 N(15,2), J1 N(15,2), K1 N(15,2), L1 N(15,2), M1 N(15,2), N1 N(15,2), O1 N(15,2), P1 N(15,2), Q1 N(15,2),;
R1 N(15,2), S1 c(3), T1 N(15,2), U1 N(15,2), V1 N(15,2), W1 N(15,2), X1 N(15,2),Y1 N(15,2),Z1 N(15,2),;
AA N(15,2), AB N(15,2), AC N(15,2), AD N(15,2), AE N(15,2), ndoc c(14), AF C(17), AG C(17) )
Endif
ndoc1="2000000"
ndoc2=90536
ndoc3="/М"
Select (namebase)
Scatter Memvar Blan
Do While .Not. Feof(nHandle)
ss = Fgets(nHandle,8192)
m.A1=Strt(Getwordnum(ss,1,"=;"),'"','')
m.B1=Strt(Getwordnum(ss,2,"=;"),'"','')
m.C1=Strt(Getwordnum(ss,3,"=;"),'"','')
m.D1=Val(Strt(Strt(Getwordnum(ss,4,"=;"),'"',''),",","."))
m.E1=Strt(Getwordnum(ss,5,"=;"),'"','')
m.F1=Val(Strt(Strt(Getwordnum(ss,6,"=;"),'"',''),",","."))
m.G1=Val(Strt(Strt(Getwordnum(ss,7,"=;"),'"',''),",","."))
m.H1=Val(Strt(Strt(Getwordnum(ss,8,"=;"),'"',''),",","."))
m.I1=Val(Strt(Strt(Getwordnum(ss,9,"=;"),'"',''),",","."))
m.J1=Val(Strt(Strt(Getwordnum(ss,10,"=;"),'"',''),",","."))
m.K1=Val(Strt(Strt(Getwordnum(ss,11,"=;"),'"',''),",","."))
m.L1=Val(Strt(Strt(Getwordnum(ss,12,"=;"),'"',''),",","."))
m.M1=Val(Strt(Strt(Getwordnum(ss,13,"=;"),'"',''),",","."))
m.N1=Val(Strt(Strt(Getwordnum(ss,14,"=;"),'"',''),",","."))
m.O1=Val(Strt(Strt(Getwordnum(ss,15,"=;"),'"',''),",","."))
m.P1=Val(Strt(Strt(Getwordnum(ss,16,"=;"),'"',''),",","."))
m.Q1=Val(Strt(Strt(Getwordnum(ss,17,"=;"),'"',''),",","."))
m.R1=Val(Strt(Strt(Getwordnum(ss,18,"=;"),'"',''),",","."))
m.S1=Strt(Getwordnum(ss,19,"=;"),'"','')
m.T1=Val(Strt(Strt(Getwordnum(ss,20,"=;"),'"',''),",","."))
m.U1=Val(Strt(Strt(Getwordnum(ss,21,"=;"),'"',''),",","."))
m.V1=Val(Strt(Strt(Getwordnum(ss,22,"=;"),'"',''),",","."))
m.W1=Val(Strt(Strt(Getwordnum(ss,23,"=;"),'"',''),",","."))
m.X1=Val(Strt(Strt(Getwordnum(ss,24,"=;"),'"',''),",","."))
m.Y1=Val(Strt(Strt(Getwordnum(ss,25,"=;"),'"',''),",","."))
m.Z1=Val(Strt(Strt(Getwordnum(ss,26,"=;"),'"',''),",","."))
m.AA=Val(Strt(Strt(Getwordnum(ss,27,"=;"),'"',''),",","."))
m.AB=Val(Strt(Strt(Getwordnum(ss,28,"=;"),'"',''),",","."))
m.AC=Val(Strt(Strt(Getwordnum(ss,29,"=;"),'"',''),",","."))
m.AD=Val(Strt(Strt(Getwordnum(ss,30,"=;"),'"',''),",","."))
m.AE=Val(Strt(Strt(Getwordnum(ss,31,"=;"),'"',''),",","."))
m.AF=Str(M.D1+M.I1+M.AC,10,2)
m.AG=Str(M.R1 - M.Y1,10,2)
m.ndoc=ndoc1+Str((ndoc2+1),5)+ndoc3
ndoc2=ndoc2+1
If ! Empty(M.A1) And !Empty(M.C1) And !"ФИО"$M.C1
Insert Into rasp From Memv
Endif
Enddo
Use rasp
Local oWord As Word.Application
oWord = Createobject("Word.Application")
oDoc = oWord.Documents.Open("d:\temp\tata\shablon.docx")
*ssa* Select rasp
*ssa* Go Top
oWord.Selection.WholeStory()
oWord.Selection.Copy()
oWord.Selection.Paste()
Scan
If Recno() > 1
oWord.Selection.InsertBreak
oWord.Selection.Paste()
EndIf
oDoc.Bookmarks("g1").Range.Text = rasp.ndoc
oDoc.Bookmarks("a1").Range.Text = rasp.C1
oDoc.Bookmarks("b1").Range.Text = rasp.B1
oDoc.Bookmarks("d1").Range.Text = rasp.AF
oDoc.Bookmarks("e1").Range.Text = rasp.AG
Endscan
Set Step On
oDoc.SaveAs("doc1.docx")
*oDoc = oWord.Documents.Open("c:\1\out\doc1.docx")
oWord.Visible = .T.
oWord.Quit()
Пути свои поставить не забудь.


------------------
Лень - это неосознанная мудрость.




Исправлено 1 раз(а). Последнее : ssa, 28.03.20 15:55
Ratings: 0 negative/1 positive
Re: DBF в WORD И HTML
tata

Сообщений: 3458
Откуда: Казань
Дата регистрации: 23.10.2005
Сережа, спасибо.
Одна закавыка только - считает по всему файлу пункты:
в первом документе 1 и 1.1
в последнем 416 и 1.417.


Как бы от этого избавиться?
Или просто закладкой сделать и из программы текстовую переменную выводить?



Исправлено 1 раз(а). Последнее : tata, 28.03.20 18:22
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
tata
Сережа, спасибо.
Одна закавыка только - считает по всему файлу пункты:
в первом документе 1 и 1.1
в последнем 416 и 1.417.


Как бы от этого избавиться?
Или просто закладкой сделать и из программы текстовую переменную выводить?
Да в шаблоне руками забей.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
tata

Сообщений: 3458
Откуда: Казань
Дата регистрации: 23.10.2005
А что это за эффект такой, когда при смене закладки уже не одно поле подставляется, а все поля из таблицы?
И как избавиться?

[attachment 33047 ]



Исправлено 2 раз(а). Последнее : tata, 29.03.20 16:32
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
tata
А что это за эффект такой, когда при смене закладки уже не одно поле подставляется, а все поля из таблицы?
И как избавиться?

[attachment 33047 ]
Не знаю, у меня такого нет. Пройдись отладчиком.

------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
tata

Сообщений: 3458
Откуда: Казань
Дата регистрации: 23.10.2005
ssa
Не знаю, у меня такого нет. Пройдись отладчиком.
Интуитивно понимаю, что не в отладке дело, а в самом шаблоне.
Как только добавляешь новую строчку с новой закладкой, предыдущая начинает вести себя неадекватно (как я показала).
Возможно, из-за отсутствия ВК+ПС в предыдущей строке.
Вроде как первую проблему я победила, распоряжения формируются (шрифты еще надо подобрать, как в оригинальном документе, и перевести все в PDF).

Теперь вот нужно победить вторую - формирование файлов HTML для загрузки в УПД (управление пенсионными документами).
УПД (это такая программа для загрузки, ей надо предоставить правильные данные) грузит данные каждого человека, и они появляются в клиентской службе.
Формат вот такой:

[attachment 33050 HTML.zip]

Идентификатор человека (idman - 30 знаков) я добавила в таблицу rasp.

[attachment 33051 RASP1.zip]



Исправлено 2 раз(а). Последнее : tata, 30.03.20 07:45
Ratings: 0 negative/0 positive
Re: DBF в WORD И HTML
ssa
Автор

Сообщений: 12999
Откуда: Москва
Дата регистрации: 23.03.2005
tata
Теперь вот нужно победить вторую - формирование файлов HTML для загрузки в УПД (управление пенсионными документами).
УПД (это такая программа для загрузки, ей надо предоставить правильные данные) грузит данные каждого человека, и они появляются в клиентской службе.
Формат вот такой:

[attachment 33050 HTML.zip]
И опять просто потрясающая информативность...
Надо получить такой файл по данным из Rasp.DBF?
Цитата:

Идентификатор человека (idman - 30 знаков) я добавила в таблицу rasp.
И куда в этом файле его надо пихать?
И еще я предлагал поменять тип полей AG и AF, а также их заполнение дабы не заниматься сексом с представлением чисел в word. Но воз и ныне там. Любим бег по граблям?


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 21 AndyNigmatec dafni_2004  (Гостей: 19)

© 2000-2024 Fox Club 
Яндекс.Метрика