- Как работает механизм регистрации изменений в 1С
- Где хранится информация о зарегистрированных изменениях
- Как сделать запрос к таблице изменений
- Как зарегистрировать изменение объекта в 1С
- Как зарегистрировать все изменения для узла
- Как зарегистрировать все изменения объектов определенного типа
- Как зарегистрировать все изменения конкретных объектов
- Как удалить регистрацию изменений
- Как удалить регистрацию изменений полностью
- Как удалить регистрацию изменений с номером сообщения не больше заданного
- Передача изменений конфигурации в распределенной информационной базе
- Регистрация изменений
- Передача изменений
- Прием изменений
- Служба регистрации изменений
- 1с регистрация конфигурации изменена
- Где хранится информация о зарегистрированных изменениях
- Как сделать запрос к таблице изменений
- Как зарегистрировать изменение объекта в 1С
- Как зарегистрировать все изменения для узла
- Как зарегистрировать все изменения объектов определенного типа
- Как зарегистрировать все изменения конкретных объектов
- Как удалить регистрацию изменений
- Как удалить регистрацию изменений полностью
- Как удалить регистрацию изменений с номером сообщения не больше заданного
Как работает механизм регистрации изменений в 1С
Механизм регистрации изменений используется для обмена данными. При выполнении обмена из базы-источника в базу-приемник передаются не все данные, а только те, для которых были зарегистрированы изменения. В 1С регистрация изменений доступна для следующих объектов:
- константа;
- справочник;
- документ;
- план счетов;
- план видов характеристик;
- план видов расчета;
- бизнес процесс;
- задача.
А так же для наборов записей:
- регистра сведений;
- регистра бухгалтерии;
- регистра накопления;
- регистра расчета;
- перерасчета.
Где хранится информация о зарегистрированных изменениях
Каждое изменение регистрируется в специальных служебных таблицах, в названии которых в конце есть слово Изменения, например, таблица изменений для справочника контрагентов будет называться Контрагенты.Изменения.
Структура таблицы изменений подобна для всех объектов:
- ключ элемента данных, для которого регистрируются изменения;
- ссылка на узел, для которого регистрируется изменение;
- номер сообщения, в котором было передано изменение.
Запись в таблице изменений проходит следующие преобразования:
- При регистрации изменения объекта создаются записи для всех узлов обмена, в которых этот объект должен быть зарегистрирован. При этом в графе Номер сообщения устанавливается значение NULL.
- При отправке данных в другую информационную базу в графе Номер сообщения устанавливается порядковый номер переданного сообщения.
- При получении данных из другой информационной базы передается номер последнего принятого сообщения. При этом из таблиц изменений удаляются строки, в которых номер сообщения меньше или равен принятому в другой базе. Таким образом удаляется регистрация изменений, которые уже были переданы и прием которых подтвержден.
Как сделать запрос к таблице изменений
Таблицы изменений по умолчанию не видны в конструкторе запросов. Но их можно вывести с помощью кнопки Отображать таблицы изменений.
Пример запроса к таблице изменений:
Как зарегистрировать изменение объекта в 1С
Для ручной регистрации изменений объектов существует обработка Регистрация изменений для обмена.
Изменения данных могут регистрироваться в автоматическом режиме. Для этого необходимо при включении объекта метаданных в состав плана обмена разрешить автоматическую регистрацию: установить для свойства Авторегистрация значение Разрешить.
Для того чтобы зарегистрироваться изменения вручную, программно у менеджера планов обмена существует функция ЗарегистрироватьИзменения() . Функция имеет два параметра:
Как зарегистрировать все изменения для узла
Для того, чтобы зарегистрировать все изменения для конкретного узла, нужно в первом параметре передать ссылку на узел, а во втором — значение Неопределено.
Как зарегистрировать все изменения объектов определенного типа
Для того, чтобы зарегистрировать изменения объектов определенного типа, нужно в первом параметре передать ссылку на узел, а во втором — объект описания метаданных.
Как зарегистрировать все изменения конкретных объектов
Для того, чтобы зарегистрировать изменение конкретного объекта, нужно в первом параметре передать ссылку на узел, а во втором — ссылку на объект.
Для того, чтобы зарегистрировать изменение конкретного объекта, нужно в первом параметре передать ссылку на узел, а во втором — ссылку на объект.
Для регистрации изменений наборов записей регистров, подчиненных регистратору необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные набор записей с установленным отбором, в котором в элемент отбора Регистратор установлено значение регистратора данного набора записей. При этом чтение данных набора записей перед его регистрацией не обязательно.
Для регистрации изменений наборов записей независимого регистра необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные набор записей. Состав элементов отбора, при этом, должен строго соответствовать основному отбору регистра.
Набор = РегистрыСведений . КомплектующиеНоменклатуры . СоздатьНаборЗаписей ( ) ;
Набор . Отбор . Номенклатура . Значение = Номенклатура ;
Набор . Отбор . Номенклатура . Использование = Истина ;
Набор . Отбор . ХарактеристикаНоменклатуры . Значение = ХарактеристикаНоменклатуры ;
Набор . Отбор . ХарактеристикаНоменклатуры . Использование = Истина ;
ПланыОбмена . ЗарегистрироватьИзменения ( Узел , Набор ) ;
Как удалить регистрацию изменений
Для того чтобы удалить информацию о зарегистрированных изменениях у менеджера планов обмена существует функция УдалитьРегистрациюИзменений() . Функция имеет два параметра:
Как удалить регистрацию изменений полностью
Если необходимо удалить всю информацию о зарегистрированных изменениях для конкретного узла, то второй параметр следует оставить пустым:
Как удалить регистрацию изменений с номером сообщения не больше заданного
Если необходимо удалить информацию о зарегистрированных изменениях и при этом известен номер последнего полученного второй базой сообщения, то нужно передать этот номер сообщения в качестве второго параметра:
Например, если номер сообщения равен 2, то из таблиц изменений будут удалены все записи с номерами 1 и 2.
Источник
Передача изменений конфигурации в распределенной информационной базе
В процессе работы распределенной информационной базы конфигурация может модернизироваться. Изменения конфигурации возможны только в корневом узле распределенной информационной базы. Одним из основных требований механизма распределенной информационной базы является идентичность конфигураций в узлах.
Для соблюдения этого правила изменения конфигурации, произведенные в корневом узле, посредством сообщений обмена, распространяются по всем узлам распределенной информационной базы.
В данной статье описываются некоторые технические детали процесса передачи изменений конфигурации в рамках распределенной информационной базы.
Регистрация изменений
Для того чтобы при передаче конфигурации в подчиненный узел не передавалось большого объема информации, для синхронизации конфигураций между узлами передается не вся конфигурация, а только измененные объекты. Гранулярность регистрируемых изменений аналогична гранулярности, используемой при работе с хранилищем конфигурации: изменения регистрируются для объектов метаданных верхнего уровня (справочники, документы и т.д.), а также для макетов и форм.
Регистрация изменений метаданных выполняется службой регистрации изменений, поэтому принципы регистрации изменений идентичны аналогичным принципам, используемым для данных, за исключением того, что все операции выполняются автоматически.
Регистрация изменений объектов конфигурации происходит при выполнении обновления конфигурации базы данных. После любого изменения конфигурации при выполнении обновления конфигурации базы данных происходит открытие стандартного диалога подтверждения изменения структуры конфигурации, в котором помимо прочих сообщений будет сказано о регистрации изменений конфигурации. Это происходит из-за того, что изменения конфигурации должны быть зафиксированы в базе данных.
Передача изменений
Изменения конфигурации передаются в сообщении обмена. Для обеспечения целостности передаваемых изменений сообщение обмена содержит контрольную сумму передаваемых изменений.
Объем передаваемых данных зависит от количества зарегистрированных изменений. Поэтому для сокращения объема передаваемых данных рекомендуется после приема очередного сообщения обмена отправлять сообщение-подтверждение приема данных. При получении подобного сообщения в узле-отправителе происходит удаление регистрации изменений переданных ранее данных.
Прием изменений
При приеме изменений конфигурации производится проверка соответствия принимаемых изменений конфигурации узла распределенной информационной базы. Если же сообщение обмена не содержит изменений конфигурации, то производится проверка идентичности конфигураций приемника и источника сообщения. Для контроля идентичности конфигураций в сообщении обмена распределенной информационной базы передается контрольная сумма конфигурации. В случае несовпадения контрольной суммы, рассчитанной по конфигурации и содержащейся в сообщении обмена, прием сообщения обмена прерывается.
Рассмотрим типовые случаи, возникающие при приеме сообщений обмена. Пусть имеются два узла распределенной информационной базы: Центральный узел (ЦУ) и Периферийный узел (ПУ).
- Если в ЦУ были выполнены изменения конфигурации и производится загрузка сообщения обмена из ПУ, содержащего неизмененную конфигурацию, то будет сгенерировано исключение: «Данные принимаются от узла, для которого зарегистрированы изменения конфигурации. «. В этом случае необходимо сформировать сообщение обмена в ЦУ, включающее изменения конфигурации, и передать его в ПУ. После успешного получения в ПУ сообщения обмена с изменениями конфигурации необходимо повторить выгрузку первоначального сообщения обмена из ПУ для передачи его в ЦУ.
- Если в ПУ производится загрузка сообщения обмена, содержащего изменения конфигурации из ЦУ, то совершаются следующие действия:
- Производится проверка целостности передаваемых изменений конфигурации. Данный контроль выполняется для того, чтобы предотвратить преднамеренное или случайное искажение передаваемых изменений конфигурации. В случае обнаружения искажений будет сгенерировано исключение: «Искажены изменения конфигурации!». В этом случае необходимо произвести повторную выгрузку сообщения из ЦУ и передачу его в ПУ.
- Производится проверка принадлежности изменений конфигурации ПУ. Если обнаруживается, что изменения конфигурации не имеют отношения к конфигурации ПУ, генерируется исключение: «Попытка приема изменений от неизвестной конфигурации». В этом случае необходимо повторно получить сообщение обмена из ЦУ, убедившись, что получение производится именно из ЦУ.
- Производится проверка отсутствия изменений в конфигурации ПУ. Данная проверка производится путем анализа контрольной суммы конфигурации, переданной в сообщении обмена и контрольной суммы конфигурации ПУ. В случае обнаружения изменений конфигурации ПУ относительно конфигурации ЦУ будет сгенерировано исключение: «Конфигурация узла распределенной информационной базы не соответствует ожидаемой!». В этом случае необходимо произвести ручную синхронизацию конфигураций ЦУ и ПУ. Данный процесс описан в статье «Восстановление узла распределенной информационной базы из резервной копии».
- После подтверждения принадлежности изменений конфигурации ПУ производится запись изменений конфигурации и генерируется исключение: «Из главного узла распределенной информационной базы получены изменения конфигурации. «. Это говорит о корректной записи изменений конфигурации в информационную базу ПУ. Для продолжения загрузки сообщения обмена необходимо открыть информационную базу ПУ в режиме Конфигуратор и выполнить обновление конфигурации базы данных. После успешного обновления конфигурации базы данных загрузку сообщения обмена необходимо повторить.
- Если в ПУ производится загрузка сообщения обмена, содержащего изменения конфигурации из ЦУ, но эти изменения уже были загружены в информационную базу и конфигурация базы данных успешно обновлена, то изменения конфигурации не загружаются и процесс чтения сообщения обмена продолжается.
Источник
Служба регистрации изменений
Служба регистрации изменений — одна из составляющих механизмов обмена данными. Она обеспечивает регистрацию всех измененных данных, которые подлежат передаче в другие узлы распределенной системы. Служба регистрации изменений реализована в составе объекта конфигурации План обмена.
Суть регистрации изменений состоит в том, чтобы иметь перечень измененных элементов данных которые должны быть переданы в очередном сообщении тому или иному узлу, с которым производится обмен данными. При каждом изменении данных регистрируется, что имеются изменения, которые предстоит передать во все узлы, с которыми поддерживается обмен этими данными. При получении подтверждения приема сообщения, в котором были отправлены изменения, записи регистрации изменений должны быть удалены.
Состав данных, которыми осуществляется обмен, описывается в плане обмена и представляет собой перечень элементов данных (например, СправочникОбъект. , РегистрСведенийНаборЗаписей. , КонстантаМенеджерЗначения. и т. д.).
Для каждого элемента данных, указанного в плане обмена, ведется своя таблица регистрации изменений. Таблицы имеют разную структуру, в зависимости от того, для каких элементов данных регистрируются изменения, но все-таки структуры таблиц подобны. Каждая запись указывает на некоторый элемент данных, некоторый узел и содержит номер сообщения, в котором это изменение передано в первый раз.
При изменении элемента данных его изменение регистрируется для всех узлов, в которые это изменение должно быть передано. Таким образом, в результате изменения элемента данных в таблице регистрации изменений появляется N записей, где N — количество узлов, для которых регистрируются изменения. Каждая из этих записей указывает на одно и то же значение элемента данных и на различные узлы.
Непосредственно после выполнения регистрации изменения, в каждой новой записи изменений номер сообщения имеет значение NULL. При первой отправке изменения в составе сообщения, он заменяется номером сообщения, в котором изменение отправлено.
При описании состава данных в плане обмена, для каждого элемента данных есть возможность указать признак Авторегистрация. Авторегистрацию можно разрешить или запретить. Если авторегистрация разрешена, то при изменении данных регистрация изменений будет выполнена автоматически. Если запрещена, то регистрацию изменения можно выполнить «вручную», средствами встроенного языка.
Источник
1с регистрация конфигурации изменена
Механизм регистрации изменений используется для обмена данными. При выполнении обмена из базы-источника в базу-приемник передаются не все данные, а только те, для которых были зарегистрированы изменения. В 1С регистрация изменений доступна для следующих объектов:
- константа;
- справочник;
- документ;
- план счетов;
- план видов характеристик;
- план видов расчета;
- бизнес процесс;
- задача.
А так же для наборов записей:
- регистра сведений;
- регистра бухгалтерии;
- регистра накопления;
- регистра расчета;
- перерасчета.
Где хранится информация о зарегистрированных изменениях
Каждое изменение регистрируется в специальных служебных таблицах, в названии которых в конце есть слово Изменения, например, таблица изменений для справочника контрагентов будет называться Контрагенты.Изменения.
Структура таблицы изменений подобна для всех объектов:
- ключ элемента данных, для которого регистрируются изменения;
- ссылка на узел, для которого регистрируется изменение;
- номер сообщения, в котором было передано изменение.
Запись в таблице изменений проходит следующие преобразования:
- При регистрации изменения объекта создаются записи для всех узлов обмена, в которых этот объект должен быть зарегистрирован. При этом в графе Номер сообщения устанавливается значение NULL.
- При отправке данных в другую информационную базу в графе Номер сообщения устанавливается порядковый номер переданного сообщения.
- При получении данных из другой информационной базы передается номер последнего принятого сообщения. При этом из таблиц изменений удаляются строки, в которых номер сообщения меньше или равен принятому в другой базе. Таким образом удаляется регистрация изменений, которые уже были переданы и прием которых подтвержден.
Как сделать запрос к таблице изменений
Таблицы изменений по умолчанию не видны в конструкторе запросов. Но их можно вывести с помощью кнопки Отображать таблицы изменений.
Пример запроса к таблице изменений:
Как зарегистрировать изменение объекта в 1С
Для ручной регистрации изменений объектов существует обработка Регистрация изменений для обмена.
Изменения данных могут регистрироваться в автоматическом режиме. Для этого необходимо при включении объекта метаданных в состав плана обмена разрешить автоматическую регистрацию: установить для свойства Авторегистрация значение Разрешить.
Для того чтобы зарегистрироваться изменения вручную, программно у менеджера планов обмена существует функция ЗарегистрироватьИзменения() . Функция имеет два параметра:
Как зарегистрировать все изменения для узла
Для того, чтобы зарегистрировать все изменения для конкретного узла, нужно в первом параметре передать ссылку на узел, а во втором — значение Неопределено.
Как зарегистрировать все изменения объектов определенного типа
Для того, чтобы зарегистрировать изменения объектов определенного типа, нужно в первом параметре передать ссылку на узел, а во втором — объект описания метаданных.
Как зарегистрировать все изменения конкретных объектов
Для того, чтобы зарегистрировать изменение конкретного объекта, нужно в первом параметре передать ссылку на узел, а во втором — ссылку на объект.
Для того, чтобы зарегистрировать изменение конкретного объекта, нужно в первом параметре передать ссылку на узел, а во втором — ссылку на объект.
Для регистрации изменений наборов записей регистров, подчиненных регистратору необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные набор записей с установленным отбором, в котором в элемент отбора Регистратор установлено значение регистратора данного набора записей. При этом чтение данных набора записей перед его регистрацией не обязательно.
Для регистрации изменений наборов записей независимого регистра необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные набор записей. Состав элементов отбора, при этом, должен строго соответствовать основному отбору регистра.
Набор = РегистрыСведений . КомплектующиеНоменклатуры . СоздатьНаборЗаписей ( ) ;
Набор . Отбор . Номенклатура . Значение = Номенклатура ;
Набор . Отбор . Номенклатура . Использование = Истина ;
Набор . Отбор . ХарактеристикаНоменклатуры . Значение = ХарактеристикаНоменклатуры ;
Набор . Отбор . ХарактеристикаНоменклатуры . Использование = Истина ;
ПланыОбмена . ЗарегистрироватьИзменения ( Узел , Набор ) ;
Как удалить регистрацию изменений
Для того чтобы удалить информацию о зарегистрированных изменениях у менеджера планов обмена существует функция УдалитьРегистрациюИзменений() . Функция имеет два параметра:
Как удалить регистрацию изменений полностью
Если необходимо удалить всю информацию о зарегистрированных изменениях для конкретного узла, то второй параметр следует оставить пустым:
Как удалить регистрацию изменений с номером сообщения не больше заданного
Если необходимо удалить информацию о зарегистрированных изменениях и при этом известен номер последнего полученного второй базой сообщения, то нужно передать этот номер сообщения в качестве второго параметра:
Например, если номер сообщения равен 2, то из таблиц изменений будут удалены все записи с номерами 1 и 2.
Внешняя обработка «Редактирование изменений для обмена» позволяет редактировать регистрацию изменений объектов обмена данными в режиме управляемого приложения. Обработка предназначена для разработчиков обмена данными, администраторов данных. Обработка позволяет выполнить следующие действия:
По выбранному узлу обмена:
- Просмотр списка метаданных, участвующих в обмене.
- Просмотр списка объектов, для которых зарегистрированы изменения.
- Удаление и регистрация изменений для объектов:
- изменение регистрации для объектов по одному.
- изменение регистрации для списка объектов как результата отбора.
- использование запросов для выбора данных для регистрации.
- изменение регистрация объектов указанием их типа с учетом флага авторегистрации.
- Изменение номеров принятых, отправленных сообщений
- Просмотр количества зарегистрированных и выгруженных изменений для всех типов объектов.
- Просмотр XML стандартной выгрузки произвольного объекта
- Опциональное изменение регистрации обмена для движений документов при изменении регистрации обмена документа.
- Опциональное изменение регистрации обмена для последовательности документов при изменении регистрации обмена документа.
- При работе в составе конфигурации с интегрированной БСП изменение регистрации обмена производится с учетом анализа существующих настроек обмена для этого узла.
- Использование типовой обработки «Консоль запросов» для регистрации или отмены регистрации по результатам запроса.
- Фильтрация отображаемых данных по номерам отправленных сообщений.
По выбранному объекту:
- Редактирование текущей регистрации на различных узлах.
- Изменение номеров принятых, отправленных сообщений
В конфигурациях с интегрированной БСП возможна регистрация обработки в подсистеме дополнительных отчетов и обработок. При этом функционал обработки доступен через команды создания связных объектов.
Обработка РегистрацияИзмененийДляОбмена.epf для запуска в «1С:Предприятии» версии 8.2 находится в каталоге:
EXE/EXTREPS/UNIREPS82/RegistrationChangeForDataExchangeManaged
Внешняя обработка РегистрацияИзмененийДляОбмена .epf для запуска в «1С:Предприятии» версии 8.3 находится в каталоге EXE/EXTREPS/UNIREPS83/RegistrationChangeForDataExchangeManaged
Если в конфигурации используется Библиотека стандартных подсистем, то эти операции можно выполнить в подсистеме «Обмен данными».
Данная обработка «Регистрация изменений для обмена 1С 8.3» позволяет зарегистрировать изменение или снять регистрацию изменений объектов для обмена (синхронизации 1С) в конфигурациях на управляемых формах. Т.е. таких как Бухгалтерия предприятия 3.0, Управление торговлей 11.2/11.3, Зарплата и управление персоналом 3.0/3.1, и других конфигурациях 1С (на управляемых формах).
Если вам нужна обработка для обычных форм, а не для управляемых, то просто перейдите по ссылке: Регистрация изменений для обмена 1С 8.2. В чем отличие 1С 8.2 и 8.3 и какая у вас? — читайте в статье.
Видеоинструкция по использованию обработки:
Источник