|
![]() |
#1 |
Участник
|
Нашел немного инфы. Может кто подтвердит или опровергнет.
Если таблица «Предв.Действие». Она вроде как выступает хранилищем данных для отправки. Кто что может сказать по этому поводу? |
|
![]() |
#2 |
Участник
|
Цитата:
Если по действиям, то Вам уже написали про таблицы "Предв.Действие" и Действие. Если же по счетчику, то не нужно никуда вставлять записи, а нужно ставить значение счетчика в создаваемой/модифицируемой записи. |
|
![]() |
#3 |
Участник
|
Цитата:
А не могли бы по-конкретнее прояснить (или скажите где посмотреть) по первому варианту - в каком формате надо заполнять поля таблицы Пред.Действие или что они означают; по второму варианту - саму идею. Т.к. я не в курсе про счетчики. Как они обрабатываются, куда их ставить (это отдельное создаваемое поле?) и откуда брать? Заранее спасибо |
|
![]() |
#4 |
Участник
|
Цитата:
Сообщение от litvinenko_anton
![]() Цитата:
А не могли бы по-конкретнее прояснить (или скажите где посмотреть) по первому варианту - в каком формате надо заполнять поля таблицы Пред.Действие или что они означают; по второму варианту - саму идею. Т.к. я не в курсе про счетчики. Как они обрабатываются, куда их ставить (это отдельное создаваемое поле?) и откуда брать? Заранее спасибо 1. Происходит вставка, изменение или удаление записи в некой таблице. 2. Срабатывают триггеры в Наве, которые пишут в таблицу предварительных действий что мы сделали (вставка,изменение,удаление), с какой записью (первичный ключ), когда и кто сделал. 3. Данные переносятся в таблицу Действий отдельным заданием в планировщике (постоянно крутится соответствующее задание и запускается с неким как правило небольшим интервалом) 4. Далее другое задание (уже непосредственно репликации) читает данные из этой таблицы, выбирает записи и отправляет получателю. Что туда писать проще посмотреть на уже имеющиеся у Вас данные в этой таблице. Не вижу смысла перечислять все поля. Тем более они могут быть несколько кастомизированы. Основные это номер операции, номер таблицы, тип действия, ключ, дата. Если ключ составной, то его составные части перечисляются через ; Как работает репликация по счетчикам: 1. Происходит вставка, изменение или удаление записи в некой таблице. 2. Срабатывают триггеры в Наве, которые обновляют специальное поле в этой же модифицируемой таблице. Тут возможны нюансы. Может туда ставится "имеющееся в этой таблице максимальное значение" +1, а может 0. Это тоже зависит есть ли кастомизация. 3. Далее задание репликации читает данные из этой таблицы, отправляет получателю и запоминает максимальное значение счетчика, чтобы в следующий раз читать только записи с большим значением счетчика. В этом случае все просто для обработки SQL. Правильный update счетчика и готово. Опять же из самих технологий понятно, что репликация по действиям может удалять записи у получателя, а по счетчикам - нет. Очень бы рекомендовал прежде чем писать при помощи SQL записи в предействия посмотреть на код заполнения этой таблицы в Нав. Т.е. берете процедуру CreateAction искомой таблицы и по цепочке смотрите где что и как. P.S. Еще дополню, что при репликации по действиям также запоминается последний отправленный номер счетчика. Боюсь ошибиться, но по-моему идентификатором счетчика служит номер записи из таблицы Action. Т.е. если сегодня была отреплицирована запись с номером 10, а завтра вы вставите запись с номером 1, то она не уйдет без сброса счетчика. |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от advisor
![]() Цитата:
Сообщение от litvinenko_anton
![]() Цитата:
А не могли бы по-конкретнее прояснить (или скажите где посмотреть) по первому варианту - в каком формате надо заполнять поля таблицы Пред.Действие или что они означают; по второму варианту - саму идею. Т.к. я не в курсе про счетчики. Как они обрабатываются, куда их ставить (это отдельное создаваемое поле?) и откуда брать? Заранее спасибо 1. Происходит вставка, изменение или удаление записи в некой таблице. 2. Срабатывают триггеры в Наве, которые пишут в таблицу предварительных действий что мы сделали (вставка,изменение,удаление), с какой записью (первичный ключ), когда и кто сделал. 3. Данные переносятся в таблицу Действий отдельным заданием в планировщике (постоянно крутится соответствующее задание и запускается с неким как правило небольшим интервалом) 4. Далее другое задание (уже непосредственно репликации) читает данные из этой таблицы, выбирает записи и отправляет получателю. Что туда писать проще посмотреть на уже имеющиеся у Вас данные в этой таблице. Не вижу смысла перечислять все поля. Тем более они могут быть несколько кастомизированы. Основные это номер операции, номер таблицы, тип действия, ключ, дата. Если ключ составной, то его составные части перечисляются через ; Как работает репликация по счетчикам: 1. Происходит вставка, изменение или удаление записи в некой таблице. 2. Срабатывают триггеры в Наве, которые обновляют специальное поле в этой же модифицируемой таблице. Тут возможны нюансы. Может туда ставится "имеющееся в этой таблице максимальное значение" +1, а может 0. Это тоже зависит есть ли кастомизация. 3. Далее задание репликации читает данные из этой таблицы, отправляет получателю и запоминает максимальное значение счетчика, чтобы в следующий раз читать только записи с большим значением счетчика. В этом случае все просто для обработки SQL. Правильный update счетчика и готово. Опять же из самих технологий понятно, что репликация по действиям может удалять записи у получателя, а по счетчикам - нет. Очень бы рекомендовал прежде чем писать при помощи SQL записи в предействия посмотреть на код заполнения этой таблицы в Нав. Т.е. берете процедуру CreateAction искомой таблицы и по цепочке смотрите где что и как. P.S. Еще дополню, что при репликации по действиям также запоминается последний отправленный номер счетчика. Боюсь ошибиться, но по-моему идентификатором счетчика служит номер записи из таблицы Action. Т.е. если сегодня была отреплицирована запись с номером 10, а завтра вы вставите запись с номером 1, то она не уйдет без сброса счетчика. |
|
![]() |
#6 |
Участник
|
Цитата:
Сообщение от litvinenko_anton
![]() Цитата:
А не могли бы по-конкретнее прояснить (или скажите где посмотреть) по первому варианту - в каком формате надо заполнять поля таблицы Пред.Действие или что они означают; по второму варианту - саму идею. Т.к. я не в курсе про счетчики. Как они обрабатываются, куда их ставить (это отдельное создаваемое поле?) и откуда брать? Заранее спасибо Если хотите "средствами SQL положить запись в репликацию" и уйти от использования нативной репликации (под этим я подразумеваю все ее настройки - задания, подзадания, и т.п. и функции, которые ее выполняют) и Application Server, то смысла разбираться с таблицей "Пред.Действие" нет, т.к. она используется там. При репликации по действиям принцип примерно следующий: 1. В процессе модификации записей в рабочих таблицах в "Пред.Действие" складываются значения первичных ключей этих записей и типы действий (создание/модификация/удаление). 2. Дальше функция в NAV (обычно работающая под Application Server) читает эту таблицу и через COM компонент передает данные Data Director. 3. DD отсылает данные в удаленную БД. |
|
![]() |
#7 |
Участник
|
Цитата:
Сообщение от Alterant
![]() Цитата:
Сообщение от litvinenko_anton
![]() Цитата:
А не могли бы по-конкретнее прояснить (или скажите где посмотреть) по первому варианту - в каком формате надо заполнять поля таблицы Пред.Действие или что они означают; по второму варианту - саму идею. Т.к. я не в курсе про счетчики. Как они обрабатываются, куда их ставить (это отдельное создаваемое поле?) и откуда брать? Заранее спасибо Если хотите "средствами SQL положить запись в репликацию" и уйти от использования нативной репликации (под этим я подразумеваю все ее настройки - задания, подзадания, и т.п. и функции, которые ее выполняют) и Application Server, то смысла разбираться с таблицей "Пред.Действие" нет, т.к. она используется там. При репликации по действиям принцип примерно следующий: 1. В процессе модификации записей в рабочих таблицах в "Пред.Действие" складываются значения первичных ключей этих записей и типы действий (создание/модификация/удаление). 2. Дальше функция в NAV (обычно работающая под Application Server) читает эту таблицу и через COM компонент передает данные Data Director. 3. DD отсылает данные в удаленную БД. |
|
![]() |
#8 |
Участник
|
Цитата:
Сообщение от litvinenko_anton
![]() Цитата:
Сообщение от Alterant
![]() Я бы рекомендовал вам сначала разобраться чего вы хотите.
Если хотите "средствами SQL положить запись в репликацию" и уйти от использования нативной репликации (под этим я подразумеваю все ее настройки - задания, подзадания, и т.п. и функции, которые ее выполняют) и Application Server, то смысла разбираться с таблицей "Пред.Действие" нет, т.к. она используется там. При репликации по действиям принцип примерно следующий: 1. В процессе модификации записей в рабочих таблицах в "Пред.Действие" складываются значения первичных ключей этих записей и типы действий (создание/модификация/удаление). 2. Дальше функция в NAV (обычно работающая под Application Server) читает эту таблицу и через COM компонент передает данные Data Director. 3. DD отсылает данные в удаленную БД. Если вы хотите и этот шаг делать делать вне NAV, то смысла разбираться с таблицей "Пред.Действие"- нет. Изучайте COM интерфейс DD. Если хотите эмулировать работу NAV по созданию действий (записей в "Пред.Действие"), а репликацию все же оставить на NAV, то это другое дело. |
|
![]() |
#9 |
Участник
|
Цитата:
Сообщение от Alterant
![]() Цитата:
Сообщение от litvinenko_anton
![]() Цитата:
Сообщение от Alterant
![]() Я бы рекомендовал вам сначала разобраться чего вы хотите.
Если хотите "средствами SQL положить запись в репликацию" и уйти от использования нативной репликации (под этим я подразумеваю все ее настройки - задания, подзадания, и т.п. и функции, которые ее выполняют) и Application Server, то смысла разбираться с таблицей "Пред.Действие" нет, т.к. она используется там. При репликации по действиям принцип примерно следующий: 1. В процессе модификации записей в рабочих таблицах в "Пред.Действие" складываются значения первичных ключей этих записей и типы действий (создание/модификация/удаление). 2. Дальше функция в NAV (обычно работающая под Application Server) читает эту таблицу и через COM компонент передает данные Data Director. 3. DD отсылает данные в удаленную БД. Если вы хотите и этот шаг делать делать вне NAV, то смысла разбираться с таблицей "Пред.Действие"- нет. Изучайте COM интерфейс DD. Если хотите эмулировать работу NAV по созданию действий (записей в "Пред.Действие"), а репликацию все же оставить на NAV, то это другое дело. |
|