Имя: Пароль:
1C
 
Есть конвертор кода 1С в C#?
,
0 TormozIT
 
гуру
27.04.20
07:42
Написал для себя простой генератор плейлистов на флешке в виде последовательности операторов (без методов).
Хочу сконвертировать его в исходный код на C# и далее дописать до консольного приложения, которое выложить свободного скачивания.
Есть ли уже что то готовое для помощи мне в этой задаче?

КорневаяПапка1 = "F:\";
КорневаяПапка2 = "H:\";
ПрефиксПервогоУровня = "_";
ДлинаПрефиксаВторогоУровня = 3;
РасширенияФайлов = Новый Массив;
РасширенияФайлов.Добавить("cda");
РасширенияФайлов.Добавить("flac");
РасширенияФайлов.Добавить("mp3");
РасширенияФайлов.Добавить("ogg");
РасширенияФайлов.Добавить("wav");
РасширенияФайлов.Добавить("wma");
КорневыеПапки = Новый Массив;
КорневыеПапки.Добавить(КорневаяПапка1);
КорневыеПапки.Добавить(КорневаяПапка2);
Для Каждого КорневаяПапка Из КорневыеПапки Цикл
    Для Каждого ПапкаЖанра Из НайтиФайлы(КорневаяПапка, "*", Ложь) Цикл
        #Если Сервер И Не Сервер Тогда
            ПапкаЖанра = Новый Файл;
        #КонецЕсли
        Если ПапкаЖанра.ЭтоКаталог() Тогда
            СписокФайлов = Новый СписокЗначений;
            Для Каждого РасширениеФайла Из РасширенияФайлов Цикл
                Для Каждого Файл Из НайтиФайлы(ПапкаЖанра.ПолноеИмя, "*." + РасширениеФайла, Истина) Цикл
                    #Если Сервер И Не Сервер Тогда
                        Файл = Новый Файл;
                    #КонецЕсли
                    СписокФайлов.Добавить(Файл, Файл.Имя);
                КонецЦикла;
            КонецЦикла;
            СписокФайлов.СортироватьПоПредставлению();
            Текст = Новый ТекстовыйДокумент;
            Текст.ДобавитьСтроку("#EXTM3U");
            Для Каждого ЭлементСписка Из СписокФайлов Цикл
                Файл = ЭлементСписка.Значение;
                #Если Сервер И Не Сервер Тогда
                    Файл = Новый Файл;
                #КонецЕсли
                Текст.ДобавитьСтроку("#EXTINF:-1," + Файл.ИмяБезРасширения);
                Текст.ДобавитьСтроку(ирОбщий.ПолучитьПоследнийФрагментЛкс(Лев(Файл.Путь, СтрДлина(Файл.Путь) - 1), "\") + "\" + Файл.Имя);
            КонецЦикла;
            ИмяФайлаЛиста = ПапкаЖанра.ПолноеИмя + "\" + ПрефиксПервогоУровня + ПапкаЖанра.Имя + ".m3u";
            ЗТ = Новый ЗаписьТекста(ИмяФайлаЛиста, КодировкаТекста.ANSI);
            ЗТ.Закрыть();
            ЗТ = Новый ЗаписьТекста(ИмяФайлаЛиста,,, Истина);
            ЗТ.Записать(Текст.ПолучитьТекст());
            ЗТ.Закрыть();
            Для Каждого ПапкаАльбома Из НайтиФайлы(ПапкаЖанра.ПолноеИмя, "*", Ложь) Цикл
                #Если Сервер И Не Сервер Тогда
                    ПапкаАльбома = Новый Файл;
                #КонецЕсли
                Если ПапкаАльбома.ЭтоКаталог() Тогда
                    СписокФайлов = Новый СписокЗначений;
                    Для Каждого РасширениеФайла Из РасширенияФайлов Цикл
                        Для Каждого Файл Из НайтиФайлы(ПапкаАльбома.ПолноеИмя, "*." + РасширениеФайла, Истина) Цикл
                            #Если Сервер И Не Сервер Тогда
                                Файл = Новый Файл;
                            #КонецЕсли
                            СписокФайлов.Добавить(Файл, Файл.Имя);
                        КонецЦикла;
                    КонецЦикла;
                    СписокФайлов.СортироватьПоПредставлению();
                    Текст = Новый ТекстовыйДокумент;
                    Текст.ДобавитьСтроку("#EXTM3U");
                    Для Каждого ЭлементСписка Из СписокФайлов Цикл
                        Файл = ЭлементСписка.Значение;
                        #Если Сервер И Не Сервер Тогда
                            Файл = Новый Файл;
                        #КонецЕсли
                        Текст.ДобавитьСтроку("#EXTINF:-1," + Файл.ИмяБезРасширения);
                        Текст.ДобавитьСтроку(Файл.Имя);
                    КонецЦикла;
                    ИмяФайлаЛиста = ПапкаАльбома.ПолноеИмя + "\" + ЛЕВ(ПапкаЖанра.Имя, ДлинаПрефиксаВторогоУровня) + "." + ПапкаАльбома.Имя + ".m3u";
                    ЗТ = Новый ЗаписьТекста(ИмяФайлаЛиста, КодировкаТекста.ANSI);
                    ЗТ.Закрыть();
                    ЗТ = Новый ЗаписьТекста(ИмяФайлаЛиста,,, Истина);
                    ЗТ.Записать(Текст.ПолучитьТекст());
                    ЗТ.Закрыть();
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
КонецЦикла;
1 acht
 
27.04.20
07:44
(0) Размещение вакансий на этом форуме платное (:
2 TormozIT
 
гуру
27.04.20
07:47
(1) Платить я не собираюсь. Так что не расстраивайся.
3 acht
 
27.04.20
07:50
(2) Как ты думаешь, во что на C# должно превратится твоё:

Файл = ЭлементСписка.Значение;
#Если Сервер И Не Сервер Тогда
    Файл = Новый Файл;
#КонецЕсли

?
4 TormozIT
 
гуру
27.04.20
07:53
(3) Инструкции препроцессора здесь только для удобства редактирования кода. Они не компилируются. Поэтому эти фрагменты просто удаляются, например руками.
5 TormozIT
 
гуру
27.04.20
07:54
Как там с 1SCript? Там есть генератор консольного приложения полностью независимого?
Может через него будет проще решить задачу?
6 Ненавижу 1С
 
гуру
27.04.20
08:10
уже бы руками написал
а почему C#, а не Java или C++?
7 TormozIT
 
гуру
27.04.20
08:14
(6) Мне не скорость, а удобство важно. C# мне более знаком. C++ и Java подойдут, но подозреваю спросил ты ради порассуждать, а не потому что есть наработки =)
8 Garykom
 
гуру
27.04.20
08:14
(0) Берешь 1script, засовываешь в самораспаковываемый архив exe, со скриптом внутри который распакуется, запустить "1script.exe ТвойСкрипт1С.os" а затем все грохнет.

ЗЫ Нафиг не надо ибо тоже самое можно на bat/cmd наваять.
9 Garykom
 
гуру
27.04.20
08:15
А конвертера кода из 1С в C# нет точно ибо он нафик не нужен.
Слишком разные возможности языка, какой смысл от только синтаксиса?
10 TormozIT
 
гуру
27.04.20
08:16
(9) На инфостарте уже сообщали, что как минимум один такой конвертор был создан и причем не только для кода.
11 MyNick
 
27.04.20
08:23
Купил велосипед, хочу автобус. Есть конвертеры для этого?
12 TormozIT
 
гуру
27.04.20
08:26
(8) На 1Script мой код (после замены проскочившего вызова общего модуля) сразу запустился и корректно заработал. Это классно. Теперь надо понять, как там сделать независимое приложение.
13 Garykom
 
гуру
27.04.20
08:27
(10) "Новый СписокЗначений" на C#/.Net во что должен как думаешь превратиться?

Перефразировал закономерное (3)
14 TormozIT
 
гуру
27.04.20
08:27
(11) Сунул голову в шкаф. Ощутил нехватку света. Есть конвертеры для этого?
15 Garykom
 
гуру
27.04.20
08:28
(12) "1Script позволяет упаковать ваш скрипт в отдельный exe-модуль, который можно удобно распространять, не требуя установки самого 1Script на машину пользователя."
16 SleepyHead
 
гуру
27.04.20
08:31
(0) У кого-то дохнера времени, даже завидно немного.
17 trdm
 
27.04.20
08:31
проще переписать на js или vbs.
Интертрепаторы от мелкомягких на любой машине есть.
18 Ненавижу 1С
 
гуру
27.04.20
08:36
(13) думаю в какой нибудь new List<ЭлементСписка>();
где ЭлементСписка некий класс
19 Конструктор1С
 
27.04.20
08:36
А смысл?
20 Ненавижу 1С
 
гуру
27.04.20
08:38
21 TormozIT
 
гуру
27.04.20
08:39
Всем спасибо. Задачу решил через 1Script. Не понравилось только, что пришлось вручную писать команду в консоли для генерации исполняемого файла
oscript.exe -make C:\terminal\1.os C:\terminal\1.exe
Это конечно напрягло =)
22 acht
 
27.04.20
08:40
(12) Гм. А ClipAngel ты тоже такими методом писал? Ну, на 1С сначала (:
23 TormozIT
 
гуру
27.04.20
08:41
(22) Нет. Зачем сравнивать задачи на 50 и 20000 строк кода?
24 acht
 
27.04.20
08:42
(23) Жаль. Очень жаль.
25 TormozIT
 
гуру
27.04.20
08:43
(24) Я очень опечален тем, что разочаровал тебя. Пойду работать, чтобы забыться.