Материалы газеты «Прогрессивный бухгалтер», сентябрь 2018.
Что делать, если организация работает одновременно с несколькими конфигурациями, осуществляющих регламентированный учет по организации? В «1С:Предприятие 8», начиная с редакции 3.0, появилась возможность настройки автоматической синхронизации между конфигурациями, которые могут выгружаться в указанное время и с определенной периодичностью: больше нет необходимости вручную дублировать данные.
Настройка прав пользователя
При настройке синхронизации между базами «1С:Бухгалтерии 8» и «1С:Зарплаты и управления персоналом 8» особую роль необходимо уделить правам пользователя, который будет производить настройку. Прежде чем приступить к настройке, необходимо проверить доступна ли у вашего пользователя в обеих конфигурациях такие роли, как «Администратор системы» или «Настройка синхронизации файлов». При этом, как не удивительно, пользователь с ролью «Полные права» не подойдет.
При отсутствии одной из этих ролей у пользователя флаг «Синхронизация данных с другими программами» будет недоступен. Проверить, а также совершить настройку ролей для вашего пользователя можно в режиме «Конфигуратор». Для этого переходим в меню «Администрирование» в подменю «Пользователи».
Настройка синхронизации данных 1C. Урок 1. Первый этап настройки
На этой вкладке необходимо выбрать пользователя, который будет осуществлять настройку синхронизации. В открывшемся окне необходимо перейти на закладку «Прочее» и установить флажок напротив роли «Администратор системы» или «Настройка синхронизации файлов». На этом настройка прав пользователя завершена. Нажмите клавишу F 5, для того чтобы принять изменения и зайти в программу под пользователем, для которого мы изменили роли.
Настройка синхронизации
Теперь перейдем непосредственно к настройке синхронизации данных. В базе «1С:Зарплата и управление персоналом 8» в режиме «Предприятие» перейдите на вкладку «Администрирование» – раздел «Синхронизация данных». В открывшемся окне установите флаг «Синхронизация данных» и перейдите по гиперссылке справа «Настройка синхронизации данных». В появившемся окне программы в меню выберите программу, с которой вы хотите настроить обмен данными, и установите префикс информационной базы в одноименном окне. К примеру, в «1С:Зарплате и управлении персоналом 8» – «ЗУП», а в «1С:Бухгалтерии 8» – «БП».
Перед вами откроется окно помощника настроек. Перед настройкой синхронизации программа рекомендует вам выполнить резервную копию базы. Это предотвратит лишние проблемы и сохранит в целостности ваши данные. Далее программа спросит у вас, каким именно способом вы хотите произвести настройки: вручную или загрузить файл с настройками, сделанными в другой программе.
Вариант с загрузкой файла «Настройки» используется в тех случаях, когда у нас, допустим в «1С:Бухгалтерии 8», уже настроено расписание синхронизации и для программы «1С:Зарплата и управление персоналом 8» мы хотим использовать то же расписание. Мы рассмотрим настройку, которая производится пользователем вручную, поэтому выбираем пункт «Указать настройки вручную» и нажимаем «Далее».
Настройка синхронизации данных 1C. Урок 2. Второй этап настройки. Сопоставление данных
В следующем окне указываем как мы будем подключаться к программе. Если программа «1С:Бухгалтерии 8» находится на том же компьютере, что и «1С:Зарплата и управление персоналом 8», или расположена в одной локальной сети, мы указываем, что у нас «Прямое подключение к программе на этом компьютере или локальной сети» и указываем путь к информационной базе в поле «Каталог информационной базы».
Если вы не знаете путь к базе «1С:Бухгалтерии 8», его можно узнать следующим образом. Запускаем «1С:Предприятие 8» и выделяем в списке ту базу, с которой будет происходить обмен. Внизу окна будет указан путь к данной базе, скопируйте его без кавычек и вставьте его в поле «Каталог информационной базы».
Если ваша информационная база находится на сервере «1С:Предприятие 8», тогда необходимо указать кластер серверов и имя информационной базы. Эти данные так же можно узнать в окне запуска программы.
Далее необходимо указать пользователя и пароль (если есть), под которыми будем подключаться к базе «1С:Бухгалтерия 8». После того, как мы установили все необходимые настройки, нажимаем кнопку «Проверить подключение». Если все настройки совершены верно, то программа выдаст сообщение «Проверка подключения успешно завершена».
Если программа выдаст ошибку и внизу экрана выйдет сообщение: «При создании настройки обмена во второй информационной базе возникли ошибки: ; Синхронизация данных запрещена администратором. ВызватьИсключение ТекстСообщения;», значит, в настройках «1С:Бухгалтерии 8», с которой вы собираетесь производить обмен данными, не стоит флажок «Синхронизация данных». Для того чтобы включить данный флажок, воспользуйтесь инструкцией выше, описанной для программы «1С:Зарплата и управление персоналом 8».
Полный список ошибок можно посмотреть в «Журнале регистраций», который можно открыть следующим образом: на закладке «Администрирование» переходим по ссылке «Обслуживание», и в верхней части экрана у нас появляется ссылка на «Журнал регистрации». Переходим на закладку «Далее», и перед нами выполняется проверка подключения. Данная проверка может продлится до нескольких минут, в зависимости от работоспособности вашего ПК.
После проверки в программе появится окно настройки синхронизации данных. В данном окне вы можете проверить введенные вами настройки, а так же изменить правила обмена. Например, изменить организацию, по которой будет происходить обмен или сделать обмен данными с детализацией по сотруднику. Эти настройки можно изменить, нажав на гиперссылку «Изменить правила выгрузки данных» внизу окна.
После завершения настройки программа предложит «Выполнить синхронизацию данных с «1С:Бухгалтерия 8», ред. 3.0». При необходимости немедленно выполнить синхронизацию флажок «Выполнить синхронизацию данных с «1С:Бухгалтерия 8», ред. 3.0» оставляем включенным и нажимаем кнопку «Синхронизировать».
А если нам необходимо настроить расписание обмена, необходимо снять этот флаг и закончить настройку. После данных действий программа откроет окно с настройкой, уставленной ранее, а также с возможностью настройки расписания.
Если вам необходимо настроить расписание, то нажимаем на кнопку «Настроить». Для того чтобы данные выгружались автоматически по настроенному расписанию, необходимо установить флаг «Автоматически по расписанию». Чтобы настроить само расписание для информационной базы, необходимо перейти на закладку «Расписание» и настроить, когда и с какой периодичностью будет выполняться синхронизация. Обратите внимание на то, что расписание на выгрузку и на загрузку данных настраивается отдельно в соответствующей строке табличной части на форме настройки.
При первой синхронизации обязательно необходимо выполнить сопоставление данных. Это необходимо для того чтобы избежать дублирования данных. Например, в «1С:Бухгалтерии 8» и в «1С:Зарплате и управление персоналом 8» есть справочник «Физические лица», в них зачастую хранятся одни и те же данные, и по умолчанию система выполнит синхронизацию данных по внутреннему идентификатору, он для каждого элемента справочника будет уникальным. При такой синхронизации в справочнике появится два одинаковых физических лица. Во избежание таких ситуаций при первой синхронизации необходимо произвести сопоставление данных и явно указать в программе о том, что Михайлова Елена Леонидовна в одной программе и Михайлова Елена Леонидовна в другой – это один и тот же сотрудник.
Какие данные переносятся при синхронизации
В «1С:Зарплате и управление персоналом 8» есть 2 основных документа, которые переносятся при синхронизации в «1С:Бухгалтерию 8». Это «Отражение зарплаты в бухучете» и все виды ведомостей. В «1С:Зарплата и управление персоналом 8» их четыре: «Ведомость в банк», «Ведомость в кассу», «Ведомость перечислений на счет» и «Ведомость выплаты через раздатчика».
Документ «Отражение зарплаты в бухучете» попадает в одноименный документ в «1С:Бухгалтерии 8» и уже там, на основании перенесенных документов, происходит формирование проводок.
Документы ведомостей переносятся в «1С:Бухгалтерию 8» в один документ «Ведомость на выплату зарплаты».
Также есть ряд других документов и справочников, которые также переносятся при синхронизации. К таким документам можно отнести «Начисление оценочных обязательств», «Депонирование зарплаты», «Выплата депонированной зарплаты», «Документы займа (договор, выдача и погашение)». Также с бухгалтерией синхронизируются следующие виды справочников: «Организации», «Физические лица», «Контрагенты», «Подразделение и «Способы отражения зарплаты в бухучете». В «1С:Бухгалтерию 8» перенесутся только те элементы справочников, которые будут использованы в документах синхронизации.
Если вы в программе «1С:Бухгалтерия 8» обнаружили ошибку в синхронизируемых файлах, то рекомендуется исправлять данные в базе «1С:Зарплата и управление персоналом 8», тогда данные в «1С:Бухгалтерии 8» изменятся автоматически. Если соблюдать данное правило, то при синхронизации в приоритете будут данные из «1С:Зарплаты и управлении персоналом 8» и не будет путаницы в данных. Также приоритет данных можно настроить самостоятельно, или программа выдаст сообщение при конфликтных ситуациях.
При синхронизации все настройки базы «1С:Бухгалтерия 8» основаны на «Параметрах учета» базы «1С:Зарплаты и управлении персоналом 8».
Также при переносе данных стоит учитывать еще один фактор. В базу «1С:Бухгалтерии 8» при синхронизации переносятся только физические лица. Не стоит в «1С:Бухгалтерии 8» на основании этих физлиц создавать сотрудников, так как во всех бухгалтерских документах, где должны быть указаны сотрудники, буду подставляться данные из справочника «Физические лица».
И напоследок укажем еще один подводный камень, связанный с переносом. Представьте ситуацию: вы в базе «1С:Зарплата и управление персоналом 8» создали документ «Ведомость …» и при синхронизации выгрузили ее в «1С:Бухгалтерию 8». По каким- то причинам данный документ был удален в базе «1С:Бухгалтерии 8».
В этом случае при повторной синхронизации данный документ не будет добавлен снова, так как при синхронизации в регистре соответствий программа видит, что данный документ уже перенесен. В такой ситуации есть только одно решение: физически удалить в «1С:Зарплате и управлении персоналом 8» данную ведомость и создать новую, а потом запустить синхронизацию. Так как нового документа нет в регистре соответствий, он с легкостью перенесется в информационную базу бухгалтерии.
При синхронизации данных необходимо учитывать то, что реквизиты организации, по которым будем происходить обмен, должны быть идентичны.
Источник: www.audit-it.ru
Обмен между конфигурацией с БСП и конфигурацией без БПС
1. Настроить классический обмен по стандартам БСП в 1С 2. Как настроить состав выгружаемых объектов в 1С 3. Формирование документов в Альфа-Авто и передача данных в 1С:ERP 2. 4. Работа с кодом 1С:Предприятие
П ри любом раскладе у людей нет желания вводить данные несколько раз. Представим, что у вас в компании уже есть система уровня 1С:ERP 2 . Что сказать? Вы на уровне и в тренде. Но при этом, как в моем случае, есть еще конфигурация из века прошлого, но рабочая – это Альфа-Авто 4.1.
1С:ERP 2 предполагает использование конфигурации с БСП для обмена, что существенно снижает расходы на дальнейшую поддержку по обновлению. На Альфа-Авто 4.1 нет БСП. А как организовать обмен для такой пары? Для меня долгое время тоже было непонятно — как обеспечить обмен данными между такими разными системами.
Мы можем долго думать, но задачу нужно сделать и сделать сейчас. У нас есть только часы, что нам оплачивают для выполнения данных механизмов. Вперед!
1. Настроить классический обмен по стандартам БСП в 1С
Первый шаг: нужно настроить классический обмен по стандартам БСП в 1С. Что я при этом имею в виду? Разработать план обмена с помощью существующих технологий конвертации данных 2 (КД2). Это тема отдельная, и углубляться в нее в данной статье мы не будем.
Исходим из того, что правила обмена созданы как со стороны 1С ERP 2, так и со стороны Альфа-Авто. В технологии разработки правил с использованием конвертации данных 2.0 я достаточно уверенно себя чувствую и легко могу доработать. Но в данном случае я эти правила получил готовыми. Таковы были реалии. Допилить БСП в ERP?
Нужно только оплаченное время. Остальное все выполнялось, и не один раз. А вот со стороны Альфа-Авто 4 …. Только вопросы. Как-то не приходилось с таким сталкиваться ранее, увы.
При проработке возможного решения возникло предложение воспользоваться обработкой «УниверсальныйОбменДаннымиXML». Данной обработкой пользовался часто и много. Как с использованием общих форм, так и управляемых. Даже был такой этап, когда была необходимость переработать обработку под общими формами на управляемые. Но вот использовать данную обработку также для передачи зарегистрированных объектов не приходилось.
Рисунок 1
Обратите внимание на колонку «Узел обмена 1С». Если вы указываете узел обмена в 1С, то это означает факт выгрузки данных, зарегистрированных для данного узла. Получается, что необходимо настроить регистрацию для данного узла, и данные попадут в выгрузку.
2. Как настроить состав выгружаемых объектов в 1С
Вначале необходимо настроить состав выгружаемых объектов в 1С.
Рисунок 2
В этом составе выгружаемых объектов в 1С мы указали объекты, которые используются в правилах обмена. Обратите внимание, что в колонке «Авторегистрация» установлено «Запретить». Это говорит только о том, что нам нужен дополнительный механизм для регистрации. И это логично. Выбирать объекты желательно с учетом критериев отбора.
Рисунок 3
В нашем случае для регистрации срабатывает подписка на события «ПриЗаписи». На данном этапе выполнена задача регистрации объекта для передачи.
3. Формирование документов в Альфа-Авто и передача данных в 1С:ERP 2
Следующий этап в получении данных из ERP — формирование документов в Альфа-Авто и передача данных ERP.
Рассмотрим любой план обмена. В данном случае более наглядно будет посмотреть форму узла на стороне ERP.
Рисунок 4
Как видим из рисунка 4, для каждого узла есть реквизиты «НомерОтправленного» и «НомерПринятого». Для нашего случая, если мы передаем НомерПринятого, то это сигнал механизму обмена, что нужно удалить регистрацию для отправленных сообщений с этим номером и не выгружать их. Если механизм регистрации не получит переданный номер, то произойдет повторная выгрузка. На стороне ERP отработают штатные механизмы, а на стороне Альфа-Авто их нужно создать. Дальнейшие работы были связаны только с доработкой обработки «УниверсальныйОбменДаннымиXML».
Теперь рассмотрим дополнительные настройки обработки, которые необходимо использовать.
Рисунок 5
На рисунке 5 в выделенном блоке указано, что после выгрузки удалять регистрацию нет необходимости. Мы будем сами управлять удалением регистрации.
При удалении регистрации предполагаем, что будет выгружено все, что зарегистрировано. А после получения из ERP номера принятого сообщения удаляем всю регистрацию для данного узла.
Вот такие допущения приняты для организации обмена с помощью обработки «УниверсальныйОбменДаннымиXML».
4. Работа с кодом 1С:Предприятие
Теперь посмотрим, как это работает и какие доработки выполнены. Вначале были выгружены данных из ERP. Вроде осложнений нет. Появилась задача – их принять. И . не обнаружен Узел обмена 1С.
Рисунок 6
Между описанием правил обмена и данными есть узел «ДанныеПоОбмену». Этот Узел обмена 1С и не может прочитать обработку. Нужны доработки.
Рисунок 7
Этот узел добавлен для обработки. Посмотрим разработанную процедуру «ПрочитатьДанныеПоОбмену».
Пример кода 1С:Предприятие:
Рисунок 8
Это данные, переданные из ERP. Как видим из выше представленного кода 1С:Предприятие, нам нужен номер принятого сообщения. И если номер принятого сообщения ERP будет равным номеру переданного сообщения со стороны Альфа-Авто, то будет удалена вся регистрация для данного узла обмена. Кроме этого на узле зафиксируем номер принятого сообщения из ERP. Данные эти необходимы и для формирования «посылки» на сторону ERP.
Со стороны ERP вначале происходит получение данных из Альфа-Авто, а после этого формируется выгрузка данных. Данная выгрузка учитывает факт получения или неполучения данных в принимающей стороне. А для обработки эти процессы разделены. При получении данных мы уже наверняка их передали.
И если номер принятого сообщения совпадает с номером переданного нами, то это говорит только о том, что нужно удалить регистрацию. Данный обмен будет работать в предположении: все, что зарегистрировано, будет передано. При ином развитии ситуации нужно доработать функционал для фиксации объектов выгрузки и последующего удаления принятых объектов регистрации.
После принятие объектов из ERP самое время заняться формированием передачи данных для ERP. И в этом случае нам необходим Узел обмена 1С «ДанныеПоОбмену». В противном случае нет достаточной информации для обмена. И необходимо понимать, что посылка принята и можно удалять зарегистрированные данные.
Рисунок 9
В этом примере формируется выгрузка в процедуре «ЗаписатьИнформациюОбОбменеДаннымиЧерезПланыОбмена».

Рисунок 10
В этой процедуре выполняется формирование узла для выгрузки в ERP.

Рисунок 11
А пример формированного узла в выгрузке представлен на рисунке 11. После этой выгрузки мы увидим, что данные приняты на стороне ERP.
Добавим дополнительный функционал, позволяющий упростить обмен.

Рисунок 12
На рисунке 12 находятся две кнопки — «Выполнить выгрузку данных» и «Выполнить загрузку данных». Также рядом расположен реквизит узла обмена. После выбора узла при нажатии кнопки «Выполнить выгрузку данных» для выгрузки заполнятся правила обмена, будет найден каталог обмен, сформировано корректное имя обмена и будет произведена выгрузка. Такие же действия будут выполнены и при загрузке.
Я должен остановиться на особенностях такого обмена. Задача стояла: минимальными средствами выполнить задачу обмена. Если на стороне Альфа-Авто создавать более гибкий механизм, то это совсем другая история (такая необходимость вполне может возникнуть в дальнейшем).
Следует понимать, что необходимо всегда выполнять полный обмен. Вначале выполнить выгрузку из Альфы. Произвести прием-передачу на стороне ERP. И только после этого произвести загрузку данных из ERP. В результате – две базы имеют одинаковые данные после обмена, и повторной передачи не будет. Не будет и потери измененных данных.
Вот такая особенность настроенного обмена.
Специалист компании ООО «Кодерлайн» Мазай Евгений
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) —> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) —> Как сделать в 1С [1] => 1С: Конвертация данных [2] => Конвертация данных [3] => Обмен между базами [4] => Закрытие месяца [5] => Оценка задач [6] => Отчеты в 1С [7] => Моделирование [8] => HTTP [9] => Управление проектами [10] => БУ [11] => com-объекты [12] => 1С: WMS Управление складом [13] => РСБУ [14] => 1С: Сценарное тестирование [15] => Запросы 1С [16] => LINUX [17] => WEB [18] => Оптимизация [19] => 1С:Зарплата и Управление Персоналом [20] => Excel [21] => 1С: ERP [22] => ADO [23] => 1С:Управление производственным предприятием [24] => Внедрение [25] => Продажи [26] => Отчетность [27] => 1С: Розница [28] => 1С: CRM [29] => 1С:Бухгалтерия [30] => 1С:Комплексная автоматизация [31] => Производство [32] => Интеграция 1С [33] => Налоги [34] => Отпуск [35] => MS SQL Server [36] => Расширение конфигурации [37] => МСФО [38] => СКД [39] => Word [40] => WEB-сервисы 1С [41] => Внедрение ERP [42] => Перенос данных [43] => Торговое оборудование [44] => Лизинг [45] => 1С:Управление нашей фирмой [46] => Администрирование 1С [47] => 1С: Колледж [48] => Правила обмена [49] => 1С: Платформа ) —>
Источник: www.koderline.ru
Используем механизмы обмена данными БСП для произвольного обмена
Столкнулся давеча с проблемой: необходимо реализовать обмен данными через ftp. Причём хотелось использовать механизм БСП, чтобы не городить свои велосипеды. Казалось бы, для этого стоит только почитать документацию с ИТС, но не всё так просто. Механизм БСП заточен на обмен XML по правилам обмена.
Чтобы использовать его для любого другого обмена, коих в мире не мало, требуются доработки. В статье описан вариант, как из положения выйти (так сказать, и рыбку съесть и косточкой не подавиться и формат обмена использовать произвольный и стандартным механизмом нагло воспользоваться).
Ещё раз уточню. Здесь по сути нет инфы с ИТС, т.к. статья описывает использование механизмов БСП для произвольного обмена. Для обмена в формате XML по правилам обмена надо читать
Какие возможности обмена БСП мы можем использовать:
Для начала стоит отметить, какие же такие типовые возможности я позарился использовать. Речь идёт о справочнике СценарииОбменовДанными.
Где можно прописать параметры обмена данными:
- действие — выгрузка или загрузка
- подключение — каталог или FTP или EMAIL или веб сервис или COM подключение (хранится это в РС «НастройкиТранспортаОбмена», значит нам не надо думать, где хранить эти данные)
- расписание — расписание РЗ (значит не надо добавлять своё)
Вдобавок нам не надо создавать форму, на которой можно задавать все эти настройки и имеются доп. возможности:
- выполнить сценарий обмена прямо сейчас
- Открыть журнал регистрации с отбором по событию обмена
Более подробно, о том, как сие выглядит в режиме предприятия написано ниже, в инструкции для пользователя.
Какие требуются доработки:
1. Добавить План обмена. Даже если он не нужен. Ибо без него ничего не взлетит. Это требование БСП. В модуль менеджера добавить следующий код, скопировав из типовых или взяв с ИТС.
Естественно добавив только те виды транспорта, которые могут использоваться в вашем обмене. На всякий случай укажу, что вид «FILE» — это обмен через каталог.
Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт Результат = Новый Массив; Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE); Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP); Возврат Результат; КонецФункции
2. Переопределить механизм обмена БСП. Для этого нам любезно предназначен специальный ОМ ОбменДаннымиПереопределяемый. В зависимости от задачи, нам нужна одна из двух (или сразу обе) процедур этого ОМ — ПриЗагрузкеДанных или ПриВыгрузкеДанных. Для нового обмена в означенные процедуры необходимо добавить следующий текст:
Если ТипЗнч(Отправитель) = Тип(«ПланОбменаСсылка._УТ_ДО_Пользователи») Тогда ПриЗагрузке(СтандартнаяОбработка, Отправитель, ИмяФайлаСообщения, ДанныеСообщения, КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, КоличествоПолученныхОбъектов) КонецЕсли;
Если ТипЗнч(Получатель) = Тип(«ПланОбменаСсылка._УТ_ДО_Пользователи») Тогда ПриВыгрузке(СтандартнаяОбработка, Получатель, ИмяФайлаСообщения, ДанныеСообщения, КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, КоличествоОтправленныхОбъектов) КонецЕсли;
Также в модуль добавляем блок методов УниверсальныйОбменДаннымиСПомощьюБСП
#Область УниверсальныйОбменДаннымиСПомощьюБСП //Если обмен инициализирован справочником СценарииОбменовДанными // Процедура ПриВыгрузке(СтандартнаяОбработка, Получатель, ИмяФайлаСообщения, ДанныеСообщения, КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, КоличествоОтправленныхОбъектов) Экспорт //КоличествоОтправленныхОбъектов — сюда можно присвоить количество выгруженного, которое потом запишется в ЖР //ИмяСобытияЖурналаРегистрации — его использует БСП при записи в ЖР, //нам надо делать также, чтобы удобно смотреть ЖР из сценария тестирования //Планы обмена фиктивные, поэтому СтандартнаяОбработка не требуется СтандартнаяОбработка = Ложь; //Типовой механизм сам задаёт имя файла выгрузки и формат у него может быть только XML (так выглядит имя — Message_1_2.xml), //поэтому,если мы хотим это переопределить, надо получить настройки обмена (такие, как каталог обмена или ftp) НастройкиТранспорта = НастройкиТранспортаУзла(Получатель, Перечисления.ДействияПриОбмене.ВыгрузкаДанных); //в структуре НастройкиТранспорта лежат настройки из РС НастройкиТранспортаОбмена. Присутствуют не все поля РС, а только те, //которые соответствуют выбранному в сценарии обмена виду транспорта обмена (см.
Перечисления.ДействияПриОбмене) //ТЕЛО ВЫГРУЗКИ //здесь мы знаем куда выгружать и описываем код выгрузки ОбщегоНазначения.МенеджерОбъектаПоСсылке(Получатель).ПриВыгрузке(НастройкиТранспорта, ИмяСобытияЖурналаРегистрации, КоличествоОтправленныхОбъектов); //эта строка выполняется в самом конце, если выгрузка прошла успешно СоздатьФайлВыгрузкиЗаглушкуДляОбменаНаБСП(ИмяФайлаСообщения); КонецПроцедуры //Если обмен инициализирован справочником СценарииОбменовДанными // Процедура ПриЗагрузке(СтандартнаяОбработка, Отправитель, ИмяФайлаСообщения, ДанныеСообщения, КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, КоличествоПолученныхОбъектов) Экспорт СтандартнаяОбработка = Ложь; НастройкиТранспорта = НастройкиТранспортаУзла(Отправитель, Перечисления.ДействияПриОбмене.ЗагрузкаДанных); //ТЕЛО ЗАГРУЗКИ //здесь мы знаем откуда загружать и описываем код загрузки ОбщегоНазначения.МенеджерОбъектаПоСсылке(Отправитель).ПриЗагрузке(НастройкиТранспорта, ИмяСобытияЖурналаРегистрации, КоличествоПолученныхОбъектов); КонецПроцедуры Процедура СоздатьФайлВыгрузкиЗаглушкуДляОбменаНаБСП(ИмяФайлаСообщения) //Чтобы типовой механизм понял, что выгрузка данных произошла, //надо заполнить типовой файл выгрузки содержимым. ЗаписьХМЛ = Новый ЗаписьXML; ЗаписьХМЛ.ОткрытьФайл(ИмяФайлаСообщения); ТекстЗаглушка = «Этот файл создаётся типовым механизмом обмена БСП.
Его следует игнорировать. Можно удалять.»; ЗаписьХМЛ.ЗаписатьНачалоЭлемента(«Данные»); ЗаписьХМЛ.ЗаписатьТекст(ТекстЗаглушка); ЗаписьХМЛ.ЗаписатьКонецЭлемента(); ЗаписьХМЛ.Закрыть(); КонецПроцедуры Функция НастройкиТранспортаУзла(Узел, ВыполняемоеДействие) //к сожалению, здесь мы не имеем ссылки на сценарий обмена, откуда он и был запущен, //а она нужна, чтобы определить ВидТранспортаОбмена, т.е. понять куда выгружать (в каталог, или ftp, или ещё куда) //есть несколько вариантов решить эту задачу и все «кривые»: // //1. в модуле менеджера ПО, в функции ИспользуемыеТранспортыСообщенийОбмена() разрешить только один ВидТранспортаОбмена //2. сделать ВидТранспортаОбмена равным РегистрыСведений.НастройкиТранспортаОбмена.ВидТранспортаСообщенийОбменаПоУмолчанию(. ), //но тогда настройка транспорта в сценарии обмена станет фиктивной, что приведёт к непониманию со стороны пользователей //(ВидТранспортаСообщенийОбменаПоУмолчанию задаётся в предприятии в настройках плана обмена) //3.
Для СОВОКУПНОСТИ (УЗЕЛ нашего ПО + выполняемое действие (загрузка или выгрузка)) //ограничить возможность использования сценариев для обмена одним сценарием. //Если их будет создано больше — отменять обмен. Если найден один — брать ВидТранспортаОбмена оттуда. // //Здесь реализован лучший, на мой взгляд, третий путь. Таким образом, мы получим одно ограничение: //чтобы выполнять несколько сценариев с данным обменом и выполняемым действием (загрузка или выгрузка), //нужно на каждый новый сценарий создавать копированием узел ПО (на всякий случай уточню: в режиме предприятия) //но для подавляющего большинства хватит и одного сценария (ведь возможность их множественности, это фича БСП). Запрос = Новый Запрос; Запрос.Текст = //поскольку помеченный на удаление сценарий всё равно можно выполнять, отбирать в запросе только непомеченные нельзя «ВЫБРАТЬ | СценарииОбменовДаннымиНастройкиОбмена.ВидТранспортаОбмена |ИЗ | Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена |ГДЕ | СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = ВыполняемоеДействие»; Запрос.УстановитьПараметр(«УзелИнформационнойБазы», Узел); Запрос.УстановитьПараметр(«ВыполняемоеДействие», ВыполняемоеДействие); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Количество() > 1 Тогда //Вызывающая процедура обработает исключение и запишет его в ЖР ВызватьИсключение «Для узлов данного плана обмена нельзя задавать больше чем по одному сценарию обмена. «; ИначеЕсли Выборка.Количество() = 0 Тогда //вообще, здесь мы не можем оказаться, но на всякий случай ВызватьИсключение «Не найден сценарий обмена для данного узла обмена»; КонецЕсли; Выборка.Следующий(); НастройкиТранспорта = РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспорта(Узел, Выборка.ВидТранспортаОбмена); Возврат НастройкиТранспорта; КонецФункции #КонецОбласти
Сами процедуры обмена данными находятся в модуле менеджера плана обмена. Таким образом, шаблон модуля менеджера ПО будет выглядеть так:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ПрограммныйИнтерфейс #Область ПроцедурыИФункцииБсп // Возвращает массив используемых транспортов сообщений для этого плана обмена // // 1. Например, если план обмена поддерживает только два транспорта сообщений FILE и FTP, // то тело функции следует определить следующим образом: // // Результат = Новый Массив; // Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE); // Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP); // Возврат Результат; // // 2. Например, если план обмена поддерживает все транспорты сообщений, определенных в конфигурации, // то тело функции следует определить следующим образом: // // Возврат ОбменДаннымиСервер.ВсеТранспортыСообщенийОбменаКонфигурации(); // // Возвращаемое значение: // Массив — массив содержит значения перечисления ВидыТранспортаСообщенийОбмена // Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт Результат = Новый Массив; Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE); Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP); Возврат Результат; КонецФункции #КонецОбласти #Область ВыгрузкаЗагрузкаЭкспортныеМетоды //Вызывается из _омОбмен.ПриВыгрузке // Процедура ПриВыгрузке(НастройкиТранспорта, ИмяСобытияЖурналаРегистрации, КоличествоОтправленныхОбъектов) Экспорт КонецПроцедуры //Вызывается из _омОбмен.ПриВыгрузке // Процедура ПриЗагрузке(НастройкиТранспорта, ИмяСобытияЖурналаРегистрации, КоличествоПолученныхОбъектов) Экспорт КонецПроцедуры #КонецОбласти #КонецОбласти #Область Выгрузка #КонецОбласти #Область Загрузка #КонецОбласти #КонецЕсли
Ограничения, особенности использования нашего механизма:
- Для СОВОКУПНОСТИ (УЗЕЛ нашего ПО + выполняемое действие (загрузка или выгрузка)) можно задать только один сценарий. Если необходимо больше, то, на каждый новый сценарий надо создавать копированием узел ПО (на всякий случай уточню: в режиме предприятия), но для подавляющего большинства хватит и одного сценария (ведь возможность их множественности, это фича БСП).
- В папке обмена будет находиться один лишний файл или (в случае «2.в») придётся смириться с типовым именем файла. Но это тоже легко пережить =)
- а) Выгрузка. В папке выгрузки автоматом создаётся ненужный файл «Message_1_2.xml» с текстом «<Данные>Этот файл создаётся типовым механизмом обмена БСП. Его следует игнорировать. Можно удалять.»
- б) Загрузка. В папку загрузки надо кинуть файл «Message_2_1.xml». Можно поместить в него следующий текст: «<Данные>ФАЙЛ НЕ УДАЛЯТЬ!! Без него него не будет работать механизм загрузки на БСП.».
- в) Если выгрузка в ХМЛ, то можно обойтись без минусов 1 и 2, больше используя механизм БСП. Поскольку БСП как раз рассчитана именно на выгрузку в ХМЛ, то здесь лишних хлопот не требуется и мы можем прямо в ПриВыгрузкеДанных писать файл выгрузки (т.е. блок методов УниверсальныйОбменДаннымиСПомощьюБСП тут не нужен). Пример, как это сделать см в процедуре СоздатьФайлВыгрузкиЗаглушкуДляОбменаНаБСП. Но, у данного решения есть один недостаток: Имя файла генерирует БСП («Message_1_2.xml», где «1» и «2» это коды узлов «откуда» и «куда» соответственно).
Особенности использования механизма БСП:
В предприятии надо создать два узла ПО, т.к. обмен с самим собой делать нельзя. Также обоим узлам надо задать Код, иначе обмен не взлетит. Данные проверки производятся в процедуре ОбменДаннымиСервер.ВыполнитьПроверкуСтруктурыОбменаНаВалидность.
Инструкция для пользователей:
В плане обмена создаём два узла. Узел Этой базы (у него на картинке зелёная точка справа внизу) и узел базы приёмника. Обязательно заполняем им код и наименование (для простоты можно назвать как на скрине «1» и «2»). Далее для обмена (выгрузки или загрузки) данными надо выбирать узел базы с которой идёт обмен, т.е. «2».
Если выберем «1», то обмен проходить не будет а в ЖР появится запись «Нельзя организовать обмен данными с текущим узлом информационной базы. Обмен отменен.».
Спр. «Сценарии синхронизации данных».
Задаём имя сценария, добавляем строку настройки обмена в ТЧ.
Настраиваем параметры подключения.
После того, как всё настроено, можно настроить РЗ или выполнить обмен прямо сейчас.
После выполнения обмена, можно посмотреть его лог в ЖР.
ОпосляСкриптум:
Пришлось немного разобрать механизмы БСП, вследствие чего родилась сия статья. В сухом остатке мы имеем:
- Чтобы использовать механизм обмена данными БСП для произвольного обмена, нужно просто скопировать описанные процедуры. Всё. Дальше можно заняться собственно самими процедурами обмена.
- Также представлена инструкция для пользователей.
ИНТЕРЕСНЫХ ВАМ ЗАДАЧ, ПЛОДОТВОРНОЙ РАБОТЫ И ОРИГИНАЛЬНЫХ/ОПТИМАЛЬНЫХ РЕШЕНИЙ!!
Источник: open-budget.ru