Документ не попадает в план обмена 1с
Способы регистрации изменений данных в механизмах обмена данными
В платформе 1С:Предприятие 8 реализовано два механизма обмена данными: универсальный механизм обмена данными и механизм распределенной информационной базы. Оба эти механизма базируются на одних тех же технологиях. Одной из этих технологий является служба регистрации изменений данных.
Изменения данных могут регистрироваться в автоматическом режиме. Для этого необходимо при включении объекта метаданных в состав плана обмена разрешить автоматическую регистрацию: установить признак Авторегистрация в значение Разрешить .
Однако часто требуется регистрация не каждого изменения данных, или регистрация изменений смежных объектов, или зависящих от изменяемых данных. Это можно выполнить различными способами.
Для регистрации изменений всех данных для конкретного узла плана обмена необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные значение Неопределено .
Для регистрации изменений данных одного типа необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные объект описания метаданных, соответствующий данным.
Пример: регистрация изменения всех элементов справочника Номенклатура для узла Узел :
Для регистрации конкретных данных различных типов необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные либо сами данные, либо ссылку на них.
К объектным типам относятся справочники, документы, планы счетов, планы видов характеристик, планы расчета, бизнес-процессы, задачи. Для их регистрации необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные либо сам объект, либо ссылку на него.
К таким регистрам относятся регистры накопления, регистры бухгалтерии, регистры расчета и регистры сведений со свойством РежимЗаписи , установленным в значение ПодчинениеРегистратору . Для регистрации изменений наборов записей указанных регистров необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные набор записей с установленным отбором, в котором в элемент отбора Регистратор установлено значение регистратора данного набора записей. При этом чтение данных набора записей перед его регистрацией не обязательно.
К таким регистрам относятся регистры сведений со свойством РежимЗаписи , установленным в значение Независимый . Для регистрации изменений наборов записей данного регистра необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные набор записей. Состав элементов отбора, при этом, должен строго соответствовать основному отбору регистра. Выбирать поля, входящие в основной отбор регистра необходимо в соответствии с логикой работы конфигурации (см. Подготовка конфигурации к работе в распределенной информационной базе).
- выбрать уникальные значения измерений регистра, входящих в основной отбор (если регистр сведений является периодическим и Период включен в основной отбор, то Период также должен участвовать в отборе)
- выполнить регистрацию наборов записей с установленными значениями отбора, соответствующими каждой выбранной комбинации значений измерений (входящих в основной отбор).
Автор статьи - Виктор Сахнов (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).
В настройки пользователя добавим параметр ВыполнятьОбменРаспределенныхБаз. Для конфигурации
"Управление торговлей" это делается так:
* В план видов характеристик "НастройкиПользователей" добавим предопределенную
характеристику ВыполнятьОбменРаспределенныхБаз типа Булево.
* В форме элемента справочника "Пользователи" настраиваем изменение этого параметра (как это
сделать можно посмотреть в модуле формы, по аналогии с остальными параметрами).
В модуль рбРаспределеннаяБаза добавляем процедуру:
в модуль приложения:
в процедуру ПриНачалеРаботыСистемы() модуля приложения добавим такие строки:
(после подключения торгового оборудования)
.
Добавим на нашу панель еще пару кнопок для управления процессом: на одну вешаем процедуру
ПроверитьПодключениеАвтообмена(), на другую - ОтключитьАвтообмен()
Запускаем предприятие, настраиваем свойства пользователя и интервал автообмена и все!
Теперь при заходе в базу под этим-самым-настроенным пользователем будет запускаться обработчик
ожидания ВыполнитьАвтообмен(). Естественно, в периферийной базе тоже нужно настроить пользователя
для обмена.
Еще одно маленькое, но важное замечание:
1. Заходим в УТ - Сервис — Обмена данными с 1С Бухгалтерия 8 — Настройка обмена.
В данном случае файловый вариант. Прописываем путь к базе БП.
2. Один из самых важных параметров Перенос себестоимости списания. Для того, чтобы себестоимость формировалась по данным конфигурации БП выбираем Не переносить, т.к. в конфигурацию БП могут быть введены док которые отсутствуют в УТ. Если выбрать Переносить, то колонки Документ оприходования и Сумма списания в док Реализация будут заполнены данными из УТ.
3. Далее укажем дату начала обмена и префикс документов. Префикс Базы будет прибавляться к Префиксу организации, так что количество символов для нумерации уменьшится. Лучше задавать Префикс базы и Префикс организации из одного символа.
4. Не будем делать полную синхронизацию (не известно сколько времени это займет, да и зачем), а выберем вариант в Фоновом режиме. По кнопке Дополнительно можно изменить количество объектов принудительной синхронизации. Оставим без изменения = 500.
5. По кнопке Готово произойдет создание элемента справочника НастройкаОбменаДанными и элменета Плана обмена. Будет предложено произвести обмен. Жмем НЕТ. На рисунке показан элемент справочника НастройкаОбменаДанными и ссылка на узел, элемент Плана обмена.
6. Теперь, если закрыть все окна, то узел обмена можно зайти Сервис - Обмен данными с 1С Бухгалтерия 8 — Выполнить обмен данными. Изменим правила. Поставим дату обмена с 01.06.2007 и обменяемся малым количеством документов.
7. Пока мы не собираемся включать автообмен и закладки Автообмен и Доп настройки автообмена для нас не важны. Перейдем на закладку Дополнительно. По умолчанию Элементов в транзакции = 0. т.е. при обмене будет записываться каждый элемент по отдельности. Это не оптимально. Вспоминаем, что при Проведении по партиям 1С автоматически предлагает 1000. Выбирайте значение от 200 до 1000.
13. Нажимаем «Выполнить обмен». При этом в базе БП можно работать. Все документы загружаются не проведенными.
15. Теперь в базе БП у нас появились не проведенные документы. Заходим в БП Сервис – Проведение документов – выбираем “Проведенные и непроведенные” и период. Здесь внимательно. Надо предупредить пользователей, что сделать документ не проведенным не достаточно. Не нужные документы необходимо, помечать на удаление, а еще лучше регулярно удалять.
16. Не забывайте, если вы удалите «Узел обмена», то в базе останется «План обмена» и привязанный к нему регистр сведений «Соответствие объектов для обмена» останется целым. Регистр придется удалять как-нибудь самим. Такова воля создателя обмена.
Похожие FAQ
Еще в этой же категории
Конвертация данных 3.0. Настройка правил конвертации в формате Enterprise Data. Пример использования 65
Задача Передать информацию о контрагентах из УП в БП . Данные передаются в одностороннем порядке, идентификация производится по уникальному идентификатору.Настройка правил конвертации выполняется с помощью специальной конфигурации Конвертация Как отключить узел от распределенной информационной базы? 12
1. Создаешь внешнюю обработку или отчет в ней форме пишешь " ПланыОбмена.УстановитьГлавныйУзел(Неопределено);" 2. Сохраняешь обработку. 3. Закрываешь конфигуратор 4. Запускаешь пользовательский режим. 5. Запускаешь обработку. Еще Вариант ко Автоматическая выгрузка загрузка данных используя регламентное задание 12
Для обмена данными между программами необходимо сделать следующее: 1. При помощи Конвертации Данных создать правила выгрузки данных 2. Нужно чтобы в конфигурации была обработка УниверсальныйОбменДаннымиXML , желательно последней версии! (При помо Планы обмена и их использование 12
Для того чтобы существовала возможность обмена какими-либо данными с кем-либо, необходимо некоторым образом идентифицировать тех, с кем мы будем обмениваться, и для каждого из них описать перечень обмена Обе эти задачи позволяет решать прикладной об Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 10
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме Посмотреть все в категории Конвертация данных, Обмен, Перенос
Планы обмена в 1С 8.3 — объект метаданных конфигурации, служащий для реализации синхронизации данных в системе 1С 8.
План обмена можно сравнить со справочником, где элементы — это узлы информационных баз. Однако в работе с планами обмена имеется множество нюансов, о них мы поговорим ниже.
Обычно обмен в 1С построен с использованием специальных правил обмена, которые формируются с помощью конфигурации Конвертация данных.
Настройки и свойства планов обмена в 1С
Как ранее было замечено, план обмена очень похож на обычный справочник в 1С, и поэтому мы рассмотрим только главные отличия обмена.
Как работать с планом обмена
Распределенная информационная база
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Если этот флаг установлен в настройках, то данный план обмена является распределенной информационной базой (РИБ).
Распределенная информационная база — территориально распределенная система на основе одинаковой конфигурации 1С 8.3. РИБ помимо изменений данных умеет передавать и изменений конфигурации, что очень удобно, например, при обновлении релиза конфигурации.
Состав плана обмена
Настройка, с помощью которой разработчик управляет набором объектов для обмена:
В составе плана обмена может быть 3 состояния объекта:
- Не включен в план обмена — соответственно, никаким образом для такого объекта Вы не сможете настроить обмен данными по этому плану обмена.
- Авторегистрация Запретить — это значит, что регистрировать изменения для данного узла необходимо только программным кодом по какому-то условию, как правило, подпиской на событие «При Записи». Используется метод ПланыОбмена.ЗарегистрироватьИзменения().
- Авторегистрация Разрешить — если установлена данная галка, то любые изменения элемента автоматически попадут в список изменений плана обмена.
Планы обмена и производительность 1С
Из-за системных особенностей реализации планов обмена не рекомендуется злоупотреблять выгрузкой изменений по планам обмена. Дело в том, что при чтении изменений блокируются все таблицы изменений. Т.е. при выгрузке план обмена не дает записать новые изменений, а следовательно, блокирует и сами элементы — справочники, документы и т.д.
Выгрузку рекомендуется производить в нерабочее время или совсем маленькими партиями данных, чтобы блокировки были на максимально короткий срок.
Другие статьи по 1С:
Видеолекции по технологии обмена в 1С 8.2:
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
В конфигурации 1С «Управление торговлей, редакция 11» есть несколько встроенных планов обмена, в том числе и с конфигурацией «Бухгалтерия предприятия, редакция 3.0» (рис.1).
План обмена представляет собой свод правил, по которым объекты из одной конфигурации будут загружаться в другую. В нашей инструкции мы будем настраивать обмен между 1С Бухгалтерия 3.0 и 1С Управление торговлей 11 на базе платформы 1С 8.3.
Присутствие нужного нам плана в списке типовых обменов значительно облегчает процесс интеграции. Тем не менее необходимо выполнить несколько предварительных настроек, причем в обеих конфигурациях.
Настройка синхронизации со стороны 1С Бухгалтерия 3.0
Сначала рассмотрим последовательность действий в 1С Бухгалтерия предприятия 3.0. Найдем в разделе «Администрирование — Настройки» пункт «Настройка синхронизации данных» (рис.2).
Получите понятные самоучители по 1С бесплатно:
Здесь необходимо включить флажок «Синхронизация данных» и обязательно указать префикс нашей базы (рис.3). При желании можно задать дату запрета загрузки – ранее этой даты никакие данные загружаться или меняться не будут.
Теперь заходим на закладку «Синхронизация данных» и настраиваем сам обмен (Рис.4). Обменов может быть несколько. Для каждого создается своя строка (кнопка с плюсиком «Настроить синхронизацию данных»). В демо-базе 1С Бухгалтерия у нас уже есть две записи. Проверим настройки последней (кнопка с карандашиком «Настроить правила …»).
Заполняем только закладку «Правила получения данных» (рис.5), так как ничего отправлять не будем. На закладке «Правила отправки данных» устанавливаем флажки «Не отправлять».
Осталось проверить параметры подключения (Рис.6). Выбираем «прямое подключение», указываем адрес базы на диске, из которой будем получать данные, и пользователя/пароль этой же базы. Пользователь должен иметь полные права или хотя бы права на выполнение синхронизации. Иногда создают виртуального пользователя специально для обменов.
Подробную информацию о настройках этого раздела можно получить из справки(F1).
Аналогичные настройки выполняются в базе «1С Управление торговлей 11».
Настройка обмена со стороны Управление торговлей 11
В разных релизах нужный нам раздел может иметь другое название. В нашем примере это пункт «Настройка интеграции – Другие программы» (Рис.7).
Остальное – похоже. Тот же флажок «Синхронизация данных», тот же пункт и похожие настройки. (Рис.8).
Только префикс другой. Это важно!
Переходим на закладку «Синхронизация данных» и создаем новый обмен. Выбрать конфигурацию, с которой мы хотим обмениваться, можно по кнопке «Настроить синхронизацию данных», сам обмен создается по кнопке «Настроить» (рис.9).
С этого момента начинаются отличия от предыдущей настройки в БУХ.3.0. Нам нужно заполнить вкладку «Правила отправки данных» (рис.10). И главное, что нужно сделать, — определить состав отправляемых данных.
Выбрать данные, которые мы собираемся передавать, можно несколькими способами (рис.11). Все они собраны в пункте «Зарегистрировать». Можно выбрать как один объект, так и список. Или все сразу.
Вернемся на предыдущую закладку и выполним еще один важный пункт, уже знакомый нам – укажем параметры подключения (рис.12). Параметры настраиваются так же, как и для бухгалтерии. Только в этот раз мы используем виртуального пользователя с именем «Обмен».
Осталось сохранить все настройки и выполнить сам обмен.
Запуск и проверка обмена между 1С Бухгалтерия 3.0 и 1С Управление торговлей 11
Обмен выполняется по кнопке «Синхронизировать», которая находится на первой странице настройки (рис.13). Эту кнопку можно найти и на других страничках. Более того, нет особой разницы, в какой из двух конфигураций эту кнопку нажимать. Обмен двухсторонний.
Жмем кнопку и переходим к следующему шагу.
Если обмен выполняется впервые, то придется выполнить ручную синхронизацию, то есть сопоставить одинаковые объекты двух конфигураций, если такие есть (рис.14). Если этого не сделать, могут появиться дубли.
На следующем шаге появится возможность выбрать организации, по которым будут передаваться данные, и некоторые другие отборы (рис.15).
Описание всех отборов появляется в специальном окне, а полный список объектов, которые будут отправлены, можно получить в отчете о составе отправляемых данных (рис.16).
Обмен может выполняться долго, время зависит от количества передаваемых объектов. После завершения процесса получаем картинку следующего вида – рис.17. По кнопке «Настроить» можно настроить расписание, по которому обмен будет выполняться автоматически.
По кнопке «Подробно» в журнале регистрации можно увидеть список событий (Рис.18)
В нашем случае обмен произошел с ошибками – есть 3 предупреждения (рис.4). Их подробное описание можно увидеть на специальной вкладке (рис.19)
После исправления ошибок можно повторить весь процесс заново, начиная с регистрации объектов.
Важно помнить, что корректный обмен возможен, если обе конфигурации имеют одни и те же правила обмена (хранятся в планах обмена, о которых упоминалось в самом начале). Чтобы это условие выполнялось, желательно работать на самых последних релизах или самостоятельно обновить правила.
Читайте также: