powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Delphi, FireBird создать таблицу в памяти клиента
25 сообщений из 368, страница 13 из 15
Delphi, FireBird создать таблицу в памяти клиента
    #39281281
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если в файлике ошибки?
Как алярмы бить, куда варнинги слать?
И определять "точку" ахтунга?
Ну штоп потом, после правки, опять с нее начать...
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281282
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Di_LIneЗелёный свисток в воздух:
-А потом не получится, что еще дельту из дельто-файлов вылущивать надо?

Чёй-та не нравится мне енто ни фига...
Костыль к гипсу, который сполз с головы.

Как вариант вводить поле с датой изменения в 1с обговаривали. Тогда я храню датувремя последнего импорта и в след раз беру из файла только с момента последнего импорта... но пока отказались. Т.к. нашли решение поизящней(чужое правда, ну если 1сник сумеет переработать, то не суть).

Почему-то он не хочет обращаться к журналу. Там же есть (я почитал насколько смог) журнал изменений. Сказал, что это очень долгий и нудный запрос получится. Ну фик знает. Поживем увидим.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281283
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdog,

а без ХП тебе GTT как собаке 5 нога. Нахрена сначала что-то закидывать на сервер, чтобы потом оттуда же и читать тоже самое, и вновь писать на сервер?

про транзакции http://www.ibase.ru/ibx/#tran_use
про возможности и синтаксис ХП Firebird_2_5_Language_Reference_RUS

И вообще без чтения документации и статей ничего хорошего у вас не выйдет.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281287
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Di_LIneА если в файлике ошибки?
Как алярмы бить, куда варнинги слать?
И определять "точку" ахтунга?
Ну штоп потом, после правки, опять с нее начать...
Если в файлике ошибка. Кричим бухам АХТУНГ. Вот вам бухи ручной импорт (выбираете базу. Выставляете дату с ... по... Жмете импорт) По СОМ соединению со сверкой всех платежек за данный период. Вот вам бухи сисадмин - спросите с него почему файл битый мож вирус, а мож при бэкапе ночном че произошло? Вот вам бухи 1Сник спросите с него почему файл неправильно сформирован. Ну вы тут разбирайтесь, а я пошел кофе пить ибо моя прога 150тыщ раз эти файлы читала, читает и читать будет... Был бы правильный формат (и косо посмотреть на 1Сника) и не битый файл(и косо глянуть на сисадмина). Утрированно конечно, но как-то так. Чето за*бало за все отвечать и все предвидеть. Мнеб свой фронт работ осилить
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281294
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdog, мне все равно не нравиться.
Слишком много не определённостей, от меня (так сказать) не зависящих.

Нешта бы 1Цшик лил дельты в отдельную Таблю.
Ни какой тебе пакетной обработки (со всем прелестями сего действа).
Тихо-мирно, степ бай степ, по строчно.
Отработал строку, пометил "фтопку ее".
Перешел к следующей.
Чем тебе не "персональный журнал изменений" для прикрытия точки G?
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281296
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисdgdog,

а без ХП тебе GTT как собаке 5 нога. Нахрена сначала что-то закидывать на сервер, чтобы потом оттуда же и читать тоже самое, и вновь писать на сервер?

про транзакции http://www.ibase.ru/ibx/#tran_use
про возможности и синтаксис ХП Firebird_2_5_Language_Reference_RUS

И вообще без чтения документации и статей ничего хорошего у вас не выйдет.

"а без ХП тебе GTT как собаке 5 нога. "
Тут недопонимаю. Надо мне из двух таблей ГТТ и рабочей выбрать дубли и грохнуть их в ГТТ. Условия могут быть разные. Логика формирования условий как бы есть в приложении-импорта. Собрать такую логику в ХП мне сложно. Сформировать Delete с конкретными условиями в Query как два пальца. Да чуть дольше в выполнении. (сборка и т.п. но логика дольше обрабатывается) Но на клиент же данные не полетят. Отсылаю Delete *** на сервер. И сервер сам уже там шуршит между таблицами. Не прав, стукните.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281299
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogКричим бухам АХТУНГ.
Вот вам бухи ручной импорт...
Вот вам бухи сисадмин...

- Сам бушь по комнатам за ними бегать и объяснять куда им бежать?
А комп она мошь ва-аще вырубила из 220, ушла в декрет и тп.
- Тогда чё?
- Пипец, ты приплыл как кур в ощип...
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281309
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogСформировать Delete с конкретными условиями в Query как два пальца. Да чуть дольше в выполнении. (сборка и т.п. но логика дольше обрабатывается) Но на клиент же данные не полетят. Отсылаю Delete *** на сервер.

а теперь посчитай сколько раз ты такие сформированные delete на сервер отошлёшь.

Ну не хочешь ХП, может тебе и MERGE подойдёт. Хотя с такой боязнью SQL тебе и его не осилить.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281311
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Di_LInedgdogКричим бухам АХТУНГ.
Вот вам бухи ручной импорт...
Вот вам бухи сисадмин...

- Сам бушь по комнатам за ними бегать и объяснять куда им бежать?
А комп она мошь ва-аще вырубила из 220, ушла в декрет и тп.
- Тогда чё?
- Пипец, ты приплыл как кур в ощип...

А варианты? Заменить собой 1сника, сисадмина и бухгалтера?

У меня есть формат даннх экспорта, который дал 1сник (сам отступил, сам отвечает, и пофиг что при обнновлении что-то там слетело, мое какое дело?... я что СкайНет должен запустить, чтоб все проблемы предвидела и если че отправляла терминаторов на разборки) Вот архивы прошлых экспортов из 1С все норм - а тут вата понеслась.


Есть Сисадимин. Он дал папки. Объем диска согласовали. Хранение БэкАпов этих папок на нем. Ну пусть следит за вирусами, бэдблоками и т.п.

Есть бухгалтер который ведет свою тему. Ушла в декрет,в отпуск, в морг оставь напарницу, введи в курс дела. Нет!? К директору и там разбирайтесь кто кнопку не нажал и почему.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281322
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogА варианты?

Я уже не раз сказал про Таблю-Дельт.

dgdogУ меня есть формат даннх экспорта, который дал 1сник
А ты за чем и зачем их брал, эти файлики? ;-)

Пусть 1Цшник ведёт Таблю-Дельт именно в этом формате. :-)

Какая в попу ему разница - в файло или таблю?
В таблю всяко проще и, заметь, всем(!) спокойнее.
Чем гемор екпорт_ымпорт через промежуточный формат с временным хранением.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281330
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Di_LIne...Пусть 1Цшник ведёт Таблю-Дельт именно в этом формате. :-)


Про таблю-Дельт я тут не очень понимаю. Это то что он отдал в экспорт? И с какого места дальше пойдет экспорт?
Это предусмотренно в варианте с его выгрузкой по "плану выгрузок". Там потому два "Плана выгрузок" и используется, что контролят друг друга... Но мне с этой табли вообще не легче при падении экспортного файла по ошибке. Я САМ до этой табли не доберусь и никому ничего не докажу. 1сник быстрей её подправит)))) Но скорее всего я чего-то не догоняю про Таблю-Дельт
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281341
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Di_LIne...А ты за чем и зачем их брал, эти файлики? ;-)

Потому что программер на 1с такой же программер (ну пусть по Вашему кодер;) ) как и я. Ну удобней ему так, в таком формате. Не обломлюсь. ЕСли меня окончательно не устроит, думаю найдем общее решение. Серединку- на половинку. Времени у него перед отпуском нет. Все лучше чем он скажет "НЕТ - это не возможно" и буду COMмами по базам скакать.

ПС Да сегодня запустил по 20 баз одновременно)))) Ну то, что я бухгалтерию отправил чай пить это фигня. Но я еще и отожрал порядочную часть лицензий 1С )))) Народ нервно соображал, что происходит. Сидел молчал в тряпочку. Больше так делать не буду. Но да, ваши ребята советы и те статьи которые успел почитать, про Query, Транзакции... разгрузил ЦП. Не прям вооооообще, но разгрузил. Спасибо.

Уперся теперь во время подключения COM. В количество лицензий 1С. И то что COM соединение еще живет 15-20 минут после того как я его бросил (если были проводки), но в последнем, скорее всего надо делать какой-то выход, а не просто бросать соединение и делать новое.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281343
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
открой для себя race condition
https://ru.wikipedia.org/wiki/Состояние_гонки

и про понятие "атомарности операций" почитай

dgdogСижу (сервисом) на серваке: Курю бамбук и отъедаю ресурсы... бах. В каталоге XXX появляется файл "тоЧеНадо.xml". Стартую утилиту импорта с параметрами "d:\\xxx\тоЧеНадо.xml" и потащил его в GTT.

при этом параллельно чтению файла утилитой импорта одновременно 1С пишет в файл, а твоя утилита его читает, хотя он еще до конца недописан.
результат плохо предсказуем, с какой ноги сегодня сервер встал - так и будет меняться поведение.


dgdogУдачно унес? Ок. Переношу исходный файл в архив. Грохаю файл(сигнал 1с = я тебя понял, этот импорт получен. Следующий импорт с этого места)

