akryll / bank
Yii 2 1C Bank-Client to Database Module
Installs: 16
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 3
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2025-04-12 18:59:24 UTC
README
Это расширение добавляет Парсер 1С БанкКлиент файлов.
Установка
Добавить "akryll/bank": "dev-master" в composer.json
или выполнить composer require akryll/bank "dev-master"
Создаем контроллер и добавляем в него следующее:
use akryll\Bank; use yii\web\UploadedFile; //... public function actionUpload() { $model = new BankForm(); $uploaded = ''; if (Yii::$app->request->isPost) { $model->file = UploadedFile::getInstance($model, 'file'); if ($model->validate()) { $file = 'export_' . rand(0, 999) . '.' . $model->file->extension; $model->file->saveAs('uploads/' . $file); return $this->redirect(['parse', 'file' => $file]); } } return $this->render('upload', ['model' => $model, 'uploaded' => $uploaded,]); } public function actionParse($file) { $filewr = 'uploads/' . $file; $bank = new Bank($filewr); $docs = $bank->getDocs(); $vars = get_class_vars('akryll\Document'); //Проверка правильности работы var_dump($vars);// Перечень свойств var_dump($docs);// Дамп всех документов } //...
Создаем модели:
//BankForm.php <?php namespace app\models; use yii\base\Model; use yii\web\UploadedFile; class BankForm extends Model { /** * @var UploadedFile|Null file attribute */ public $file; public $image; /** * @return array the validation rules. */ public function rules() { return [ [['file'], 'file'], ]; } } ?>
Создаем простую view для загрузки файла:
<?php // Upload.php use yii\widgets\ActiveForm; $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?> <?= $form->field($model, 'file')->fileInput() ?> <button>Submit</button> <?php ActiveForm::end(); ?>
Готово! Модель для сохранения нужных данных создать так сказать "по вкусу".
Перечень свойств объекта возвращаемого getDocs()
:
$rules = [ 'СекцияДокумент' => 'doctype', 'Номер' => 'inbankid', 'Дата' => 'docdate', 'Сумма' => 'summ', 'ДатаСписано' => 'outdate', 'ДатаПоступило' => 'indate', 'ПлательщикСчет' => 'payeraccount', 'Плательщик' => 'payerinfo', 'ПлательщикИНН' => 'payerinn', 'Плательщик1' => 'payer', 'ПлательщикРасчСчет' => 'payerdealaccount', 'ПлательщикБанк1' => 'payerbank1', 'ПлательщикБанк2' => 'payerbank2', 'ПлательщикБИК' => 'payerbik', 'ПлательщикКорсчет' => 'payerfixaccount', 'ПолучательСчет' => 'recieveraccount', 'Получатель' => 'recieverinfo', 'ПолучательИНН' => 'recieverinn', 'Получатель1' => 'reciever1', 'ПолучательРасчСчет' => 'recieverdealaccount', 'ПолучательБанк1' => 'recieverbank1', 'ПолучательБанк2' => 'recieverbank2', 'ПолучательБИК' => 'recieverbik', 'ПолучательКорсчет' => 'recieverfixaccount', 'ВидОплаты' => 'paytype', 'НазначениеПлатежа' => 'paydirection', 'СтатусСоставителя' => 'makerstatus', 'ПлательщикКПП' => 'payerkpp', 'ПолучательКПП' => 'recieverkpp', 'ПоказательКБК' => 'showerkbk', 'ОКАТО' => 'okato', 'ПоказательОснования' => 'showerfundament', 'ПоказательПериода' => 'showerperiod', 'ПоказательНомера' => 'showernumber', 'ПоказательДаты' => 'showerdate', 'ПоказательТипа' => 'showertype', 'СрокПлатежа' => 'paymentperiod', 'Очередность' => 'quenue', ];
getDocs(); возвращает массив объектов с данными.
Спасибо за внимание!