1с план обмена номер сообщения
Механизмы обмена данными «1С:Предприятия» позволяют организовывать обмен информацией, хранимой в базе данных, с другими программными системами. К механизмам обмена данными могут быть отнесены:
- Планы обмена,
- XML-сериализация,
- Средства чтения и записи документов XML.
Что такое план обмена
Для того чтобы существовала возможность обмена какими-либо данными с кем-либо, необходимо некоторым образом идентифицировать тех, с кем мы будем обмениваться, и для каждого из них описать перечень обмена. Обе эти задачи позволяет решать объект конфигурации «План обмена». Подобно тому, как элементами данных справочника являются элементы справочника, элементами данных плана обмена являются узлы плана обмена.
Каждый узел идентифицирует участника обмена по данному плану обмена. Кроме этого, в каждом плане обмена всегда существует один предопределенный узел, идентифицирующий данную информационную базу.
В обмене данными могут участвовать:
- объекты базы данных: элементы справочников, документы и т. д.,
- необъектные данные: наборы записей регистров, последовательностей, константы,
- специальный объект встроенного языка – УдалениеОбъекта .
Для упрощения изложения в дальнейшем будем называть эти элементы информационных структур объектами обмена. Разработчик имеет возможность определить состав каждого плана обмена, указав объекты конфигурации, данные которых должны участвовать в обмене по данному плану. При описании состава данных плана обмена разработчик имеет возможность указать для каждого типа объектов признак Авторегистрация . Этот признак определяет, каким образом план обмена будет отслеживать изменения данных.
Возможность отслеживать изменения данных реализована в плане обмена за счет использования механизма регистрации изменений. Работа этого механизма базируется на том, что каждый из объектов обмена имеет свойство ОбменДанными , с помощью которого можно указать, для каких узлов необходимо производить регистрацию изменений этого объекта. Любые изменения объекта обмена сводятся в конечном итоге к записи или удалению объекта обмена.
Так вот, признак Авторегистрация , устанавливаемый при указании состава данных плана обмена, позволяет указать, что параметры обмена данными будут формироваться каждый раз самим механизмом регистрации изменений на основании информации, содержащейся в плане обмена. После автоматического заполнения параметров обмена разработчик имеет возможность внести изменения в сформированные таким образом параметры. Кроме этого, существует возможность отключить авторегистрацию изменений, и тогда параметры обмена данными нужно будет формировать полностью средствами встроенного языка.
Итак, при записи и удалении объектов обмена план обмена формирует записи регистрации изменений. Записи регистрации изменений хранятся в таблицах регистрации изменений, причем для каждого объекта обмена ведется своя таблица. При изменении объекта обмена в таблице регистрации изменений создается столько записей, сколько узлов-получателей указано в параметрах обмена данными у объекта обмена. Каждая запись при этом будет хранить ссылку на свой узел-получатель.
Добавление плана обмена
Раскроем ветвь «Общие» дерева объектов конфигурации и добавим новый объект конфигурации План обмена с именем Филиалы , представление объекта – Филиал . На закладке «Данные» создадим реквизит плана обмена Главный , имеющий тип Булево .
Этот реквизит понадобится нам для того, чтобы разрешать коллизии при обмене данными. Под коллизией понимается ситуация, когда один и тот же объект обмена данными был изменен одновременно в двух узлах. В этом случае мы будем анализировать значение реквизита Главный и принимать изменения только в том случае, если они сделаны в главном узле. В случае коллизии изменения, произведенные не в главном узле, мы будем отвергать.
Теперь определим состав объектов, участвующих в обмене. Для этого на закладке «Основные» нажмем кнопку «Состав».
Создадим основную форму узла и добавим обработчик события формы ПриСозданииНаСервере . Этот обработчик понадобится нам для того, чтобы запретить установку реквизита Главный для предопределенного узла, соответствующего данной информационной базе.
Затем создадим основную форму списка плана обмена, чтобы описать в ней некоторые действия по регистрации нового узла обмена.
Суть этих действий будет заключаться в том, что при регистрации нового узла обмена мы должны будем сформировать для него все необходимые записи регистрации изменений для всех объектов конфигурации, входящих в данный план обмена. Это будет своего рода начальная синхронизация узла обмена всеми данными обмена.
Для этого на закладке «Команды» создадим команду ЗарегистрироватьИзменения .
Кнопка «Зарегистрировать изменения» должна быть доступна только в случае, если текущий узел не является предопределенным для данной информационной базы, иначе регистрация изменений невозможна. Чтобы обеспечить такое поведение кнопки, создадим в модуле формы списка функцию, выполняющуюся на сервере без контекста и возвращающую истину, если переданный в функцию узел является предопределенным.
Затем в окне элементов формы выделим элемент Список , вызовем его палитру свойств и создадим обработчик события ПриАктивизацииСтроки .
Процедуры обмена данными
Для инициализации обмена данными мы используем обработку. Добавим новый объект конфигурации Обработка с именем ОбменДанными . На закладке Формы создадим основную форму обработки. В окне редактора форм на закладке «Команды» создадим команду формы ВыполнитьОбмен .
Процедуры записи и чтения данных
Сами процедуры записи и чтения данных обмена мы разместим в модуле объекта План обмена Филиалы .
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Планы обмена в 1С 8.3 — объект метаданных конфигурации, служащий для реализации синхронизации данных в системе 1С 8.
План обмена можно сравнить со справочником, где элементы — это узлы информационных баз. Однако в работе с планами обмена имеется множество нюансов, о них мы поговорим ниже.
Обычно обмен в 1С построен с использованием специальных правил обмена, которые формируются с помощью конфигурации Конвертация данных.
Настройки и свойства планов обмена в 1С
Как ранее было замечено, план обмена очень похож на обычный справочник в 1С, и поэтому мы рассмотрим только главные отличия обмена.
Как работать с планом обмена
Распределенная информационная база
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Если этот флаг установлен в настройках, то данный план обмена является распределенной информационной базой (РИБ).
Распределенная информационная база — территориально распределенная система на основе одинаковой конфигурации 1С 8.3. РИБ помимо изменений данных умеет передавать и изменений конфигурации, что очень удобно, например, при обновлении релиза конфигурации.
Состав плана обмена
Настройка, с помощью которой разработчик управляет набором объектов для обмена:
В составе плана обмена может быть 3 состояния объекта:
- Не включен в план обмена — соответственно, никаким образом для такого объекта Вы не сможете настроить обмен данными по этому плану обмена.
- Авторегистрация Запретить — это значит, что регистрировать изменения для данного узла необходимо только программным кодом по какому-то условию, как правило, подпиской на событие «При Записи». Используется метод ПланыОбмена.ЗарегистрироватьИзменения().
- Авторегистрация Разрешить — если установлена данная галка, то любые изменения элемента автоматически попадут в список изменений плана обмена.
Планы обмена и производительность 1С
Из-за системных особенностей реализации планов обмена не рекомендуется злоупотреблять выгрузкой изменений по планам обмена. Дело в том, что при чтении изменений блокируются все таблицы изменений. Т.е. при выгрузке план обмена не дает записать новые изменений, а следовательно, блокирует и сами элементы — справочники, документы и т.д.
Выгрузку рекомендуется производить в нерабочее время или совсем маленькими партиями данных, чтобы блокировки были на максимально короткий срок.
Другие статьи по 1С:
Видеолекции по технологии обмена в 1С 8.2:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Обмен данными между прикладными решениями 1С 8 — это то, без чего не возможно построение полноценного информационного пространства предприятия.
- Зачем нужны обмены данных и как их использовать?
- Виды обменов между 1С.
- Как произвести настройку обмена данными между базами 1С?
Ответы на эти вопросы Вы узнаете ниже.
Если Вас интересуют услуги по настройке обмена данными между 1С и не только, подробности на странице Услуги 1С программиста.
Зачем нужны обмены данных между 1С?
Причин для внедрения обменов, как правило, две:
Организация имеет филиальную сеть
В этом случае Вам просто необходимо настраивать обмен между различными филиалами. Для этого в системе 1С 8.3 предприятие существует механизм Распределенных информационных баз (РИБ). С помощью которого можно гибко настроить обмен информацией. Например, для филиалов можно отключить видимость документов по другим филиалам и в тоже время центральный офис будет видеть документы всех филиалов. Другой пример — настройка обмена между базами 1С Розница офиса и магазинов.
Разделение по видам учета
Как правило, это означает, что в организации разный учет ведется в различных информационных базах. Такое разделение позволяет фильтровать «ненужную» для другого вида учета информацию для различных информационных баз. Пример: т.н. «управленческий учет» введется в базе «Управление торговлей», где отражаются все операции, и руководство видит полную картину событий, а в базу регламентированного учета «Бухгалтерия предприятия» выгружаются лишь нужные для ведения бухгалтерского и налогового учета документы.
Какие бывают механизмы обмена между базами 1С?
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Обмены данных можно классифицировать по двум направлениям: используемые механизмы и используемый транспорт для обмена.
Механизмы обмена данными 1С
Как правило, при обмене используется два механизма:
- Распределенная информационная база (РИБ) — механизм, позволяющий настроить обмен данными между филиалами. Механизм подразумевает, что обмениваются абсолютно идентичные конфигурации БД. Механизм умеет передавать изменения конфигурации баз данных. Механизм реализован на уровне технологической платформы.
- Универсальный механизм обмена между конфигурациями — механизм является разработкой фирмы 1С для прикладных решения. Он универсален и основан на планах обмена. Обмен данными осуществляется с помощью правил xml, которые создаются в специальной конфигурации — Конвертация данных. С помощью данного механизма можно реализовать как одноразовый обмен, так и постоянный обмен между 1С конфигурациями. Механизм реализован на уровне конфигурации, встроить в свою конфигурацию можно из технологической конфигурации БСП.
Транспорт для обмена данными
Транспортом может выступать достаточно широкий спектр технологий. Рассмотрим основные, реализованные в универсальном механизме обмена 1С:
Как настроить обмен данными между базами 1С?
Рассмотрим настройку 1С для обмена данными между типовыми конфигурациями 1С — Бухгалтерия и Управление торговлей.
Первым делом необходимо создать узлы информационных баз:
Синхронизация происходит по коду, пиктограмма с кругом — обозначение текущей информационной базы. Т.е. настраивая обмен в бухгалтерии — присваиваем текущему узлу код «БП», настраивая обмен в торговле — код «УТ».
Следующий шаг — создание справочника «Настройки обмена данных»:
Если обмен настраивается через каталог, электронную почту или FTP, настройки необходимо настраивать в двух базах данных.
Если обмен происходит прямым подключением или через веб-сервис, достаточно настройки с одной стороны (важно не забыть указать правила загрузки в базу обмена).
Тут важно обратить внимание на следующие моменты:
Всё, настройка закончена. Теперь для запуска обмена достаточно лишь нажать на кнопку выполнения обмена.
Азы настройки обмена данными в 1С с помощью конфигурации «1С Конвертации данных» на примере смотрите в видео:
Обмен данными 1С по расписанию в 1С
Если необходимо настроить автоматическую выгрузку по расписанию, достаточно настроить регламентные задания.
Для клиент-серверного варианта
В справочнике «Настройки обмена данными», на вкладке «Автоматический обмен» необходимо создать новое регламентное задание, где указать расписание:
Для файлового варианта
В справочнике «Настройки обмена данными», на вкладке «Автоматический обмен» необходимо создать новое регламентное задание, где на вкладке «Обмен по событиям» указать события, по котором будет выполняться запуск обмена. Например, при старте определенного пользователя:
Статьи для программиста по обмену данными в 1С
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Автор статьи - Виктор Сахнов (Asmody)
Сразу замечу, что все нижеследующее относится к релизу платформы 8.0.7.36 и выше.
Шаг 1. Создание плана обмена
Создаем в конфигурации план обмена. Называем его, например "РаспределеннаяБаза". Обязательно в
свойствах плана обмена ставим флажок "Распределенная информационная база".
На закладке "Прочее" по кнопке "Состав" определяем, какие объекты будут включаться в обмен. По
умолчанию можно включить все объекты ("Действия"-"Включить все"). Важным моментом является параметр
"Авторегистрация". В общем случае ее нужно разрешить для всех объектов.
Замечание: при добавлении новых объектов в конфигурацию, они не включаются в план обмена. Т.е. после
добавления объекта его необходимо добавить в состав плана обмена.
Если Вы хотите, чтобы некоторые объекты не участвовали в обмене, просто исключаете их из состава
плана обмена. Но тогда контроль ссылочной целостности остается целиком на вашей совести. Если, к
примеру, некий документ не включен в план обмена, а регистр, по которому он делает движения включен,
то в базе-приемнике вполне реально получить движения по регистру без документа-регистратора, что
согласитесь, не есть хорошо.
В принципе, этих действий достаточно, чтобы РБД заработала в "ручном" режиме. Для этого запускаем
Предприятие, открываем наш план обмена через меню "Операции". В плане обмена всегда присутствует
предопределенный узел "с точкой". Это описание текущего узла. Его нужно открыть и заполнить. В нашем
случае будут доступны поля "Код" и "Наименование". Присвоим нашему узлу код "AA" и назовем
"Центральная". Добавим в план обмена один узел. Присвоим ему код "ВВ" и назовем "Периферийная".
Теперь мы можем создать образ периферийной базы. Делается это нажатием кнопки "Создать начальный
образ". В списке узлов должна быть выбрана периферийная база. Образ базы создается в виде готовой ИБ
в каталоге или на сервере 1С:Предприятия. (в отличие от 7.7, где образ ИБ создавался как файл
выгрузки). Далее созданную базу можно перенести в нужное место, просто скопировав файлик 1CV8.1CD
(для файлового варианта), либо через Конфигуратор через выгрузку-загрузку данных.
Если Вы откроете план обмена в периферийной ИБ, то Вы увидите, что узлом "с точкой", т.е. текущим
узлом стал узел "Периферийная", а иконка у узла "Центральная" стала красного цвета, т.е. узел
"Центральная" является главным узлом по отношению к текущему.
Обмен в "ручном" режиме можно производить при помощи кнопок "Записать изменения" и "Прочитать
изменения". В первом случае будет предложено выбрать файл, куда изменения будут записаны, во втором
- файл, откуда изменения будут считаны. Обмен ведется в формате xml. Изменения записываются для
выбранного узла.
Шаг 2. Выгрузка изменений в XML-файл и отправка по электронной почте
Итак мы создали план обмена, создали периферийную ИБ и даже научились переносить данные между
базами. Теперь наша задача научить базы обмениваться по электронной почте.
Процедуру для работы с электронной почтой сделаем универсальной, т.е. сделаем возможным
использование как MAPI (отправка-получение через почтового клиента, например, MS Outlook), так и
прямое обращение к SMTP/POP3 серверам.
Добавим в конфигурацию несколько констант:
где-нибудь в общей форме обеспечиваем редактирование значений этих констант.
Добавим общий модуль, назовем его "рбРаспределеннаяБаза". В нем пишем:
Рекомендую в интерфейс добавить дополнительную панель, на одну из кнопок которой повесить вызов этой
процедуры. Теперь осталось запустить Предприятие, настроить электронный адрес периферийной ИБ,
поставить галку "Выполнять обмен", нажать на кнопку процедуры на панели и бежать получать почту для
указанного эл. адреса. Должно придти письмо с темой "1С:Обмен AA_BB" и вложенным файлом
"Message_AA_BB.xml".
Шаг 3. Получение обновлений по электронной почте и запись их в ИБ
Теперь займемся обратной процедурой: получение обновлений по электронной почте и запись их в ИБ.
В параметры сеанса добавим параметр "ИдетОбменРаспределеннойБазы" типа Булево. Ниже я объясню его
назначение.
Добавим в общий модуль рбРаспределеннаяБаза такую процедуру:
Теперь про то, для чего нужен параметр сеанса ИдетОбменРаспределеннойБазы.
Дело в том, что при чтении данных методом ПланыОбмена.ПрочитатьИзменения() происходит вызов
процедур-обработчиков события ПередЗаписью() изменяемых/добавляемых объектов. И если при записи
какого-либо объекта в процедуре обработчике параметр Отказ будет установлен в значение Истина, то
при выполнении ПланыОбмена.ПрочитатьИзменения() возникнет исключение, и, соответственно, обмен
выполнен не будет. Значение параметра сеанса ИдетОбменРаспределеннойБазы может быть
проанализированно в процедурах-обработчиках, дабы избежать подобной ситуации.
С выходом редакции 12 (хотя я могу ошибаться в версиях), актуальность этого метода несколько
устарелаА, поскольку у объектов появилось свойство ПараметрыОбмена , у которого, в свою
очередь, есть свойство Загрузка . Это свойство принимает значение Истина, когда идет
сохранение данных через план обмена.
Теперь в интерфейсе на нашей панели добавляем еще одну кнопку, на которую вешаем вызов этой
процедуры. Запускаем Предприятие и наслаждаемся.
Почти все сделано, осталась малость: заставить наши процедуры выполняться в автоматическом режиме.
Шаг 4. Настройка автоматического обмена
Итак, мы почти вплотную приблизились к цели нашего повествования. Остался всего один шаг: запустить
выполнение процедур обмена в автоматическом режиме. Приступим.
Добавим константу ИнтервалАвтообменаРаспределеннойБазы типа Число(5,0).
В настройки пользователя добавим параметр ВыполнятьОбменРаспределенныхБаз. Для конфигурации
"Управление торговлей" это делается так:
* В план видов характеристик "НастройкиПользователей" добавим предопределенную
характеристику ВыполнятьОбменРаспределенныхБаз типа Булево.
* В форме элемента справочника "Пользователи" настраиваем изменение этого параметра (как это
сделать можно посмотреть в модуле формы, по аналогии с остальными параметрами).
В модуль рбРаспределеннаяБаза добавляем процедуру:
в модуль приложения:
в процедуру ПриНачалеРаботыСистемы() модуля приложения добавим такие строки:
(после подключения торгового оборудования)
.
Добавим на нашу панель еще пару кнопок для управления процессом: на одну вешаем процедуру
ПроверитьПодключениеАвтообмена(), на другую - ОтключитьАвтообмен()
Запускаем предприятие, настраиваем свойства пользователя и интервал автообмена и все!
Теперь при заходе в базу под этим-самым-настроенным пользователем будет запускаться обработчик
ожидания ВыполнитьАвтообмен(). Естественно, в периферийной базе тоже нужно настроить пользователя
для обмена.
Еще одно маленькое, но важное замечание:
- константа;
- справочник;
- документ;
- план счетов;
- план видов характеристик;
- план видов расчета;
- бизнес процесс;
- задача.
А так же для наборов записей:
- регистра сведений;
- регистра бухгалтерии;
- регистра накопления;
- регистра расчета;
- перерасчета.
Каждое изменение регистрируется в специальных служебных таблицах, в названии которых в конце есть слово «Изменения», например, таблица изменений для справочника контрагентов будет называться Контрагенты.Изменения .
Структура таблицы изменений подобна для всех объектов:
Запись в таблице изменений проходит следующим образом:
Как сделать запрос к таблице изменений
Таблицы изменений по умолчанию не видны в конструкторе запросов. Но их можно вывести с помощью кнопки «Отображать таблицы изменений».
Пример запроса к таблице изменений:
Как зарегистрировать изменение объекта
Изменения данных могут регистрироваться в автоматическом режиме. Для этого необходимо при включении объекта метаданных в состав плана обмена разрешить автоматическую регистрацию: установить для свойства Авторегистрация значение Разрешить .
Для того чтобы зарегистрироваться изменения вручную, у менеджера планов обмена существует функция ЗарегистрироватьИзменения() . Функция имеет два параметра: Узел и Данные .
Как зарегистрировать все изменения для узла
Для того, чтобы зарегистрировать все изменения для конкретного узла, нужно в первом параметре передать ссылку на узел, а во втором — значение Неопределено .
Как зарегистрировать все изменения объектов определенного типа
Для того, чтобы зарегистрировать изменения объектов определенного типа, нужно в первом параметре передать ссылку на узел, а во втором — объект описания метаданных.
Как зарегистрировать все изменения конкретных объектов
Для того, чтобы зарегистрировать изменение конкретного объекта, нужно в первом параметре передать ссылку на узел, а во втором — ссылку на объект.
Для регистрации изменений наборов записей регистров, подчиненных регистратору, необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные набор записей с установленным отбором, в котором в элемент отбора Регистратор установлено значение регистратора данного набора записей. При этом чтение данных набора записей перед его регистрацией не обязательно.
Для регистрации изменений наборов записей независимого регистра необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные набор записей. Состав элементов отбора при этом, должен строго соответствовать основному отбору регистра.
Как удалить регистрацию изменений
Как удалить регистрацию изменений полностью
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Читайте также: