При работе с банковскими документами, такими как выгрузка в клиент-банк и SWIFT-файлы (форматы MT100, MT102), пользователи часто сталкиваются с тем, что специфические символы казахского алфавита (например, Ә, Ғ, Қ, Ң, Ө, Ұ, Ү, Һ, І) при выгрузке превращаются в «вопросики» или «квадратики». Это происходит даже в тех случаях, когда внутри самой программы 1С данные отображаются корректно. В данной статье мы подробно разберем, почему возникает эта проблема и как настроить систему и программу для правильного формирования файлов.
Для начала проанализируем техническую сторону вопроса. Если для ЭДО актуальна выгрузка и загрузка файлов в XML, то для банковских систем важна кодировка. Исторически в Казахстане использовался стандарт СТ РК 1048-2002, который расширял стандартную кириллическую кодировку Windows-1251. В ней казахские буквы подменяли редко используемые технические символы. Однако современные системы и банки постепенно переходят на общемировой стандарт Unicode (UTF-8).
Рассмотрим основные причины искажения символов:
ANSI (Windows-1251), которая по умолчанию не содержит казахских букв, если не установлены специальные драйверы (типа KazWin).Самый надежный способ решить проблему — это формирование файла в кодировке UTF-8. Большинство современных казахстанских банков (Halyk, Kaspi, ЦентрКредит) уже поддерживают этот формат. Разберем, как это реализовать программно в версиях 1С 8.2 и 8.3.
Для этого мы будем использовать объект ЗаписьТекста. Посмотрим на пример кода, который гарантирует сохранение специфических символов:
// Создаем объект для записи текста с явным указанием кодировки UTF-8
ПутьКФайлу = "C:\SWIFT\export_mt102.txt";
Запись = Новый ЗаписьТекста(ПутьКФайлу, КодировкаТекста.UTF8);
// Допустим, у нас есть строка с ФИО сотрудника
ТекстСтроки = "Сотрудник: Әбдірахманов Ғалымжан";
// Записываем строку в файл
Запись.ЗаписатьСтроку(ТекстСтроки);
// Обязательно закрываем файл для сохранения изменений
Запись.Закрыть();
Если же ваш банк до сих пор требует старую 8-битную кодировку, необходимо убедиться, что в системе установлен шрифт, поддерживающий СТ РК 1048-2002, и при выгрузке используется кодировка "windows-1251". Однако в современных условиях это считается устаревшим подходом.
Часто проблема кроется не в коде 1С, а в системных настройках. В Windows 10 и 11 появилась настройка, которая может «ломать» выгрузку из старых конфигураций 1С (особенно 7.7). Выясним, как ее проверить:
После изменения этой настройки обязательно перезагрузите компьютер.
В версии 7.7 поддержка Юникода практически отсутствует. Рассмотрим ситуацию, когда мы используем шрифты KazWin. В этом случае казахские буквы записываются как «псевдосимволы» с определенными ASCII-кодами. Чтобы файл «прочитался» банком, его нужно выгружать как обычный текстовый файл, но важно, чтобы на стороне банка стояла такая же кодовая страница.
Если вы столкнулись с возвратом файла из банка, попробуйте следующий лайфхак: откройте сформированный файл в текстовом редакторе Notepad++. В меню «Кодировки» выберите «Преобразовать в UTF-8 (без BOM)» и сохраните файл. Часто это решает проблему без переписывания кода выгрузки.
Рассмотрим ситуацию: вы открываете файл в обычном Блокноте и видите «кракозябры». Означает ли это, что файл испорчен? Не всегда. Блокнот Windows часто ошибается при автоматическом определении кодировки.
Для корректной проверки выполним следующие шаги:
F3). В нем можно переключать кодировки (нажимая A — ANSI, S — UTF-8), чтобы увидеть, в каком режиме буквы отображаются правильно.Windows-1251, а буквы казахские, значит, файл записан в старом стандарте. Если UTF-8 — в новом.Проанализировав проблему, мы можем составить краткий алгоритм действий:
ЗаписьТекста с указанием этой кодировки.И помните: если данные в самой 1С введены корректно, проблема всегда заключается в способе записи байтов в текстовый файл. Использование современных методов записи (объекты платформы 8.3) практически полностью исключает возникновение подобных ошибок.