При настройке обмена с банком в типовых конфигурациях 1С (особенно в старых версиях или специализированных решениях) часто возникает вопрос: где находятся сами «правила» преобразования данных? Мы привыкли к тому, что в современных системах используются настройки, хранящиеся в справочниках, однако в ряде случаев логика парсинга текстовых файлов «зашита» непосредственно в программный код. Давайте разберем, как найти этот код и внести в него необходимые изменения.
Прежде всего, важно уяснить, что в большинстве конфигураций «Бухгалтерия для Беларуси» или аналогичных отраслевых решений, обмен через текстовый файл — это не работа с внешними XML-правилами, а жестко прописанный алгоритм обработки строковых данных. Сами форматы файлов (такие как стандарт 1CClientBankExchange) обрабатываются функциями, которые последовательно читают файл, разбирают его на реквизиты и формируют документы в базе данных.
Если вы не находите отдельных «правил» или внешних файлов конфигурации, значит, вы имеете дело с процедурным подходом. Вся «магия» формирования документов происходит внутри процедур и функций обработки.
Для начала проанализируем структуру конфигурации. В большинстве случаев логика сосредоточена в общих модулях, которые вызываются обработкой обмена. Рассмотрим алгоритм действий:
Конфигураторе.Обработки и найдите объект, отвечающий за обмен (обычно он называется КлиентБанк, ЗагрузкаВыписки или ОбменСБанками).ОбменСБанками.ПрочитатьВыпискуСбербанк(), ПрочитатьВыпискуClientBankExchange() и аналогичные. Именно в них осуществляется парсинг файла.Если визуальный поиск не дает результатов, используем возможности Отладчика. Это самый эффективный способ понять, какая часть кода выполняется при загрузке выписки:
Рассмотрим процесс отладки по шагам:
Предприятие и откройте обработку обмена с банком.Конфигураторе откройте модуль обработки, отвечающий за интерфейс, и поставьте точку останова в процедуре, которая срабатывает при нажатии кнопки «Загрузить».Стек вызовов.F11, переходите по вызовам процедур. Вы увидите, в какой именно общий модуль или процедуру передается управление для парсинга файла.После того как вы нашли нужную процедуру, вы можете изучить, как именно программа считывает данные. Обычно это выглядит как работа с объектом ТекстовыйДокумент. Разберем пример типичной структуры логики:
// Пример схематичного кода обработки файла
ТекстДокумента = Новый ТекстовыйДокумент;
ТекстДокумента.Прочитать(ИмяФайла);
Для Сч = 1 По ТекстДокумента.КоличествоСтрок() Цикл
СтрокаФайла = ТекстДокумента.ПолучитьСтроку(Сч);
// Анализ каждой строки на предмет ключевых слов, например «СекцияРасчетныйСчет»
Если СтрНайти(СтрокаФайла, "СекцияРасчетныйСчет") > 0 Тогда
// Вызов процедуры парсинга реквизитов счета
КонецЕсли;
КонецЦикла;
Когда вы обнаружили конкретное место в коде, где происходит чтение нужного вам реквизита, вы можете внести изменения. Однако помните, что внесение правок в типовые модули делает конфигурацию «нетиповой», что может усложнить дальнейшее обновление программы.
При работе с обменом важно помнить о двух вариантах:
1CClientBankExchange, не рекомендуется вносить изменения в логику его обработки, так как она является эталонной.Объекта.Записать().Анализируя ситуацию, мы видим, что «Название программы» в форме обмена — это зачастую лишь справочная информация или ключ выбора ветки кода. Если нужного формата нет, его необходимо реализовывать программно, добавляя новую ветку в алгоритм обработки файла.