Выгрузка из 1С в древнюю программу в dbf. Вопрос по архитектуре.
Все документы с товарообором надо выгрузить в 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 в плане обмена? Только создавать независимый регистр "строки на удлаение"?
из 1 документа в 1С формируется от 2 до 4 записей в docum и каждая запись имеет свой УИН.
из 1 строки таб части формируется от 2 до 4 записей в list каждая запись имеет свой УИН и УИН таблицы docum .
При изменении документа нельзя менять УИН.
При изменении подразделния надо все УИН менять. (потому что уходить в другую базу)
Все удлаленные УИН надо посылать в требуемыей узел с пометкой удаление.
Что сделал:
1. 2 регистра сведений, подчиненых регистратору docum и list. Куда пишу из документов требуемые записи.
2. ПланОмена с 5 узлами и реквизитом подразделение. Регистрирую это 2 регистра на изменение с отбор по подразделению. (правила регистрации)
3. Регламентом выбираю по плану обмена изменения и пишу dbf.
Вопрос: Как мне узнавать удаленные УИН строк docum и list в плане обмена? Только создавать независимый регистр "строки на удлаение"?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Основная проблема, как я понимаю - это удаление строк в базе-приемнике, да? Обычно этот вопрос никто не решает, а просто передают измененный объект целиком. Т.е. сначала удаляют объект в базе-приемнике, потом передают туда измененный объект. Даже 1С, записывая данные измененного документа в базу, сначала удаляет его к чертовой бабушке, а потом уже записывает заново.
(2)
Проблема в том, что база приемник не умеет сама удалять строки. То есть если в 1С удалят одну строку Товаров, то мне надо прислать в приемник, что вот эта строка с УИН помечена на удаление.
Или например, если меняют склад поступления товара (с изменением подразделения), то мне надо в 1 узел отправить, что эти УИН помечены на удаление. Создать новый УИН и отправить, в другой узел новые данные.
измененный объект целиком. Т.е. сначала удаляют объект в базе-приемнике, потом передают туда измененный объект. Даже 1С, записывая данные измененного докуме
Проблема в том, что база приемник не умеет сама удалять строки. То есть если в 1С удалят одну строку Товаров, то мне надо прислать в приемник, что вот эта строка с УИН помечена на удаление.
Или например, если меняют склад поступления товара (с изменением подразделения), то мне надо в 1 узел отправить, что эти УИН помечены на удаление. Создать новый УИН и отправить, в другой узел новые данные.
(3)
Вот как Вы себе в принципе представляете этот обмен? Вам придется при записи объекта каждый раз сравнивать, какие строки новые, какие строки пропали. В итоге все эти строки куда-то запишите. При том документ может поменяться между транзакциями обмена множественное количество раз (если все не "на-лету" будет работать). В итоге куча слабосвязанной информации, когда регистрируется удаление строки, которой еще нет в базе-приемнике.
В общем, на мой взгляд, это геморрой тот еще. Поэтому лучше придерживаться простых решений - регистрируете сам объект, а потом добиваетесь того, чтобы в базе-приемнике он стал таким, как в базе источнике в момент транзакции обмена.
что вот эта строка с УИН помечена на удаление
Сдается мне, что лучше просто отправлять в базу-приемник информацию о том, что все строки документа надо удалить. Предположу, что эти строки связаны как-то с шапкой, да?
Вот как Вы себе в принципе представляете этот обмен? Вам придется при записи объекта каждый раз сравнивать, какие строки новые, какие строки пропали. В итоге все эти строки куда-то запишите. При том документ может поменяться между транзакциями обмена множественное количество раз (если все не "на-лету" будет работать). В итоге куча слабосвязанной информации, когда регистрируется удаление строки, которой еще нет в базе-приемнике.
В общем, на мой взгляд, это геморрой тот еще. Поэтому лучше придерживаться простых решений - регистрируете сам объект, а потом добиваетесь того, чтобы в базе-приемнике он стал таким, как в базе источнике в момент транзакции обмена.
(4)
Нет такой команды, есть команда УИН конкретный пометить на удаление. Причем у каждой строки свой уин. Никак больше это сделать нельзя. И связано это с шапкой и товарами. Удалил товар, пришли в базу что уин строки пометка на удаление. Поменял склад, пришли в базу каждую строку с пометкой на удаление.
(4)
Разработчки базы применика мёртв. Связь с базой только через отправку ей в горячую папку dbf файлов.
И мне бы хотелось, чтоб база-приемник как-то сама что делала, но нет возможности.
Сдается мне, что лучше просто отправлять в базу-приемник информацию о том, что все строки документа надо удалить. Предположу, что эти строки связаны как-то с шапкой, да?
Нет такой команды, есть команда УИН конкретный пометить на удаление. Причем у каждой строки свой уин. Никак больше это сделать нельзя. И связано это с шапкой и товарами. Удалил товар, пришли в базу что уин строки пометка на удаление. Поменял склад, пришли в базу каждую строку с пометкой на удаление.
(4)
В общем, на мой взгляд, это геморрой тот еще. Поэтому лучше придерживаться простых решений - регистрируете сам объект, а потом добиваетесь того, чтобы в базе-приемнике он стал таким, как в базе источнике в момент транзакции обмена.
Разработчки базы применика мёртв. Связь с базой только через отправку ей в горячую папку dbf файлов.
И мне бы хотелось, чтоб база-приемник как-то сама что делала, но нет возможности.
(7)
итд
По всей видимости документов там море. Что будет, если туда передать строку на удаление (УИН), которой там нет? Если все будет ок, то придется для всех документов сделать некий анализатор (перед записью) между табличной частью в объекте и сцылке, сравнить с записанными уже изменениями, отразить все новое, после чего уже обмениваться. Но если окажется, что база-приемник помрет от неизвестного УИН, то будет непросто....
(8)
Фактически там 1 операция только update/insert. Пометка на удаление это буква "d" в поле. и раз в сутки регламентное создание выбирает строки с "d" и их физически удаляет.
А данные с удаленными уин в регистр отдельный писать или куда? Не в проводки же документа.
Что будет, если туда передать строку на удаление (УИН), которой там нет?
Фактически там 1 операция только update/insert. Пометка на удаление это буква "d" в поле. и раз в сутки регламентное создание выбирает строки с "d" и их физически удаляет.
А данные с удаленными уин в регистр отдельный писать или куда? Не в проводки же документа.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот