1С 8.3 Перевод строки из Unicode в строку или структуру - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Перевод строки из Unicode в строку или структуру

Данные > Примеры кода 1С > 1С 8.3 Строка, текст, буквы
Примеры функций, которые корректно преобразуют в 1С 8.3 строку из Unicode в строку или структуру. И из строки в юникод.
Пример №1 Конвертация строки из Unicode в строку в 1С 8.3:
Функция ДекодироватьUniCodeВСтроку(ВходящаяСтрока) Экспорт

   Результат="";

   ЧтениеJSON = Новый ЧтениеJSON;
   ЧтениеJSON.УстановитьСтроку(ВходящаяСтрока);

   Пока ЧтениеJSON.Прочитать() Цикл
       Если НЕ(ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоОбъекта
           Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецОбъекта
           Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоМассива
           Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецМассива) Тогда

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

   Возврат Результат;

КонецФункции
Пример №2 Конвертация строки из Unicode в структуру в 1С 8.3:
Функция ДекодироватьUniCodeВСтруктуру(ВходящаяСтрока) Экспорт

   Результат="";

   ЧтениеJSON = Новый ЧтениеJSON;
   ЧтениеJSON.УстановитьСтроку(ВходящаяСтрока);

   Пока ЧтениеJSON.Прочитать() Цикл
       Если НЕ(ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоОбъекта
           Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецОбъекта
           Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.НачалоМассива
           Или ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.КонецМассива) Тогда

           Результат = Результат+?(НЕ Строка(ЧтениеJSON.ТекущееЗначение)=""
           И ЧтениеJSON.ТипТекущегоЗначения=ТипЗначенияJSON.ИмяСвойства,Символы.ВК+ЧтениеJSON.ТекущееЗначение+"="
           ,ЧтениеJSON.ТекущееЗначение);
       КонецЕсли;
   КонецЦикла;

   СтрРезультат = Новый Структура;
   Для А = 1 По СтрЧислоСтрок(Результат) Цикл
       ТекСтрока = СтрПолучитьСтроку(Результат, А);
       Если СокрЛП(ТекСтрока)<>"" Тогда
           Ключ = Лев(ТекСтрока,СтрНайти(ТекСтрока,"=")-1);
           Значение = СтрЗаменить(ТекСтрока,Ключ+"=","");
           Если Ключ<>Значение Тогда
               СтрРезультат.Вставить(Ключ,Значение);
           Иначе
               СтрРезультат.Вставить(Ключ,"");
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;

   Возврат СтрРезультат;

КонецФункции
Пример №3 Конвертация из строки в Unicode в 1С 8.3 (автор: Никитa Федькин):
Функция ДекодироватьСтрокуВUniCode(ВходящаяСтрока) Экспорт

   ЗаписьJSON = Новый ЗаписьJSON;
   ИспользоватьДвойныеКавычки = Ложь;
   ЭкранироватьОдинарныеКавычки = Ложь;
   ЭкранироватьСлэш = Ложь;

   ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(
       ,
       ,
       ИспользоватьДвойныеКавычки,
       ЭкранированиеСимволовJSON.NotASCIISymbols,
       ,
       ,
       ,
       ЭкранироватьОдинарныеКавычки,
       ЭкранироватьСлэш
   );
   ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
   ЗаписьJSON.ЗаписатьЗначение(ВходящаяСтрока);
   Результат = ЗаписьJSON.Закрыть();

   // Раскомментировать, если используется в OneScript - в 1.0.16 он добавляет одинарные кавычки вокруг строки.
   //Выход = Сред(Выход, 2, СтрДлина(Выход) - 2);

   Возврат Результат;

КонецФункции
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 08.05.2024
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому