|
Файл 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
|
Выслал на почту
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |