- Настройка обмен данными между базами 1С 8
- Зачем нужны обмены данных между 1С?
- Организация имеет филиальную сеть
- Разделение по видам учета
- Какие бывают механизмы обмена между базами 1С?
- Механизмы обмена данными 1С
- Транспорт для обмена данными
- Как настроить обмен данными между базами 1С?
- Обмен данными 1С по расписанию в 1С
- Для клиент-серверного варианта
- Для файлового варианта
- Статьи для программиста по обмену данными в 1С
- Обмен данными с конфигурацией через веб-сервисы
- Особенности работы методов веб-сервисов
- Что нужно для работы
- На стороне конфигурации
- Простой обмен данными с конфигурациями с помощью формата EnterpriseData
- Формат сообщения
- Пример сообщения
- Веб-сервис EnterpriseDataUpload
- Пример на C#
Настройка обмен данными между базами 1С 8
Обмен данными между прикладными решениями 1С 8 — это то, без чего не возможно построение полноценного информационного пространства предприятия.
- Зачем нужны обмены данных и как их использовать?
- Виды обменов между 1С.
- Как произвести настройку обмена данными между базами 1С?
Ответы на эти вопросы Вы узнаете ниже.
Если Вас интересуют услуги по настройке обмена данными между 1С и не только, подробности на странице Услуги 1С программиста.
Зачем нужны обмены данных между 1С?
Причин для внедрения обменов, как правило, две:
Организация имеет филиальную сеть
В этом случае Вам просто необходимо настраивать обмен между различными филиалами. Для этого в системе 1С 8.3 предприятие существует механизм Распределенных информационных баз (РИБ). С помощью которого можно гибко настроить обмен информацией. Например, для филиалов можно отключить видимость документов по другим филиалам и в тоже время центральный офис будет видеть документы всех филиалов. Другой пример — настройка обмена между базами 1С Розница офиса и магазинов.
Разделение по видам учета
Как правило, это означает, что в организации разный учет ведется в различных информационных базах. Такое разделение позволяет фильтровать «ненужную» для другого вида учета информацию для различных информационных баз. Пример: т.н. «управленческий учет» введется в базе «Управление торговлей», где отражаются все операции, и руководство видит полную картину событий, а в базу регламентированного учета «Бухгалтерия предприятия» выгружаются лишь нужные для ведения бухгалтерского и налогового учета документы.
Какие бывают механизмы обмена между базами 1С?
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Обмены данных можно классифицировать по двум направлениям: используемые механизмы и используемый транспорт для обмена.
Механизмы обмена данными 1С
Как правило, при обмене используется два механизма:
- Распределенная информационная база (РИБ) — механизм, позволяющий настроить обмен данными между филиалами. Механизм подразумевает, что обмениваются абсолютно идентичные конфигурации БД. Механизм умеет передавать изменения конфигурации баз данных. Механизм реализован на уровне технологической платформы.
- Универсальный механизм обмена между конфигурациями — механизм является разработкой фирмы 1С для прикладных решения. Он универсален и основан на планах обмена. Обмен данными осуществляется с помощью правил xml, которые создаются в специальной конфигурации — Конвертация данных. С помощью данного механизма можно реализовать как одноразовый обмен, так и постоянный обмен между 1С конфигурациями. Механизм реализован на уровне конфигурации, встроить в свою конфигурацию можно из технологической конфигурации БСП.
Транспорт для обмена данными
Транспортом может выступать достаточно широкий спектр технологий. Рассмотрим основные, реализованные в универсальном механизме обмена 1С:
- Локальный или сетевой каталог — самый простой транспорт. Одна ИБ создает файл на диске, вторая считывает его и добавляет свой файл.
- FTP-ресурс — обмен, аналогичен обмену через каталог. Отличие — обмен осуществляется через FTP протокол.
- Почтовые сообщения или E-mail — обмен проходит по средствам электронной почты. Конфигурации посылают друг другу почтовые сообщения и регулярно проверяют почтовый адрес на наличие новых сообщений.
- Прямое подключение (COM) — обмен осуществляется через прямое подключение одной базы к другой по средствам COM соединения.
- Интернет (Web service) — транспортом является веб-служба. Одна информационная база подключается к веб-сервису, веб-сервис подключается к второй базе и транспортирует сообщение. Для осуществления такого транспорта необходимо иметь установленный веб-сервер (IIS или Apache).
Как настроить обмен данными между базами 1С?
Рассмотрим настройку 1С для обмена данными между типовыми конфигурациями 1С — Бухгалтерия и Управление торговлей.
Первым делом необходимо создать узлы информационных баз:
Синхронизация происходит по коду, пиктограмма с кругом — обозначение текущей информационной базы. Т.е. настраивая обмен в бухгалтерии — присваиваем текущему узлу код «БП», настраивая обмен в торговле — код «УТ».
Следующий шаг — создание справочника «Настройки обмена данных»:
Если обмен настраивается через каталог, электронную почту или FTP, настройки необходимо настраивать в двух базах данных.
Если обмен происходит прямым подключением или через веб-сервис, достаточно настройки с одной стороны (важно не забыть указать правила загрузки в базу обмена).
Тут важно обратить внимание на следующие моменты:
- Узел обмена — та информационная база, с которой планируется обмен.
- Правила выгрузки в базу обмена — правила, созданные с помощью конфигурации Конвертации данных. Те правила, по которым будет выгружаться информация .
- Правила выгрузки в текущую базу (доступна, если выбран тип — прямым подключением или через веб-сервис) — правила, по которым база данных будет забирать информацию из другой базы данных 1С.
- Тип обмена — способ транспортировки сообщений между базами данных. В зависимости от выбранного типа необходимо задать параметры подключения.
Всё, настройка закончена. Теперь для запуска обмена достаточно лишь нажать на кнопку выполнения обмена.
Азы настройки обмена данными в 1С с помощью конфигурации «1С Конвертации данных» на примере смотрите в видео:
Обмен данными 1С по расписанию в 1С
Если необходимо настроить автоматическую выгрузку по расписанию, достаточно настроить регламентные задания.
Для клиент-серверного варианта
В справочнике «Настройки обмена данными», на вкладке «Автоматический обмен» необходимо создать новое регламентное задание, где указать расписание:
Для файлового варианта
В справочнике «Настройки обмена данными», на вкладке «Автоматический обмен» необходимо создать новое регламентное задание, где на вкладке «Обмен по событиям» указать события, по котором будет выполняться запуск обмена. Например, при старте определенного пользователя:
Статьи для программиста по обмену данными в 1С
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.
Источник
Обмен данными с конфигурацией через веб-сервисы
Внимание! Данный функционал доступен в «Библиотеке стандартных подсистем», начиная с версии 2.3.1.62.
Для обмена данными через формат EnterpriseData у конфигураций, использующих «Библиотеку стандартных подсистем», есть два веб-сервиса:
- EnterpriseDataUpload – упрощенный вариант для загрузки данных в информационную базу из сторонних приложений. Не требует специальных настроек на стороне конфигурации (кроме развертывания собственно веб-сервиса); однонаправленный обмен данными – ТОЛЬКО импорт данных в информационную базу.
- EnterpriseDataExchange – для двустороннего обмена данными между конфигурацией и сторонним приложением. Для работы с ним необходима настройка обмена данными на стороне конфигурации.
Т.к. объем передаваемых через веб-сервисы данных ограничен, данные передаются в виде архивов формата ZIP. Если размер архива слишком велик для передачи через веб-сервис – его разбивают на части и передают по частям. Максимальный размер передаваемого через веб-сервис за сообщения зависит от ряда факторов (от пропускной способности сети, от настроек веб-сервера, от объема свободной памяти на передающей и приемной стороне и т.д.). Опыт показывает, что лучше не передавать через веб-сервис данные размером более нескольких мегабайт.
Собственно задача обмена данными включает в себя две подзадачи:
- Составление корректного XML-файла в формате EnterpriseData,
- Вызов веб-методов в правильной последовательности.
Особенности работы методов веб-сервисов
Большинство методов обоих веб-сервисов имеют выходной параметр – строку ErrorMessage. В случае если внутри конфигурации произошла ошибка, связанная с бизнес-логикой – в эту строку будет записана информация об этой ошибке. Если ошибок в процессе работы метода не было – в строку ErrorMessage будет помещена пустая строка. Если же в процессе работы метода возникла системная ошибка (например, на стороне конфигурации не удалось разархивировать полученный архив) – веб-метод сгенерирует исключение (exception).
Большинство методов обоих веб-сервисов возвращают строки, но в текущей версии возвращаемые строки всегда пустые (кроме EnterpriseDataUpload.PutDataActionResult – он возвращает статус обработки данных на стороне конфигурации – “Active”, “Completed” либо “Failed”).
Ниже на примерах мы рассмотрим, как использовать эти веб-сервисы для обмена данными с конфигурациями из языков C# и Java.
Что нужно для работы
На стороне конфигурации
На стороне конфигурации должны быть развернуты веб-сервисы EnterpriseDataUpload и EnterpriseDataExchange соответствующих версий (в данном случае была использована версия 1.0.1.1). При открытии этих двух URL-адресов в браузере (нужно подставить правильное для вашей инсталляции «1С:Предприятия» имя веб-сервера и публикации):
должны выводиться WSDL-описания сервисов:
В примерах использовалась Visual Studio 2012. В ней было создано консольное приложение на C#, в него импортированы веб-сервисы:
- В Solution Explorer в контекстном меню узла References выбрать команду Add Service Reference.
- В нижнем левом углу появившегося диалога нажать кнопку Advanced.
- В нижнем левом углу появившегося диалога нажать кнопку Add Web Reference.
Использовалась среда разработки Eclipse 4.4.2. Для генерации кода по WSDL файлов веб-сервисов применялась утилита wsdl2java из фреймворка Apache CXF 2.7.16.
Простой обмен данными с конфигурациями с помощью формата EnterpriseData
Формат сообщения
Объекты, предназначенные к обмену, «упакованы» в сообщение (Message), структуру в формате XML. Корневой элемент сообщения называется Message и содержит два дочерних элемента:
- Header (тип Header описан в схеме ExchangeMessage.xsd). Описывает заголовок сообщения, подробнее о заголовке – ниже.
- Body. Является коллекцией (sequence) элементов – наследников Object, т.е. объектов, описанных выше. Собственно содержит все объекты, которые нужно синхронизировать. В прикладных решениях фирмы «1С» при импорте данных из сообщения каждый объект из коллекции записывается в базу в отдельной транзакции. Так, если сообщение содержит три новых номенклатуры и при обработке третьей по счету номенклатуры произошла исключительная ситуация, первые две номенклатуры будут внесены в систему, третья – нет.
Объект может содержать в себе ссылки на другие объекты (например, документ «Акт выполненных работ» может содержать в себе одну или несколько ссылок на номенклатуру). В этом случае, если мы импортируем данные в информационную базу, все объекты, на которые мы ссылаемся из «родительского» объекта, должны либо уже существовать в системе, либо их описание должно содержаться в том же XML файле.
Если нам необходимо удалить какой-то объект, в коллекцию Body надо добавить элемент типа «УдалениеОбъекта», и в этом элементе сослаться на удаляемый объект (см. описание типа «УдалениеОбъекта» в схеме EnterpriseData_X_Y_Z.xsd).
С помощью формата EnterpriseData нам доступны операции создания, обновления и удаления объектов. На данный момент для корректной загрузки данных в типовые решения все объекты должны содержать заполненный элемент «Ссылка» из элемента «Ключевые свойства» (GUID в форме строки). Это первичный ключ объекта. Конфигурации ведут себя следующим образом:
- Если в системе нет объекта с ключом из поля «Ссылка» — создается новый объект.
- Если в системе уже есть объект с ключом из поля «Ссылка» — существующий объект обновляется новыми данными, пришедшими в XML.
- Если пришел элемент типа «УдалениеОбъекта» — объект с соответствующим ключом удаляется из системы.
Пример сообщения
В секции — ссылка на формат сообщения, дата создания сообщения и версия формата.
В секции — описание нового контрагента (тип «Справочник.Контрагенты») с полным наименованием «Леннон Джон» и описание удаления объекта по ключу. Ключ в объекте (элемент ) – тот же, что и у нового контрагента. В результате обработки этого сообщения конфигурация создаст нового контрагента и тут же удалит его.
Веб-сервис EnterpriseDataUpload
EnterpriseDataUpload – интерфейс исключительно для импорта данных в формате EnterpriseData в конфигурацию из сторонних приложений. Условия задачи: у нас есть XML файл с данными в формате EnterpriseData, надо передать его в конфигурацию и убедиться в том, что на стороне конфигурации данные успешно получены.
Алгоритм работы следующий:
- Заархивировать XML-файл с данными. Если размер архива превышает некоторое предельное значение (например, 2Мб) – разбиваем его на части размером не более 2Мб каждая.
- Проверить соединение с помощью метода TestConnection .
- Отправить каждую часть архива с помощью метода PutFilePart . Если мы передаем архив одним файлом – второй параметр метода PutFilePart , PartNumber, должен быть равен нулю. Если архив из нескольких частей – параметр PartNumber должен соответствовать номеру части, начиная с единицы.
- После отправки всех частей архива вызвать метод PutData .
- Получить результат выполнения метода PutData можно с помощью метода PutDataActionResult . Т.к. обработка полученных данных на стороне конфигурации занимает какое-то время, можно вызывать PutDataActionResult в цикле один раз в, например, 5 секунд, пока он не вернет строку «Completed» (или «Failed», если данные по какой-либо причине обработать не удалось, или «Canceled» если операция отменена).
Пример на C#
Итак, у нас есть архив с данными в формате EnterpriseData (один или несколько файлов). Не будем описывать, как в программе создать архив и разбить его на несколько файлов, чтобы сэкономить время – желающие смогут легко найти примеры подобного кода, используя поисковые сервера и соответствующие запросы.
Реализуем функцию, которая принимает такие входные параметры:
- URL Веб-сервиса,
- Имя пользователя для соединения с Веб-сервисом,
- Пароль.
Путь до архивированного файла с данными. Если архив умещается в одном файле – это имя файла с полным путем, включая расширение (например, “C:\Exchange\data.zip”). Если же архив разбит на несколько частей, то это будет имя любого из файлов без расширения и точки (например, “C:\Exchange\data”). Предполагается, что это последовательность файлов с расширениями “.001”, “.002” и т.д.
Реализация функции (в виде статического метода) в листинге ниже. Диагностическая информация выводится в консоль.
Пример на Java
Принципиально ничем не отличается от реализации на C#.
Источник