gifts2017

CfProject – декомпиляция/компиляция конфигураций 1С:Предприятие

Опубликовал Сергей Карташев (Elisy) в раздел Программирование - Инструментарий

CfProject выгружает CF-файлы в удобочитаемые Xml и текстовые файлы, а также загружает их обратно. Утилита предназначена для организации контроля версий через SVN, GIT, Mercurial , для помощи при восстановлении испорченных файлов конфигураций, а также для изучения внутренней структуры cf-совместимых файлов. Самым близким аналогом утилиты является V8Unpack.

Новое в Elisy.CfInspector v1.2:

Добавлено распознавание форматов epf/erf/cfu дополнительно к cf
В объекте Configuration поддерживаются свойства BriefInformation, DetailedInformation, Copyright, VendorInformationAddress, ConfigurationInformationAddress, разделение по видам объектов
Распознавание объекта Enum без расшифровки свойств


Новое в Elisy.CfInspector v1.1:

  • Распаковка image-объектов в виде подкаталога с файлами;
  • Распознавание имен для общих модулей, отчетов и обработок;
  • Переименование известных свойств согласно именам 1С;
  • Исправлена ошибка чтения cf-записи с нулевой длиной;

Утилита Elisy CfProject выгружает файлы в формате, совместимом с CF-файлами 1С:Предприятие, в удобочитаемые Xml и текстовые файлы, а также загружает их обратно. Утилита оформлена в виде внешней обработки 1С:Предприятие 8.2 и требует предустановленного .Net framework 4.0 и Elisy .Net Bridge 4.0.3. Самым близким аналогом утилиты является V8Unpack.

Утилита предназначена для организации контроля версий через SVN, GIT, Mercurial , для помощи при восстановлении испорченных файлов конфигураций, а также для изучения внутренней структуры cf-совместимых файлов.

Здесь представлен прототип Elisy CfProject CTP для всеобщего ознакомления с технологией. Условия распространения еще не определены. В основу утилиты положен проект Elisy MdInternals, предназначенный для программного доступа к объектам конфигураций.

На входе в утилиту поступает cf-файл, на выходе – cfproj-файл и дерево каталогов с выгруженными файлами. Распознанные файлы помещаются в соответствующие подкаталоги. Нераспознанные – в каталог Unresolved. Распознанные файлы преобразуются в xml-формат, в то время как нераспознанные записываются «как есть».

Основные возможности

Проект написан на C# и .Net framework и оформлен в виде сборок. Это позволяет без особых проблем обращаться ко всем свойствам и методам объектов из кода 1С через Elisy .Net Bridge.

Распознанные файлы записываются в дерево каталогов по видам объектов:

Структура каталогов после выгрузки[more]

Распознанные файлы выгружаются в XML-структуру. Это делает их совместимыми с многими просмотрщиками, позволяет контролировать логическую целостность формата файлов, а также обрабатывать их программно сторонними средствами:

Распознанные файлы выгружаются в XML-структуру

Распознанные свойства перемещаются в соответствующие разделы (атрибуты или тэги) XML-структуры:

Распознанные свойства перемещаются в соответствующие разделы (атрибуты или тэги)

Нераспознанные текстовые файлы во внутреннем формате, совместимом с 1С, переформатируются в удобочитаемый вид для будущего анализа:

Нераспознанные текстовые файлы переформатируются
        в удобочитаемый вид

Была предпринята попытка увеличить быстродействие за счет многопоточности

Что не реализовано в данной версии

В данной версии реализовано распознавание только файлов конфигураций, не реализовано распознавание внешних отчетов/обработок и CFU-файлов.

Утилита распознает только объекты конфигурации 1го уровня, помещая их по подкаталогам. Не распознает все остальное: формы, макеты, помещая все в каталог Unresolved

В каталоге Unresolved не распаковываются составные объекты с расширением img.

Для примера реализовано распознавание свойств только одного объекта: Функциональная Опция с отражением в Xml-структуре

Работа проверялась только на одной конфигурации.

// //

Скачать файлы

Наименование Файл Версия Размер
Elisy.CfProject.epf v1.2 34
.epf 66,58Kb
15.11.14
34
.epf 1.2 66,58Kb Скачать
Elisy.CfProject.epf v1.1 79
.epf 56,56Kb
05.11.14
79
.epf 56,56Kb Скачать
Утилита Elisy.CfProject.epf v1.0 (8.2.14) 194
.epf 59,49Kb
05.02.13
194
.epf 59,49Kb Скачать
Тестовая конфигурация 8.2.14 46
.cf 645,53Kb
30.01.13
46
.cf 645,53Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Максим Полянский (yandextesting) 06.01.12 16:24
Разработчики платформы на последнем семинаре анонсировали выгрузку/загрузку конфигурации в XML-формате средствами самой платформы в одном из ближайших релизов - предположительно уже в 8.2.16.
2. Сергей Старых (tormozit) 06.01.12 16:50
(1) Скорее всего там будет опять же лишь небольшой процент содержимого конфигурации (модули, тексты интерфейса и т.д.).
3. Сергей Сытько (8SiriuS8) 07.01.12 01:46
(xml) все это конечно круто. Но как собрать сие добро обратно. Сейчас самая актуальная проблема это выгрузка форм и макетов так как с программным кодом более мене все понятно 5есть стандартный механизм есть V8Unpack которые выгружают все в более менее удобочитаемом виде.
4. Михаил Ражиков (tango) 07.01.12 01:55
соглашусь с (2)
ВСЮ конфу в екемель? - да никогда.
это ж барабан на встречу
5. Сергей Карташев (Elisy) 07.01.12 08:37
(1) Это отличная новость - выгрузка XML проблему контроля версий охватит. На повестку дня встанет программный доступ к объектам конфигураций для создания "на лету". CfProject и MdInternals будут переориентированы в этом направлении.
6. Сергей Карташев (Elisy) 07.01.12 08:44
(3) CfProject собирает все, что нараспаковывал, обратно
7. Alex Misanets (Misanets) 07.01.12 21:48
А, собственно зачем такие танцы??? Ни кто не отменял бэкап скула или дт.
9. zavedeev (zavedeev) 08.01.12 00:05
10. Антон (anton.fly7) 08.01.12 15:15
а что эта программа сделает с модулями, которые не включены в поставку?
и с запаролеными обработками?
11. BabySG (BabySG) 08.01.12 19:00
(2) Вся конфа будет выгружаться, во всяком случае - так было заявлено.
Ибо звучало так: "можно выгрузить и загрузить обратно".
Таким образом, если хоть что-то не выгрузили - что мы же мы потом загрузим? :)
12. Тарас (softest) 08.01.12 20:13
Интересно что оно делает из формой или с макетом или с запароленными модулями, нужно будет посмотреть!
13. Сергей Карташев (Elisy) 09.01.12 07:46
(7) Как-то работа с cf и ваше предложение о dt- sql- архивах не согласуются. Не могли бы вы мысль немного развернутей описать? :) Спасибо
14. Руслан Демиденко (Degastantrag) 09.01.12 10:12
15. Сергей Карташев (Elisy) 09.01.12 11:57
(10)(12) Не стоит слишком много ждать от прототипа. Думаю, что утилита поместит такие модули в Unresolved-каталог "как есть".
Хотя в Elisy MdInternals есть зачатки функционала декомпиляции opcode-модулей, которого хватает, чтобы понять суть декомпилированного модуля, но CfProject этот функционал не использует.
На C# декомпиляция через объект класса Elisy.MdInternals.Cil.CodeReader выглядит примерно так:
        public static void UnloadCommonModules(Image image, string folder)
        {
            MetadataPackage md = new MetadataPackage(image);

            var requestModules = from o in md.MetadataObjects.AsParallel()
                                 where o is CommonModule
                                 select new {Content = o.ImageRow.Body.ToString(), FileName = o.ImageRow.FileName };

            var requestContent = from module in requestModules.AsParallel()
                                 join ir in image.Rows.AsParallel() on module.FileName + ".0" equals ir.FileName
                                 //orderby module.Content
                                 select new { Module = module.Content, Image = ((Image)ir.Body).Rows.Where(i => i.FileName == "image").FirstOrDefault() };

            var files = requestContent.ToArray();

            foreach (var file in files)
            {
                if (file.Image == null)
                    continue;

                string fileName = file.Module;
                fileName = fileName.Substring(fileName.IndexOf('"') + 1);
                fileName = fileName.Substring(0, fileName.IndexOf('"'));

                string opCodeString = file.Image.Body.ToString();


                using (StreamWriter outfile =
                    new StreamWriter(folder + fileName + ".opcode"))
                {
                    outfile.Write(opCodeString);
                }

                CodeReader reader = new CodeReader(opCodeString, true);
                string decompiledString = reader.GetSourceCode();
                using (StreamWriter outfile =
                    new StreamWriter(folder + fileName + ".txt"))
                {
                    outfile.Write(decompiledString);
                }

            }
...Показать Скрыть

В общем - декомпиляция модулей - это тема отдельной статьи. Если будет интерес, постараемся сделать примеры с кодом 1С.
16. Maksim Titov (Maks_Payn) 10.01.12 11:19
Спасибо! Интересная вещь!
17. Гость 10.01.12 22:52
Можнло поэсперементировать при загрузке. Серьёзная штука
18. Сергей Карташев (Elisy) 11.01.12 14:37
Кому тяжело скачивать Elisy .Net Bridge 4.0.3 с англоязычного форума, выложили дистрибутив на Инфостарт здесь:
http://infostart.ru/public/20035/
19. Alexandr Zaslavskiy (Imm) 12.01.12 04:13
За старания +. Очень интересная штуковина
20. Макс Такойто (Maks888) 12.01.12 09:17
Всем спасибо за комменты!
21. Владимир (V0fka) 19.01.12 13:13
22. Михаил Усков (MMF) 16.05.12 16:16
Плохая идея, пока выгрузишь, а тем более соберешь, УПП - состаришься. Кому оно вообще нужно - конфа в xml?
Yakud3a; denis_aka_wolf; awa; pumbaE; +4 Ответить 1
23. Сергей Карташев (Elisy) 17.05.12 07:11
(22)
Плохая идея, пока выгрузишь, а тем более соберешь, УПП - состаришься. Кому оно вообще нужно - конфа в xml?

В первую очередь нужна конфа в xml или другом читаемом формате для систем версионирования. 1С-ники работают с хранилищем конфигурации, не догадываясь, что научный прогресс шагнул далеко вперед.
На втором месте - испорченные конфигурации, которые можно выгрузить и руками исправить.
Далее - автоматическое создание конфигураций и обработок, автоматизация операций конфигуратора.
Как-то так.
24. Евгений Сосна (pumbaE) 17.05.12 11:36
(23) Elisy, именно xml плохая идея. Покажите мне нормальную diff алку для xml файлов, а потом говорите, что xml хорош для систем версионирования. Hg, git, bzr рекомендуют для xml файлов ставить признак binary, что бы система не делала автоматических merge.

автоматизация операций конфигуратора: каких интерестно?
25. Сергей Карташев (Elisy) 17.05.12 12:14
(24) pumbaE,
xml хорош тем, что можно проверить целостность каждого файла через соответствие открывающих и закрывающих тэгов. Это распространенный формат, поддерживаемый многими в мире. Имеет текстовое наглядное представление, поэтому распознается и хранится системами версионирования как родной формат. Первый раз слышу о рекомендации ставить на него признак binary. Будьте добры предоставьте ссылку на такую рекомендацию, а то непонятно в каком контексте это нужно понимать. Тысячи проектов на Asp.Net, PHP живут в СВН без этого признака, являясь по сути XML-подобными (html со вставками кода).

К слову сказать, не вся функциональность CFProject документирована. Этот проект позволяет делать выгрузку не только в xml, но и в родной для 1С формат со множеством фигурных скобок.

Навскидку - автоматизировать замену всех комментариев реквизитов Организация в документах или поиск и замена во всех ячейках в макетах конфигурации. Написание своих визардов по созданию форм, макетов.
26. Евгений Сосна (pumbaE) 17.05.12 13:04
(25) Elisy, мне понятно стало, что с xml и версионым контролем вы активно не работали.
Поясню:
Для затравки , svn покажет красиво различия в xml, если структура не менялась, а только содержимое элементов, то конечно все просто и красиво, пример Не svn но принцип думаю понятен , но вот такой распространенный случай как : в объект конфигурации добавили слово удалить и добавили новый объект с тем же именем, svn не решит и понять в выводе diff будет сложно, т.к. автоматическая решалка конфликтов, предложит оставить наименование без "удалить".
27. Сергей Карташев (Elisy) 17.05.12 15:59
(26) pumbaE,
понятно, что всегда бывают конфликты и не только в xml, но и с исходным кодом других проектов.
Напомню, что обсуждение началось с того, что было высказано сомнение в формате xml, как взятого за основу в обработке. Как обоснование приведено сравнение версий в (26). Но тогда возникает вопрос, какой формат будет более подходящим? Сколько приходит на ум потенциальных форматов, везде будут конфликты с переименованием реквизита в "удалить" и добавлением нового одноименного при автоматическом решении конфликтов.
Не проверял, но писали где-то, что проект Mercurial более стойкий к такому виду конфликтов, так как спроектирован был специально для этого.
28. Александр Топольский (AlexanderKai) 18.05.12 12:20
Интересное решение, кто-нибудь реально использует в работе? Впечатления, выявленные недостатки?
29. Сергей Карташев (Elisy) 18.05.12 13:09
(28) AlexanderKai,
сомневаюсь, что кто-то использует в работе. Все ждут 1С 8.3, где ожидается схожая функциональность при выгрузке конфигурации в облака.
30. Сергей Карташев (Elisy) 04.06.12 12:20
(15) Функциональность декомпиляции в будущих версиях будет вынесена из проекта Elisy.MdInternals как провокационная для лицензионной политики 1С. Хотя эта операция разрешена в ГК РФ.
Декомпилирование модулей расширено и опубликовано on-line по адресу:
http://www.1csoftware.com/dotnet/ru-ru/decompiler
Resha; teflon; +2 Ответить 3
31. Сергей Карташев (Elisy) 23.07.12 08:52
Как и обещала компания 1С в 8.3 добавлена выгрузка конфигурации в xml-файлы. Но почему этот процесс занимает так много времени?! :)
32. Resha D (Resha) 08.12.12 13:15
(30) Elisy,
Замеченна проблема у сервиса:
Проблема с кавычками внутри строк: вместо "чччч ""Текст в кавычках внутри строки"" yyy" возвращается "чччч "Текст в кавычках внутри строки" yyy". Поэтому после завершения необходимо выполнить проверку модулей.
33. Resha D (Resha) 08.12.12 13:19
(30) Elisy,

И ещё одна:

Перепутано расположение параметров при установке параметров запроса: вместо “Запрос.УстановитьПараметр("Дата", Дата);” сервис вернул “Запрос.УстановитьПараметр(КъмДата, "Дата");”
34. Resha D (Resha) 08.12.12 13:26
(30) Elisy,
Похоже проблема с порядком параметров обща, т.к. перепутан порядок парамтеров и в определении функций и процедур. Сервис вернул: "Функция ХХХХХХ(Парам2, Парам 1) Экспорт" - параметры должны быть в другом порядке

Наврал. с этим все ок, но вот с передачей параметров ошика есть:

Вызов функций: "Новый ХранилищеЗначения(Новый СжатиеДанных(), ДвДанные)" - сжатие - это второй параметр.
Ну и с запросом выше - тоже самое.
35. Сергей Карташев (Elisy) 10.12.12 09:38
(32) Resha,
Замеченна проблема у сервиса:
Проблема с кавычками внутри строк: вместо "чччч ""Текст в кавычках внутри строки"" yyy" возвращается "чччч "Текст в кавычках внутри строки" yyy". Поэтому после завершения необходимо выполнить проверку модулей.

(33) Resha,
Перепутано расположение параметров при установке параметров запроса: вместо “Запрос.УстановитьПараметр("Дата", Дата);” сервис вернул “Запрос.УстановитьПараметр(КъмДата, "Дата");”


Спасибо за баг-репорты. Библиотека подправлена. В новой версии 1.0.0.5 эти проблемы должны решиться.
Вы можете проверить прямо сейчас на сайте:
http://www.1csoftware.com/dotnet/ru-ru/decompiler
36. Сергей Карташев (Elisy) 24.12.12 15:15
В связи с популярностью разработки решено выделить немного ресурсов для ее развития.
Если у кого есть пожелания, пожалуйста, делитесь.
Многие возможности уже реализованы, но не документированы. Возможно, многие проблемы и пожелания уже можно решить на программном уровне.
В будущем курс будет взят на формат файловой выгрузки конфигурации 1С 8.3 для совместимости.
37. Михаил Максимов (МихаилМ) 25.12.12 17:01
проверил на "битой" конфигурации.


sql1c.epf - выдала кучу собщений об ошибке и ничего не распаковала.
v8unpack - справилась с задачей.
38. Сергей Карташев (Elisy) 26.12.12 08:13
(37) МихаилМ,
sql1c.epf - выдала кучу собщений об ошибке и ничего не распаковала.
v8unpack - справилась с задачей.

Можно узнать, какая связь между CfProject и обработкой sql1c.epf? Я не нашел такую обработку в списке файлов для скачивания.
39. Михаил Максимов (МихаилМ) 26.12.12 10:04
(38)
виноват конечно Elisy.CfProject.epf

+
"битый" cf
Прикрепленные файлы:
configsave.7z
40. Сергей Карташев (Elisy) 29.12.12 08:34
(39) МихаилМ,
Не скачивается. Долго думает, потом после выбора куда скачать скачивает файл с 0 байт.
41. Михаил Максимов (МихаилМ) 29.12.12 10:19
42. Сергей Карташев (Elisy) 29.12.12 11:28
(41) МихаилМ,
Скачать удалось.
CfProject состоит из 2х уровней: 1й - работа на уровне записей cf-файла - отвечает класс ImageReader
2й - уровень метаданных, из записей cf-файла строится связанная структура (класс MetadataPackage).

Ошибка, описанная вами, происходила из-за позиции 22F файла, где запись дана с 0й длиной. Ее поправили и получилось прочитать 10297 записей.
Но этого недостаточно для 2го уровня, так как нет точки входа - записи с именем "root". Соответственно после устранения 1й ошибки появилась неустранимая ошибка - невозможно найти запись с именем root.

Максимум, что можем предложть - дать доступ средствами 1С к таблице записей cf-файла image.Rows. На C# код будет примерно такой:
var stream = new FileStream(@"D:\336-cfproject\configsave\configsave.cf", FileMode.Open, FileAccess.Read, FileShare.Read);
Image image = ImageReader.ReadImageFrom(stream);

Но готовых процедур выгрузки/загрузки записей, как в v8unpack пока нет. Поэтому не знаю как это может вам помочь.
43. Модератор раздела Артур Аюханов (artbear) 16.01.13 12:13
Исходники/разработка проекта так и будет закрытой?
Давно использую подобные инструменты.
Хочу присоединиться к какой-нибудь разработке и знаю разработчиков, также готовых помочь в разработке подобных инструментов.
Пока примериваюсь к v8unpack, как наиболее открытом и вполне рабочему инструменту.
44. andrewks 16.01.13 12:37
(43) artbear, я хочу написать свой v8unpack в виде ВК NativeAPI, с блэкджеком и прочими атрибутами ;-)
но базироваться планирую на лазарус
45. Модератор раздела Артур Аюханов (artbear) 16.01.13 12:57
(44) Хорошее дело - но я бы лично сделал набор независимых классов для возможности создания как ВК, так и консольного приложения для различного использования.
Лазарус - это паскаль?
Меня интересует именно открытый проект.
В дальнейшем планирую юзать версионники с разобранными конфигурациями и внешними файлами.
46. andrewks 16.01.13 13:24
(45) artbear, да, лазарус на базе FPC реализован

но я бы лично сделал набор независимых классов для возможности создания как ВК, так и консольного приложения для различного использования

так вроде полно шаблонов есть.
47. Сергей Карташев (Elisy) 16.01.13 13:46
(43) artbear,
Исходники/разработка проекта так и будет закрытой?
Давно использую подобные инструменты.
Хочу присоединиться к какой-нибудь разработке и знаю разработчиков, также готовых помочь в разработке подобных инструментов.
Пока примериваюсь к v8unpack, как наиболее открытом и вполне рабочему инструменту.

Была подготовка к большей открытости. Например, вынесено декомпилирование модулей в отдельный проект. Без этого действия 1С не дала бы жизни проекту, преследуя открытое распространение.
Но после выхода 1С 8.3 с возможностью выгрузки конфигурации в файлы целесообразность разработки CfProject оказалась под вопросом. Возникло несколько вопросов: кто будет пользоваться, если в 1С есть функционал "из коробки"? Кто будет участвовать в проекте, если даже после открытия исходного кода v8unpack никто не присоединился к его разработке?
Если проект интересен сообществу, то мы можем рассмотреть возможность публикации под GPL-лицензией на GitHub.
48. Сергей Карташев (Elisy) 16.01.13 13:55
(44) andrewks,
artbear, я хочу написать свой v8unpack в виде ВК NativeAPI, с блэкджеком и прочими атрибутами ;-)
но базироваться планирую на лазарус

Как говорится, планировать одно, а сделать - сложнее. Опять же вопросы: кому нужен функционал после выхода 8.3?
CfProject - C#-проект в основе которого сидит .Net-сборка Elisy.MdInternals.dll с функциональностью:
1. Нижний уровень
Чтение-запись cf-файлов
Парсинг-сериализация "{0,{..}}"-подобных строк
2. Верхний уровень
Построение структуры на основе cf-записей, распознавание объектов конфигурации.

Так как это .Net-сборка, то все ее классы и функциональность доступна через Elisy .Net Bridge из кода 1С и внешних обработок или из любых .Net-проектов. Портировать сборку на Mono 2.8, думаю, труда не составит.
49. andrewks 16.01.13 14:21
(48) Elisy,
Как говорится, планировать одно, а сделать - сложнее

да нет там ничего сложного. единственная проблема - время, которого катастрофически не хватает.
насчёт "кому это надо" - потребность есть. конкретно свою реализацию я планирую как одно из ответвлений проекта http://infostart.ru/public/166557/ , ибо даже после выхода 8.3 умирающие файловые базы никуда не исчезнут. ну, а как другое направление - как раз разбор cf в текстовые файлы для svn и прочих
50. andrewks 16.01.13 14:23
(48) Elisy, кстати, с выходом 8.3 сами длл-ки на .NET оказываются на очень интересном положении, ограничивающим применение конкретной ОС
51. Сергей Карташев (Elisy) 16.01.13 14:53
(49) andrewks,
да нет там ничего сложного. единственная проблема - время, которого катастрофически не хватает.
насчёт "кому это надо" - потребность есть. конкретно свою реализацию я планирую как одно из ответвлений проекта http://infostart.ru/public/166557/ , ибо даже после выхода 8.3 умирающие файловые базы никуда не исчезнут. ну, а как другое направление - как раз разбор cf в текстовые файлы для svn и прочих

Когда я говорил, что сложно, я не имел ввиду - невозможно для среднего ума. Я имел ввиду комплексно время + навыки + дальнейшая поддержка. Направление разбора cf для SVN охватывает 8.3 с выгрузкой в формате XML, как я понимаю.
52. Сергей Карташев (Elisy) 16.01.13 14:58
(50) andrewks,
Elisy, кстати, с выходом 8.3 сами длл-ки на .NET оказываются на очень интересном положении, ограничивающим применение конкретной ОС

Нет в этом положении ничего интересного: не будет .Net, будет Mono.
Но пока в NativeAPI не появится IDispatch-подобный тип, стандарт останется ущербным по сравнению с COM ВК.
Кроссплатформенность в 1С для ВК - это миф. Чтобы быть NativeAPI ВК идеально кроссплатформенной, это разработчику нужно поддерживать зоопарк дистрибутивов:
Windows + Linux + plugin для IE + plugin для FF + plugin для Chrome + plugin для Opera
помноженное на 2 (32х и 64x)
Сомневаюсь, что кто-то располагает такими ресурсами. А значит и кроссплатформенности не будет.
53. andrewks 16.01.13 15:04
(51) Elisy, по вопросу "Направление разбора cf для SVN" лично я считаю, что это ещ должно было быть реализовано штатно в 8.0, ну, на крайняк в 8.1. но 1с не ищет лёгких для пользователей и разработчиков путей
54. andrewks 16.01.13 15:05
(52) Elisy, согласен, NativeAPI ущербна, ведь функционал-то есть, чтобы замутить нечто подобное, но см. (53) последнее предложение
55. Сергей Карташев (Elisy) 16.01.13 15:13
(53) andrewks,
Elisy, по вопросу "Направление разбора cf для SVN" лично я считаю, что это ещ должно было быть реализовано штатно в 8.0, ну, на крайняк в 8.1. но 1с не ищет лёгких для пользователей и разработчиков путей
1C прагматична. В принципе для коммерческой программы оправдано. Выгрузка в файлы появилась для публикации конфигурации в облаках и, как реакция, на популярные разработки типа v8unpack. Специалисты из 1С наверняка мониторят сообщество на предмет новых фич в свои продукты. В 8.4 нужно ждать скорее всего Снегопата ))))).
56. Модератор раздела Артур Аюханов (artbear) 16.01.13 18:00
1. 8.3 выгружает не всю инфу. обычные формы выгружаются только как бинарники. Не разбираются внешние файлы и т.д.
Ну и как обычно, вопрос по скорости работы 1С-решения :(
Меня в первую очередь интересует именно сборка/разборка cf и внешних файлов для использования в коллективной разработке.
Если автор сабжа готов выложить свой проект как публичный под GPL-лицензией, я готов присоединиться к проекту.

2. Видимо, интереса к подобным инструментам не было по разным причинам.
Например, ранее не было такого явного перехода на 8-ку опытных разработчиков с 7-ки, группы разработчиков не так сильно задумывались о коллективной разработке и т.д. и т.п.
57. Роман Романов (romansun) 16.01.13 18:51
(56)
2. Видимо, интереса к подобным инструментам не было по разным причинам.
Например, ранее не было такого явного перехода на 8-ку опытных разработчиков с 7-ки, группы разработчиков не так сильно задумывались о коллективной разработке и т.д. и т.п.


имхо,
1С не выходил из сегмента фикси-программистов-саппортеров (существенно, я имею ввиду).. а там ничо такого не надо

как только пошел достаточно массовый выход на отраслевые проекты, требующий серьёзной командной разработки - так тема и стала актуальной:

выгрузка/загрузка в 8.3
атоматическое тестирование в 8.3
новые фишки в работе с хранилищем
сертификация эксперта по техн. вопросам
ЦКТП


это всё одного поля ягоды - обеспечение технологической базы для выход на средний, нижне-крупный сегмент заказчиков

и, кста, явный провал сейчас скорее не в технологии, а в управленческих методиках работы в таких проектах. Программистов толковых много, а тимлидов, РП и прочих - по пальцам...
58. Александр Белов (AlexWhite) 16.01.13 20:27
В теме, кто знает, достаточно давно. Пример работы используемого мной средства разборки/сборки cf-файлов смотрите по ссылке.
(заказная оплаченная разработка)
Кратко об инструменте: названия папок мнемоничные, модули выгружаются в текст, формы в текст с фигурными скобками, таблицы в mxl, картинки в картинки, служебные файлы, в служебные и т.д.
Область применения: является элементом используемой технологии управления распределенными программными проектами для v8 (проекты промышленного масштаба).
Из опыта эксплуатации: подтверждаю мнение (24) pumbaE, о плохой идее тотальной xmlизации выгруженных файлов, но допускаю, что где-то есть "золотая середина" - что-то надо однозначно в текст, но что-то, вероятно, лучше будет работать (выгрузить/загрузить), как xml. И, да, xml в CVS лучше живет бинарным. Ранее хранили, как текст, но после пары граблей от хранения текстовым типом отказались.
Желание: необходимо локализовать и подправить несколько известных багов и, возможно, развить (оптимизировать), чтобы облегчить технологию взаимодействия с CVS (пока сильно уступает в эффективности gcompу, задействованному в проектах на 7.7).
Возможности: могу предоставить площадку для разработки, тестирования, посильное финансирование, в целесообразности открытия проекта и вообще, в распространении этого инструмента, как самостоятельного продукта (вне зависимости от типа лицензии) пока сомневаюсь. Этот инструмент, пока, как скальпель - в одних руках спасает жизнь, в других может смертельно ранить :-)
59. Misha ⁠ (Magister) 16.01.13 22:09
(43)
(44)
Давайте вместе :)
Начало у меня уже есть - http://infostart.ru/public/124213/
Как раз Lazarus использую.
Могу выложить код (на github, например).
60. Misha ⁠ (Magister) 16.01.13 22:19
(58)
А смысл тогда учавствовать, если полученный результат не будет никак распространяться?
61. andrewks 16.01.13 22:19
(59) Magister, на чём базируется? на TStream, надеюсь?
62. Misha ⁠ (Magister) 16.01.13 22:37
(61)
Нет, а зачем? :)
Примерно так:
FileOpen
CreateFileMapping
MapViewOfFile

И дальше работа с памятью. Так быстрее, чем через TStream.
63. andrewks 16.01.13 22:41
(62) Magister, хмм... и как, интересно, Вы это собирались компилить для линукс?
64. andrewks 16.01.13 22:47
(62) Magister, кстати, я не был бы так категоричен в утверждении, что отображение быстрее TStream.

если размер буфера в TStream подобрать оптимально, то разницы практически не будет
65. Misha ⁠ (Magister) 16.01.13 22:55
(63) Примерно вот так: http://www.freepascal.org/docs-html/rtl/baseunix/fpmmap.html
(64) Возможно, я не разбирался как работает TFileStream. Возможно разница не будет большой, не проверял.
Но однозначно будет быстрее полного чтения файла в память.
66. Misha ⁠ (Magister) 16.01.13 22:58
Кстати, можно сделать MapViewOfFile а потом скормить его в TMemoryStream :)
Получим единый интерфейс.
67. andrewks 16.01.13 23:04
(66) Magister, ок, я подумаю. в любом случае, рутина не позволит приступить к этому вопросу раньше февраля. отпишусь
68. andrewks 16.01.13 23:06
(65) Magister,
Примерно вот так

это уже не банальная компиляция, это почти переписывание отдельных участков, в то время, как TStream даёт больший универсализм. впрочем, если линукс как одна из целевых платформ не стоит, то, может, и не стоит заморачиваться
69. Misha ⁠ (Magister) 16.01.13 23:07
(67) ок. у меня тоже рутины сейчас завались, потому и нет пока дальше развития той публикации...
70. Misha ⁠ (Magister) 17.01.13 00:38
(68) Переписывать нужно только пару функций - открытие файла и закрытие. Они возвращают адрес в памяти и размер, а дальше ничего не меняется - т.к. идет работа с памятью.
71. Сергей Карташев (Elisy) 17.01.13 08:24
(68) (69) Я не мешаю вам со своими комментариями и C#? :))))))))
72. Александр Белов (AlexWhite) 17.01.13 09:18
(60) Magister, смысл участия каждый определяет для себя самостоятельно. У меня достаточно зрелый работающий продукт, с многолетним опытом промышленного использования, в вашем, еще только "возможно, в будущем будет сделана сборка...". Думаете, мне интересно, возвращаться на 6 лет назад - к началу разработки моего инструмента? :-) Хотите распространять свой - пожалуйста, кто ж вам запретит? Хотите распространять мой или совместный - обсуждаемо, но сначала необходимо определиться с целями распространения с учетом различных интересов участников. Известное дело, поговорили, собрались, низкий старт, потом начинается, у одного "рутина", у другого - поигрался и отдал, у третьего - увидел, "соблазнил и овладел", понял, что "жалкое подобие правой руки", пропал интерес :-)
73. Сергей Карташев (Elisy) 17.01.13 09:20
(58) (60) Смысла участвовать в закрытых проектах действительно мало, если только из-за "посильного финансирования" )))))
В моем случае схема предельна ясна. Проект под GPL будет рекламировать платный сопутствующий проект .Net Bridge. И наоборот, платность .Net Bridge позволяет выделять некоторое количество ресурсов на развитие CfProject. Плюс дополнительные выгоды: продажи для неGPL-проектов, использование в своих возможных будущих коммерческих разработках.

Из опыта эксплуатации: подтверждаю мнение (24) pumbaE, о плохой идее тотальной xmlизации выгруженных файлов, но допускаю, что где-то есть "золотая середина" - что-то надо однозначно в текст, но что-то, вероятно, лучше будет работать (выгрузить/загрузить), как xml. И, да, xml в CVS лучше живет бинарным. Ранее хранили, как текст, но после пары граблей от хранения текстовым типом отказались.

Если раньше у меня были сомнения относительно выбора XML или, например, Json (за лаконичность), то теперь все больше склоняюсь к XML по следующим причинам:
1. Совместимость. Родной формат выгрузки 8.3 - это xml: большинство объектов метаданных выгружаются в этом формате. Использование этого формата приведет к возможности подменять файлы в 2х проектах простым копированием. Вот пример 8.3:
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<CommonPicture uuid="d154d984-e303-488f-903e-1e7349a2c2a8">
		<Properties>
			<Name>BCGВопросы</Name>
			<Synonym xsi:type="v8:LocalStringType">
				<v8:item>
					<v8:lang>ru</v8:lang>
					<v8:content>BCG вопросы</v8:content>
				</v8:item>
			</Synonym>
			<Comment/>
		</Properties>
	</CommonPicture>
</MetaDataObject>
...Показать Скрыть


2. Xml xml'у рознь. Его можно по-разному оформить. Интерфейс у Microsoft представлен через XAML - разновидность XML. Опять же html-это xml. Согласен, что мало толку от xml вида <column><row/><row/><row/></column><column><row/><row/><row/­></column>... когда в xml записана таблица с данными.
3. И какая-то альтернатива строкам "{0,{..}}" должна быть. Если не Xml, то что? Необработанные данные еще хуже иметь в репозитарии.
74. Сергей Карташев (Elisy) 17.01.13 09:26
(56) artbear,
Если автор сабжа готов выложить свой проект как публичный под GPL-лицензией, я готов присоединиться к проекту.

Куда вам отправить исходники для предварительного ознакомления? Вам лучше сначала на них посмотреть. Может, там не то, о чем вы думали и что планировали увидеть.
75. Сергей Карташев (Elisy) 17.01.13 09:51
(72) AlexWhite,
Не хочу вас огорчать, но проект 6-летней давности мог морально устареть. За это время очень многое поменялось. В логе Python 2.2 выдает язык, на котором написан проект. Специалистов под него мало, особенно среди 1С сообщества. Я не видел проектов на Инфостарт, применяющих Python. Судя по тексту в блокноте до полного парсинга метаданных вы так и не дошли. Есть частичный парсинг для построения дерева, но сути не меняет.

Смысла скрывать проект нет. Судя по оживленной теме здесь появляется куча разработок, аналогичных v8unpack. Начинается конкуренция. Конкуренцию выиграют бесплатные, открытые и кому выделяются ресурсы.
Ресурсы нужны. Особенностью таких проектов является необходимость регулярно уделять внимание проекту, так как 1С время от времени вносит изменения в структуру метаданных и новые метаданные. Изменения были в 8.2.13, 8.2.15, (вроде 8.2.17), 8.3
76. Александр Белов (AlexWhite) 17.01.13 13:07
Ресурсы нужны.
В логе Python 2.2

На питоне написаны скрипты для используемой WinCVS - клиента CVS. Скрипты действительно взрослые, как и сама CVS, но дорабатывать их лишено смысла, они исправно исполняют то, ради чего создавались.
до полного парсинга метаданных вы так и не дошли

Затрудняюсь понять, что вы понимаете под полным парсингом метаданных. В блокноте открыл форму - для демонстрации примера, как она разбирается в текст и модуль - тоже текст. Для CVS разделение типов файлов принципиально, для бинарных каждая версия хранится целиком, для текстовых - оригинал + отличия от оригинала, что позволяет оперировать ветвлением (branch), слиянием (merge). А вы пробовали merge для xml + успешно собрать после этого cf? :-)
Сам проект на Delphi, но это вторично. Мне было важно, чтобы программа была написана для определенных целей, в разумный срок, за приемлемую плату. Нашелся желающий, выбрал инструмент, написал, заработал денег.
Судя по оживленной теме здесь появляется куча разработок, аналогичных v8unpack

Да, хоть, целая свалка! От использования своего инструмента откажусь тогда, когда найду другой, превосходящий по необходимым мне потребительским качествам. Ищу постоянно, ковыряясь в появляющихся кучах поделок, пробую новые технологии. И, тоже не хочу вас огорчать, но даже вашей, достаточно симпатичной, судя по приведенным снимкам экрана, разработке еще очень далеко до того момента, когда она станет пригодна для промышленной эксплуатации. Почему по снимкам? Хотел развернуть, попробовать в деле, сравнить скорости, обломался (одно доставить, другое включить) - жалко времени.
Поэтому, развитие моего проекта возможно за мой счет, на моей площадке, с привлечением накопленного опыта и знаний, пока для узкого круга заинтересованных лиц. При этом, работа возможна строго по моей технологии "управляемое внедрение", которая гарантирует мне, как заказчику, получение требуемой функциональности, к ожидаемому сроку, за приемлемую плату (проверено опытом).

Ресурсы нужны

Их есть у меня. Могу делиться, но на взаимовыгодной основе. Предоставлю, что выше написал, но мой проект будет еще несколько лет закрыт.
77. Сергей Карташев (Elisy) 17.01.13 14:23
(76) AlexWhite,
Затрудняюсь понять, что вы понимаете под полным парсингом метаданных. В блокноте открыл форму - для демонстрации примера, как она разбирается в текст и модуль - тоже текст. Для CVS разделение типов файлов принципиально, для бинарных каждая версия хранится целиком, для текстовых - оригинал + отличия от оригинала, что позволяет оперировать ветвлением (branch), слиянием (merge). А вы пробовали merge для xml + успешно собрать после этого cf? :-)

Я понимаю под парсингом перевод в человекочитаемый формат. Вы хотите сказать, что в вашей системе проблема объединения решена, используя текстовые файлы "{0,{..}}"-формата? Я сильно сомневаюсь - попробуйте разрешить конфликты для таких файлов. Если не xml-формат им на замену взять, то какой?
И, тоже не хочу вас огорчать, но даже вашей, достаточно симпатичной, судя по приведенным снимкам экрана, разработке еще очень далеко до того момента, когда она станет пригодна для промышленной эксплуатации. Почему по снимкам? Хотел развернуть, попробовать в деле, сравнить скорости, обломался (одно доставить, другое включить) - жалко времени.

Я ни в коем случае не навязываю свою обработку. Она тянет за собой .Net framework 4 + .Net Bridge 4. Более того, она наверняка уступает вашей по потраченному времени, а следовательно по функционалу. В моей нет, например, построения всего дерева связынных объектов метаданных, их макетов/форм/модулей. Сейчас есть разбиение по типу метаданных, а макеты/формы/модули кидаются в папку Unresolved. По скорости, думаю, моя быстрее будет, так как на Delphi довольно сложно организовать распараллеливание, а в моей сделана попытка.
78. Александр Белов (AlexWhite) 17.01.13 16:55
проблема объединения решена, используя текстовые файлы "{0,{..}}"-формата?

В моей системе то, что не решено программно, разрешено организационно. Задача merge для v8 - очень не тривиальная, вне зависимости от того, в какой формат выгружать файлы.
Если не xml-формат им на замену взять, то какой?

Я "за" использование xml при выгрузке форм. То, что сейчас у меня выгружается в текст с фигурными скобками - издержки нынешней реализации (как просил, так было сделано, приспособились к as is). Но тексты, считаю, надо выгружать в текст, макеты в макеты, другие бинарники определенных типов в соответствующие файлы определенных типов. Без этой доработки в своем проекте вполне могу прожить и дальше, так как доработка до желаемого не решит существующих трудностей с merge для форм (xml), например. И есть еще, как минимум, одно более серьезное препятствие для merge в v8, решение которого может находиться в стороне от выбранной, в свое время, тактики - разбор cf.
По скорости, думаю, моя быстрее будет

Для меня сейчас производительность вторична. Отсутствие глюков сборки/разборки/взаимодействия с системами хранения версий и пр. - более приоритетно. Производительность моей терпима - cf 448Mb (КА, редактируемая с сохранением поддержки+доработки+несколько обновлений) -> разборка -> более 23тыс. файлов и папок (901 Мб) -> 6 минут. Обратно 17 минут. Вряд ли при выбранной технологии (сбор/разбор cf) можно принципиально увеличить производительность без потери качества, время сопоставимо, думаю, со штатной работой конфигуратора на сопоставимых операциях.

Итого: присоединяйтесь к закрытому проекту, с перспективой "рвануть" другой, более креативный, занимайтесь любимым делом за вознаграждение.
Или
Продолжайте работать в выбранном направлении за интерес к самостоятельным изысканиям, жертвуя свободным временем, конкурируйте с другими, аналогичными, по скорости, радуясь, что ваш проект открыт :-)
Риторический вопрос: В чем смысл открывать проект и "рвать пупок", изыскивая собственные ресурсы - деньги (восполнимый) и время (не восполнимый), когда есть возможность, по крайней мере, зарабатывать, занимаясь интересным (любимым) делом в проекте с ограниченным (но достаточно широким) кругом допущенных лиц?
"Он сказал, не надо орден, я согласен на медаль?" :-)
79. Евгений Сосна (pumbaE) 17.01.13 17:45
Продолжайте работать в выбранном направлении за интерес к самостоятельным изысканиям, жертвуя свободным временем, конкурируйте с другими, аналогичными, по скорости, радуясь, что ваш проект открыт :-)
Это философский вопрос и думаю обсуждать его смысла нет, а то скатимся в пропасть.

О чем спор идет я не могу понять.
Если есть файл cf и 1с 8.3 - рассматривать альтернативный вариант имеет смысл только если сможете выгрузить в человеческий формат только измененные объекты, т.е. есть файл версий посмотрели - изменены только 3 объекта и их из cf файла и получили или же скорость в n раз больше.

p.s.: еще очень интересен разбор внешних отчетов/обработок, если cf худо бедно 1С и сама разберет/соберет, то epf файл к сожалению не сможет.
80. Александр Белов (AlexWhite) 17.01.13 18:21
О чем спор идет я не могу понять.

Да какой тут спор?
Если у вас есть интерес и желание, предоставлю вам возможность, подключиться к работе над моим проектом за плату (договорная). В целесообразности открытия своего проекта пока сомневаюсь.
81. Misha ⁠ (Magister) 18.01.13 02:36
(71) Только самую малость, и только C# :))))))

(72) Вашу систему я в общих чертах представляю (читал описание у вас на сайте), и согласен, что создать такое непросто. И ни в коем случае не умаляю ваших достижений.
Мое предложение было адресовано не вам (кстати, я вообще не совсем понимаю смысл для вас учавствовать в обсуждении - почему бы просто не обратиться к тому, кто разработал программу для вас. но, наверное, причины на то есть - раз вы тут).

По поводу же моей разработки - она больше была сделана "для разминки ума", чтобы не забывать всё остальное кроме 1С. Ну и как ответ на наш спор с Elisy по поводу быстродействия Delphi vs .NET.
Практического применения ей пока не вижу, если только не пытаться составить вам конкуренцию (чего я делать не собираюсь). Потому и готов тратить на неё только свободное время.
Just for fun, как говорится.

(73)
И какая-то альтернатива строкам "{0,{..}}" должна быть. Если не Xml, то что? Необработанные данные еще хуже иметь в репозитарии.

Посмотрите, например, формат .dfm - формы Delphi. По-моему, это как раз то, что нужно. Пример реальной формы (сократил):
object fmMain: TfmMain
  Left = 192
  Top = 111
  Width = 800
  Height = 600
  Caption = #1041#1080#1083#1077#1090#1099' '#1043#1040#1048
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -13
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  Position = poScreenCenter
  ShowHint = True
  OnCreate = FormCreate
  OnDestroy = FormDestroy
  PixelsPerInch = 96
  TextHeight = 16
  object Panel1: TsPanel
    Left = 0
    Top = 0
    Width = 792
    Height = 62
    Align = alTop
    BevelOuter = bvLowered
    TabOrder = 0
    OnMouseUp = sbMouseUp
    SkinData.SkinSection = 'PANEL'
    DesignSize = (
      792
      62)
    object sSpeedButton3: TsSpeedButton
      Tag = 9
      Left = 735
      Top = 12
      Width = 40
      Height = 40
      Anchors = [akTop, akRight]
      Caption = '?'
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -32
      Font.Name = 'MS Sans Serif'
      Font.Style = [fsBold]
      Layout = blGlyphTop
      ParentFont = False
      ParentShowHint = False
      ShowHint = True
      Spacing = 1
      OnClick = sSpeedButton3Click
      OnMouseUp = sbMouseUp
      SkinData.SkinSection = 'SPEEDBUTTON'
    end
    object Bevel1: TsPanel
      Left = 7
      Top = 3
      Width = 55
      Height = 55
      BevelOuter = bvNone
      TabOrder = 0
      OnMouseUp = sbMouseUp
      SkinData.SkinSection = 'SPEEDBUTTON'
      object sb1: TsSpeedButton
        Tag = 2
        Left = 7
        Top = 7
        Width = 40
        Height = 40
        Hint = '1-'#1081' '#1074#1072#1088#1080#1072#1085#1090
        Action = Action1
        Font.Charset = DEFAULT_CHARSET
        Font.Color = clWindowText
        Font.Height = -32
        Font.Name = 'MS Sans Serif'
        Font.Style = [fsBold]
        Layout = blGlyphTop
        ParentFont = False
        ParentShowHint = False
        ShowHint = True
        Spacing = 1
        OnMouseUp = sbMouseUp
        SkinData.SkinSection = 'SPEEDBUTTON'
      end
    end
  end
end
...Показать Скрыть

С таким форматом и merge сделать теоретически должно быть возможным.

(79)
Риторический вопрос: В чем смысл открывать проект и "рвать пупок", изыскивая собственные ресурсы - деньги (восполнимый) и время (не восполнимый), когда есть возможность, по крайней мере, зарабатывать, занимаясь интересным (любимым) делом в проекте с ограниченным (но достаточно широким) кругом допущенных лиц?

Смысл, как минимум, в том, что подключившись к вам - я беру на себя, как на разработчика, определенные обязанности - выполнить определенный функционал в определенные сроки. В замен за это получаю какую-то компенсацию.
В противном же случае - никаких обязанностей нет. Хочу - делаю, не хочу - не делаю. Как отдых после рабочего дня :)
82. Сергей Карташев (Elisy) 18.01.13 07:45
(78) AlexWhite,
Итого: присоединяйтесь к закрытому проекту, с перспективой "рвануть" другой, более креативный, занимайтесь любимым делом за вознаграждение.

Это предложение нужно ограничить теми, кто работает с Delphi, так как ваш проект написан на нем.
Может даже лучше обратиться к аутсорсерам. Определить функциональность и принять оптимальную цену.
83. Сергей Карташев (Elisy) 18.01.13 08:05
(79) pumbaE,

О чем спор идет я не могу понять.
Если есть файл cf и 1с 8.3 - рассматривать альтернативный вариант имеет смысл только если сможете выгрузить в человеческий формат только измененные объекты, т.е. есть файл версий посмотрели - изменены только 3 объекта и их из cf файла и получили или же скорость в n раз больше.

Спора сейчас 2: "философский" о достоинствах и недостатках opensource-проектов и о формате выгрузки (недостатках xml).
Первый ни к чему не приведет - он вечный.
Второй конструктивный и позволит выявить истину, выслушав все доводы за и против.

Есть еще один интересный момент. Управление Торговлей 11.0.7 выгрузилась в 10598 файлов и заняло на диске 1,5Гб. Исходный cf-файл занимает 195Мбайт. Из всех файлов xml-файлов 7069 штук, которые занимают места 1,35Гб. Самые большие - роли: от 3,5 до 5 Мб каждый: 616 файлов на 1,18 Гб.

p.s.: еще очень интересен разбор внешних отчетов/обработок, если cf худо бедно 1С и сама разберет/соберет, то epf файл к сожалению не сможет.

Мне кажется компании 1С не составит труда добавить такой функционал во Внешнюю обработку-Действие, раз есть функционал выгрузки всей конфигурации.
84. Сергей Карташев (Elisy) 18.01.13 08:08
(81) Magister,
Посмотрите, например, формат .dfm - формы Delphi. По-моему, это как раз то, что нужно. Пример реальной формы (сократил):

По-моему нет. Кто кроме Delphi поймет этот формат? Формат xml вы сможете обработать в любой программной платформе, в т.ч. 1С. JSON также распространен. А доморощенный формат - удел узкого круга посвященных.
85. Denis Michaylov (denis_aka_wolf) 18.01.13 08:14
(83) Elisy, А сколько по времени заняла выгрузка??? загрузка??? и после загрузки проверял конфигурацию??? ошибки были???
86. Denis Michaylov (denis_aka_wolf) 18.01.13 08:16
(84) в дополнение:
Делфи значительное время тратит на компиляцию...
87. Сергей Карташев (Elisy) 18.01.13 09:31
(85) denis_aka_wolf,
Elisy, А сколько по времени заняла выгрузка??? загрузка??? и после загрузки проверял конфигурацию??? ошибки были???

Выгрузку делал только средствами 1С 8.3. Время специально не засекал, но судя по разнице дат создания файлов выгрузка занимает 10 минут. Через свою обработку выгрузить пока не могу - не выгрузится без переделки под формат 8.3. А переделывать под сырой формат 8.3 смысла пока нет.
88. Александр Белов (AlexWhite) 18.01.13 10:20
я беру на себя, как на разработчика, определенные обязанности

соответственно, я на себя, как на заказчика.
не обратиться к тому, кто разработал программу для вас

Обращался, сначала говорил, что занят (посмотрю через...месяцев), потом перестал отвечать на письма. Или мои письма попадают в спам, или он потерял интерес, такое в моей практике случается часто.
составить вам конкуренцию (чего я делать не собираюсь).

А надо бы! Сделали бы лучше, я бы у вас купил!
никаких обязанностей нет.

Поэтому, мой проект пока закрыт.
Хочу - делаю, не хочу - не делаю.

В закрытом проекте это право за вами сохраняется. Появилось желание, взялись за задачу, сдали решение, заработали. Взялись за задачу, интерес пропал до сдачи решения, сообщили "нишмагла", ни кто ни кому не должен, в чем трудность? :-)

кто работает с Delphi, так как ваш проект написан на нем.

Мне, как потребителю, без разницы, на чем написан проект, так как от него мне нужны определенные потребительские качества. Доступ в проект предоставляю для того, чтобы сэкономить новому разработчику от года до пяти лет, написать новый может, хоть шариковой ручкой, лишь бы результат обладал требуемыми потребительскими качествами :-)
обратиться к аутсорсерам. Определить функциональность и принять оптимальную цену.

Пройденный этап. У аутсорсеров, с кем общался, "глаза боятся" существенно сильнее, чем "руки делают" из-за отдаленности от 1С. Придать ускорение вашему или другому аналогичному проекту для меня затруднительно, если он будет хоститься где-то, вне моей RMS, так как управляемое инвестирование предпочитаю бесконтрольному :-)
Бесплатный открытый проект может "взлететь" только при наличии у него "кровь-из-носу-заинтересованного" "толкателя" (пример GComp.exe). Когда "толкателем" выступает программист, то, проект, как минимум, обеспечен одной головой и парой рук, даже если все остальные потеряют интерес. Если я займусь обратно программированием, несколько десятков заказчиков станут несчастными, а несколько десятков специалистов потеряют работу или приработок.
Для заинтересованных, прочтите, пожалуйста, (58), свяжитесь со мной любым удобным способом. От продолжения обсуждения, извините, вынужден отказаться, дела зовут :-)
89. Misha ⁠ (Magister) 18.01.13 14:50
(84)
По-моему нет. Кто кроме Delphi поймет этот формат? Формат xml вы сможете обработать в любой программной платформе, в т.ч. 1С. JSON также распространен. А доморощенный формат - удел узкого круга посвященных.

Человек :)
Я предложил такой вариант как наиболее простой для автоматического слияния. С XML так просто не получится.
Впрочем, если есть альтернативы лучше - я только за :)

(86)
в дополнение:
Делфи значительное время тратит на компиляцию...

Ну уж значительно поменьше, чем C/C++. Время для небольших проектов исчисляется секундами.

(88) Спасибо за развернутый ответ, вашу позицию я понял. Но пока что такой вариант работы мне неинтересен.
Ещё раз спасибо.
90. andrewks 18.01.13 15:58
(89) Magister,
Время для небольших проектов исчисляется секундами.
мой проект с ВК NativeAPI lazarus компилит не дольше одной секунды. :-) правда, там нет оконного интерфейса
91. andrewks 18.01.13 15:59
(87) Elisy, а навскидку, что там в 8.3 изменилось в структуре хранения? изменился сам формат 1с-каталога, или изменения уже внутри, в файлах конфигурации?
92. Сергей Карташев (Elisy) 18.01.13 16:18
(91) andrewks,
Elisy, а навскидку, что там в 8.3 изменилось в структуре хранения? изменился сам формат 1с-каталога, или изменения уже внутри, в файлах конфигурации?

Чисто визуально формат 1С-каталога не поменялся. Внутри файлов конфигурации не смотрел.
93. Сергей Карташев (Elisy) 30.01.13 11:29
Последние доработки Elisy CfProject в версии 1.1 позволили сравняться по функциональности с v8unpack и даже превзойти эту утилиту. Теперь CfProject автоматически распаковывает image-файлы в отдельные подкаталоги. Улучшена функциональность по анализу типов и имен объектов метаданных, а также построению адекватного дерева каталогов.

Новое в Elisy.CfProject v1.1:

Распаковка image-объектов в виде подкаталога с файлами;
Распознавание имен для общих модулей, отчетов и обработок;
Переименование известных свойств согласно именам 1С;
Исправлена ошибка чтения cf-записи с нулевой длиной;
94. Алексей (ADirks) 30.01.13 11:48
Чисто по философским вопросам:
- Я за открытую разработку и свободное распространение
- Категорически против XML

В своё время нас пытались склонить к выгрузке семёрошного .MD в xml формате, и даже в один большой файл. И я даже серьёзно рассматривал этот вопрос, прикидывал объёмы, время разборки/сборки, читабельность. В итоге, и к счастью, отказались. Читабельность победила, ну и время конечно.
95. Алексей (ADirks) 30.01.13 11:53
+94, про читабельность

Причём, гораздо важнее даже не читабельность самих файлов, а читабельность диффов. У XML с этим гораздо хуже чем у незамысловато оформленного plain-text'а
96. Модератор раздела Артур Аюханов (artbear) 30.01.13 20:46
(94) +1
Привет, Алексей!
Да, дифф и мерж проще делать с текстом, проверено.
ЗЫ если кто не знает, это автор GComp :)
97. Сергей Карташев (Elisy) 31.01.13 08:01
(94) ADirks,
Чисто по философским вопросам:
- Я за открытую разработку и свободное распространение

Понятно, что лучше жить вечно, чем умирать, и лучше быть здоровым, чем больным. Но реальность немного другая. Если посмотрите на проект v8unpack, то можно заметить, что он не обновлялся с 2008 года, несмотря на свободность и открытость. Вернее даже по-другому: из-за открытости и свободности компонент v8unpack не обновлялся с 2008 года. Не думаю, что кому-то было бы приятно повторить судьбу данного проекта. Чтобы его не повторить, нужно закладывать другие принципы распространения.
Теперь возьмем другой пример Snegopat. Был свободный аналог для 7.7. Но после появления платного аналога для 8.х проект начал стремительно развиваться, потому что появился стимул к развитию. Ведь сумма вырученных средств за проект - это адекватный показатель полезности и востребованности.
CfProject требует временных вложений - сейчас он нацелен на формат 8.2.14. Скорее всего в 8.2.17 изменился формат конфигурации. И однозначно в 8.3 изменился формат конфигурации. Получается, что уже известно о 2х предстоящих доработках.
Открытым проект имеет смысл делать, если есть сообщество, готовое развивать проект или для конкуренции с другим закрытым проектом. В случае с 1С специалистов по C# (CfProject написан на нем) не так уж много. Альтруистов среди нас мало - мало кто захочет учить C# только для CfProject. Да и качество кода у вновь появившихся сишарпников будет страдать. Поэтому, исходя из ваших предпочтений и реалий, напрашивается какой-то хитрый подход в лицензировании, поддерживающий баланс. Скорее всего несколько лицензий: такой подход себя оправдал в нашем другом проекте и дает ему возможность развиваться. Но сейчас говорить о лицензировании еще рано - все равно, что делить шкуру не убитого медведя. Хотя задуматься об этом надо.
98. Сергей Карташев (Elisy) 31.01.13 08:12
(94) ADirks,(95) ADirks, (96) artbear,
По поводу формата выгрузки, не думаю, что этот вопрос принципиален. Скорее всего нужно закладывать несколько форматов. Сейчас в виде недокументированной возможности заложена выгрузка в формате XML и в формате TXT (оригинальных строках 1С). Альтернативными могут быть JSON выгрузки - достаточно быстро, думаю, реализовать, взяв парсер из другого нашего проекта. Еще альтернатива: в виде исходного кода на C# или JScript (здесь нужна реализация собственного парсера) - это более трудоемко.
99. Алексей (ADirks) 31.01.13 09:57
Жизнеспособность проекта, как мне кажется, не связана с типом лицензирования. Именно что нужна в первую очередь команда, а во вторую (как ни странно) целевая аудитория.
С V8Unpack, равно как и с остальными подобными, потому так и получилось, что не сложилось ни первое, ни второе. Сейчас вроде бы целевая аудитория какая-никакая появляется, несмотря на то, что адинэснеги в подавляющем большинстве не ведают, что такое коллективная разработка и версионный контроль. Команда у вас есть. Так что, надеюсь проект будет жить. Когда-то же и мне придётся на восьмёрку переезжать.

Что касается открытости кода, и вообще лицензирования, то это не более чем мои предпочтения, решать что и как конечно же вам (т.е. команде). В данном случае я за открытость проекта потому что целевая аудитория наверное человек 100, и в основном эти люди вполне способны подключиться к проекту. Даже если один человек подключится, уже заметная польза.

Про Снегопат. Мне кажется, что проект стал платным именно потому, что появилась достаточная ЦА, и платность стала целесообразной. Саша ведь и OpenConf собирался сделать коммерческим - да так и не собрался, подозреваю потому что гемора было бы больше чем дохода :) А развивался проект не менее бурно. И кстати, в развитии Снегопата учавствуют всё те же люди, как я погляжу :)


P.S.
Искренне желаю проекту успеха, желательно коммерческого! И удачи команде!
ret-Phoenix; pumbaE; +2 Ответить 1