Как отредактировать файл? | |
---|---|
recozi Сообщений: 6 Дата регистрации: 23.07.2018 |
Всем добрый день.
На новой работе у одного из пользователей стоит база учета медикаментов, написанная под VFP8. Она не основная, сопутствующая, локальная, но вот ведут они в ней учёт уже n лет и пока про переход на другие системы не помышляют. В целом она работоспособна, критических ошибок не выдаёт, в общем устраивает их всем, кроме одного. В печатной форме отчета (даже название не помню) у них проставляется ответственный - просто ФИО, даже без должности. Периодически этот ответственный меняется (на время отпуска или после увольнения) и эти ФИО надо менять. Реализовывалось это следующим образом: Рядом с папкой базы лежит папка fam , в ней папки 1, 2, 3, 4 (по количеству подготовленных отетственных), в каждой лежат по 4 файла. m44.frt m44.frx m44.fxp m44.prg на рабочем столе пользователя батники с фамилиями. Когда надо поменять ФИО, жмут на батник, который копирует эти 4 файла из соответствующей папки в simplas. Следовательно, они уже лежат заранее подготовленные и отредактированные. А вот чем их подправить, и какой именно, разобраться сходу не смог. Я думал, может макеты табличного документа так хранятся, искал по расширениям, но поиск ничего, кроме связи с FP не выдал. Блокнот тоже почему-то не нашёл ни одного вхождения. Опыта работы с FP у меня нет, последние лет 12 я сидел на 1С. Сходу разобраться, в каком именно файле, хранится эта информация, не получилось. Прошлый обслуживающий специалист не помнит, где там что менялось. Вопрос на самом деле звучит полностью так: 1) Какой из этих файлов нужно отредактировать, чтобы поменять значение в отчете? (есть мнение, что, возможно, править нужно только один файл, а пачкой их копируют, просто потому что кто-то первый так начал делать, тоже не разобравшись) 2) Чем его можно отредактировать? 3) В идеале бы еще понять по каждому файлу, за что он отвечает. Так как мне готовить инструкции на будущее в том числе по этой операции. Заранее благодарен за ответ. Исправлено 2 раз(а). Последнее : recozi, 23.07.18 09:27 |
Re: Как отредактировать файл? | |
---|---|
ssa Сообщений: 13007 Откуда: Москва Дата регистрации: 23.03.2005 |
Первым делом смотрим (и показываем здесь) файл с расширением PRG.
------------------ Лень - это неосознанная мудрость. |
Re: Как отредактировать файл? | |
---|---|
Божья_коровка Сообщений: 25731 Дата регистрации: 23.08.2001 |
Ну вам для начала нужно выяснить, как в отчет попадает ФИО ответственного. Эти данные берутся из базы или в лоб прописываются в том же отчете который формируется - m44.frt, m44.frx
Либо может быть прописан тоже в лоб в программном файле - m44.prg. Открываете файлы и смотрите как формируется отчет, ищете блок ответственный за вывод информации по ФИО. ------------------ Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается... |
Re: Как отредактировать файл? | |
---|---|
ry Сообщений: 2113 Дата регистрации: 24.09.2007 |
Странный подход, конечно, был у разработчика. Обычно ФИО для подписей все-таки размещают где-нибудь в таблице и дают пользователю возможность редактирования этих данных в самой программе. Но чего только не бывает на практике.
Файлы с расширением frx и frt - это и есть сама печатная форма отчета (оба файла связаны и должны копироваться вместе), но отредактировать их без VFP не просто. Файлы prg и fxp - это соответственно файл с текстом программы и скомпилированный программный файл. Файл prg текстовый, его можно редактировать любым текстовым редактором, при запуске программы из IDE VFP этот файл компилируется в fxp. Вряд ли в программном файле будет формироваться фамилия для подписи в отчете, скорее всего, она "зашита" в самой печатной форме. То есть, файлы prg и fxp тогда не нужны. Кстати, можно банально сравнить файлы с одинаковыми именами из разных папок побайтно, чтобы понять, какие из них и чем отличаются. Также можно архив с файлами выложить сюда, если нет особой секретности. |
Re: Как отредактировать файл? | |
---|---|
recozi Сообщений: 6 Дата регистрации: 23.07.2018 |
А чем открыть этот самый prg, чтобы его показать тут? Может есть что-то максимально легкое, типа вьюера?
Да, думаю, проще будет их сюда все положить. Пойду, схожу, в том корпусе даже интернета нет.) Исправлено 1 раз(а). Последнее : recozi, 23.07.18 09:52 |
Re: Как отредактировать файл? | |
---|---|
ssa Сообщений: 13007 Откуда: Москва Дата регистрации: 23.03.2005 |
Написано же, что это обычный текстовый файл. Какой еще вьювер вдруг понадобился для текстового файла? Его можно просто выложить сюда прикрепив к сообщению. ------------------ Лень - это неосознанная мудрость. |
Re: Как отредактировать файл? | |
---|---|
recozi Сообщений: 6 Дата регистрации: 23.07.2018 |
Во вложении m44.prg и архив со всеми 4-мя файлами.
Где-то там должна быть "зашита" сотрудница с фамилией "Пустоветова". P.S. Видимо на том компьютере старом ещё и проблемы с кодировкой какие-то, потому что открывалось всё в блокноте в нечитабельном виде. Поэтому для меня и prg как какой-то кусок откомпилированного кода выглядел. На моём компьютере поиск сразу нашёл её в файле frt, осталось понять, можно ли грубо взять и подменить это значение в текстовом редакторе. Или нужно это будет делать как-то правильно. Исправлено 2 раз(а). Последнее : recozi, 23.07.18 11:03 |
Re: Как отредактировать файл? | |
---|---|
Божья_коровка Сообщений: 25731 Дата регистрации: 23.08.2001 |
Ну да, у вас ФИО ответственного прописано в лоб прям в файле отчета. Открываете его через ту версию фокса на которой у вас скомпилировано приложение, меняете и заново компилируете проект. Подправить вам файлик отчета? Но предупреждаю у меня VFP8.
------------------ Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается... Исправлено 1 раз(а). Последнее : Божья_коровка, 23.07.18 11:09 |
Re: Как отредактировать файл? | |
---|---|
recozi Сообщений: 6 Дата регистрации: 23.07.2018 |
Спасибо за предложение, но лучше я сам попробую это проделать. Ведь у сотрудников не будет возможности зайти на форум и попросить помощи, надо убедиться в том, что всё отработает на местной конфигурации. Тут тоже VFP8, но если открывать через него, он предлагает открыть только файлы типа prg, frx (и плюс куча других расширений), но frt открыть не даёт в приглядном виде. Если же его обмануть и использовать маску *.*, он его открывает, но как в обычном текстовом редакторе. Какой способ будет идеологически правильным? Я так понимаю, эта последовательность лежит где-то в фразе "меняете и заново компилируете проект", но картина в голове пока не нарисовалась. |
Re: Как отредактировать файл? | |
---|---|
ry Сообщений: 2113 Дата регистрации: 24.09.2007 |
Правильно - это корректировать отчет в той же версии VFP, в которой создана программа. Текстовым редактором здесь не обойтись (разве что длина ФИО совпадет, да и то не уверен, что получится, так как текстовые редакторы любят обрезать/удалять всякие нетекстовые символы, то есть портят файл). Но если под рукой нет VFP, а есть редактор таблиц DBF, умеющий работать с мемо-полями, то можно попробовать справиться с его помощью. Для этого надо переименовать расширение файла frx в dbf, а расширение frt - в fpt. Файлы должны лежать в одной папке, имена не менять. После этого открыть таблицу dbf имеющимся редактором и подправить значение мемо-поля Expr в 16-й строке (строка с идетификатором Uniqueid=_0WD0O33A6). Затем переименовать расширения файлов обратно в frx и frt. Открывайте frx, frt специально открывать не нужно - он сам "подтянется". Исправлено 1 раз(а). Последнее : ry, 23.07.18 11:26 |
Re: Как отредактировать файл? | |
---|---|
recozi Сообщений: 6 Дата регистрации: 23.07.2018 |
VFP8 есть, сделал через него. Открыл FRX, через label отредактировал поле с ФИО, сохранил FRX. Посмотрел блокнотом снаружи FRT - всё сохранилось.
Сделал 2 прохода, первый раз скомпилировал + сохранил frx, второй раз просто изменил-сохранил frx. Изменения сохранились в обоих случаях. Осталось два вопроса - 1) обязательно ли перекомпилировать prg в этом случае? Если никакие ссылочные данные не трогались, фактически поправилась только форма макета. 2) Второй вопрос вытекает из первого. При столь незначительных изменениях конкретно в этом случае (правился только текст) обязательно ли копировать prg и fxp -файлы? Спрашиваю не из праздного интереса, при создании инструкции для сотрудников (на случай, когда и меня уже тут не будет) хотелось бы минимизировать совершаемые ими действия. Но допускаю, что могу не знать чего-то (а точнее вообще ничего не знаю) из области структурного хранения данных в этой системе. Исправлено 1 раз(а). Последнее : recozi, 23.07.18 12:38 |
Re: Как отредактировать файл? | |
---|---|
BOBAN Сообщений: 625 Откуда: Солигорск Дата регистрации: 05.07.2004 |
Создать файл fio.txt, в котором прописать инициалы. А в отчете использовать поле с выражением FileToStr('fio.txt').
|
Re: Как отредактировать файл? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Это как самый тупой и примитивный вариант Только позаботится о том чтобы папка с fio.txt была текущей или была прописана в path - а то не найдёт. А так - создать табличку со списком ФИО, и либо через поле-флажок "текущий", либо просто вручную (через грид на форме или даже тупой browse) встав на нужную запись перед генерацией отчёта получать нужные значения в этом поле (поменяв label на field). 2 recozi Компиляция создаёт из prg файлов fxp. frx/frt файлы она не затрагивает вообще. Конечно если они не включаются в exe, но и тогда для внесения изменений в exe нужна не компиляция, а сборка (build) проекта. В 8 версии фокса компиляция доступна и в рантайме, но не происходит автоматом - т.е. просто поменять prg файл и запустить программу недостаточно - но если где-то в этой программе присутствует команда compile MyExternalProgram.prg - тогда вполне можно обходясь без среды разработки просто править у клиентов этот prg файл. Есть команда COMPILE REPORT, но она в frx/frt файлах компилирует программный код (он там может быть в объекте DataEnvironment) - к собственно "макету" это отношения не имеет. Если fxp это тот же самый prg в откомпилированном виде, то frt+frx это по сути одна сущность - это dbf и его файл мемо-полей. VFP это и язык и среда разработки и файл-серверная СУБД в одном флаконе. Потому там принято хранить данные в таблицах (dbf файлах), ну или работать со внешними "большими" СУБД. Выше я написал как более правильно решить вопрос с хранением и выбором из списка нужного реквизита для "подписи". Даже тупо хранить одно ФИО в txt файле и забирать его в отчёт через FILETOSTR() и то лучше, нежели городить какие-то кучи подменяемых файлов и копирующие их туда-сюда батники. ------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 23.07.18 15:03 |
Re: Как отредактировать файл? | |
---|---|
akvvohinc Автор Сообщений: 4218 Откуда: Москва Дата регистрации: 11.11.2008 |
У вас есть все, что нужно - и исходник программы вызова отчета, и сам отчет. Нет никаких проблем сделать все по-человечески, поправив и то, и другое, добавив возможность выбора ФИО из таблицы (и ведение самой таблицы) по нажатию какой-нибудь кнопки. Да даже просто выводить поле с ФИО на экран над строкой
12 лет на 1C должно за глаза хватить для того, чтобы, чуть разобравшись в FoxPro, решить это минутное дело. |
Re: Как отредактировать файл? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ох как же там всё запущено FPD программа запускаемая под VFP - это очень грустно... ------------------ WBR, Igor |
Re: Как отредактировать файл? | |
---|---|
recozi Сообщений: 6 Дата регистрации: 23.07.2018 |
В общем, немного покопавшись, пришёл к выводу, что там все же был реализован какой-то механизм подписи ответственного.
Поправьте, если ошибаюсь, в макете подготовлено поле mnamemol, в файле prg стоят условия его заполнения и в папке базы лежит таблица соответствий. [attachment 29756 otvetst_.jpg] Пока только я не разобрался, как это изначально задумывалось работать, и, видимо, мои предшественники тоже, поэтому "придумали" такой выход из положения. Всем спасибо, буду разбираться, посмотрю как это работает на примере других таблиц, пищу для ума вы мне дали. Если не разберусь, попробую использовать filetostr(). |
Re: Как отредактировать файл? | |
---|---|
akvvohinc Автор Сообщений: 4218 Откуда: Москва Дата регистрации: 11.11.2008 |
Судя по коду, ФИО должно было однозначно определяться по двум реквизитам, которые вводятся перед печатью: - инн юридического лица; - код мат-отв.лица (до 12 первых символов ФИО). В таблице mato им соответствует 2 поля: - checksum - matotv Если по введенным реквизитам в таблице находится запись, то из нее берется ФИО (поле matotv) и выводится в отчете. Но не думаю, что так уж важно разобраться, как это когда-то планировалось работать - надо решить, как это должно работать сейчас (текущая логика), и поправить программу соответствующим образом. PS Правда, чтобы поиск выполнялся нормально, выражение
Тогда можно указывать менее 12 символов ФИО, которые бы однозначно ее определяли в справочнике. Исправлено 1 раз(а). Последнее : akvvohinc, 25.07.18 18:32 |
© 2000-2024 Fox Club  |