1С битрикс обмен документами

На поиск нужных бумаг уходят часы, а на согласование — недели. Часть документов пропадает неизвестно куда… Эти проблемы легко решить с помощью программы электронного документооборота «Битрикс24».

Зачем отказываться от распечаток?

Когда распечаток сотни, начинается путаница. Стоит один раз отвлечься и положить лист не в ту папку. Одна ошибка способна убить половину рабочего дня, пока вы ищете нужную бумагу по лоткам и ящикам. Внедрение электронного документооборота в компании позволит вам снизить затраты на бумагу, расходные материалы принтеров и копиров, освободить место в офисе.

Создайте электронный архив документов и переложите рутинное делопроизводство на «Битрикс24». CRM сама зафиксирует входящие файлы, занесет их в соответствующие папки, оповестит сотрудников и предоставит им доступы. В «Битрикс24» предусмотрены несколько алгоритмов делопроизводства. С ними руководители настраивают цепочки согласований, определяют полномочия и присваивают права.

Кроме этого, шаблоны «Битрикс24» позволяют создать бизнес-процесс на оплату счета, оформить заявку на выдачу наличных, заявку в отпуск или командировку.

Организация документооборота

«Битрикс24» поможет сократить время на подготовку и редактирование документов, увеличить скорость принятия управленческих решений, повысить уровень защиты информации и исполнительскую дисциплину.

И главное, вам не придется рыться в бесконечных папках и стопках бумаг! Теперь, чтобы найти счет или письмо, наберите заголовок, контрагента или сотрудника в поле «поиск».

Контроль документооборота

Система управления электронными документами организует согласование без бумажных копий. Вам не придется бегать по кабинетам, чтобы собрать нужные подписи. «Битрикс24» позволяет контролировать каждый этап жизненного цикла договора или письма. Запустите бизнес-процесс на обработку файла и займитесь другими делами. «Битрикс24» сама «протолкнет» его по цепочке согласования. Инициатору остается справляться, кто уже одобрил файл, а кто еще проверяет.

При необходимости используйте сценарии согласования: двухэтапное утверждение, голосование, утверждение со статусами и т.п.

Совместное редактирование

Типичный случай: группа сотрудников работает над проектом договора. Пока один коллега редактирует, другим приходится ждать, становиться в очередь. К тому же без контроля версий изменения теряются, или противоречат друг другу.

«Битрикс24» позволяет редактировать документы одновременно с коллегами. CRM фиксирует каждое изменение файла, при желании легко вернуться к предыдущей версии. Так снижается вероятность потери информации и повышается оперативность работы. Кроме этого, рабочие данные постоянно доступны. Достаточно выйти в Интернет и работать с документами онлайн.

«Битрикс24» — это не только электронный оборот документов

Это все, что необходимо для организации работы компании. Инструменты тесно взаимосвязаны, а это значит, что вам не придется переключаться между разными сервисами. Начать работать можно сразу после регистрации. Достаточно любого браузера. Не нужно устанавливать ПО. Не нужно внедрять. Не нужно учиться, чтобы освоить.

Прошлый пост вдохновил меня написать более подробную заметку про обмен Битрикса с 1С. С первого взгляда кажется, что это очень сложный процесс, но с многолетним опытом понимаешь, что это не просто сложно: это еще и вообще полное г(кхе-кхе). Попробую описать словами этот процесс. Добро пожаловать в ад описание обмена с 1с.

Инициатором любого обмена является 1С, сайт не загружает ничего в 1С, сайт только принимает запросы и отдаёт результат. По умолчанию, 1С обращается к скрипту /bitrix/admin/1c_exchange.php. Этот путь указывается в настройках обмена в самой 1С. Из коробки в этом файле включается файл /bitrix/modules/sale/admin/1c_exchange.php. Если открыть файл, то видим там подключение нескольких компонентов в зависимости от $_GET["type"]. В общем случае интересуют два из них:

Читайте также:  Пылесос для автомобиля рейтинг

bitrix:sale.export.1c — экспорт заказов.

bitrix:catalog.import.1c -импорт каталога.

Экспорт заказов в 1С

