Меняем кодировку файла на UTF-8 (для СЗВ-СТАЖ)

01.02.18

Разработка - Инструментарий разработчика

В ЗиК 7.7 при выгрузке СЗВ-СТАЖ для перевода кодировки файла в UTF-8 используется COM-объект ADODB.Stream. У клиентов при работе с ним 1С полностью вылетала. Здесь приведён скрипт изменения кодировки файла на PowerShell и способ изменения выгрузки в ЗиК 7.7.

Скачать исходный код

Наименование Файл Версия Размер
ChangeEncoding
.ps1 1,14Kb
5
.ps1 1.0 1,14Kb 5 Скачать

Старые клиенты обратились с проблемой: не выгружается СЗВ-Стаж. При выгрузке процесс доходил до конца и в конце программа просто вылетала с ошибкой.

При детальном разборе выяснилось, что файл выгружается нормально в кодировке Windows-1251. Затем производится конвертация в кодировку UTF-8 при помощи COM-объекта ADODB.Stream. Вот самый конец функции ФайлСЗВ_СТАЖ() в модуле Отчет.ПодготовкаСведенийДляПФР2017:

АдоДБСтрим = CreateObject("Adodb.Stream");
АдоДБСтрим.Charset="windows-1251";
АдоДБСтрим.Type = 2;
АдоДБСтрим.Mode= 3;
АдоДБСтрим.Open();
АдоДБСтрим.LoadFromFile(ПолноеИмяФайла);
ТекстАдоДБСтрим = АдоДБСтрим.ReadText();
АдоДБСтрим.Close();
АдоДБСтрим.Charset = "utf-8";
АдоДБСтрим.Open();
АдоДБСтрим.WriteText(ТекстАдоДБСтрим);
АдоДБСтрим.SaveToFile(ПолноеИмяФайла, 2);
АдоДБСтрим.Close();

На этом коде программа просто вылетала. Принял решение заменить это на запуск скрипта PowerShell. В PS изменение кодировки можно сделать так:

$WithBOM = $false
$enc1251 = [System.Text.Encoding]::GetEncoding(1251)
$encUTF8 = New-Object System.Text.UTF8Encoding($WithBOM)

$reader = New-Object -TypeName System.IO.StreamReader -ArgumentList $Source,$enc1251
$writer = New-Object -TypeName System.IO.StreamWriter -ArgumentList $Destination,$encUTF8

while ($true) {
    $line = $reader.ReadLine()
    if ($line -eq $null) {
        break
    }
    $writer.WriteLine($line)
}
$reader.Close()
$writer.Close()

Написал скрипт, положил его в папку, прописанную в Path, добавил код вызова в 1С вместо указанного выше кода:

ЗапуститьПриложение("powershell.exe -ExecutionPolicy Bypass ""& ChangeEncoding.ps1 '" + ПолноеИмяФайла + "'""");

и всё заработало, клиент доволен.

У клиента Windows 7. PowerShell не обновлял, думаю, что древний, так что требования в этом смысле минимальные.

P. S. Если кто в курсе, почему может возникать такая ошибка при использовании ADODB.Stream — прошу в комменты.

utf-8 СЗВ стаж

См. также

Консоль запросов

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Консоль запросов к базе SQL, не требующая внешних компонент

10 стартмани

29.04.2015    21633    54    Gvozdod    8    

14

StartManager 1.4 - Развитие альтернативного стартера

Инструментарий разработчика Платформа 1С v7.7 Платформа 1С v8.3 Абонемент ($m)

Очередная редакция альтернативного стартера, являющегося продолжением StartManager 1.3. Спасибо всем, кто присылал свои замечания и пожелания, и тем, кто перечислял финансы на поддержку проекта. С учетом накопленного опыта, стартер был достаточно сильно переработан в плане архитектуры. В основном сделан упор на масштабируемость, для способности программы быстро адаптироваться к расширению предъявляемых требований (т.к. довольно часто просят добавить ту или иную хотелку). Было пересмотрено внешнее оформление, переработан существующий и добавлен новый функционал. В общем можно сказать, что стартер эволюционировал, по сравнению с предыдущей редакцией. Однако пока не всё реализовано, что планировалось, поэтому еще есть куда развиваться в плане функциональности.

1 стартмани

23.04.2014    165965    1868    Alexoniq    1596    

496

Tray Informer

Инструментарий разработчика Платформа 1С v7.7 Платформа 1С v8.3 Россия Абонемент ($m)

Согласитесь, что окно стандартное сообщений в 1С иногда приносит больше неудобств, чем пользы. И тем более разные "Предупредить"... Что с этим окном только не делают! Его отцепают от формы, делают маленьким, умудряются спрятать за границы экрана. А потом звонят программистам с претензией, что документ почему-то не проводится, отя ничего и не пишет. У вас такого не было? А вот у нас было и не раз )))

1 стартмани

04.09.2013    32913    61    O-Planet    78    

49

Изменение структуры баз 1С 7.7 без долгой реструктуризации. Часть 1. Справочники

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

На днях встретил вопрос на форуме про возможность внесения изменений в конфигурацию без долгого сохранения в рабочей базе большого объема. Вот решил поделиться опытом, как это делал я. База у нас была объемом порядка 120 Гб. К базе обращался сайт в режиме 24/7, поэтому важно было быстро сохранять изменения и желательно без последующего монопольного запуска для восстановления индексов и процедур и без отключения пользователей от базы. Это первая часть статьи и посвящена она справочникам. С одной стороны - это самый простой объект, с другой стороны, именно про справочник спрашивалось на форуме. Если статья будет востребована, то я напишу аналогичные про документы, регистры и может еще что.

1 стартмани

13.08.2013    21253    Reptile    5    

35

v7.7 1CDialogControls: Инструмент в помощь разработчику на 7.7.

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Давным давно, когда я еще плотно писал на 7.7 работа с формами была мучительной и неудобной. Приходилось каждый элемент выкладывать, выравнивать на форме ручками, прописывать код в модуле. Иногда при разработке очередной формы приходила в голову мысль: "а где-то я уже похожее делал..." и начинался мучительный поиск подходящего кода в своих запасах........

1 стартмани

21.02.2013    18057    35    MarSeN    14    

16

[Разработчику] Любая таблица значений в OLAP

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Анализируем различные данные в 1С, используя OLAP-технологии со всеми прелестями. Т.е. наглядное отображение данных, быстрые расчеты, горизонтальные и вертикальные группировки любой вложенности, удобная фильтрация, Drag'n'Drop и ещё много приятных вещей от MS. Обработка на входе принимает практически любую таблицу значений (ТЗ в которой колонкам указаны типы значений, строка, число и т.п.), на выходе имеем на форме 1С сводную таблицу и график по этой ТЗ, с которой работаем, как и в Excel со сводной таблицей и диаграммой. Взял за основу разработку «OLAP Анализ счёта» ( http://infostart.ru/public/14964/ ) от JohnyDeath и переделал под любую ТЗ. Опционально используется «Прогресс бар для 1С 77» (http://infostart.ru/public/14061/ ) от Gmix.

1 стартмани

21.12.2012    36128    51    venger    7    

23

Библиотека кода 1С 7.7 (накопленная за 8 лет)

Инструментарий разработчика Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Весь код на 1С 7.7, собранный для повторного использования за 8 лет работы.

10 стартмани

25.11.2012    35003    248    adhocprog    51    

70
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. sashocq 193 01.02.18 10:12 Сейчас в теме
Ещё вчера на моём же компьютере ошибка воспроизводилась. Сегодня хотел скриншот ошибки сделать, но ADODB.Stream отработала успешно. Чудеса
+
2. jack19 148 01.02.18 12:30 Сейчас в теме
(1) Могли бы взглянуть на последние темы форума и увидеть, что проблема решена
https://forum.infostart.ru/forum68/topic185589/
sashocq; +1
3. sashocq 193 01.02.18 17:37 Сейчас в теме
(2) Искал. Видимо, плохо, или как-то не так.
+
Внимание! Тема сдана в архив