|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogпо "этой" базе сегодня вообще движухи нет и файла нет не аргумент лучше пусть присылают пустой файл, просто ради подтверждения что они не умерли и не набухались а работают в штатном режиме там интернет постоянный или dial-up, можешь ты в любую секунду по своему хотению связаться с каким-нибудь их сервером ? Логика представляется такая: Висит утилитка на сервере, мониторит каталоги. Каталог такой-то (для экспорта-импорта определенной базы 1с) файл появился? Да. Ну мне преставляется более нормальной, когда твои программы первичного импорта постоянно, службой windows как тот же firebird, работают на источниках данных. Периодически по своему графику сервер их всех обзванивает (проверяя заодно, что все живые) и говорит "давай апдейт!", а они его автоматически формируют (бухи же не хотят давить лишних кнопок, ты говорил) и выливают на сервер, даже если файл будет пустышкой ("я клиент такой-то, у нас тут всё как вчера, новостей нет"). конечно если добросовестные бухи на местх сами хотят после особо крупных операция вручную инициировать выгрузку вне графика - то дело другое Ну и Висит утилитка на сервере, мониторит каталоги. - это называется polling, не всегда хорошо (разве что будешь заодно мониторить доступность самих серверов с каталогами, двух птиц одним камнем). Я бы сделал наоборот: * на сервере расшаренная на приём папка обновлений * каждый клиент формирует файл-апдейт у себя ( и считает его контрольную сумму типа md5/sha1, если в файле нет встроенной самопроверки как в zip/7z/rar ) * потом под временным названием(достаточно другое расширение например, или какие уж ты сам шаблоны названий файлов выберешь) его заливает на сервер (а сама эта процедура может тоже быть долгой, если связь медленная. Не хотелось бы чтобы импортироваться начал неполный файл) * потом рядом кладет файлик с контрольной суммой * потом переименовывает временный файл в постоянный Соответственно для сервера * можно не перечитывать по таймеру каталоги снова и снова, а просто попросить у Windows сообщать когда в локальной(!) папке такой-то появятся файлы с таким-то названием * не будет ситуации, когда сервер подвис на несколько минут просто пытаясь прочитать расшареную папку неудачного клиента, и в это время не обрабатывает других клиентов у которых все готово ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:31 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIne.... dgdogКоторые надо проверить... Ты сам-то понял, чё написал? И как ты бушь их проверять, если не знаешь чё в них(в каженном файлике) правильно должно быть? ... Извини, в непонятки ввел. Ну ятут одной рукой в Delphi, одним глазом на Йбазе: "Проверить" не правильность файла - это пусть у экспортирующей стороны голова болит. А записи "а есть такая проводка в моей базе уже? А не изменения ли это старой проводки?" как-то так. А сами файлы чего их проверять. Получил ошибку? Разбирайтесь с экспортом 1С. Структура файла будет оговорена до тонкостей в пятницу И ТОЧКА (от возможностей 1Сника зависит.) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:32 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog, а если не могут, то какого хрена у вас в PickList новые данные могут появится во время импорта? Что вообще такое PickList, что туда попадает? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:32 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogAriochа фильтры запоминаются ? в смысле если вчера бух закрыл прогу с фильтрами и значениями в них, а сегодня с утра открыл заново - фильтры и их значения сами восстановятся или ему надо будет их заполнять?... Нет не сохраняются. Получаю новые данные. Фильтры пусты. Данные летят по плану Натураль ибо, "все надо". Первоначальная сортировка (натураль) по уникальному ID... Дальше бух уже соображает неистовую фильтровку и гоняет полученные данные и в хвост и в гриву. (загрузил ей данные и всёё, только справочники перечитываю в пиклисты) Нужна ей адекватная версия данных, жмет кнопку "обновить". И начинает все с начала ну я так и думал поставь себе флажок, был уже FetchAll или нет в датасете на AfterOpen этот флажок сбрасывай при включении фильтров проверяешь флажок и если надо делаешь FetchAll с установкой флажка и часики на экране, часики - http://www.deltics.co.nz/blog/posts/tag/delticshourglass - пока золотой рыбке твои слова про "покурить" - абстрактная фигня, криворук со своей тормозной программой кочевряжится, она их через неделю забудет. А вот когда форма открылась отноительно быстро, а включение фильтров явно вызывает дополнительные тормоза - тогда она уже будет понимать что к чему и думть стоит оно того или нет ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:36 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogНет. не могут... хотя эти долбаные Банки со своими БИК... да возможно. мне тут недавно сказали, у филиалов одного банка могут совпадать ИНН вот блин десяток разных юр-лиц - и один ИНН на всех, только КПП разные ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:37 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneИ не канифоль себе моск их_ем_еле форматом... В нем "накладные расходы" на теги под писят % подскакивают. и пусть подскакивают - винчестер все равно медленнее процессора и оперативки хотя можно и JSON или YAML глянуть конечно но мне сомнительно чтобы два варианта SGML'я - HTML и XML сдается мне, так как-то HMTL и XML не в равных условиях сравниваешь ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:42 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdog Структура файла будет оговорена до тонкостей в пятницу И ТОЧКА (от возможностей 1Сника зависит.) А я тебе как раз и про структуру файлика - в том числе. Ты вводишь св систему еще одну "переменную" неизвестной и теде не подвластной природы. ;-) Бо в самом файлике "битой" может оказаться одно значение, строка, блок (и тп) ну и весь целиком его фтопку. Плюс (туда-сюда) формат одной записи (в терминах БД) может меняться с временем. Бухам же делать неча, вот им и подкидывают постоянно всякие изменения. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:42 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogбух пишет только начало искомого значения... звездочка подставляется автоматом. В этом случае PickList должен заполняться не при открытии формы и тем более, не при каждом изменении справочника, а только при раскрытии этого самого списка. Причём заполняться уже с этим вменяемым фильтром. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:44 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogНе прав, бей. Только не по почкам в переводе на английский это примерно "you may click but do not click [mouse] buttons" Источник - гуртовщики мышей ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:44 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochсдается мне, так как-то HMTL и XML не в равных условиях сравниваешь А ты бамашку-то возьми и прикинь: среднюю длину чисел (в шт. цифр) и кол-во знаков служебных тегах описывающих что это за число. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:46 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogНо утилитка может увидеть 3-5-20 файлов одновременно. если она их УЖЕ увидела - и они УЖЕ финализированы а не наполняются по ходу - то кажется лучше их вычитать все и одним пакетом запустить но если какой-то файл из этих лежит "в плохом месте" и будет выкачиваться с обрывами и рестартами целый час - то лучше ну его нафиг итого - усложнение кода импортера, который должен на лету определять ссоставы пакетов и многопоточно тянуть несколько файлов, и обрабатывать ошибки срва соединения.... вот и поэтому тоже я бы выгрузку файла орагнизовал наоборот, каждый клиент свой локальный файл выгружают на общий сервер ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:47 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIneAriochсдается мне, так как-то HMTL и XML не в равных условиях сравниваешь А ты бамашку-то возьми и прикинь: среднюю длину чисел (в шт. цифр) и кол-во знаков служебных тегах описывающих что это за число. :-) а потом сравнить с соотношением скорости чтения из сети/из файла/из оперативки, "перестать беспокоиться и полюбить бомбу" а если еще SAP-парсер вместо DOM-парсерa исхитриться прикрутить... если файлы одинаковой сложности, то ты что-то с парсером не то делаешь, например может быть заставляешь валидацию XML проводить по схемам, а на HTML того же не делаешь ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:52 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Денисdgdog, а если не могут, то какого хрена у вас в PickList новые данные могут появится во время импорта? Что вообще такое PickList, что туда попадает? Новый клиент. Неизвестный до селе Банк. Банк получатель (таже петрушка) Клиент открыл новый счет в другом банке или в этом же. (эти группируются хотябы) Есть страшный пиклист Юрики... всего не объясню, но там тонны записей вываливаются. Сегодня дал сутки подумать бухам "нужен этот пиклист или нет"... по моим данным НЕТ. Ну вот так оптимизируемся, как могу, как могу... что успеваю ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:58 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Di_LIne, html слишком вольный формат, да и предназначен он для отображения, а не передачи данных. xml сложен и избыточен. Тем более при парсинге через DOM жрёт хренову тучу памяти, а парсинг через SAX довольно сложен. А вот json мне нравится, правда в старых Delphi не было поддержки из коробки, а в новых есть ощущение, что то что они там нагородили будет работать не шибко шустро (не пробовал). Ещё есть варианты плоские файлы с разделителем или с фиксированной шириной (как для External table). Ещё есть dbf, но он мне не нравится тем что стандартов на dbf целая тонна, каждый городит что хочет, да и с кодировками бывает геморрой. Но я думаю что ТС в любом случае придётся работать с тем что ему дадут 1Cники ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:58 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Так просто для обзора, если вдруг интересно кому https://quoderat.megginson.com/2007/01/03/all-markup-ends-up-looking-like-xml/ "On a Core2 2.5Ghz Desktop, VTD-XML outperforms DOM parsers by 5x~12x, delivering 150~250 MB/sec per core sustained throughput." http://blog.synopse.info/post/2011/06/02/Fast-JSON-parsing ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 12:59 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
AriochdgdogНет. не могут... хотя эти долбаные Банки со своими БИК... да возможно. мне тут недавно сказали, у филиалов одного банка могут совпадать ИНН вот блин десяток разных юр-лиц - и один ИНН на всех, только КПП разные Так и есть. Эти грабли пройдены еще на стадии импорта реестра банков. Там адский пипеец. Прибивал по бикам+инн+кпп. и... перематерился когда у одного банка забрали лицензию А ЕГО БИК отдали новому банку. О_о Благо бухгалтерию "отпустило" и они согласились хранить только название банка и головной инн, бик... если взбрыкнут, не знаю, что буду делать. И еще они блеа*ь последнее время взяли моду переименовываться из ЗАО в ОАО из ОАО в ЗАО со сменой инн, без смены инн... Спасибо, что для меня это не очень критичный справочник. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:03 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
dgdogСегодня дал сутки подумать бухам "нужен этот пиклист или нет"... по моим данным НЕТ. Ну вот так оптимизируемся, как могу, как могу... что успеваю опять же, если как-то исхитриться и сделать задержку на формирование пиклиста 1) необязателтельной - не используешь пиклист, нет и задержки 2) явно видимой, с чем это непосредственно связано ....то бухи сами начнут естественным образом про это думать я eh-grid не знаю, но если можно сделать загрузку по требованию - 19461540 - то мысль правильная. тронул пиклист - любуйся на "часики" на экране и думай, так ли сильно надо было его трогать ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:03 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochтронул пиклист - любуйся на "часики" на экране С правильным фильтром отзыв при раскрытии выпадающего списка меньше реакции пользователя. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:07 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов Дениса в новых есть ощущение, что то что они там нагородили будет работать не шибко шустро (не пробовал). ну а если еще использовать вкусности вроде автоматического заполнения record'ов или объектов из XML через RTTI - так и вообще будет весело, но виноват будет парсер в новых - как и все в новых Delphi - ошибка на ошибке так что rule of thumb - если для какого-то фукционала есть известная FLOSS-библиотека и "из коробки" - лучше выкинуть коробку и брать FLOSS соотв. для JSON в основном используют три либы: SuperObject - из-за "ленивого" простого API и вменемой скорости Synopse mORMot XML - из-за заточенности на максимум скорости. lkJSON - не знаю почему, не трогал, но популярен ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:08 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Arioch... например может быть заставляешь валидацию XML проводить по схемам, а на HTML того же не делаешь - Ой-ой-ой... От твоего кидания терминами суть процесса не меняется. Полюбасу - берется файлик и вычитывается от первого до последнего байта, с анализом "а ты кто?".... Такшта... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:08 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Вопрос на засыпку то Олл: - Чем отличается кодер и прогера? Тем, что на "ой, нада сделать ко вчера!" прогер с начала думает "как сделать, штоп ни чего не делать?", а кодер - "Да я ща, за 6 сек наваяю!" :-)) Симонов ДенисНо я думаю что ТС в любом случае придётся работать с тем что ему дадут 1Cники Это - подход кодера. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:12 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисЕщё есть dbf, но он мне не нравится тем что стандартов на dbf целая тонна, каждый городит что хочет, да и с кодировками бывает геморрой. в основном стандарты различаются наворотами типа разных форматов индексов, что важно для работы, но не важно для чтения TDBF.sf.net сами данные в основном читает вполне неплохо ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:12 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Ariochдля JSON в основном используют три либы Ни "в основном", ни в "дополнительном" списке использующих JSON 1C не значится. Не умеет она ничего кроме XML. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:14 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Симонов ДенисНо я думаю что ТС в любом случае придётся работать с тем что ему дадут 1Cники так же как и слюбым другим источником исходных данных, например с "папкой с тестовыми квитками от банковских операций" - что дали то и жуй а вот "прожевав" это автор вполне может "выплюнуть" свой собственный унифицированный "пакет обновлений", который будет одинаковой структуры для любых источников. И там он сам может выбирать - хоть XML-zip, хотья Json-zip хоть много-dbf-zip ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:15 |
|
Delphi, FireBird создать таблицу в памяти клиента
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovAriochдля JSON в основном используют три либы Ни "в основном", ни в "дополнительном" списке использующих JSON 1C не значится. Не умеет она ничего кроме XML. я же не про 1с с первичными данными понятно - какие они есть, такие и есть, и всё я про промежуточный общий формат, в который перед окончательным импортом в FDB будут сводиться/конвертироваться даные из любых типов/форматов источников ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2016, 13:17 |
|
|
start [/forum/topic.php?fid=40&msg=39281120&tid=1561790]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
22ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 127ms |
0 / 0 |