Выгрузка из 1С в древнюю программу в dbf. Вопрос по архитектуре.

1. TimofeySin 173 29.10.21 09:10 Сейчас в теме
Все документы с товарообором надо выгрузить в 2 таблицы: docum(шапка) list(табличная часть). в 5 разых точек, в зависимости от подразделения.

из 1 документа в 1С формируется от 2 до 4 записей в docum и каждая запись имеет свой УИН.
из 1 строки таб части формируется от 2 до 4 записей в list каждая запись имеет свой УИН и УИН таблицы docum .

При изменении документа нельзя менять УИН.
При изменении подразделния надо все УИН менять. (потому что уходить в другую базу)
Все удлаленные УИН надо посылать в требуемыей узел с пометкой удаление.

Что сделал:
1. 2 регистра сведений, подчиненых регистратору docum и list. Куда пишу из документов требуемые записи.
2. ПланОмена с 5 узлами и реквизитом подразделение. Регистрирую это 2 регистра на изменение с отбор по подразделению. (правила регистрации)
3. Регламентом выбираю по плану обмена изменения и пишу dbf.


Вопрос: Как мне узнавать удаленные УИН строк docum и list в плане обмена? Только создавать независимый регистр "строки на удлаение"?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starik-2005 3087 29.10.21 09:18 Сейчас в теме
Основная проблема, как я понимаю - это удаление строк в базе-приемнике, да? Обычно этот вопрос никто не решает, а просто передают измененный объект целиком. Т.е. сначала удаляют объект в базе-приемнике, потом передают туда измененный объект. Даже 1С, записывая данные измененного документа в базу, сначала удаляет его к чертовой бабушке, а потом уже записывает заново.
3. TimofeySin 173 29.10.21 09:23 Сейчас в теме
(2)
измененный объект целиком. Т.е. сначала удаляют объект в базе-приемнике, потом передают туда измененный объект. Даже 1С, записывая данные измененного докуме

Проблема в том, что база приемник не умеет сама удалять строки. То есть если в 1С удалят одну строку Товаров, то мне надо прислать в приемник, что вот эта строка с УИН помечена на удаление.

Или например, если меняют склад поступления товара (с изменением подразделения), то мне надо в 1 узел отправить, что эти УИН помечены на удаление. Создать новый УИН и отправить, в другой узел новые данные.
4. starik-2005 3087 29.10.21 09:30 Сейчас в теме
(3)
что вот эта строка с УИН помечена на удаление
Сдается мне, что лучше просто отправлять в базу-приемник информацию о том, что все строки документа надо удалить. Предположу, что эти строки связаны как-то с шапкой, да?

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

В общем, на мой взгляд, это геморрой тот еще. Поэтому лучше придерживаться простых решений - регистрируете сам объект, а потом добиваетесь того, чтобы в базе-приемнике он стал таким, как в базе источнике в момент транзакции обмена.
5. TimofeySin 173 29.10.21 09:43 Сейчас в теме
(4)
Сдается мне, что лучше просто отправлять в базу-приемник информацию о том, что все строки документа надо удалить. Предположу, что эти строки связаны как-то с шапкой, да?

Нет такой команды, есть команда УИН конкретный пометить на удаление. Причем у каждой строки свой уин. Никак больше это сделать нельзя. И связано это с шапкой и товарами. Удалил товар, пришли в базу что уин строки пометка на удаление. Поменял склад, пришли в базу каждую строку с пометкой на удаление.



(4)
В общем, на мой взгляд, это геморрой тот еще. Поэтому лучше придерживаться простых решений - регистрируете сам объект, а потом добиваетесь того, чтобы в базе-приемнике он стал таким, как в базе источнике в момент транзакции обмена.

Разработчки базы применика мёртв. Связь с базой только через отправку ей в горячую папку dbf файлов.
И мне бы хотелось, чтоб база-приемник как-то сама что делала, но нет возможности.
6. starik-2005 3087 29.10.21 09:45 Сейчас в теме
(5)
чтоб база-приемник как-то сама
А в чем ее такая уникальная функциональность-то? Может подумать о замене?
7. TimofeySin 173 29.10.21 09:48 Сейчас в теме
(6)
уникальная

Вот идет процесс замены, но разом поменять нельзя. 25 лет всё было в этой фокспро базе, сейчас пытаемся вытащить из неё сначало товарооборот, кассы, потом будет производство, потом упр учет , здания итд. Франкенштейн блин.
8. starik-2005 3087 29.10.21 09:52 Сейчас в теме
(7)
итд
По всей видимости документов там море. Что будет, если туда передать строку на удаление (УИН), которой там нет? Если все будет ок, то придется для всех документов сделать некий анализатор (перед записью) между табличной частью в объекте и сцылке, сравнить с записанными уже изменениями, отразить все новое, после чего уже обмениваться. Но если окажется, что база-приемник помрет от неизвестного УИН, то будет непросто....
9. TimofeySin 173 29.10.21 09:57 Сейчас в теме
(8)
Что будет, если туда передать строку на удаление (УИН), которой там нет?

Фактически там 1 операция только update/insert. Пометка на удаление это буква "d" в поле. и раз в сутки регламентное создание выбирает строки с "d" и их физически удаляет.

А данные с удаленными уин в регистр отдельный писать или куда? Не в проводки же документа.
10. starik-2005 3087 29.10.21 09:59 Сейчас в теме
(9)
в регистр отдельный писать или куда
Да хоть в файл текстовый - это вообще неважно (если не считать скорости записи в текстовый файл, которая явно выше скорости записи в регистр).
12. sssss_aaaaa_2011 29.10.21 10:35 Сейчас в теме
(7)
всё было в этой фокспро базе
И что, прямо все знатоки фокса у вас пропали? Которые могли бы или саму прогу-приемник поправить, или даже отдельную "принималку файлов из горячей папки" нарисовать в обход имеющейся проги?
13. user1461477 29.10.21 13:44 Сейчас в теме
(7) ладно прибедняться
у вас на край этим начали заниматься

это ж сколько лет назад у меня-то такое было?...
тогда на тот завод еще приходила бабушка-пенсионер-программист к этой ихней фокспре
11. TimofeySin 173 29.10.21 10:12 Сейчас в теме
А может сделать независимый регистр с 3 измерениями УИН и Подразделение, документ 1с. И по нему сделать обмен. Тогда в плане обмена, я буду видеть удаленные строки регистра в ввиде УИН/Подразделение, документ, но без движений в регистре.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот