Обработка выписок формата 1С

Здесь можно найти готовые «кирпичики» — части кода, пригодные для построения более крупных проектов, а также решения различных типовых и не очень задач на VB.

Модератор: Brickgroup

nouyana
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 29.01.2016 (Пт) 17:42

Обработка выписок формата 1С

Сообщение nouyana » 11.03.2017 (Сб) 17:45

Написал небольшой модуль обработки текстовых банковских выписок формата 1С-Пердприятие. В этом формате выписки предоставляет почти любой банк.
Функция GetVipiska формирует массив Vipiska (пользовательского типа) из текстового файла выписки и возвращает True, если всё произошло без ошибок. Если загрузка произошла с ошибкой, то информация об ошибке передаётся в переменные nErrNum и sErrDescr, а также отображается в окне Immidiate. Далее можете делать с этим массивом всё, что угодно - все данные уже в нужных форматах.

Vipiska1C.zip
Версия 1.4
(8.25 Кб) Скачиваний: 0

Прошу тестировать на ваших выписках (вдруг у разных банков есть свои нюансы) и предлагать варианты оптимизации кода. Пример тестирования:
Код: Выделить всё
Sub Main()
   Dim i&
   Dim sPath     As String
   Dim nErrNum   As Long
   Dim sErrDescr As String

   sPath = App.Path & "\" & "выписка.txt"
   If GetVipiska(sPath, nErrNum, sErrDescr) Then
      For i = 0 To UBound(Vipiska)
         With Vipiska(i)
            Debug.Print "Дата: "; .dOperDate
            Debug.Print "Приход: "; .nPrihod
            Debug.Print "Расход: "; .nRashod
            Debug.Print "Контр: "; .sKontName
            Debug.Print .sNaznPlat
         End With
      Next
   Else
      MsgBox sErrDescr, vbCritical, _
         "Ошибка №" & nErrNum & " при загрузке выписки"
      ReDim Vipiska(0) 'Очищаем ошибочный массив
   End If
End Sub

Функция GetVipiska имеет четыре необязательных параметра. dBeg и dEnd предназначены на случай, если вы хотите загрузить не всю выписку из файла, а только операции, попадающие (включительно) в этот диапазон дат (по дате операции, а не по дате документа). nErrNum и sErrDescr, как уже было сказано выше, возвращают информацию об ошибке загрузки.
Последний раз редактировалось nouyana 26.03.2017 (Вс) 8:23, всего редактировалось 4 раз(а).

nouyana
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 29.01.2016 (Пт) 17:42

Re: Обработка выписок формата 1С

Сообщение nouyana » 15.03.2017 (Ср) 9:32

Версия 1.2. Исправил серьёзный баг, который выявился при тестировании выписки, полученной из другого банка. Тестируйте и отписывайтесь, пожалуйста.

nouyana
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 29.01.2016 (Пт) 17:42

Re: Обработка выписок формата 1С

Сообщение nouyana » 18.03.2017 (Сб) 12:06

Версия 1.3 beta
  • Исправлен ещё один существенный баг, влияющий на скорость работы.
  • Добавлен обработчик ошибок.
  • Добавлены параметры nErrNum и sErrDescr. Процедура стала функцией, возвращающей True, если выписка загружена без ошибок.

nouyana
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 55
Зарегистрирован: 29.01.2016 (Пт) 17:42

Re: Обработка выписок формата 1С

Сообщение nouyana » 26.03.2017 (Вс) 6:51

Версия 1.4
  • В 1,5 раза ускорена обработка документов, не попадающих в диапазон дат dBeg и dEnd
  • Исправлены мелкие недочёты


Вернуться в Кирпичный завод

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList