Загрузка платежей из Сбербанк Онлайн по картам физических лиц

27.09.18

Учетные задачи - Банковские операции

Код для загрузки выписки по карте из Сбербанк.Онлайн НЕ Сбербанк Бизнес Онлайн.

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

В Сбербанк.Онлайн нет возможности выгрузить выписку в формате XLS или CSV или любом другом формате для простого импорта в 1С. На текущий момент выписка предоставляется в обычном TXT файле без каких либо разделителей полей.

Данный программный код преобразует текстовый файл в массив структур с данными платежа.

Как использовать:

1. Закажите на почту выписку по карте через Сбербанк-Онлайн.
2. Скачайте файл выписки в формате TXT.
3. Отдать парсеру данные из файла

Функция МассивМесяцев()
	Месяцы = Новый Структура;
	Месяцы.Вставить("НУЛ",0);
	Месяцы.Вставить("ЯНВ",1);
	Месяцы.Вставить("ФЕВ",2);
	Месяцы.Вставить("МАР",3);
	Месяцы.Вставить("АПР",4);
	Месяцы.Вставить("МАЙ",5);
	Месяцы.Вставить("ИЮН",6);
	Месяцы.Вставить("ИЮЛ",7);
	Месяцы.Вставить("АВГ",8);
	Месяцы.Вставить("СЕН",9);
	Месяцы.Вставить("ОКТ",10);
	Месяцы.Вставить("НОЯ",11);
	Месяцы.Вставить("ДЕК",12);
	
	Возврат Месяцы;
КонецФункции

Функция РазбитьСтроку(Стр,Разделитель)
	
	ФСтр = Стр;
	Масс = Новый Массив;
	
	Пока Найти(ФСтр,Разделитель) <> 0 Цикл
		ФФ = Лев(ФСтр,Найти(ФСтр,Разделитель)-1);
		Масс.Добавить(ФФ);
		ФСтр = Прав(ФСтр,СтрДлина(ФСтр)-Найти(ФСтр,Разделитель));
	КонецЦикла;
	
	Масс.Добавить(ФСтр);
	
	Возврат Масс;
КонецФункции

Функция СбербанкВМассив(Текст)
	Месяцы = МассивМесяцев();

	Данные = РазбитьСтроку(Текст,Символы.ПС);
	
	Возвр = Новый Массив;
	
	ТекСтрока = Неопределено;
	Для Каждого Стр Из Данные Цикл
		Месяц1 = Неопределено;
		День1 = Неопределено;
		День2 = Неопределено;
		Месяц2 = Неопределено;
		Год2 = Неопределено;
		СуммаОперации = Неопределено;
		СуммаПлатежа = Неопределено;
		НомерОперации = Неопределено;
		
		Попытка День1 = Число(Сред(Стр, 21, 2)) Исключение КонецПопытки;
		Попытка Месяц1 = Число(Месяцы[Сред(Стр, 23, 3)]) Исключение КонецПопытки;
		Попытка День2 = Число(Сред(Стр, 27, 2)) Исключение КонецПопытки;
		Попытка Месяц2 = Число(Месяцы[Сред(Стр, 29, 3)]) Исключение КонецПопытки;
		Попытка Год2 = 2000 + Число(Сред(Стр, 32, 2)) Исключение КонецПопытки;

		// Operation comment and text before and after it
		СодержаниеПлатежа = Сред( Стр, 42, 22 );
		врм1 = Сред( Стр, 21, 21 );
		врм2 = Сред( Стр, 66, 34 );

		// Operation currency, summs and direction
		Валюта = Сред( Стр, 65, 3 );
		Попытка СуммаОперации = Число(СокрЛП(Сред( Стр, 69, 15 ))) Исключение КонецПопытки;
		Попытка СуммаПлатежа = Число(СокрЛП(Сред( Стр, 85, 11 ))) Исключение КонецПопытки;
		
		Плюс = ?(Сред( Стр, 96, 2 ) = "CR", Истина, Ложь);

		Попытка НомерОперации = Число(Сред( Стр, 35, 6 )) Исключение КонецПопытки;

		Если (врм1 = "                     ") И (врм2 = "                                  ") И СодержаниеПлатежа <> ("                     ") Тогда
			Если ( ТекСтрока <> Неопределено ) Тогда
				ТекСтрока.СодержаниеПлатежа = ТекСтрока.СодержаниеПлатежа + СодержаниеПлатежа;
			КонецЕсли;

		ИначеЕсли ЗначениеЗаполнено(День1) И ЗначениеЗаполнено(Месяц1) И ЗначениеЗаполнено(День2) И ЗначениеЗаполнено(Месяц2) И 
			ЗначениеЗаполнено(Год2) И ЗначениеЗаполнено(СодержаниеПлатежа) И ЗначениеЗаполнено(Валюта) Тогда

			Если ТекСтрока <> Неопределено Тогда
				ТекСтрока.СодержаниеПлатежа = СокрЛП(ТекСтрока.СодержаниеПлатежа);
				Возвр.Добавить(ТекСтрока);
				ТекСтрока = Неопределено;
			КонецЕсли;

			ДатаИсполнения = Дата(Формат(Год2,"ЧЦ=4; ЧРГ=; ЧН=0; ЧВН=; ЧГ=")+Формат(Месяц2,"ЧЦ=2; ЧН=0; ЧВН=")+Формат(День2,"ЧЦ=2; ЧН=0; ЧВН=")+"000000");
			
			Год1 = ?(Месяц1 > Месяц2, Год2 - 1, Год2);
			ДатаОперации = Дата(Формат(Год1,"ЧЦ=4; ЧРГ=; ЧН=0; ЧВН=; ЧГ=")+Формат(Месяц1,"ЧЦ=2; ЧН=0; ЧВН=")+Формат(День1,"ЧЦ=2; ЧН=0; ЧВН=")+"000000");

			ТекСтрока = Новый Структура;
			ТекСтрока.Вставить("ДатаОперации",ДатаОперации);
			ТекСтрока.Вставить("ДатаИсполнения",ДатаИсполнения);
			ТекСтрока.Вставить("НомерОперации",НомерОперации);
			ТекСтрока.Вставить("СуммаОперации",СуммаОперации);
			ТекСтрока.Вставить("Валюта",Валюта);
			ТекСтрока.Вставить("СуммаПлатежа",?(Плюс,СуммаПлатежа,-1*СуммаПлатежа));
			ТекСтрока.Вставить("СодержаниеПлатежа",СодержаниеПлатежа);
		ИначеЕсли (ТекСтрока <> Неопределено ) Тогда
			ТекСтрока.СодержаниеПлатежа = СокрЛП(ТекСтрока.СодержаниеПлатежа);
			Возвр.Добавить(ТекСтрока);
			ТекСтрока = Неопределено;
		КонецЕсли;

	КонецЦикла;

	Если ТекСтрока <> Неопределено Тогда
		ТекСтрока.СодержаниеПлатежа = СокрЛП(ТекСтрока.СодержаниеПлатежа);
		Возвр.Добавить(ТекСтрока);
		ТекСтрока = Неопределено;
	КонецЕсли;

	Возврат Возвр;

КонецФункции

Процедура КнопкаВыполнитьНажатие(Кнопка)
	Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	Если Диалог.Выбрать() Тогда
		ИмяФайла = Диалог.ПолноеИмяФайла;
		
		Текст = Новый ТекстовыйДокумент;
		Текст.Прочитать(ИмяФайла);
			
		ДанныеФайла = Текст.ПолучитьТекст();
		МассивОпераций = СбербанкВМассив(ДанныеФайла);
		Для Каждого Стр Из МассивОпераций Цикл
			НовСтр = ТабличноеПоле1.Добавить();
			ЗаполнитьЗначенияСвойств(НовСтр,Стр);
		КонецЦикла;
	КонецЕсли;
КонецПроцедуры

 

Вступайте в нашу телеграмм-группу Инфостарт

Сбербанк Выписка обработка загрузка

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Обмен с интернет-банком 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

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

73200 руб.

26.03.2026    1458    2    2    

1

Банковские операции Обмен с интернет-банком Эквайринг/ридер магнитных карт Программист Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

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

19520 руб.

21.03.2023    24069    163    39    

124

Банковские операции Обмен с интернет-банком Бухгалтер 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Беларусь Россия Бухгалтерский учет Платные (руб)

Типовая обработка "Клиент-банк" из конфигурации 1С "Бухгалтерия для Беларуси, редакция 2.1" корректно работает с выписками только банка "Дабрабыт", до 28.01.2019 "Москва-Минск". А бухгалтеру нужно работать и с другими банками и с другими конфигурациями. Для этого было разработано расширение, которое позволит решить данную проблему!

12200 руб.

10.10.2017    42854    99    49    

83

Банковские операции Взаиморасчеты Учет документов Бухгалтер Пользователь 1С 8.3 1С:Бухгалтерия 3.0 Россия Бюджетный учет Платные (руб)

Расширение для конфигурации 1С:Бухгалтерия 3.0. Многоуровневое согласование заявок на оплату с оповещением и делегированием прав.

15250 руб.

09.09.2025    2565    9    0    

7

Обмен с интернет-банком Банковские операции Программист Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Модуль представляет собой комплексную автоматизацию обмена данными 1С с банком для БП 3.0, ERP 2.4, ERP 2.5. Выписка клиент-банка загружается и обрабатывается по Вашим правилам. Заполнение реквизитов документов, анализ назначения платежа. Работа с клиент банком не отличается от типового варианта, а документы автоматически заполняются так, как нужно вам. Дополнительная обработка, работающая совместно с основным расширением позволяет подключать собственные произвольные алгоритмы.

20740 руб.

03.04.2013    133224    267    381    

171

Банковские операции Взаиморасчеты Займы, кредит, лизинг 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Платные (руб)

Расширение для 1С:БП 3.0 по расчету процентов по статье 395 ГК РФ. Возможности расчета: 1. Расчет процентов без учета и с учетом отсрочек. 2. Расчет процентов с учетом отсрочек платежей. 3. Расчет процентов по контрагенту в целом. 4. Расчет процентов по одному, либо нескольким договорам (в 1С должна быть включена опция "Учет по договорам"

5084 руб.

04.08.2025    2329    3    1    

3

Пакетная печать Банковские операции Кассовые операции Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Групповая печать фискальных чеков по документам "Поступление на расчетный счет" с возможностью настройки НДС, признаков расчета и автоматической отправкой чеков клиентам.

6499 руб.

21.08.2019    23121    89    11    

26
Для отправки сообщения требуется регистрация/авторизация