Загрузка платежных поручений в формате казначейства (TXPP170101) в БГУ 1.0

25.06.19

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

Загружает в базу (БГУ 1.0) Платежные поручения из файлов *.pp* расположенных в указанном каталоге. Считывает данные из файла в соответствии с описанием формата.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Загрузка Платежных поручений в формате казначейства (TXPP170101) в БГУ 1.0:
.epf 22,29Kb ver:2.00
21
21 Скачать (1 SM) Купить за 1 850 руб.

1) Указываем Учреждение, Каталог (где лежат файлы), Договор (затычка для аналитики 302х счетов), Контрагент ЗП (Контрагент для аналитики 302.1Х - на кого начисляется зарплата).

2) "Считать данные" - подготовительный этап на котором файлы считываются во ВнутреннееПредставлениеДанных (далее по тексту, см скриншот 2).

3) "Заполнить"

4) Установить соответствие прочитанным в файлах КБК (PPST.KBK), Тип КБК (PPST.TYPE_KBK), ДК - Код цели (PPST.ADD_KLASS) И КБК в Базе данных

5) "Выполнить" для загрузки документов.

 

С помощью этой обработки я загружал ПП из файлов в базу Автономного учреждения (Конфигурация БГУ 1.0). Сразу предупрежу, что большое влияние на процесс загрузки сыграет региональная специфика. У нас в регионе используется определенная структура Назначения платежа, и обработка очень много информации берёт именно из него. (КВД, КЭК, ДК - код цели, РК - региональная классификация, СчетДебета в конце концов)

нпр: (013.244:12363,91) ЭК 223 л/с 3001304ХХХХ ДК 1.0113.4940110020.01 РК 2231 БО 3604131201900430 упд №6301/УС/16485 от 30.04.2019г, за теплоэнергию за апрель 2019, в т.ч 2060,65 НДС 20%

 

Ну а теперь немного хороших новостей: Велика вероятность, что обработка может существенно упростить вам загрузку любого другого Документа из файла в формате ФК. Обработка открывает первый файл в папке, считывает в нём название и версию формата (TXPP170101, TXZR170101). Считывает из базы данных описание формата (FK.NUM_VER, FK.FORMER,..., PPT.INN_PAY...) и в соответствии с этим описанием формирует ВнутреннееПредставлениеДанных в виде Структуры (см. скриншот №2) Теоретически ВнутреннееПредставлениеДанных сформируется для любого файла соответствующего формату казначейства, описание которого есть в базе данных  (Справочники.Форматы) Вам не придётся отсчитывать палочки ("|"), а процесс заполнения документов, вы будете описывать приблизительно сл. образом 

Объект.ИННПлательщика = PPT.INN_PAY;

Велика вероятность, что написанная вами обработка спокойно продолжит работать даже после обновления форматов.

Тестировалось на релизе 1.0.58.2.

Загрузка Бюджет СУФД УФК ФК СЭД Платежка Платежное поручение ПП Казначейство Формат TXPP170101 БГУ Заявка кассовый расход

См. также

Внешние источники данных Программист Бизнес-аналитик Пользователь Платформа 1С v8.3 Управляемые формы Анализ и прогнозирование 1C:Бухгалтерия Узбекистан Беларусь Кыргызстан Молдова Россия Казахстан Платные (руб)

Готовое решение для автоматической выгрузки данных из 1С 8.3 в базу данных ClickHouse, PostgreSQL или Microsoft SQL для работы с данными 1С в BI-системах. «Экстрактор данных 1С в BI» работает со всеми типовыми и нестандартными конфигурациями 1С 8.3 и упрощает работу бизнес-аналитиков. Благодаря этому решению, специалистам не требуется быть программистами, чтобы легко получать данные из 1С в вашей BI-системе.

28500 руб.

15.11.2022    22106    23    49    

39

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

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

19200 руб.

21.03.2023    12510    89    16    

76

Внешние источники данных Зарплата Бюджетный учет Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 7.хх учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

84000 руб.

24.04.2017    52108    104    165    

91

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

19.08.2020    25976    25    1    

27

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

84000 руб.

05.10.2022    11376    13    8    

15

Внешние источники данных Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Готовая интеграция для управляемых форм. Встраивается в вашу 1С как расширение. Реализует автоматический обмен данными между 1С (1С:Фитнес клуб и аналогов) и СКУД RusGuard, автоматизирует бизнес-процессы по созданию и учету сотрудников в СКУД. Значительно упрощает работу специалистов отдела кадров и отдела безопасности: избавляет от двойного ввода информации в 1С и СКУД.

94999 руб.

11.07.2024    1083    1    0    

3

Зарплата Внешние источники данных Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 8 организаций (далее Парус) в конфигурацию 1С:Зарплата и управление персоналом, ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

120000 руб.

07.06.2021    13532    2    3    

3

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

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

10.10.2017    38566    84    Xershi    41    

72
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. psa247 21 26.10.20 15:55 Сейчас в теме
2. psa247 21 04.11.20 15:45 Сейчас в теме
Денис, вроде, на файлах-реестрах (где в один файл выгружается несколько ПП) некорректно считывает все платежки. Точнее, цепляет только последнюю запись, т.е. создает один контейнер с описанием файла, вместо N-штук
3. dvsidelnikov 74 04.11.20 17:52 Сейчас в теме
(2) В каком формате грузим? Пришли пример файла.

P.S. когда считывал TXBD натыкался на проблему, решал её буквально исправлением пары строчек, но вот каких без отладки мне не вспомнить.
6. psa247 21 05.11.20 13:44 Сейчас в теме
Предыдущий пост делать не обязательно, но хуже не будет. Короче, как Я решил эту проблему:

в функции

Функция ВнутреннееПредставлениеДанных(ДанныеВФорматеКазначейства) Экспорт
//Определимся с форматом
КодФормата = ВерсияФормата(ДанныеВФорматеКазначейства);
Если КодФормата = Неопределено Тогда
Сообщить("Формат не определён.");
Возврат Неопределено;
КонецЕсли;

Формат = Справочники.КС_Форматы.НайтиПоНаименованию(КодФормата);
ВнутреннееОписаниеФормата = ВнутреннееОписаниеФормата(Формат);

МассивРазделителейПС = Новый Массив;
МассивРазделителейПС.Добавить(Символы.ПС);
МассивСтрокФайла = СтрРазделить(ДанныеВФорматеКазначейства, МассивРазделителейПС);

МассивРазделителейПолей = Новый Массив;
МассивРазделителейПолей.Добавить("|");

РезультатРаботы = Новый Массив; // ПРОФ
Результат = Новый Структура;

результат работы функции превратил в массив "результатов", далее ....

//Построчно читаем содержимое файла
//0) FK|TXPP170101|1С:Предприятие|8||
//1) FROM|2|10504131|...
Для Каждого СтрокаФайла из МассивСтрокФайла Цикл
Если ПустаяСтрока(СтрокаФайла) Тогда
Продолжить;
КонецЕсли;
//Разбираем строку файла на поля (в первом поле название группы полей)
//0)FK
//1)TXPP170101
//2)1С:Предприятие
МассивПолейСтрокиФайла = СтрРазделить(СтрокаФайла,МассивРазделителейПолей);
ГруппаПолей = МассивПолейСтрокиФайла[0];
СоставГруппыПолей = ВнутреннееОписаниеФормата[ГруппаПолей].Состав;
Если ВнутреннееОписаниеФормата.Свойство(ГруппаПолей) Тогда
Если ВнутреннееОписаниеФормата[ГруппаПолей].Тип = "КоллекцияРеквизитов" Тогда
//FK, FROM...
//{ ПРОФ
Если Результат.Свойство(ГруппаПолей) = ИСТИНА Тогда
Врем = СкопироватьСтруктуру(Результат);
РезультатРаботы.Добавить(Врем);

Результат = Новый Структура;
КонецЕсли;
//} ПРОФ


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


добавил признак появления новых "документов". И в случае, если в одном файле находится несколько документов, то сохранял то, что уже "прочитали" из файла в массив результатов и создавали новую структуру для чтения в нее нового документа.
4. psa247 21 05.11.20 08:18 Сейчас в теме
5. psa247 21 05.11.20 13:07 Сейчас в теме
Скорее всего здесь идет не создание нового контейнера, а перезатирание созданного, проверь, плиз:

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

	Для Каждого СтрокаПравилаОбмена из пФормат.ПравилаОбмена Цикл
		Если СтрокаПравилаОбмена.Отключить Тогда
			Продолжить;
		КонецЕсли;
		
		тПолеФайла = СтрокаПравилаОбмена.ПолеФайлаПередачи;
		МассивСтрок = СтрРазделить(тПолеФайла, МассивРазделителей);
		ЛевоеЗначение = МассивСтрок[0];
		ПравоеЗначение = МассивСтрок[1];
		НачалоОбъекта = СтрокаПравилаОбмена.Условие = "*НачалоОбъекта";
		СменилосьЛевоеЗначение = ПредыдущееЛевоеЗначение <> ЛевоеЗначение;
		ЭтоТабличнаяЧасть = Не ПустаяСтрока(СтрокаПравилаОбмена.ТабличнаяЧасть);
Показать


Если СменилосьЛевоеЗначение Тогда
Результат.Вставить(ЛевоеЗначение, Новый Структура);
Результат[ЛевоеЗначение].Вставить("Имя", ЛевоеЗначение);
Результат[ЛевоеЗначение].Вставить("Состав", Новый Массив);

Результат[ЛевоеЗначение].Состав.Добавить(ПравоеЗначение);
			Результат[ЛевоеЗначение].Вставить("Тип");
			Результат[ЛевоеЗначение].Вставить("Владелец");
8. dvsidelnikov 74 05.11.20 14:16 Сейчас в теме
(5) Готово. Нужно заменить процедуру:

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

	Для Каждого СтрокаПравилаОбмена из пФормат.ПравилаОбмена Цикл
		Если СтрокаПравилаОбмена.Отключить Тогда
			Продолжить;
		КонецЕсли;
		
		тПолеФайла = СтрокаПравилаОбмена.ПолеФайлаПередачи;
		МассивСтрок = СтрРазделить(тПолеФайла, МассивРазделителей);
		ЛевоеЗначение = МассивСтрок[0];
		ПравоеЗначение = МассивСтрок[1];
		НачалоОбъекта = СтрокаПравилаОбмена.Условие = "*НачалоОбъекта";
		СменилосьЛевоеЗначение = ПредыдущееЛевоеЗначение <> ЛевоеЗначение;
		ЭтоТабличнаяЧасть = Не ПустаяСтрока(СтрокаПравилаОбмена.ТабличнаяЧасть);
		//костыль конкретно для TXBD180101
		//Если СменилосьЛевоеЗначение и ЛевоеЗначение = "BD" Тогда
		//	НачалоОбъекта = Истина;
		//КонецЕсли;
		
		Если СменилосьЛевоеЗначение и ЛевоеЗначение = "ZR" Тогда
			НачалоОбъекта = Истина;
		КонецЕсли;
		
		Если СменилосьЛевоеЗначение и ЛевоеЗначение = "ZRST" Тогда
			ЭтоТабличнаяЧасть = Истина;
		КонецЕсли;

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


P.S. Проблема в том, что я так и не придумал как глядя в правила обмена отличить начало нового объекта от начала новой строки... Приходится указывать явно условие в Функции
9. psa247 21 05.11.20 14:19 Сейчас в теме
(8) Это придется под каждый формат подстраиваться. Рассмотри мой вариант в 6м и 7м ответе
11. psa247 21 05.11.20 14:27 Сейчас в теме
(8) Я бы сделал следующим образом. Если произошла смена левой части, то проверил бы. В структуре Результата уже есть такая "левая часть", если есть - то это новый документ
12. dvsidelnikov 74 05.11.20 14:36 Сейчас в теме
(11) ... или это строка табличной части документа... лучше уж сверять левую часть с интерактивно набранными списками наименований Объектов и ТабличныхЧастей

схематично:

        Если СменилосьЛевоеЗначение и НаименованияОбъектов.Найти(ЛевоеЗначение) Тогда
            НачалоОбъекта = Истина;
        КонецЕсли;
        
        Если СменилосьЛевоеЗначение и НаименованияТабличныхЧастей.Найти(ЛевоеЗначение) Тогда
            ЭтоТабличнаяЧасть = Истина;
        КонецЕсли;
13. psa247 21 05.11.20 14:38 Сейчас в теме
(12) Данный подход требует подготовки алгоритма действий и запоминания. Через год, когда понадобится уже и не вспомнить что и где интерактивно набирать. Мне мой вариант предпочтительнее. Сделал и забыл. Работает как часы
14. psa247 21 05.11.20 14:47 Сейчас в теме
(12) Если это строка табличной части, то она идет друг-за-другом, если был "перерыв" в "левых" частях, то это однозначно признак нового документа. В общем, решай сам
7. psa247 21 05.11.20 13:47 Сейчас в теме
Но, чтобы уже прочитанный результат не "затерся" конструкцией Результат = Новый Структура;
использовал копирование:

Врем = СкопироватьСтруктуру(Результат);
РезультатРаботы.Добавить(Врем);

сама фукнкция копирования структуры:

Функция СкопироватьСтруктуру(Входящая)
	КопияСтруктуры = Новый Структура;
	Для Каждого ЭлементСтруктуры Из Входящая Цикл
		КопияСтруктуры.Вставить(ЭлементСтруктуры.Ключ, ЭлементСтруктуры.Значение);
	КонецЦикла;
	Возврат(КопияСтруктуры);
КонецФункции
Показать

В результате вышеперечисленного получил массив состоящий из нескольких прочитанных документов. Недостатком будет только то, что у всех остальных документов, что идут за первым не будет "шапочных" данных типа FR, FROM. Но и без них хорошо, так как информации необходимой для испорта документов они не несут.
10. psa247 21 05.11.20 14:21 Сейчас в теме
Да, если по моему варианту, то Массив результатов надо обработать в цикле, естественно. С тебя стармани ))
15. DENSKR 16 13.07.21 22:30 Сейчас в теме
Имеется ли готовое решение? При попытке считать данные "Поле объекта не обнаружено (FK|TXBH190101|ППО АСФК|32.4.0C(+0||" Не понятно почему...
16. dvsidelnikov 74 14.07.21 06:39 Сейчас в теме
(15) Дайте больше данных. В какой конфигурации идёт работа? Загружены ли в вашу базы форматы обмена, в частности TXBH190101? Ну и было бы неплохо посмотреть на файл который вы пытаетесь загрузить.
17. DENSKR 16 14.07.21 07:12 Сейчас в теме
Конфигурация БГУ 2, форматы обмена не загружены, есть идея использовать вашу обработку в целях автоматизации отдела анализа данных.
18. dvsidelnikov 74 14.07.21 07:33 Сейчас в теме
(17) в качестве пояснения для других читающих: обсуждение перешло в личную переписку.
19. manas 27 07.03.22 09:39 Сейчас в теме
(17) Тоже интересует обработка для БГУ 2.0
20. dvsidelnikov 74 05.06.22 09:39 Сейчас в теме
(19) какие документы и из какого формата хотите загружать?
При загрузке платежных поручений есть сложность, которая заключается в том, что формат TXPP не предусматривает наличие данных для заполнения реквизитов КВД, КЭК и, соответственно, СчетДебета. В случае с нашим регионом эти данные можно раздобыть проанализировав Назначение платежа, т.к. у него чёткая структура и порядок полей обязательных для заполнения.
Оставьте свое сообщение