1. 1С пишет данные, медленно и печально, написало для примера 800 строк
2. В этот момент просыпается утилита импорта и начинает это всё импортировать. Это тоже не мгновенно происходит.
3. Пока она импортирует, 1С записывает еще сотню строк.
4. Но утилита импорта считала файл, пока в нём было ещё только 800 строк и строки 800-900 не видит
5. Утилита заканчивает импорт 800 строк и удаляет файл с 900 строками
6. 1С видит, что файл обновлен, и строки начиная с 901-й пишет в новый файл
7. Итого - строки 800-900 никуда не попали и были выкинуты



Еще почитай про https://en.wikipedia.org/wiki/Multiple_buffering

Когда ты играешь музыку у звуковой карты есть несколько буфферов.
Один из них она гонит на динамики и никто болше не имеет права его трогать.
В другой буффер плеер распаковывает звук из муз-файла и никто этот буфер больше не трогает.
Когда звуковая карта доедает старый буфер - ей подсовывают следующий уже готовый, а отыгранный буфер ставят в очередь на заполнение новыми данными.
Но никогда писатель (mp3 плеер) и читатель (звуковая карта) не суются в один буфер. Или один из них или другой не имеет а это права.

То же самое с видеокадрами в игрушках-стрелялках, один буффер показываем, другой буффер строим, когда гтово делаем атомарный flip-flop



Ещё почитай про мнгопоточность - MPI, Erlang, Actor Model
Общее правило - любой пакет данных (переменная, работающая функция, файл и т.д.) принадлежит только ОДНОМУ рабочему. Когда одни рабочий передает пакет другому - он теряет если не доступ к пакету, то возможность его изменять как минимум.

В твоем примере - пока есть шанс, что 1С может писать в файл, импортер не имеет права его трогать.
А чтобы у импортера появилось право читать файл - 1С должно тот файл финализировать и переключиться на другой новый файл.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281365
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogПро таблю-Дельт я тут не очень понимаю.

В эту таблю (а не "файл экспорта") записываются изменения вносимые бушками.
По кнобке, автоматом али "по плану выгрузок" - сути не меняет.
Главное что бы ты мог до нее добраться своей софтинкой.

Это решает твою засаду из начального посыла - приходиться самому рыскать в поисках дельт.

Твоя софтинка периодически лезет в нее, читает все (или часть) New-записей, обрабатываем и помечает их как отработанные.

Ни какого гемора с промежуточным "носителем", парсингом, откатами данных, обработки ошибок.

Практически тот же "журнал". :-)
Но, так сказать, для ДСП.
Ее, таблю-дельт, можно/нужно и зачищать (периодически) от старья безбоязненно.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281366
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arioch...

1. 1С пишет данные, медленно и печально, написало для примера 800 строк
2. В этот момент просыпается утилита импорта и начинает это всё импортировать. Это тоже не мгновенно происходит.
3. Пока она импортирует, 1С записывает еще сотню строк.
4. Но утилита импорта считала файл, пока в нём было ещё только 800 строк и строки 800-900 не видит
5. Утилита заканчивает импорт 800 строк и удаляет файл с 900 строками
6. 1С видит, что файл обновлен, и строки начиная с 901-й пишет в новый файл
7. Итого - строки 800-900 никуда не попали и были выкинуты



Да об этом сегодня задумался на пару минут, между дел. Решение вижу:
1. Увидел файл. Пробую получить монопольный доступ. Переименовываю. 1с его потеряла, пусть пишет следующий, а я с этим разберусь пока.
2. Увидел файл. Пробую утащить его в темпПапку. 1С пусть куда хочет пишет
3. если первые два метода не сработают. Ну ок. Увидел файл. Считал датувремя последнего изменения. Хватаю файл - импортирую. Перед удалением файла проверяю датувремя последнего изменения. Даты не сошлись ПЕРЕИМПОРТИРОВАТЬ. Ошибка при загрузке импорта (не хватает ноды или типа того) = переимпортировать по таймеру через 2 минуты. Сошлись? Удалить файл

Жду варианты файлов которые даст 1Сник. Потом буду серьезно думать и искать возможные грабли. Xml - одно, текстовый файл другое, DBF вообще третье.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281367
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdog1. Увидел файл. Пробую получить монопольный доступ.

предположим, не получилось, что тогда ?
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281368
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdog,

хрень.
Пусть 1С сначала импортирует файл во временный каталог и как закончит переносит его в основной, который твой сервис уже будет смотреть и пытаться брать его с экслюзивным доступом.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281372
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogВсе лучше чем он скажет "НЕТ - это не возможно" и буду COMмами по базам скакать.
А фигле ему грить "Нет", если он согласился на файл экспорта?
Тебе не надо будет скакать по 20 базам одновременно, а только в Таблю-Дельт залесть.
И лицензию слопаешь только одну.
:-)
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281377
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Di_LInedgdogПро таблю-Дельт я тут не очень понимаю.

