|
v7: Относительные преимущества dbf-файлов Ø (Злопчинский 10.05.2016 00:53) | ☑ | ||
---|---|---|---|---|
0
Emery
07.05.16
✎
21:44
|
Я вот недавно открыл для себя преимущества dbf-файлов перед другими форматами баз данных. Понятно, что речь идет не об абсолютных достоинствах, а относительно решения определенной задачи.
Задача была такая. Есть контрол списка данных (грид), поддерживающий виртуальный режим. Это может быть контрол на базе SysListView32, типа MFC-ешного CListCtrl либо виджет wxGrid из фреймворка wxWidgets либо соответствующий контрол из Qt или еще какой-нибудь. Также имеется конкретный файл базы данных с большим количеством записей, например, порядка сотни миллионов. Нужно организовать подкачку данных (через обработчики виртуального режима) из файла БД в виртуальную таблицу. Т.е. когда обработчик просит нас предоставить ему i-тую запись из файла БД мы должны быстренько получить ее из локальной файловой таблицы и передать обработчику. Нам требуется обеспечить удобную и быструю интерфейсную навигацию по виртуальной таблице, чтобы она отображала нужную нам страницу записей. Действия там такие: переход в начало таблицы данных (Ctrl+Home), в конец (Ctrl+End), перемещения стрелками вверх / вниз на одну запись вверх / вниз, перемещения клавишами PageUp / PageDown на одну страницу записей вверх / вниз, перемещение ползунка вертикального скролбара с помощью мыши в произвольное место, так, чтобы при этом данные в таблице плавно, легко и быстро изменялись. Главная проблема здесь, как организовать быстрый доступ к данным файловой таблицы. В общем случае нам надо проиндексировать файл (для быстрой выборки произвольного блока данных), иметь средства некоторой СУБД, с помощью которой считывать определенные порции данных в буфер, из которого уже и возвращать обработчикам виртуального режима запрашиваемые ими записи. Все это достаточно муторно, если делать самому. Однако если работать непосредственно с dbf-файлами, то ситуация сильно упрощается. Если у нас имеется огромный dbf-файл который мы хотим отображать в собственном клиенте, то виртуальную навигацию по нему организовать очень просто. Достаточно отобразить файл в память и получить к нему произвольный доступ по технологии MMF (Memory-Mapped Files). А поскольку dbf-файл имеет простую табличную структуру, то вычислить адрес начала его произвольной записи проще простого. В свое время я писал подобные тестовые программы, правда, не задумываясь о достоинствах открытой и простой структуры dbf-файлов. Там представлены dbf-файлы небольшого размера, но для больших принцип собственной навигации останется тот же. Просто в то время на этот момент я не обращал внимания. Вот ссылки: «Создание и проецирование в память существующих DBF файлов. . .» ( http://emery-emerald.narod.ru/Cpp/2E14.html ) и «Рабочий алгоритм на С++ внешней сортировки «естественным слиянием». . .»( http://emery-emerald.narod.ru/Cpp/2E1562.html ) Почему создана данная тема? Просто сейчас происходит забвение Visual FoxPro и многие вынуждены оставлять эту систему и переходить, кто на 1С, кто на MS Access или SQL Server. Однако движок VFP очень хорош, очень лёгкий и мощный, лучше, чем, скажем, у опенсорсных Harbour / xHarbour, xBase и др., чего не скажешь о его интерфейсных возможностях. Зато средства создания интерфейса сейчас достаточно развиты в других системах разработки (те же wxWidgets и Qt). Поэтому, как вариант, можно писать собственный интерфейс на одной системе, а выборку данных осуществлять из другой, в данном случае VFP. Причем для случая навигации по виртуальной таблице больших dbf¬-файлов нам даже не нужно, в принципе, использовать движок VFP, что сильно упрощает программирование. А использовать VFP только для выборки данных и других специфических задач СУБД. При этом обмен данными внешнего интерфейса с VFP можно осуществлять различными способами. Это, во-первых, DDE (у меня по этой технологии организован расчет зарплаты во внешнем приложении VFP использующем базу данных 1С77 и отправка запросов от VFP к 1С как DDE-серверу), во-вторых, использование VFP как COM / OLE сервера («Работа с dbf»: http://www.sql.ru/forum/601874/vs-rabota-s-dbf ), в третьих, через dbf-файлы, в-четвертых, через каналы связи организованных в VFP, таких как анонимные и именованные каналы, разделенная память, «почтовые ящики» и т.п. стандартные средства межпроцессного взаимодействия Windows, к которым можно получить доступ из VFP. Я думаю, что здесь перечислены не все возможности, есть еще хакерские методы, которые мы рассматривать не будем. Может быть, кому-то все это покажется сложным, но мне кажется, что при разработке собственного клиента баз данных организацию обмена данных между внешним интерфейсом и движком некоторой СУБД проще не придумаешь. P.S. Что удивительно, первая ссылка продемонстрировала преимущества спроецированных в память dbf-файлов при отображении их в виртуальный список еще семь лет назад. Но понял я это только сейчас. Для этого нужно просто увеличить размер используемых там файлов до сотен тысяч и даже миллиона записей (хотя бы тупым самокопированием). Скорость навигации по этим файлам практически не изменится. А попробуйте покрутить файлы таких размеров в 1С77. Замечу, что в данном случае контрол SysListView32 имеет встроенные ограничения на 100 миллионов записей. Я протестировал случай: три файла размерами по 250 МБ, с количеством записей более 3 миллионов, каждый. Навигация летает что дурная. Можно при желании попытаться выйти на физический предел 2 Гб для каждого dbf-файла либо 100 миллионов записей, смотря чего вы достигните быстрее. P.P.S. Давайте не будем глумиться вопросами, зачем это надо, нафига изобретать велосипед, почему использовался отстойный MFC и т.д. и т.п. Есть факт, который можно принять к сведению либо игнорировать, прочее несущественно. |
|||
108
Звездец
08.05.16
✎
19:22
|
(106) Это понятно, но ТС то про миллионы записей речь завел
|
|||
109
Mikeware
08.05.16
✎
19:22
|
(105) кстати, было дело - дбф собрал из кусочков. А вот с мдф сиквельным так не прокатило...
|
|||
110
Звездец
08.05.16
✎
19:22
|
(107) Да любая. Почему не пилишь свои велосипеды на dbf?
|
|||
111
Mikeware
08.05.16
✎
19:23
|
(108) "и ты говори..."©
|
|||
112
Звездец
08.05.16
✎
19:24
|
(109) было и я собирал, пару раз и не собралось в итоге, но шансов уронить сиквел так чтоб база не поднялась на порядок меньше, чем dbf.
|
|||
113
Звездец
08.05.16
✎
19:25
|
(112) опять же возможности резервного копирования, даже если упадет сиквел, то имея правильно настроенное резервное копирование, даже пытаться восстанавливать не буду, восстановлю бекап с минимальными потерями и все
|
|||
114
Emery
08.05.16
✎
19:38
|
(102) > а почему бы не использовать современные компактные СУБД? Например, тот же sqlite?
Можно и Sqlite и MySQL и Postgree и т.д. Ну, вел бы я сейчас разговор о MySQL, а вы бы спросили, почему не VFP? Любую задачу нужно решать минимальными средствами. Зачем стрелять из пушки по воробьям? Dbf – простейший формат базы данных, проще него, пожалуй, только txt-формат. VFP тоже простейшая, легкая и шустрая БД. Устраивает? Вполне! Если бы вы мне предоставили аналогичную моей реализацию на Sqlite, то я бы сравнил ее со своей. Если она окажется проще и удобней в использовании, то с удовольствием на нее перешел. А так у меня только небольшой опыт работы с Sqlite и MySql из Qt. Не скажу, что в большом восторге от них. Как вариант, да, лежит в запасе. Хотя в Qt и c dbf работать не слишком очевидно, но можно. Там я к VFP цеплялся как к OLE-серверу (где-то на sql.ru опубликовано). Сейчас можно попробовать работать напрямую. Также интересен wxWidgets и его wxGrid в виртуальном режиме. В общем, я пробую разные варианты. Сейчас главный вопрос для меня выбрать оптимальное межпроцессное взаимодействие. |
|||
115
Emery
08.05.16
✎
19:52
|
(105) > Быстородействие - это конечно хорошо, но что делать когда все это чудо анахронизма с миллионами записей рухнет?
Для легкого клиента это не проблема. Рухнет, подымем и восстановим. Кстати, dbf-файлы очень просто восстанавливать из-за их простой открытой структуры. С другими форматами проблем больше будет. Вот у меня написан драйвер на Си (тоже есть ссылка на sql.ru), для системы учета рабочего времени, который сбрасывает данные со считывателей, на которых пользователи отмечаются своими карточками, в дбф-формат. Система работает непрерывно уже более трех лет. И ни разу dbf-файлы с данными отметок не «упали». Хотя мы обращаемся к ним по «живому». Причем немало было проблем с электричеством, а нетбуки у меня работают безо всяких упс-ников. Записей там уже много миллионов. > DBF не самый отказоустойчивый формат. Мой опыт их использования говорит об обратном. Их отказоустойчивости вполне достаточно для поставленных нами целей. |
|||
116
Звездец
08.05.16
✎
19:55
|
(115) что-то я совсем не понимаю уже прикладного значения велосипеда твоего.
Одно дело, когда в dbf пишет/читает одна прога (например система пропусков) и совсем другое, когда куча клиентов, да еще и по сети (например та же 1с 77) |
|||
117
Emery
08.05.16
✎
19:58
|
(110) > Да любая. Почему не пилишь свои велосипеды на dbf?
Не вполне понял наезд. И с «семеркой» и с «восьмеркой» я тоже имею дело. Только работаю я с ними нестандартно в режиме «1С:Несовместимо». От меня не требуют «шашечки», а требуют «ехать». Я и «еду», но так как мне нравиться. Когда начнут требовать «шашечки» в ущерб «ехать», тогда будем решать проблему по мере ее поступления. |
|||
118
Звездец
08.05.16
✎
20:03
|
(117) что-то тема, которая начиналась как ниочем скатилась в никуда.
Ты своим постом в (0) что нам донести то хотел? |
|||
119
Emery
08.05.16
✎
20:14
|
(116) > Одно дело, когда в dbf пишет/читает одна прога (например система пропусков) и совсем другое, когда куча клиентов, да еще и по сети (например та же 1с 77)
Ну, vfp9t.dll мультитредовая библиотека, поэтому с ней можно пытаться организовывать разделенный доступ к dbf-файлам. Но до этого я пока еще не дошел. |
|||
120
Звездец
08.05.16
✎
20:16
|
(119) чтож до этого и 1с не дошла, если она такая хорошая
|
|||
121
Emery
08.05.16
✎
20:17
|
(118) > Ты своим постом в (0) что нам донести то хотел?
Ровно то, что там написано, сообщить факт, который мне показался важным. Все остальное уже не более, чем объяснение деталей. Если все понятно, тему можно прекращать. |
|||
122
Emery
08.05.16
✎
20:29
|
(120) > чтож до этого и 1с не дошла, если она такая хорошая
Зато до этого дорулил Парус. Только Парус допустил концептуальную ошибку, на мой взгляд, из-за чего его система не так распространена, как ему хотелось бы. Он задействовал интерфейс самого VFP, а он все-таки не настолько хорош, как хотелось бы. Ну и платформу свою оставил закрытой, как и БЭСТ-5. По этим причинам эти системы не взлетели. «Семерка» поступила умнее, у них почти идеальный интерфейс (на то время, а сейчас недостатки компенсируются внешними компонентами), открытый формат БД и наличие конфигуратора. Поэтому, то, что они не воспользовались движком VFP – понятно. Да, они потеряли в производительности, и может быть в надежности, но это оказалось некритичным. Главное наличие конфигуратора и открытой БД позволили системе взлететь. А вот по бабкам фирма «1С» не прогадала. Кстати, я когда-то сравнивал аналогичные запросы в «семерке» и в VFP. В последнем они работали в 15 раз быстрее! |
|||
123
Звездец
08.05.16
✎
20:32
|
(122) формат БД хоть и открытый в 77, но доступ к данным в обход считается нарушением ЛС
|
|||
124
Провинциальный 1сник
08.05.16
✎
20:34
|
(122) "я когда-то сравнивал аналогичные запросы в «семерке» и в VFP."
В семерке штатно нет sql-подобных запросов. То, что в семерке делает объект "Запрос", вообще не сравнимо с sql - это просто велосипед с квадратными колесами от фирмы 1с. |
|||
125
Emery
08.05.16
✎
20:44
|
(123) > формат БД хоть и открытый в 77, но доступ к данным в обход считается нарушением ЛС
Что-то я ни разу не слышал, чтобы фирма «1С» наезжала на rainbow.dll, 1cpp.dll, 1sqlite.dll и прочим вещам, которые обеспечивают прямой доступ к ее dbf-ной базе данных. Разговоры были только относительно БД на SQL-сервере, но до конкретных обвинений дело практически никогда не доходило. Вы знаете прецеденты? Ну, хорошо, пусть будет нарушение. И вот у вас летит база данных или вы изучаете ее формат, чтобы сделать собственный экспорт-импорт (помимо существующих обработок). Благодаря открытости БД, вы ремонтируете свою базу, сохраняете свои нервы и деньги или осуществляете экспорт-импорт данных в производственных целях. Это что, уголовно наказуемое деяние? Может быть мы стали заложниками неких мифов? |
|||
126
Emery
08.05.16
✎
20:47
|
(124) > В семерке штатно нет sql-подобных запросов. То, что в семерке делает объект "Запрос", вообще не сравнимо с sql - это просто велосипед с квадратными колесами от фирмы 1с.
Об этом и речь. Именно поэтому я никогда не пользуюсь запросами в 1С77. Для запросов (при работе моей зарплатной конфигурации) прекрасно подходит VFP, соединенный с «семеркой» по DDE-каналу. |
|||
127
spock
08.05.16
✎
21:03
|
(122) На дворе шел 2016 год. Нам открывали глаза на то, что было известно лет 10-ть назад.
|
|||
128
spock
08.05.16
✎
21:05
|
Уважаемый Emery, что же с Вами было в период с 2007-2015 гг?
|
|||
129
hhhh
08.05.16
✎
21:13
|
(128) как настоящий ученый, углубился в свои исследования, он наверно и не знает, что с 1с теперь только в браузерах и на айфонах работают.
|
|||
130
Звездец
08.05.16
✎
21:15
|
Да и вообще, подход к выбору СУБД со стороны ее проще восстановить, а не со стороны ее сложно уронить, заведомо провальный
|
|||
131
Emery
08.05.16
✎
21:32
|
(127) > На дворе шел 2016 год. Нам открывали глаза на то, что было известно лет 10-ть назад.
Я вас разочарую. Txt-формат известен с времен Царя Гороха, а им пользуются до сих пор и, подозреваю, будут пользоваться еще наши правнуки. Тоже касается dbf. «Отменить» этот формат БД не сможет никто, и он также будет существовать если не вечно, то достаточно долго. Вы еще о нем на пенсии услышите. Так же еще не скоро исчезнут 32-х разрядные приложения, даже если рядом будут 256-разрядные. Не зря говорят: «Кесарю кесарево, а слесарю – слесарево» :) . Ниша dbf может упасть в разы, но не потому, что он плохой, а потому, что законодателям мод ПО не выгодно все дешевое и эффективное. Пример из жизни. Мы, будучи студентами в СССР, купили неподгораемую сковородку из тонкой листовой стали за 80 копеек! Вся общага жарила на ней многие годы, никогда ничего не подгорало, хоть жарь на воде (и жарили картошку, когда заканчивалась стипендия). А что сейчас бы сказали? Да это отстой, есть современные солидные (в смысле тяжелые и дорогие) тефлоновые монстры, которые супер-пупер как модные. Только за ними уход должен быть очень нежный, не дышать на них, соблюдать регламент, тогда, быть может, пару лет они прослужат. Вот ваши сентенции у меня вызывают подобные ассоциации. |
|||
132
Emery
08.05.16
✎
21:34
|
(128) > Уважаемый Emery, что же с Вами было в период с 2007-2015 гг?
Ничего не было, я просто занимался другими проектами. А сейчас тем, что нравиться. |
|||
133
Джордж1
08.05.16
✎
21:35
|
Плюсую автору. До сих пор пользуюсь 7-кой файловой. Надежна как автомат Калашникова.
SQL-запросы и dbf совместимы? Как реализуется по правильному сетевой режим работы - без падения производительности? |
|||
134
Garykom
гуру
08.05.16
✎
21:36
|
(98) Это сейчас стандартная проблема когда болото затягивает. Люди десятки лет сидят на одном и том же а потом когда спохватываются - или рвать жилы и напрягать мозги чтобы тупо догнать. Или на пенсию ну еще вариант к таким же пенсионерам на работу.
|
|||
135
Злопчинский
08.05.16
✎
21:37
|
(126) вместо чегото зублолмного с дде - не проще было непосредственно в семерке юзать прямые запросы?
|
|||
136
Emery
08.05.16
✎
21:38
|
(129) > как настоящий ученый, углубился в свои исследования, он наверно и не знает, что с 1с теперь только в браузерах и на айфонах работают.
Да пусть работают хоть в очках Google, меня это мало трогает. Человек не должен прогибаться под модные тенденции, только потому, что они модные. Один вон деятель, тоже пел: «Пусть лучше мир прогнется под нас», но не сдержал своего обещания. Забыл наверное. . . |
|||
137
Звездец
08.05.16
✎
21:38
|
(133) в семерке только терминальный режим, никаких других способов совместной работы большого числа пользователей(комфортной и надежной) нет
|
|||
138
Злопчинский
08.05.16
✎
21:38
|
На vfp много примеров приложений для многопользовательской работы с бд?
|
|||
139
Garykom
гуру
08.05.16
✎
21:39
|
(131) Применение DBF это проблема тупизны специалистов. Еще в 2005-2007 году столкнулся.
Что люди типа ИТ-ники и типа программисты тупо в DBF выгрузить могут а в XML нет. Не понимают что это такое и с чем его едят. Идиотизм если честно. |
|||
140
Злопчинский
08.05.16
✎
21:40
|
Восьмерку не знаю,
Как хобби пишу wms на 7.7 Что автор полезного может предложить? |
|||
141
Джордж1
08.05.16
✎
21:40
|
(137)ну есть же какая-то приблуда для 1С - реализующая клиент-сервер для dbf
|
|||
142
Джордж1
08.05.16
✎
21:41
|
и еще вопрос - есть что-то для dbf стандартное для защиты данных?
|
|||
143
Garykom
гуру
08.05.16
✎
21:41
|
(140) Автор предлагает засунуть БД целиком в RAM и не обращаться к диску совсем.
Причем RAM сетевая и распределенная на всех клиентов. |
|||
144
Злопчинский
08.05.16
✎
21:41
|
(139) херня какая
от саповцев почемуто в основном эксели приходят |
|||
145
Злопчинский
08.05.16
✎
21:42
|
(143) хм
А как сделать сетевую рам? |
|||
146
Emery
08.05.16
✎
21:42
|
(133) > SQL-запросы и dbf совместимы?
В VFP без сомнения, в 1С77 не совсем. > Как реализуется по правильному сетевой режим работы - без падения производительности? Исключительно терминал сервер. Правда будут вопросы по терминальным клиентским лицензиям, но Интернет позволяет решить этот вопрос. |
|||
147
Звездец
08.05.16
✎
21:42
|
(141) использование 77 с SQL только повышает степень сохранности данных и позволяет работать с базами, которые в dbf существовать не могут, причем скорость иногда даже падает при этом.
Если бы она была, то 77 была бы сейчас на коне |
|||
148
Звездец
08.05.16
✎
21:43
|
(142) нет
|
|||
149
Garykom
гуру
08.05.16
✎
21:43
|
(144) Потому что выгрузка в XLS это "де факто де стандарте". Аналогично с DBF который почти табличка экселя.
|
|||
150
Звездец
08.05.16
✎
21:43
|
(146) интернет не позволяет решить вопрос дядьки в погонах и собственной совести
|
|||
151
Злопчинский
08.05.16
✎
21:44
|
(141) http://www.wirth.ru
|
|||
152
Джордж1
08.05.16
✎
21:45
|
(147)да точно есть такая
http://www.wirth.ru/ |
|||
153
Звездец
08.05.16
✎
21:45
|
(149) причем xls можно не формировать, а формировать штатный таб док и сохранять средством платформы
|
|||
154
spock
08.05.16
✎
21:45
|
(131) Да ради бога :)
|
|||
155
Злопчинский
08.05.16
✎
21:46
|
Так нихера не поеял
Что автор от нас хочет/предлагает? |
|||
156
Emery
08.05.16
✎
21:46
|
(138) > На vfp много примеров приложений для многопользовательской работы с бд?
Смотрите в сторону Паруса. Ну а то, что не много, так это потому, что библиотеки VFP рантайм это нестандартный COM-сервер, с которым никто не умеет работать, хотя можно делать exe-шники из VFP. |
|||
157
Djelf
08.05.16
✎
21:47
|
(151) Ага! Опередил на минуту ;)
И, кстати, стала бесплатная. А как стала бесплатная так ее удалось на Linux под Wine запустить. Ибо не надо было связываться с ms`овскими криптопрвайдерами... |
|||
158
Злопчинский
08.05.16
✎
21:48
|
нехай автор возьмет http://www.pobedit.com
Прикрутит к нему дбф через что хочет Обеспечит многопользовательский режим И будет убийца 1с |
|||
159
Звездец
08.05.16
✎
21:49
|
(151) (152) а за сохранность данных в этом случае кто в ответе? и почему-то не пошла она в массы. Да и год назад стала бесплатной и разработка прекратилась
|
|||
160
Злопчинский
08.05.16
✎
21:49
|
(156) на парус я смотреть не буду
У меня к не у стойкое отвращение еще со времен появления седбмой версии одноэс |
|||
161
Emery
08.05.16
✎
21:51
|
(142) > и еще вопрос - есть что-то для dbf стандартное для защиты данных?
Если критична безопасность используйте промышленные БД. А так защита только административная, не разрешать доступ к компьютеру с БД. То же самое обстоит в семерке. |
|||
162
Злопчинский
08.05.16
✎
21:51
|
(159) на форуме вообщем достаточно отзывов об успешной работе
|
|||
163
Emery
08.05.16
✎
21:52
|
(143) > Автор предлагает засунуть БД целиком в RAM и не обращаться к диску совсем.
Не «засунуть», а спроецировать. Это абсолютно разные вещи. |
|||
164
Злопчинский
08.05.16
✎
21:56
|
(163) мну похрен будет это спроецировано или засунуто. Мне как девелоперу - что дает?
|
|||
165
Звездец
08.05.16
✎
22:22
|
(163) "те не умничай, а пальцем покажи" (с)
|
|||
166
Garykom
гуру
08.05.16
✎
22:30
|
(165) Если по простому то табличка из БД "спроецирована в память" и контрол (таблица/грид/форма списка) прямо по ней крутит ))
Но нафуя это надо не понял все равно. Да быстро хоть лямы/лярды записей листать в гриде только нафуя? |
|||
167
Звездец
08.05.16
✎
22:31
|
(166) да это я знаю, я о том чтоб пальцем показан на..я оно нам надо
|
|||
168
Звездец
08.05.16
✎
22:34
|
(167) но судя по ответам автора, он и сам не знает для чего надо то "открытие", которое он нам тут преподнес
|
|||
169
Mikeware
08.05.16
✎
22:56
|
(123) в 7.7 доступ минуя 1с ничем не запрещен.
(137) под сотню юзверей вполне комфортно работали с сиквельной базой без терминала. |
|||
170
Звездец
08.05.16
✎
23:04
|
(169) спорить не буду, может этот пункт только в 8 появился, но вопроса в (167) это не отменяет
|
|||
171
Emery
09.05.16
✎
19:26
|
(135) > вместо чегото зублолмного с дде - не проще было непосредственно в семерке юзать прямые запросы?
Хороший вопрос. Этот путь предлагают все создатели внешних компонент и т.п. расширений. Но я вообще не вижу особого смысла гонять большие объемы данных через память по межпроцессному каналу. Не проще ли совместно использовать БД «семеркой» и VFP? По этому принципу работает моя «зарплата». А через DDE отправляются только параметры и вызовы глобальных функций 1С77 и Фокса. Правда, сейчас я бы не стал из VFP задействовать индексы, формируемые в «семерке». Пожалуй, Фокс должен создавать и использовать собственные индексы на разделяемой с 1С базой. Хотя базу можно делать и параллельной (тогда все клиенты «семерки» могут быть монопольными, аналогичная идея применима и к «восьмерке»). Это еще она концепция хранения и использования распределенных данных. Сам же VFP у меня работает, как внешнее приложение (ехе-шник сгенерированный в VFP). |
|||
172
Злопчинский
09.05.16
✎
19:32
|
(171) нихрена не понял
Опиши подробно и внятно в чем заключается "совместное использование бд 77 и vfp |
|||
173
Звездец
09.05.16
✎
19:38
|
(171) ну допустим совместное, ладно. Ты наконец-то можешь сказать на.р.на нам это надо и что хорошего это даст?
|
|||
174
Emery
09.05.16
✎
19:40
|
(168) > но судя по ответам автора, он и сам не знает для чего надо то "открытие", которое он нам тут преподнес
Это не открытие, а известные технологии. Позволяют удобно осуществлять навигацию данных, когда их очень много. Вон стандартные примеры работы с БД в Qt сильно тормозят на подкачке данных при навигации даже относительно небольшого количества данных (несколько тысяч записей). Поэтому, чуть меняем концепцию и все летает. Смысл подобных техник в создании сверхлегких клиентов. В принципе, если добавить сюда построение индексов и сортировку (что относительно легко можно сделать без привлечения сторонних СУБД), то можно юзать данные в стиле «семерки»: быстрый поиск, отбор, какие-то несложные вычисления и выгрузка обработанных данных, хотя бы в тот же Эксель. А если добавить бесплатную СУБД (рантайм VFP, говорят, бесплатен) и правильно организовать межпроцессное взаимодействие, то индексацию и выборку данных можно делать средствами этой СУБД. Опять же, в отличие от того же (x)Harbour легкий клиент не только быстро создается, но при этом еще имеет малый вес и GUI. |
|||
175
Pixelrat
09.05.16
✎
19:42
|
(174) Только в Qt мы крутим целый view, а не табличку.
|
|||
176
Злопчинский
09.05.16
✎
19:43
|
(174) нихрена опять не понял
На данный момент, нам, девелоперам, что с этим вфп делать акромя прямых запросов? |
|||
177
Звездец
09.05.16
✎
19:44
|
(174) а теперь объясни мне, зачем я должен разбираться во всем этом анахронизме, придумывая какую бы библиотеку прикрутить, как бы там индекс извратить и тп, вместо того, что бы использовать удобный, современный и хорошо документированный инструмент (читать как СУБД)?
|
|||
178
Pistol
09.05.16
✎
20:21
|
(174) Мой юный друк. Сверхлегкие клиенты, которые заточены под быструю навигацию и чтение - нахрен не нужны никому, кроме как курсовикам и дипломникам.
Как только ты добавишь в свое поделие добавление, изменение и удаление данных, и, прости Господи, транзанкции и логи отката, UDF, ты резко изменишь свое мнение о dbf. Пойди про sqlite, что-ли почитай. Или про nosql и in memory databases |
|||
179
Emery
09.05.16
✎
20:23
|
(172) > Опиши подробно и внятно в чем заключается "совместное использование бд 77 и vfp
В моей конфигурации на «семерке»: 1. В справочнике ПервТабеля в группах Год / Месяц / Фирма вручную или полуавтоматически из системы учета рабочего времени вводятся табеля, рапорта, наряды, прочие документы в удобно структурированные группы. Непосредственно запись вноситься подчиненный справочник ПервТабель. Часть расчетов при этом осуществляется сразу, другая часть подлежит последующему расчету. 2. Есть обработка РасчетЗП. Она позволяет считать любую группу либо конкретного сотрудника. Эта обработка вызывает внешнее приложение, написанное на VFP. Вот строка вызова: ЗапуститьПриложение(КаталогПрограммы()+"LionUZP.exe "+q+СтрОтчДата+qq+КодГруппы+qq+СтрПризнГруппы+qq+PersId+qq+LgKatId+qq+КаталогИБ()+q); Это приложение подключается к БД «семерки» и ее индексам и начинает «колбасить» данные. При этом VFP инициализирует DDE-соединение с 1С, как DDE-сервером: PUBLIC gn_DDEChanNum && Номер DDE канала для обмена данными с "1С" gn_DDEChanNum = DDEINITIATE("1CV7", "DDE") При этом VFP запрашивает от 1С77 дополнительные данные, вроде: IF gn_DDEChanNum > -1 gs_FullDescr1C = ALLTRIM(DDEREQUEST(gn_DDEChanNum, "глПолнНаим")) gn_PlanDays1C = VAL(DDEREQUEST(gn_DDEChanNum, "глПланДней")) gn_PlanHours1C = VAL(DDEREQUEST(gn_DDEChanNum, "глПланЧасов")) && И т.д. и т.п. ELSE DO ErrorMessage WITH "Не могу открыть канал DDE для обмена данными!" IN Errors ENDIF Функции из 1С вызываются вроде: && Общая база индексации сотрудников предприятия PUBLIC gs_CommonIndexingBase gs_CommonIndexingBase = CTOD(Get1CConst("ОбщаяБазаИндексации", gs_NachOtchPer)) После расчета очередного сотрудника, его данные сбрасываются в справочник ВторТабеля, повторяющий отчасти структуру первичных табелей. Удобен тем, что соответствующую группу расчетов можно легко удалить, если расчет неверен и пересчитать все заново. Первичные данные при этом остаются без изменений. Кроме этого данные по конкретному сотруднику поступают в ТЗ, где мы можем наблюдать расчет в режиме реального времени. Расчет на одного человека в пределах нескольких секунд. Количество сотрудников порядка тысячи, база данных за 12 лет. Этот режим был создан для отладки, но он мне понравился и я его оставил без изменений. Также ведется полный протокол расчета во внешние текстовые файлы (по одному на каждого человека). После расчета, VFP обращается к DDE-серверу 1С77 обновить данные в ТЗ (для отладочных целей): = DDEREQUEST(gn_DDEChanNum, "глDDE("+ ; s_CurRec+","+ ; s_AllRecs+","+ ; s_No+","+ ; s_PodrPersId+","+ ; s_VidRaschId+","+ ; s_NachZachPer+","+ ; s_KonZachPer+","+ ; s_KoefVidaRasch+","+ ; s_Rate+","+ ; s_WorkDays+","+ ; s_HoursPerDay+","+ ; s_WorkHours+","+ ; s_FactVwrabotka+","+ ; s_PlanVwrabotka+","+ ; s_Summa+","+ ; s_PlanDays+","+ ; s_PlanHours+")") При этом те же данные уже присутствуют во вторичных табелях. 3. В сформированных данных в справочнике ВторТабеля можно уже строить отчеты и делать прочие необходимые процедуры, типа, проведение данных, формирование учета задолженности и выплат, формирование выгрузок для спецотчетов и т.д. и т.п. Это очень краткое изложение. |
|||
180
Pistol
09.05.16
✎
20:28
|
(179) Расчет зарплаты на справочниках, это сильно. Жму руку. Предлагаю считать план-факт отпусков на бухитогах.
|
|||
181
Emery
09.05.16
✎
20:31
|
(173) > ну допустим совместное, ладно. Ты наконец-то можешь сказать на.р.на нам это надо и что хорошего это даст?
1. Используя легкого клиента на 1С77 в связке с VFP можно построить достаточно мощные и удобные конфигурации. 2. Для сверхлегких клиентов можно вообще обойтись без «семерки» и даже, при желании, без внешней СУБД, вроде VFP. Разве эти решения не интересны, чтобы их применять на своей работе? |
|||
182
b_ru
09.05.16
✎
20:31
|
>>Почему создана данная тема? Просто сейчас происходит забвение Visual FoxPro и многие вынуждены оставлять эту систему и переходить, кто на 1С, кто на MS Access или SQL Server.
Если б ты это лет десять назад написал, оно бы так и было. А в 2016 увидеть столько раз упомянутые слова dbf, vfp, dde(!) можно только в обзорных статьях по истории развития информационных систем и в этой теме. Автор, ты переплюнул всех мИстных мастодонтов. Признавайся, Царя живого видел? Если да, то дай автограф. |
|||
183
Злопчинский
09.05.16
✎
20:41
|
(179) нихера не понял
Имхается мне что с помощью прямых запросов то же самое можно и на клюшках посчитать примерно с тем же самым быстродействием Смысл этой твоей зп? |
|||
184
Злопчинский
09.05.16
✎
20:42
|
(181) как девелопер не вижу пока никаких существенных преимуществ
|
|||
185
Pixelrat
09.05.16
✎
20:47
|
(181) Видел много клиентов разной сверхлёгкости, а чем бы данное ноухау в них пригодилось, не нахожу.
|
|||
186
Pistol
09.05.16
✎
20:47
|
http://emeryemerald.blogspot.ru
Вопросов больше не имею... |
|||
187
Звездец
09.05.16
✎
20:48
|
(184) как, а дальнейшая поддержка данного велоипеда, от которого все другие 1с-ники будут шарахаться?
|
|||
188
Emery
09.05.16
✎
20:50
|
(175) > Только в Qt мы крутим целый view, а не табличку.
Там все можно делать многими способами ( http://www.sql.ru/forum/actualfile.aspx?id=15291607 Файл dbf можно взять отсюда http://www.sql.ru/forum/actualfile.aspx?id=15291616 Если будете использовать бинарник, то подключите его к библиотекам Qt. Также у вас должен быть доступен объект "VisualFoxPro.Application.9"). |
|||
189
Emery
09.05.16
✎
20:55
|
(176) > На данный момент, нам, девелоперам, что с этим вфп делать акромя прямых запросов?
Мне вообще трудно понять вашу логику. Если тема вас не цепляет, игнорируйте ее. Если интересна, думайте сами, где это можно использовать. Раз я вас должен уговаривать применять эту технику? Мне она интересна, я делюсь информацией, но я не преподаватель систем программирования. |
|||
190
Emery
09.05.16
✎
20:58
|
(175) > а теперь объясни мне, зачем я должен разбираться во всем этом анахронизме, придумывая какую бы библиотеку прикрутить, как бы там индекс извратить и тп, вместо того, что бы использовать удобный, современный и хорошо документированный инструмент (читать как СУБД)?
Если неинтересно, то не должны. Используйте любой «удобный, современный и хорошо документированный инструмент», который вам нравиться и нам расскажите, какие вы видите в нем преимущества перед используемыми здесь. |
|||
191
Звездец
09.05.16
✎
20:59
|
(189) пока ты делишься только кучей ссылок на разные форумы. То что есть куча разных технологий я еще из института знаю. Ты мне кстати преподов напоминаешь, они примерно так же учили: смотрите есть такая штука, такая, и еще вот такая, а как это применять, для чего и тп думайте сами.
Приводи конкретные примеры, тот что выше как-то не самый удачный имхо. Тут и так человека 4 осталось в этой теме, кто хоть как-то пытается понять что ты тут такого преподнести пытаешься. |
|||
192
Звездец
09.05.16
✎
21:02
|
(190) изложенное здесь пока что для меня как каталог ссылок смежной направленности. Если я захочу написат нечто на том же Qt, то почему бы не заюзать тотже Postrage или FireBerd (который и файловым бывает кроме того)
|
|||
193
Emery
09.05.16
✎
21:04
|
(183) > Имхается мне что с помощью прямых запросов то же самое можно и на клюшках посчитать примерно с тем же самым быстродействием
Наверное, да, только работать с нормальной СУБД, в среде этой СУБД, на порядок удобнее. Прямые запросы хороши для индивидуальных запросов. У меня же их на порядок больше. > Смысл этой твоей зп? Мне не нравиться концепция существующих «зарплат». Сделал так, как мне удобно. Причем ее еще можно существенно оптимизировать. Но это вопрос времени и стимула. |
|||
194
Emery
09.05.16
✎
21:06
|
(184) > как девелопер не вижу пока никаких существенных преимуществ
Вот и хорошо, появился хороший повод прекратить «допрос» : ) . |
|||
195
Emery
09.05.16
✎
21:08
|
(186) > http://emeryemerald.blogspot.ru
> Вопросов больше не имею... А что вас смущает? То, что любой русский разбирается во всех вещах на свете : ) ? |
|||
196
Emery
09.05.16
✎
21:12
|
(187) > как, а дальнейшая поддержка данного велоипеда, от которого все другие 1с-ники будут шарахаться?
Система планируется бесплатной (после ее оптимизации и публикации). А, как известно, дареному коню в зубы не заглядывают. Будут открыты исходники, кто хочет, пусть сам сопровождает. Если появятся коммерческие предложения, «будем посмотреть». |
|||
197
Звездец
09.05.16
✎
21:14
|
(196) я имел ввиду в данном случае твою переписанную зарплату на семерке
|
|||
198
Pistol
09.05.16
✎
21:20
|
(195) Очень хорошо показыает уровень бардака в голове.
Ну и отношение "если вам что-то надо, сделайте это сами", и тут же "расскажите, какие вы видите преимущества" и прочие "поделитесь ссылками" |
|||
199
Emery
09.05.16
✎
21:51
|
(191) > Тут и так человека 4 осталось в этой теме, кто хоть как-то пытается понять что ты тут такого преподнести пытаешься.
Так может пора уже забить на тему? Я ведь пришел не с готовым продуктом, а всего лишь с одним соображением на конкретную идею. Ну да, VFP мне нравиться, dbf тоже, «семерку» тоже люблю. В «восьмерке» ценю только толстого клиента, Qt и WxWidgets также не оставляют равнодушным. Ваши предпочтения, естественно, другие. Если бы вы написали подобный топик, то я бы относился к его содержимому более нейтрально, даже если бы был не согласен с идеями авторов. Разве все должны мыслить одинаково? Это скорее исключение, чем правило. Я вот удивляюсь прямолинейным попыткам других доказать, что я не прав. Поверьте, это опыт, от которого просто так никто не откажется. Я уже писал здесь, что мой друг программист придерживается более радикальных взглядов, но это не мешает нам обсуждать нам общее, а не различия. В общем, предлагаю завершать тему. |
|||
200
Garykom
гуру
09.05.16
✎
21:54
|
(199) > В «восьмерке» ценю только толстого клиента,
Думаю дальше можно не слушать. |
|||
201
Djelf
09.05.16
✎
22:25
|
Конечно другие предпочтения...
Вот в sqlite Memory-Mapped I/O уже давно есть https://www.sqlite.org/mmap.html А к базе sqlite я могу присоединится из чего угодно, скоро с утюга уже смогу присоединятся! Зачем мне этот не понятный, не рабочий, но теоретически возможный костыль? |
|||
202
EvgeniuXP
09.05.16
✎
23:14
|
Я лучше скажу главный недостаток дбф файла: где гарантия что дбф выгружен нормально полностью? Т.е. выгрузка действительно дошла до самой последней строки?
|
|||
203
EvgeniuXP
09.05.16
✎
23:16
|
Хмл-е это дерево и там гарантия есть, в дбф-е - нет.
|
|||
204
Злопчинский
10.05.16
✎
00:46
|
(193) "Мне не нравиться концепция существующих «зарплат». Сделал так, как мне удобно."
- мне как девелоперу - класть с большим хреном на то что тебе удобно. дай мне продукт, который "Я" смогу использовать. никто не отрицает что сделанное "как мне удобно" - имеет право на жизнь. только vfp скорее мертв чем жив. видимо потому - что МНЕ НУДОБНО. мне удобнее в 77. или в 8.3 |
|||
205
Злопчинский
10.05.16
✎
00:50
|
(196) Модераторы - перенесите в тему "Убийцы 1С"
Пока никто декларировавших всяких "убивцев" и вкусностей - не готов отвечать за "базар". видать потому что силенок не хватает сделать ПРОДУКТ. хрен с ним. пусть он будет таким же простым как клюшки. и бесплатным. и сравнимым по функционалу. только пусть это будет ПРОДУКТ. а не набор плоскогубцев и гаечных ключей. пусть это будет ушастый запорожец. чтобы ездил. |
|||
206
Злопчинский
10.05.16
✎
00:51
|
(196) "Система планируется бесплатной (после ее оптимизации и публикации)."
- ждем. с удовольствием посмотри и может быть попробуем. |
|||
207
Злопчинский
10.05.16
✎
00:53
|
(199) По предложению автора - ветка закрыта. Ждем публикации продукта. С учетом того. что нет даже роадмапа хотя бы какого-нибудь - нам дождаться продукта - не светит...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |