Мы создали план обмена, включили авторегистрацию по нужным нам справочникам, документам и прочему. Пользователи ввели данные.
Как узнать какие элементы базы были изменены?
Типовой способ ПланыОбмена.ВыбратьИзменения()
работает медленно. Для начала само получение списка происходит не быстро. А потом еще и в цикле получение каждого (!) объекта. Как известно, получение объекта это — затратная операция в базе, а тут еще и в цикле.
Например у нас 10.000 измененных элементов. Нам нужно просто узнать – какие элементы справочника «Номенклатура» были изменены.
Непосильная задача?
Хранение изменений в базе данных
Как известно все данные 1С хранятся в базе данных в виде таблиц. Таким образом, справочник Номенклатура – это также таблица (или несколько, если есть табличные части).
Однако план обмена, в отличие от остальных объектов как документы, справочники, регистры – не является самостоятельной таблицей.
Для каждого объекта существует таблица с названием ИмяОбъекта.Изменения
.
Например: Справочник.Номенклатура.Изменения
.
Допустим, Вы создали два плана обмена, в каждом из них есть по одному узлу, например узел «1» и узел «2».
При изменении товара «Лопата», в такую таблицу попадут две строки:
Строка 1: «Товар лопата, узел 1»
.
Строка 2: «Товар лопата, узел 2»
Доступ к таблицам плана обмена
К таблицам плана обмена можно обращаться из обычного запроса и выбирать нужные нам изменения.
Пример запроса для выборки изменения по справочнику номенклатуры:
ВЫБРАТЬ
.
Ссылка КАК Номенклатура
ИЗ
Справочник.Номенклатура.Изменения
ГДЕ
Узел = &НужныйУзелПланаОбмена
Если Вы предпочитаете создавать запросы через конструктор запроса, то в нем есть специальная секретная кнопочка, которая включает доступ к таблицам планов обмена:
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.