PHPackages                             carono/yii2-1c-exchange - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. carono/yii2-1c-exchange

ActiveYii2-extension[API Development](/categories/api)

carono/yii2-1c-exchange
=======================

Yii2 module for the exchange of goods and documents from 1C

0.3.1(5y ago)7922.2k↓75.6%24[5 issues](https://github.com/carono/yii2-1c-exchange/issues)[2 PRs](https://github.com/carono/yii2-1c-exchange/pulls)MITPHPPHP &gt;=5.6

Since May 11Pushed 2y ago10 watchersCompare

[ Source](https://github.com/carono/yii2-1c-exchange)[ Packagist](https://packagist.org/packages/carono/yii2-1c-exchange)[ RSS](/packages/carono-yii2-1c-exchange/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependencies (3)Versions (16)Used By (0)

[![Scrutinizer Code Quality](https://camo.githubusercontent.com/836bc0e8059400858c7925ac589f10f84775932f02f10a97ad12ccf44d7dd09b/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f6361726f6e6f2f796969322d31632d65786368616e67652f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/carono/yii2-1c-exchange/?branch=master)[![Latest Stable Version](https://camo.githubusercontent.com/771cdc0346ecee7aa729f0a6aa24a3669e8e5c302d9ccbb6e6601a1efa5831ac/68747470733a2f2f706f7365722e707567782e6f72672f6361726f6e6f2f796969322d31632d65786368616e67652f762f737461626c65)](https://packagist.org/packages/carono/yii2-1c-exchange)[![Total Downloads](https://camo.githubusercontent.com/4fc6595c3776dc671d1a68e466b0d428a13c0c0f9e9ac9ac44053d97e4a66076/68747470733a2f2f706f7365722e707567782e6f72672f6361726f6e6f2f796969322d31632d65786368616e67652f646f776e6c6f616473)](https://packagist.org/packages/carono/yii2-1c-exchange)[![License](https://camo.githubusercontent.com/126b0430a4bb61d7d15f84f3837f119ffc6edc52d1035b172ce2d11569af2a87/68747470733a2f2f706f7365722e707567782e6f72672f6361726f6e6f2f796969322d31632d65786368616e67652f6c6963656e7365)](https://packagist.org/packages/carono/yii2-1c-exchange)

- [Введение](#1)
- [Подключение модуля](#2)
- [Свойства модуля обмена](#5)
- [Настройка 1С](#3)
- [Настройка авторизации](#4)
- [Интерфейсы моделей](#31)
    - [groupClass Группа продуктов](#8)
        - [createTree1c](#18)
    - [productClass Модель продукта](#7)
        - [setRequisite1c](#9)
        - [setGroup1c](#11)
        - [createProperties1c](#15)
        - [setProperty1c](#12)
        - [addImage1c](#13)
        - [ getGroup1c](#14)
        - [getOffer1c](#16)
        - [createModel1c](#17)
    - [offerClass Модель предложения](#19)
        - [getGroup1c](#23)
        - [createPriceTypes1c](#25)
        - [setPrice1c](#24)
        - [setSpecification1c](#26)
    - [partnerClass Модель пользователя](#20)
    - [documentClass Модель документа](#22)
        - [findDocuments1c](#27)
        - [getOffers1c](#28)
        - [getRequisites1c](#29)
        - [getPartner1c](#30)
    - [warehouseClass Модель склада](#21)
    - [Общие методы](#32)
        - [getExportFields1c](#33)
        - [getIdFieldName1c](#34)
        - [setRaw1cData](#35)
- [Описание протокола обмена](#36)
- [Тестирование и поиск ошибок](#37)
- [Полезные ссылки](#38)
- [События модуля](#39)

Введение
=====================================

[](#введение)

Что это за модуль, и какие задачи он должен выполнять?
------------------------------------------------------

[](#что-это-за-модуль-и-какие-задачи-он-должен-выполнять)

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

Модуль содержит набор интерфейсов, которые необходимо реализовать, чтобы получить возможность обмениваться товарами и документами с 1С. Предполагается, что у Вас есть 1С:Предприятие 8, Управление торговлей", редакция 11.3, версия 11.3.2 на платформе 8.3.9.2033. Если у вас версия конфигурации ниже, то скорее всего модуль все равно будет работать, т.к. по большей части, обмен с сайтами сильно не меняется в 1С от версии к версии.

После подключения модуля к вашему проекту, вы можете получить доступ к текущей документации по ссылке **/exchange/article/index**

Подключение модуля
===============================================

[](#подключение-модуля)

1\. Подключаем пакет через компосер

```
composer require carono/yii2-1c-exchange
```

2\. Подключаем модуль в конфиге приложения

```
'modules' => [
    'exchange' => [
        'class' => \carono\exchange1c\ExchangeModule::class
    ]
]
```

3\. Если используете apache как веб сервер, не забудьте создать и настроить **.htaccess** в **web** директории

Свойства модуля обмена
===================================================

[](#свойства-модуля-обмена)

 **Свойство**  **По умолчанию**  **Описание**  productClass  null  Класс для продукта  offerClass  null  Класс для предложения  documentClass  null  Класс для документа (заказа)  groupClass  null  Класс для группы продуктов  partnerClass  null  Класс контрагента (пользователя/клиента)  warehouseClass  null  Класс для склада (не используется, может быть удалён)  exchangeDocuments  false  Обмен заказами  debug  false  Режим отладки, данные сохраняются в tmpDir  useZip  true  Использовать архивы при обмене, если доступны  tmpDir  @runtime/1c\_exchange  Папка для временных файлов  validateModelOnSave  false  При сохранении товара, используем валидацию или нет (может быть удалено)  timeLimit  1800  Время выполнения скрипта (set\_time\_limit)
  memoryLimit  null  Ограничение памяти при обмене (memory\_limit)
  bootstrapUrlRule  true  Автоматически подключать правило для роутинга 1c\_exchange.php  appendRule  false  Добавлять правило роутинга в конец  auth  null  Фукнция для авторизации Настройка 1С
=========================================

[](#настройка-1с)

1\. Устанавливаем 1С:Предприятие 8 Управление торговлей, Управление торговлей", редакция 11.3, версия 11.3.2 (магнитная ссылка), платформа 8.3.9.2033 (и выше)

Настройки будут производиться на демо версии.

2\. Переходим в настройки синхронизации данных, через пункт НСИ и администрирование, или через поиск

[![](https://camo.githubusercontent.com/b71267587aa820ffc89f13df03e37a68c7ed570ecbdec205d4b4aaf829e5f39f/68747470733a2f2f7261772e6769746875622e636f6d2f6361726f6e6f2f796969322d31632d65786368616e67652f484541442f66696c65732f61727469636c65732f3130302f633238313864613936322d736c696465312e706e67)](https://camo.githubusercontent.com/b71267587aa820ffc89f13df03e37a68c7ed570ecbdec205d4b4aaf829e5f39f/68747470733a2f2f7261772e6769746875622e636f6d2f6361726f6e6f2f796969322d31632d65786368616e67652f484541442f66696c65732f61727469636c65732f3130302f633238313864613936322d736c696465312e706e67)

3\. Переходим в узлы обмена с сайтами

[![](https://camo.githubusercontent.com/66153afc3070bc3ad6dac3d172f1a87754d7028d6a653b724737e8fd5b221b02/68747470733a2f2f7261772e6769746875622e636f6d2f6361726f6e6f2f796969322d31632d65786368616e67652f484541442f66696c65732f61727469636c65732f3130302f333064653062646331382d736c696465322e706e67)](https://camo.githubusercontent.com/66153afc3070bc3ad6dac3d172f1a87754d7028d6a653b724737e8fd5b221b02/68747470733a2f2f7261772e6769746875622e636f6d2f6361726f6e6f2f796969322d31632d65786368616e67652f484541442f66696c65732f61727469636c65732f3130302f333064653062646331382d736c696465322e706e67)

4\. Создаём новый узел, и заполняем данные

- Наименование
- Выгрузка товаров
- Адрес сайта, указываем ваш **сайт/1c\_exchange.php**
- Логин и пароль от пользователя, от чьего имени будем выгружать товары ([настройка авторизации](#4))

[![](https://camo.githubusercontent.com/1836d2e4daf8a8505935f839a21bf0770873fda1c42f9775b5b6ca6132250d13/68747470733a2f2f7261772e6769746875622e636f6d2f6361726f6e6f2f796969322d31632d65786368616e67652f484541442f66696c65732f61727469636c65732f3130302f646366333636333962322d323031382d30322d323631392d35352d34312e706e67)](https://camo.githubusercontent.com/1836d2e4daf8a8505935f839a21bf0770873fda1c42f9775b5b6ca6132250d13/68747470733a2f2f7261772e6769746875622e636f6d2f6361726f6e6f2f796969322d31632d65786368616e67652f484541442f66696c65732f61727469636c65732f3130302f646366333636333962322d323031382d30322d323631392d35352d34312e706e67)

Настройка авторизации
==================================================

[](#настройка-авторизации)

Авторизация в модуле реализована через поведение \\yii\\filters\\auth\\HttpBasicAuth

```
'modules' => [
    'exchange' => [
        'class' => \carono\exchange1c\ExchangeModule::class,
        'auth' => function ($username, $password) {
            if ($user = \app\models\User::findByUsername($username)) {
                if ($user->validatePassword($password)) {
                    return $user;
                }
            }
            return false;
        }
     ]
],
```

groupClass Группа продуктов
========================================================

[](#groupclass-группа-продуктов)

Настройка модуля, указываем класс модели работы группы

```
[
    'exchange' => [
        'class' => \carono\exchange1c\ExchangeModule::class,
        'groupClass' => \app\models\Group::class,
    ]
]
```

Миграция, создаём группу, для хранения продукции, должна быть древовидная структура с неограниченной вложенностью, рекомендуется использовать [nested sets](https://packagist.org/packages/creocoder/yii2-nested-sets) , но для примера используем более простой пример

```
$this->createTable('{{%group}}', [
    'id' => $this->primaryKey(),
    'name' => $this->string()->comment('Наименование группы'),
    'parent_id' => $this->integer()->comment('Родительская группа'),
    'accounting_id' => $this->string()->comment('Код в 1С')->unique(),
]);
```

Список интерфейсов, которые необходимо реализовать [здесь](../interface/check?variable=groupClass)

createTree1c
==========================================

[](#createtree1c)

public static function createTree1c($groups)
---------------------------------------------

[](#public-static-function-createtree1cgroups-)

В функции **createTree1c** нам требуется реализовать создаение всего дерева продуктов родитель-&gt;потомок. Метод вызывается только один раз перед началом импорта, поэтому в этой функции нужно создать всё дерево групп полностью.

```
