Известно, что для того, чтобы работать в 1С с казахскими шрифтами, нужно изменить кодировку в ОС. Иногда это может быть не очень удобно. Посудите сами: изменяется порядок сортировки. Необходимо пересоздавать базы, все клиентские системы, работающие с этими базами, переводить на новую кодировку. А если на клиентской машине стоит кодировка отличная от стандартной 1251, то 1С:Предприятие просто не сможет подключится к базе данных со стандартной кодировкой. Т.е. изменяя системную кодировку, вы должны все рабочие базы 1С перевести на новую кодировку. Со старыми версиями SQL опять же возникают сложности хранения и обработки данных. А ведь нужно всё это лишь для одной цели: Отправлять текст с казахскими буквами в третью программу. Будь то хоть Банк-клиент, хоть Программа для отправки налоговой или статистической отчетности.
Я решил эту проблему простым способом. Предлагаю не менять системной кодировки. В базе данных можно хранить текст и без казахских букв. А в тот момент, когда мы выгружаем данные из 1С в другую программу, просто преобразовать специальные буквосчетания в казахские буквы.
Кодировка СТ РК 1048-2002 (Windows), отличается от стандартной 1251 лишь тем, что в нее добавлены 9 новых букв:
Буква |
Подстрока |
Десятичный код |
HEX |
|0; |
Э’ |
163 |
A3 |
|1; |
э’ |
188 |
BC |
І |
И’ |
178 |
B2 |
і |
и’ |
179 |
B3 |
v6; |
Н’ |
189 |
BD |
v7; |
н’ |
190 |
BE |
u0; |
Г’ |
170 |
AA |
u1; |
г’ |
186 |
BA |
w8; |
У’ |
175 |
AF |
w9; |
у’ |
191 |
BF |
x0; |
У’’ |
161 |
A1 |
x1; |
у’’ |
162 |
A2 |
u8; |
К’ |
141 |
8D |
u9; |
к’ |
157 |
9D |
}6; |
О’ |
165 |
A5 |
}7; |
о’ |
180 |
B4 |
y0; |
Х’ |
142 |
8E |
y1; |
х’ |
158 |
9E |
Функция Каз(Текст) Экспорт
//* преобразовать казахские символы
Рез=СтрЗаменить(Текст,"Э'",Симв(163));
Рез=СтрЗаменить(Рез,"э'",Симв(188));
Рез=СтрЗаменить(Рез,"И'",Симв(178));
Рез=СтрЗаменить(Рез,"и'",Симв(179));
Рез=СтрЗаменить(Рез,"Н'",Симв(189));
Рез=СтрЗаменить(Рез,"н'",Симв(190));
Рез=СтрЗаменить(Рез,"Г'",Симв(170));
Рез=СтрЗаменить(Рез,"г'",Симв(186));
Рез=СтрЗаменить(Рез,"У''",Симв(161));
Рез=СтрЗаменить(Рез,"у''",Симв(162));
Рез=СтрЗаменить(Рез,"У'",Симв(175));
Рез=СтрЗаменить(Рез,"у'",Симв(191));
Рез=СтрЗаменить(Рез,"К'",Симв(141));
Рез=СтрЗаменить(Рез,"к'",Симв(157));
Рез=СтрЗаменить(Рез,"О'",Симв(165));
Рез=СтрЗаменить(Рез,"о'",Симв(180));
Рез=СтрЗаменить(Рез,"Х'",Симв(142));
Рез=СтрЗаменить(Рез,"х'",Симв(158));
Возврат Рез;
КонецФункции // ПреобразоватьКазСимв
Пример использования:
Каз("К'азак'стан Республикасы") = u8;азаu9;стан Республикасы