Обмен заказами начинается с авторизации с помощью логина и пароля, который указали в настройках обмена. После авторизации сайт выдает ID сессии, URL: /bitrix/admin/1c_exchange.php?type=sale&mode=checkauth .

После получения ID сессии идёт инициализация обмена, URL: /bitrix/admin/1c_exchange.php?type=sale&mode=init&sess >. На этом этапе сайт отдаёт настройки обмена со стороны сайта.

Для получения списка заказов запрашивается URL /bitrix/admin/1c_exchange.php?type=sale&mode=query&sess >. Выгружаются заказы с полями EXTERNAL_ORDER = "N", UPDATED_1C = "N" и обновившиеся после последней успешной выгрузки в 1С (это проверяется по времени из свойства "last_export_time_committed_/bitrix/admin/1c_excha" модуля sale).

Флаг EXTERNAL_ORDER указывает, что заказ создан в 1С и его выгрузка в 1С не требуется.

Флаг UPDATED_1C после успешного импорта из 1С на сайте устанавливается в "Y" и такие заказы не участвуют в дальнейших экспортах до их обновления на сайте. Во время обновлений заказов на сайте UPDATED_1C устанавливается в "N".

После обработки заказов 1С для завершения обмена запрашивает URL /bitrix/admin/1c_exchange.php?type=sale&mode=success&sess >. При этом в свойство "last_export_time_committed_/bitrix/admin/1c_excha" модуля sale записывается время запроса списка заказов (НЕ текущее время, т.к. с момента запроса заказов до их обработки могли добавиться заказы и они попадут в следующую выгрузку с сайта).

Модификация

В экспорте заказов участвуют файл /bitrix/admin/1c_exchange.php , компонент bitrix:sale.export.1c и класс CSaleExport . Какие-либо события здесь отсутствуют, поэтому для модификации этого процесса нужно заменить компонент на свой, создать класс-наследник CSaleExport и заменить вызовы в компоненте на него. В последних версиях Битрикс этот класс стал относительно читабельным, в старых там была просто простыня из php и "xml".

Отключение проверки источника запроса

С версии 15.5 добавлена дополнительная проверка и если вызвать просто /bitrix/admin/1c_exchange.php?type=sale&mode=query , то получим ошибку "failure Ошибка проверки источника запроса. Обновите модуль обмена". Если нет желания возиться с sessid, то можно отключить проверку источника запроса, для этого нужно выполнить:

Импорт товаров из 1С

Импорт начинается с авторизации, посылается запрос на /bitrix/admin/1c_exchange.php?type=catalog&mode=checkauth с передачей логина и пароля, который указали в настройках обмена. После авторизации сайт выдает ID сессии.

Далее идёт инициализация обмена, URL /bitrix/admin/1c_exchange.php?type=catalog&mode=init&sess >. На этом этапе в сессии инициализируется массив данных обмена $_SESSION["BX_CML2_IMPORT"] и сайт отдаёт параметры обмена: возможность использования zip, лимит размера файла и т.д. Также на этом этапе очищается папка для файлов выгрузки. Скорее всего, это будет папка /upload/1c_catalog/. Для отладки можно включить сохранение старых файлов обмена, тогда при новом обмене старые данные будут перемещаться в отдельные папки: 1c_catalog0, 1c_catalog1 и т.д.. Для сохранения данных нужно объявить константу в dbconn.php:

После этого 1С начинает подготовку данных и далее посылает их POST-запросом на сайт частями, URL: /bitrix/admin/1c_exchange.php?type=catalog&mode=file&filename=ИМЯ_ФАЙЛА.zip&sess >. Запрос продолжается, пока файлы не будут переданы полностью.

1С передает на сайт xml-файлы с данными товаров и предложений, а также картинки. В случае если сайт разрешил использовать zip, то 1С передает все файлы одним архивом. Тогда следующий шаг начинается с его распаковки.

В выгрузке могут участвовать xml-файлы:

  • import.xml — товары, разделы, типы цен, склады, свойства товаров и единицы измерения;
  • offers.xml — торговые предложения товаров и их свойства;
  • prices.xml — цены торговых предложений(в новых версиях);
  • rests.xml — остатки торговых предложений(в новых версиях);
  • references.xml — пользовательские справочники (highload-инфоблоки, в новых версиях).
Читайте также:  Формат abr чем открыть

Картинки загружаются в папку import_files.

Далее начинаются шаги импорта, URL: /bitrix/admin/1c_exchange.php?type=catalog&mode=import&filename=ИМЯ_ФАЙЛА_ВЫГРУЗКИ.xml , где ИМЯ_ФАЙЛА_ВЫГРУЗКИ — import.xml, offers.xml и т.д. Обработка файла завершается, когда сайт отдаёт слово "success". За обработку файла выгрузки отвечают классы CIBlockXMLFile (/bitrix/modules/iblock/classes/mysql/cml2.php) и CIBlockCMLImport (/bitrix/modules/iblock/classes/general/cml2.php).

Обработка файла состоит из нескольких шагов (информация будет дополняться):

Очистка временной таблицы (таблица b_xml_tree);

Метод CIBlockXMLFile::DropTemporaryTables(). Обычный drop таблицы b_xml_tree.

Создание временной таблицы;

Метод CIBlockXMLFile::CreateTemporaryTables(). Здесь создается таблица b_xml_tree. Можно, кстати, задать storage engine этой таблицы, равно как и всех создаваемые битриксом, с помощью определения константы MYSQL_TABLE_TYPE.

Чтение файла во временную таблицу;

  • Индексация временной таблицы;
  • Импорт метаданных;
  • Импорт разделов;
  • Деактивация разделов и пересчёт левой и правой границ для разделов;
  • Импорт элементов;
  • Деактивация элементов;
  • success.
  • Некоторые шаги могут выполняться за несколько запросов, порциями по несколько секунд (это время настраивается параметров "Интервал одного шага в секундах" в настройках интеграции с 1С в админке Битрикса).

    Модификация

    На шаге 10, т.е. по окончании обработки файла выгрузки (NB: одного файла, например, товаров или предложений) вызывается событие OnSuccessCatalogImport1C модуля catalog. Аргументы обработчика — параметры компонента обмена и путь к файлу выгрузки.

    Также для изменения процесса обмена можно использовать обычные события, например, OnBeforeIBlockElementUpdate или OnBeforeProductAdd. В обработчике, чтобы определить, что событие вызвано именно во время обмена с 1С, я использую такое костыльное условие:

    Ну и, если ничего нельзя решить событиями, всегда можно полностью изменить процесс обмена, скопировав и изменив файл /bitrix/admin/1c_exchange.php , компонент bitrix:catalog.import.1c и класс CIBlockCMLImport .

    Отключение проверки источника запроса

    Как и в случае с выгрузкой товаров, при импорте товаров есть проверка источника запроса. Можно отключить её следующим кодом:

    Статья будет дополняться по мере появления новой информации и вдохновения.

    Обмен заказами между 1С Предприятие 8.3 Управление Торговлей 11.1 (далее по тексту 1С УТ) и интернет-магазином на базе 1С-Битрикс 14.0 (далее по тексту Битрикс) — это часть стандартного «коробочного» механизма обмена между указанными системами. Пользователь формирует заказ на сайте, а затем по расписанию и, начиная с определенного статуса заказа, заказы выгружаются в 1С УТ. Описание данного механизма в его стандартном виде можно найти по ссылкам, указанным в конце данной статьи, статья же о том, как расширить указанный функционал и подогнать его под документооборот конкретного торгового предприятия.

    В стандартном варианте данный механизм обмена не полностью автоматизирует работу менеджера на стороне 1С УТ: дело в том, что реквизиты заказа, такие как метод оплаты, способ доставки — передаются на сторону 1С УТ и записываются в доп. сведения о заказе.

    Но поля доставки заказа, а так же грузоперевозчик (при доставке грузоперевозчиком), метод оплаты, склад — остаются незаполненными.

    И для того, чтобы пустить заказ в дальнейший документооборот, пользователю требуется посмотреть на дополнительные сведения и вручную заполнить в заказе все перечисленные поля (автоматическое заполнение склада — это, конечно спорный вопрос, но, как правило, удобно, чтобы по умолчанию при создании заказа выбирался основной склад).

    Казалось бы, это всего 8 щелчков мышью, однако при большом количестве заказов в день, эти рутинные операции очень утомляют пользователя. Поэтому и встала задача доработки экспорта заказов из Битрикс в 1С УТ таким образом, чтобы поля доставки, грузоперевозчик, поле метода оплаты и поле склад заполнялись автоматически в ходе выполнения обмена.

    Читайте также:  Ccna материалы для подготовки

    Кроме этого, важным условием задачи так же являлось не нарушить целостность конфигурации 1С УТ, чтобы не снимать ее с поддержки, поэтому было решено выделить часть модуля обмена, отвечающего за обмен заказами, вынести его во внешнюю обработку, а затем уже доработать функционал этой внешней обработки.

    Не будем подробно заострять внимание на том, как оформить внешнюю обработку для платформы 1С Предприятие 8.3, потому что это общеизвестная для 1С-программистов вещь. Пройдемся лишь по ключевым моментам. Так как обработка должна отрабатывать как при ручном запуске, так и при выполнении регламентного задания (по расписанию), в основном модуле внешней обработки, в функции СведенияОВнешнейОбработке должны быть прописаны параметры для обоих этих режимов.

    Там же в основном модуле обработки необходимо описать процедуру, которую мы будем вешать на регламентное задание, и которая будет непосредственно запускать обмен:

    В процедуре выше мы использовали вызов функции ЗагрузитьРеквизиты. В этой фукнции мы выбираем ранее заданные реквизиты дополнительных настроек обмена из хранилища:

    А для того, чтобы задавать расширенные параметры обмена, добавляем к внешней обработке форму, на которой пользователь сможет выбрать узел обмена заказами (узел обмена заказами, настроенный предварительно согласно стандартному руководству), а так же сопоставить способы доставки на сайте со способами доставки на стороне 1С УТ, а методы оплаты на сайте с методами оплаты на стороне 1С УТ. Следует уточнить, что грузоперевозчик — на стороне 1С УТ — это контрагент, поэтому при сопоставлении метода доставки, осуществляемой какой-либо экспедиционной службой, нужно будет выбрать и контрагента-грузоперевозка. Это позволит в дальнейшем формировать по заказу транспортную накладную, не выбирая контрагента-перевозчика заново каждый раз.

    Сохранение дополнительных реквизитов обмена осуществляется процедурой СохранитьРеквизиты из модуля формы (не путать с основным модулем внешней обработки).

    Параметры будут сохраняться в ХранилищеОбщихНастроек — это очень удобный инструмент платформы 1С Предприятие.

    Там же в модуле формы мы описываем процедуру ЗагрузитьРеквизиты() аналогично процедуре ЗагрузитьРеквизиты() из основного модуля внешней обработки.

    Еще одна процедура из модуля формы — это процедура ручного запуска обмена.

    После того, как данные приготовления сделаны, мы копируем из стандартного модуля обмена с сайтом конфигурации 1С УТ все те процедуры, которые необходимы нам для обмена заказами (можно скопировать и весь текст модуля). Далее уже в нашем модуле внешней обработки расширенного обмена заказами мы видоизменяем процедуры обмена так, чтобы при обмене посредством данной обработки учитывались наши дополнительные настройки, а именно:

    В процедуре СоздатьОбновитьДокументы находим место, где заполняется (в цикле) дополнительное сведение заказа:

    Дописываем после этой строки:

    В той же процедуре после окончания цикла, в котором записываются доп. сведения вставляем:

    Это сделано для того, чтобы сразу установить заказу основной склад по умолчанию.

    Это все. Остается только зарегистрировать обработку в режиме предприятия (я напомню, что это делается в Администрирование-Настройка параметров системы — Печатные формы отчеты и обработки — Дополнительные отчеты и обработки).

    Задать соответствия для методов оплаты.

    Задать соответствия для способов доставки:

    Повесить обработку на регламентное задание, и заказы, приходящие с сайта сразу будут обладать всеми необходимыми свойствами для того, чтобы по ним сразу можно было формировать приходный кассовый ордер или поступление безналичных средств, реализацию товаров и услуг и т.д.