В эту таблю (а не "файл экспорта") записываются изменения вносимые бушками.
По кнобке, автоматом али "по плану выгрузок" - сути не меняет.
Главное что бы ты мог до нее добраться своей софтинкой.

Это решает твою засаду из начального посыла - приходиться самому рыскать в поисках дельт.

Твоя софтинка периодически лезет в нее, читает все (или часть) New-записей, обрабатываем и помечает их как отработанные.

Ни какого гемора с промежуточным "носителем", парсингом, откатами данных, обработки ошибок.

Практически тот же "журнал". :-)
Но, так сказать, для ДСП.
Ее, таблю-дельт, можно/нужно и зачищать (периодически) от старья безбоязненно.

Ну вкурил наконец-то. Это то что мне 1Сник предлагал: А ты мне как в интернет магазине ответный XML формируешь что прошло, что импортировал. Но пока от этого отказались, очень уж занимательна теория выгрузки "двумя планами выгрузки" 1С лишнего не даст, сама контролирует это. Лишняя движуха с дельтами и дельтой дельт))) избыточна. Пойдет косяк с конкретной базой (будет конечно когда-то) импорт в ручном режиме исправит от точки, до точки (он какбы и формирует дельты, сверяет чего есть, чего нет за период и добавляет, исправляет - работает зараза медленно. Но работает)
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281382
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ariochdgdog1. Увидел файл. Пробую получить монопольный доступ.

предположим, не получилось, что тогда ?

Таймер. Офф-Он. Через пят минут захожу в каталог "о файл лежит! Берем. Переименовываем". Не получилось?! Таймер. Офф-Он.
За пару суток нет импорта из этой БД. Бухи прибегут. Ищем, каталог, ищем файл, разбираемся.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281383
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денисdgdog,

хрень.
Пусть 1С сначала импортирует файл во временный каталог и как закончит переносит его в основной, который твой сервис уже будет смотреть и пытаться брать его с экслюзивным доступом.

Логично. С 1с не знаком. В ней это сложно интересно реализовать? Попрошу 1сника
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281393
Фотография Di_LIne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdogЭто то что мне 1Сник предлагал: А ты мне как в интернет магазине ответный XML формируешь что прошло, что импортировал.

- Не-а... :-)
Ни кто ни кому ни чего не шлет.
/Если только не по конкретному адресу. :-)))/

Его дело, 1Цшника, записать в эту таблицу и забыть/забить. Всё, он передал как в твою зону ответственности.
Твое дело - считать их нее данные и перелопатить.
С тебя тошь взятки гладки: - Какие данные получил, то и перелопатил.
А пральные они или нет - это в 1Цшнику. Бо нефех всякую кАку пихать.

Чёткое разделение зон ответственности и ни каких лишних телодвижений.


А то взяли моду - слать друг другу XML-ки, туда-сюда...
Главное - высоко содержательные:
- Ну ты чё?
- Я ничё, а ты чё?
:-))))
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281457
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dgdog,

ты бы заканчивал с флудом, а то зрители уже уставать начали :)

"А дальше что? Дальше ваши рыжие кудри примелькаются, и вас просто начнут бить."(с)
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281470
igs123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там, где замешана 1С (и 1С основная программа для работы конторы) - лучше все делать в ней, одни только периодические реквизиты чего стоят - в том смысле на 1С это удобно, а реализовать это в мелких утилитах муторно - не стоит оно того...

Но если уж надо продолжать поддержку, то обговори с админом и эсником такой вариант:
результаты выборок с баз необходимо слать по эл. почте (автоматизировать отправку по мэйлу для 1С это тоже не проблема),
почтовик на основе темы письма выкладывает прикрепленный файл в определенную папку
ну и далее как желаешь

Плюсы сам наверное видишь - выгрузки не теряются (конечно если почтовый ящик не почистят), можно отслеживать "забывающих" высылать выгрузки и т.п.
...
Рейтинг: 0 / 0
Delphi, FireBird создать таблицу в памяти клиента
    #39281631
dgdog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поигрался немного с ГТТ. Возник вопрос стоит ли делать индексы изначально на ГТТ? На малом объеме данных не ощутил разницы. Предполагается ипользовать ХП, Delete, Select и Merge к этой табличке. Сейчас в ГТТ (при каждой копии) летит 20-50 записей. Но хочется избежать граблей через год-два-три если объемы возрастут.

Хотелось бы ответ от практиков. И еще, а Как ведет себя триггер gen_id(ГТТ_id,1)? Используете ID поле в ГТТ? (так-то нафиг не нужно, но опять могу лажануть и чего-то не продумать)
...
Рейтинг: 0 / 0
25 сообщений из 368, страница 13 из 15
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Delphi, FireBird создать таблицу в памяти клиента
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]