Имя: Пароль:
1C
1С v8
Файл txt в bin
,
0 Anders
 
07.10.19
07:20
День добрый!
Решаю задачу по автоматической замене кода в конфигурации с помощью стандартного механизма 1С - выгрузить конфигурацию в файлы.
Столкнулся с необходимостью преобразования подготовленного текстового файла в bin. Есть ли у кого кода перевода?
1 ДенисЧ
 
07.10.19
07:24
rename infile.txt outfile.bin
Всё. Теперь твой текстовый файл стал бинарным.
2 Смотрящий
 
07.10.19
07:26
/y еще
3 Anders
 
07.10.19
08:00
Наверное я не совсем правильно выразился, лучше приведу сокращенную версию кода:
    ТЗ_Замена = Новый ТаблицаЗначений;
    ТЗ_Замена.Колонки.Добавить("Что_ищем",Описания_типов.Строка_(40));
    ТЗ_Замена.Колонки.Добавить("На_что_меняем",Описания_типов.Строка_(40));
        стр = ТЗ_Замена.Добавить();
    стр.Что_ищем = "Процедура";
    стр.На_что_меняем = "процедура";

    НайденныеФайлы = НайтиФайлы("F:\Files\", "*.bin", Истина);
    Для каждого НайденныйФайл Из НайденныеФайлы Цикл
        
        Текст = Новый ТекстовыйДокумент();
        Текст.Прочитать(НайденныйФайл.ПолноеИмя,"UTF-8");
        Сообщить("Обрабатывается файл: " + НайденныйФайл.ПолноеИмя);
        флЗаписать_документ = Ложь;
        Для i = 1 По Текст.КоличествоСтрок() Цикл
            //ОбработкаПрерыванияПользователя();
            строка_файла = СокрЛП(Текст.ПолучитьСтроку(i));
            //Если СтрЧислоВхождений("цукенгшщзхфвапролджэячсмитбю| ",нрег(Лев(строка_файла,1))) = 0 Тогда
            //    Продолжить;
            //КонецЕсли;    
            флЗамена = Ложь;
            Для каждого стрТЗ ИЗ ТЗ_Замена Цикл
                Если Найти(строка_файла,стрТЗ.Что_ищем) Тогда
                    новая_строка_файла = СтрЗаменить(строка_файла,стрТЗ.Что_ищем,стрТЗ.На_что_меняем);
                    Текст.ЗаменитьСтроку(i,новая_строка_файла);
                    флЗаписать_документ = Истина;
                    строка_файла = новая_строка_файла;
                КонецЕсли;
            КонецЦикла;    
        КонецЦикла;
        Если флЗаписать_документ Тогда
            Текст.Записать(НайденныйФайл.ПолноеИмя);
            Сообщить("Исправлен файл: " + НайденныйФайл.ПолноеИмя);
            //Прервать;
        КонецЕсли;
    КонецЦикла;    

В результате: происходят косяки с загрузкой конфигурации из файлов. Загрузка прошла, но после сохранения в cfg и выполнения метода сравнить/объединить - вылезает критическая ошибка. Значит код нерабочий. Либо ошибка при формировании файла txt, либо при сохранении, либо вообще не так надо было делать. Что скажете?
4 GROOVY
 
07.10.19
08:35
Автор не умеет парсить текстовые файлы, причем называет их "конфигурация", а речь идет о файлах cfg, при этом он рассказывает нам о файлах txt и bin зачем то. Это все что я понял из приведенного тут. И при чем тут выгрузка конфигурацию в файл?
5 Anders
 
07.10.19
09:03
Специально для Groovy
Стоит задача заменить слово "Процедура" на слово "процедура" во всем коде нетиповой конфигурации.
Для этого:
1. Выполняем команду из конфигуратора Выгрузить конфигурацию в файлы.
2. Пишем код замены в файлах *.bin *.bsl (может и еще в каких понадобится, еще не проверял)
3. Выполняем команду из конфигуратора Загрузить конфигурацию из файлов.
4. Не сохраняя изменения в базе, выполняем команду сохранить конфигурацию в файл - получим .cf
5. Сверим результат методом сравнить/объединить с полученным cf.

Так доступнее?

Скорее всего, у меня в коде ошибки преобразования двоичных данных в txt и обратно, кмк.
Сейчас пробую использовать
ДвоичныеДанные = Новый ДвоичныеДанные(НайденныйФайл.ПолноеИмя);
        АдресФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанные);

        ДвоичныеДанныеФайла = ПолучитьИзВременногоХранилища(АдресФайла);
        ИмяВременногоФайла = ПолучитьИмяВременногоФайла("tmp");
        ДвоичныеДанныеФайла.Записать(ИмяВременногоФайла);
        // Прочитать текст из временного файла.
        ЧтениеТекста = Новый ЧтениеТекста;
        ЧтениеТекста.Открыть(ИмяВременногоФайла, "UTF-8");
        СтрокаXML = ЧтениеТекста.Прочитать();
        ЧтениеТекста.Закрыть();
с преобразованием переменной строкаXML
пока не нашел как XML в bin корректно перевести
6 ДенисЧ
 
07.10.19
09:30
"Стоит задача заменить слово "Процедура" на слово "процедура" во всем коде нетиповой конфигурации."

Ctrl-Shift-F
Вводим текст поиска, ставим галку учитывать регистр.
Потом в списке найденного ПКМ и заменить
7 Anders
 
07.10.19
09:37
ДенисЧ, спасибо, я в курсе.
Я как раз это и хочу на полном автомате сделать. Кодом.
Когда есть 100-150 нетиповых конфигураций, да в каждой по 50 замен, тогда такие решения и нужны на будущее.
8 Garykom
 
гуру
07.10.19
09:50
Может лучше назад в менагеры?
9 VladZ
 
07.10.19
09:51
Ничего не понятно. Но очень интересно.
Продолжайте наблюдение.
10 palsergeich
 
07.10.19
09:52
На 1с есть обработки делающая не только это. Я вот правда забыл как она называется.
+ Если надо прям совсем автоматизацию - делай через библиотеки оскрипта там есть всё для распаковки/сборки.
Из txt ты бинарь не получишь кодом 1с
11 palsergeich
 
07.10.19
09:53
(10) под 1с я имел ввиду ИТС, когда через АПК конфу прогоняешь он ругается ошибками форматирования и предлагает скачать обработку с ИТС, я ее качал, она работает.
12 palsergeich
 
07.10.19
09:54
(10) уточню из тхт ны не получишь бигврь в формате 1с, точнее с появлением байтовых функций это в принципе стало возможным, но не надо так
13 palsergeich
 
07.10.19
09:55
(12) бигврь = бинарь, Т9, сорри
14 Anders
 
07.10.19
10:07
palsergeich, уже что-то.
А что за обработка, хоть какие-то ключевые слова, чтобы поискать?
Насчет txt, похоже, что да, кстати, пробовал и xml 1с-овским переводом ПолучитьДвоичныеДанныеИзСтроки(СтрокаXML). Так он построчное форматирование в итоговом файле режет.
15 palsergeich
 
07.10.19
10:09
(14) на работе посмотрю, но смысл её работы в следующем.
Конфигурация выгружается в xml
Идут преобразования
Конфигурация загружается из xml
Естественно все через КомандаСистемы
16 Anders
 
07.10.19
10:11
То что надо.
Ок, подожду, пока что неохота велосипед изобретать.
17 palsergeich
 
07.10.19
10:38
(16) АвтоформатированиеКодаИЛокализация
18 palsergeich
 
07.10.19
10:40
На почту из твоего профиля ктнул
19 palsergeich
 
07.10.19
10:43
Почта не почта, тогда ищи сам
20 Anders
 
07.10.19
10:53
Я тут давненько не был, почту исправил на действующую.
21 palsergeich
 
07.10.19
11:28
Выслал на почту