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

05.11.14

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

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

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

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

Новое в 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.

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

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

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

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

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

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

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

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

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

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

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

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122171    670    389    

714

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 15300 руб.

06.10.2023    7295    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3542    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177754    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99347    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18116    6    8    

39

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28110    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23604    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. yandextesting 148 06.01.12 16:24 Сейчас в теме
Разработчики платформы на последнем семинаре анонсировали выгрузку/загрузку конфигурации в XML-формате средствами самой платформы в одном из ближайших релизов - предположительно уже в 8.2.16.
2. tormozit 7136 06.01.12 16:50 Сейчас в теме
(1) Скорее всего там будет опять же лишь небольшой процент содержимого конфигурации (модули, тексты интерфейса и т.д.).
4. tango 506 07.01.12 01:55 Сейчас в теме
соглашусь с (2)
ВСЮ конфу в екемель? - да никогда.
это ж барабан на встречу
11. BabySG 08.01.12 19:00 Сейчас в теме
(2) Вся конфа будет выгружаться, во всяком случае - так было заявлено.
Ибо звучало так: "можно выгрузить и загрузить обратно".
Таким образом, если хоть что-то не выгрузили - что мы же мы потом загрузим? :)
5. Elisy 948 07.01.12 08:37 Сейчас в теме
(1) Это отличная новость - выгрузка XML проблему контроля версий охватит. На повестку дня встанет программный доступ к объектам конфигураций для создания "на лету". CfProject и MdInternals будут переориентированы в этом направлении.
3. sytkosa 119 07.01.12 01:46 Сейчас в теме
(xml) все это конечно круто. Но как собрать сие добро обратно. Сейчас самая актуальная проблема это выгрузка форм и макетов так как с программным кодом более мене все понятно 5есть стандартный механизм есть V8Unpack которые выгружают все в более менее удобочитаемом виде.
6. Elisy 948 07.01.12 08:44 Сейчас в теме
(3) CfProject собирает все, что нараспаковывал, обратно
7. Misanets 340 07.01.12 21:48 Сейчас в теме
А, собственно зачем такие танцы??? Ни кто не отменял бэкап скула или дт.
13. Elisy 948 09.01.12 07:46 Сейчас в теме
(7) Как-то работа с cf и ваше предложение о dt- sql- архивах не согласуются. Не могли бы вы мысль немного развернутей описать? :) Спасибо
9. zavedeev 08.01.12 00:05 Сейчас в теме
10. anton.fly7 173 08.01.12 15:15 Сейчас в теме
а что эта программа сделает с модулями, которые не включены в поставку?
и с запаролеными обработками?
15. Elisy 948 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С.
30. Elisy 948 04.06.12 12:20 Сейчас в теме
(15) Функциональность декомпиляции в будущих версиях будет вынесена из проекта Elisy.MdInternals как провокационная для лицензионной политики 1С. Хотя эта операция разрешена в ГК РФ.
Декомпилирование модулей расширено и опубликовано on-line по адресу:
http://www.1csoftware.com/dotnet/ru-ru/decompiler
Resha; teflon; +2 Ответить
32. Resha 08.12.12 13:15 Сейчас в теме
(30)
Замеченна проблема у сервиса:
Проблема с кавычками внутри строк: вместо "чччч ""Текст в кавычках внутри строки"" yyy" возвращается "чччч "Текст в кавычках внутри строки" yyy". Поэтому после завершения необходимо выполнить проверку модулей.
35. Elisy 948 10.12.12 09:38 Сейчас в теме
(32) Resha,
Замеченна проблема у сервиса:
Проблема с кавычками внутри строк: вместо "чччч ""Текст в кавычках внутри строки"" yyy" возвращается "чччч "Текст в кавычках внутри строки" yyy". Поэтому после завершения необходимо выполнить проверку модулей.

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


Спасибо за баг-репорты. Библиотека подправлена. В новой версии 1.0.0.5 эти проблемы должны решиться.
Вы можете проверить прямо сейчас на сайте:
http://www.1csoftware.com/dotnet/ru-ru/decompiler
33. Resha 08.12.12 13:19 Сейчас в теме
(30)

И ещё одна:

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

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

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

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

автоматизация операций конфигуратора: каких интерестно?
25. Elisy 948 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) мне понятно стало, что с xml и версионым контролем вы активно не работали.
Поясню:
Для затравки , svn покажет красиво различия в xml, если структура не менялась, а только содержимое элементов, то конечно все просто и красиво, пример Не svn но принцип думаю понятен , но вот такой распространенный случай как : в объект конфигурации добавили слово удалить и добавили новый объект с тем же именем, svn не решит и понять в выводе diff будет сложно, т.к. автоматическая решалка конфликтов, предложит оставить наименование без "удалить".
27. Elisy 948 17.05.12 15:59 Сейчас в теме
(26) pumbaE,
понятно, что всегда бывают конфликты и не только в xml, но и с исходным кодом других проектов.
Напомню, что обсуждение началось с того, что было высказано сомнение в формате xml, как взятого за основу в обработке. Как обоснование приведено сравнение версий в (26). Но тогда возникает вопрос, какой формат будет более подходящим? Сколько приходит на ум потенциальных форматов, везде будут конфликты с переименованием реквизита в "удалить" и добавлением нового одноименного при автоматическом решении конфликтов.
Не проверял, но писали где-то, что проект Mercurial более стойкий к такому виду конфликтов, так как спроектирован был специально для этого.
58. AlexWhite 194 16.01.13 20:27 Сейчас в теме
В теме, кто знает, достаточно давно. Пример работы используемого мной средства разборки/сборки cf-файлов смотрите по ссылке.
(заказная оплаченная разработка)
Кратко об инструменте: названия папок мнемоничные, модули выгружаются в текст, формы в текст с фигурными скобками, таблицы в mxl, картинки в картинки, служебные файлы, в служебные и т.д.
Область применения: является элементом используемой технологии управления распределенными программными проектами для v8 (проекты промышленного масштаба).
Из опыта эксплуатации: подтверждаю мнение (24) pumbaE, о плохой идее тотальной xmlизации выгруженных файлов, но допускаю, что где-то есть "золотая середина" - что-то надо однозначно в текст, но что-то, вероятно, лучше будет работать (выгрузить/загрузить), как xml. И, да, xml в CVS лучше живет бинарным. Ранее хранили, как текст, но после пары граблей от хранения текстовым типом отказались.
Желание: необходимо локализовать и подправить несколько известных багов и, возможно, развить (оптимизировать), чтобы облегчить технологию взаимодействия с CVS (пока сильно уступает в эффективности gcompу, задействованному в проектах на 7.7).
Возможности: могу предоставить площадку для разработки, тестирования, посильное финансирование, в целесообразности открытия проекта и вообще, в распространении этого инструмента, как самостоятельного продукта (вне зависимости от типа лицензии) пока сомневаюсь. Этот инструмент, пока, как скальпель - в одних руках спасает жизнь, в других может смертельно ранить :-)
60. Magister 134 16.01.13 22:19 Сейчас в теме
(58)
А смысл тогда учавствовать, если полученный результат не будет никак распространяться?
72. AlexWhite 194 17.01.13 09:18 Сейчас в теме
(60) Magister, смысл участия каждый определяет для себя самостоятельно. У меня достаточно зрелый работающий продукт, с многолетним опытом промышленного использования, в вашем, еще только "возможно, в будущем будет сделана сборка...". Думаете, мне интересно, возвращаться на 6 лет назад - к началу разработки моего инструмента? :-) Хотите распространять свой - пожалуйста, кто ж вам запретит? Хотите распространять мой или совместный - обсуждаемо, но сначала необходимо определиться с целями распространения с учетом различных интересов участников. Известное дело, поговорили, собрались, низкий старт, потом начинается, у одного "рутина", у другого - поигрался и отдал, у третьего - увидел, "соблазнил и овладел", понял, что "жалкое подобие правой руки", пропал интерес :-)
75. Elisy 948 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
73. Elisy 948 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, то что? Необработанные данные еще хуже иметь в репозитарии.
88. AlexWhite 194 18.01.13 10:20 Сейчас в теме
я беру на себя, как на разработчика, определенные обязанности

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

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

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

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

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

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

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

Пройденный этап. У аутсорсеров, с кем общался, "глаза боятся" существенно сильнее, чем "руки делают" из-за отдаленности от 1С. Придать ускорение вашему или другому аналогичному проекту для меня затруднительно, если он будет хоститься где-то, вне моей RMS, так как управляемое инвестирование предпочитаю бесконтрольному :-)
Бесплатный открытый проект может "взлететь" только при наличии у него "кровь-из-носу-заинтересованного" "толкателя" (пример GComp.exe). Когда "толкателем" выступает программист, то, проект, как минимум, обеспечен одной головой и парой рук, даже если все остальные потеряют интерес. Если я займусь обратно программированием, несколько десятков заказчиков станут несчастными, а несколько десятков специалистов потеряют работу или приработок.
Для заинтересованных, прочтите, пожалуйста, (58), свяжитесь со мной любым удобным способом. От продолжения обсуждения, извините, вынужден отказаться, дела зовут :-)
111. AlexanderKai 09.12.14 12:33 Сейчас в теме
(58) AlexWhite,
И, да, xml в CVS лучше живет бинарным. Ранее хранили, как текст, но после пары граблей от хранения текстовым типом отказались.

Расскажите о граблях более подробно, пожалуйста. Неужели такие штуки как xmldiff не спасают?
28. AlexanderKai 18.05.12 12:20 Сейчас в теме
Интересное решение, кто-нибудь реально использует в работе? Впечатления, выявленные недостатки?
xzorkiix; +1 Ответить
29. Elisy 948 18.05.12 13:09 Сейчас в теме
(28) AlexanderKai,
сомневаюсь, что кто-то использует в работе. Все ждут 1С 8.3, где ожидается схожая функциональность при выгрузке конфигурации в облака.
31. Elisy 948 23.07.12 08:52 Сейчас в теме
Как и обещала компания 1С в 8.3 добавлена выгрузка конфигурации в xml-файлы. Но почему этот процесс занимает так много времени?! :)
36. Elisy 948 24.12.12 15:15 Сейчас в теме
В связи с популярностью разработки решено выделить немного ресурсов для ее развития.
Если у кого есть пожелания, пожалуйста, делитесь.
Многие возможности уже реализованы, но не документированы. Возможно, многие проблемы и пожелания уже можно решить на программном уровне.
В будущем курс будет взят на формат файловой выгрузки конфигурации 1С 8.3 для совместимости.
37. МихаилМ 25.12.12 17:01 Сейчас в теме
проверил на "битой" конфигурации.


sql1c.epf - выдала кучу собщений об ошибке и ничего не распаковала.
v8unpack - справилась с задачей.
38. Elisy 948 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 948 29.12.12 08:34 Сейчас в теме
(39) МихаилМ,
Не скачивается. Долго думает, потом после выбора куда скачать скачивает файл с 0 байт.
41. МихаилМ 29.12.12 10:19 Сейчас в теме
42. Elisy 948 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. Модератор раздела 16.01.13 12:13 Сейчас в теме
Исходники/разработка проекта так и будет закрытой?
Давно использую подобные инструменты.
Хочу присоединиться к какой-нибудь разработке и знаю разработчиков, также готовых помочь в разработке подобных инструментов.
Пока примериваюсь к v8unpack, как наиболее открытом и вполне рабочему инструменту.
44. andrewks 1368 16.01.13 12:37 Сейчас в теме
(43) artbear, я хочу написать свой v8unpack в виде ВК NativeAPI, с блэкджеком и прочими атрибутами ;-)
но базироваться планирую на лазарус
45. Модератор раздела 16.01.13 12:57 Сейчас в теме
(44) Хорошее дело - но я бы лично сделал набор независимых классов для возможности создания как ВК, так и консольного приложения для различного использования.
Лазарус - это паскаль?
Меня интересует именно открытый проект.
В дальнейшем планирую юзать версионники с разобранными конфигурациями и внешними файлами.
46. andrewks 1368 16.01.13 13:24 Сейчас в теме
(45) artbear, да, лазарус на базе FPC реализован

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

так вроде полно шаблонов есть.
48. Elisy 948 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 1368 16.01.13 14:21 Сейчас в теме
(48)
Как говорится, планировать одно, а сделать - сложнее

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

Когда я говорил, что сложно, я не имел ввиду - невозможно для среднего ума. Я имел ввиду комплексно время + навыки + дальнейшая поддержка. Направление разбора cf для SVN охватывает 8.3 с выгрузкой в формате XML, как я понимаю.
53. andrewks 1368 16.01.13 15:04 Сейчас в теме
(51) по вопросу "Направление разбора cf для SVN" лично я считаю, что это ещ должно было быть реализовано штатно в 8.0, ну, на крайняк в 8.1. но 1с не ищет лёгких для пользователей и разработчиков путей
55. Elisy 948 16.01.13 15:13 Сейчас в теме
(53) andrewks,
Elisy, по вопросу "Направление разбора cf для SVN" лично я считаю, что это ещ должно было быть реализовано штатно в 8.0, ну, на крайняк в 8.1. но 1с не ищет лёгких для пользователей и разработчиков путей
1C прагматична. В принципе для коммерческой программы оправдано. Выгрузка в файлы появилась для публикации конфигурации в облаках и, как реакция, на популярные разработки типа v8unpack. Специалисты из 1С наверняка мониторят сообщество на предмет новых фич в свои продукты. В 8.4 нужно ждать скорее всего Снегопата ))))).
50. andrewks 1368 16.01.13 14:23 Сейчас в теме
(48) кстати, с выходом 8.3 сами длл-ки на .NET оказываются на очень интересном положении, ограничивающим применение конкретной ОС
52. Elisy 948 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)
Сомневаюсь, что кто-то располагает такими ресурсами. А значит и кроссплатформенности не будет.
54. andrewks 1368 16.01.13 15:05 Сейчас в теме
(52) согласен, NativeAPI ущербна, ведь функционал-то есть, чтобы замутить нечто подобное, но см. (53) последнее предложение
47. Elisy 948 16.01.13 13:46 Сейчас в теме
(43) artbear,
Исходники/разработка проекта так и будет закрытой?
Давно использую подобные инструменты.
Хочу присоединиться к какой-нибудь разработке и знаю разработчиков, также готовых помочь в разработке подобных инструментов.
Пока примериваюсь к v8unpack, как наиболее открытом и вполне рабочему инструменту.

Была подготовка к большей открытости. Например, вынесено декомпилирование модулей в отдельный проект. Без этого действия 1С не дала бы жизни проекту, преследуя открытое распространение.
Но после выхода 1С 8.3 с возможностью выгрузки конфигурации в файлы целесообразность разработки CfProject оказалась под вопросом. Возникло несколько вопросов: кто будет пользоваться, если в 1С есть функционал "из коробки"? Кто будет участвовать в проекте, если даже после открытия исходного кода v8unpack никто не присоединился к его разработке?
Если проект интересен сообществу, то мы можем рассмотреть возможность публикации под GPL-лицензией на GitHub.
59. Magister 134 16.01.13 22:09 Сейчас в теме
(43)
(44)
Давайте вместе :)
Начало у меня уже есть - http://infostart.ru/public/124213/
Как раз Lazarus использую.
Могу выложить код (на github, например).
61. andrewks 1368 16.01.13 22:19 Сейчас в теме
(59) Magister, на чём базируется? на TStream, надеюсь?
62. Magister 134 16.01.13 22:37 Сейчас в теме
(61)
Нет, а зачем? :)
Примерно так:
FileOpen
CreateFileMapping
MapViewOfFile

И дальше работа с памятью. Так быстрее, чем через TStream.
63. andrewks 1368 16.01.13 22:41 Сейчас в теме
(62) Magister, хмм... и как, интересно, Вы это собирались компилить для линукс?
65. Magister 134 16.01.13 22:55 Сейчас в теме
(63) Примерно вот так: http://www.freepascal.org/docs-html/rtl/baseunix/fpmmap.html
(64) Возможно, я не разбирался как работает TFileStream. Возможно разница не будет большой, не проверял.
Но однозначно будет быстрее полного чтения файла в память.
68. andrewks 1368 16.01.13 23:06 Сейчас в теме
(65) Magister,
Примерно вот так

это уже не банальная компиляция, это почти переписывание отдельных участков, в то время, как TStream даёт больший универсализм. впрочем, если линукс как одна из целевых платформ не стоит, то, может, и не стоит заморачиваться
70. Magister 134 17.01.13 00:38 Сейчас в теме
(68) Переписывать нужно только пару функций - открытие файла и закрытие. Они возвращают адрес в памяти и размер, а дальше ничего не меняется - т.к. идет работа с памятью.
71. Elisy 948 17.01.13 08:24 Сейчас в теме
(68) (69) Я не мешаю вам со своими комментариями и C#? :))))))))
81. Magister 134 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)
Риторический вопрос: В чем смысл открывать проект и "рвать пупок", изыскивая собственные ресурсы - деньги (восполнимый) и время (не восполнимый), когда есть возможность, по крайней мере, зарабатывать, занимаясь интересным (любимым) делом в проекте с ограниченным (но достаточно широким) кругом допущенных лиц?

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

По-моему нет. Кто кроме Delphi поймет этот формат? Формат xml вы сможете обработать в любой программной платформе, в т.ч. 1С. JSON также распространен. А доморощенный формат - удел узкого круга посвященных.
86. denis_aka_wolf 79 18.01.13 08:16 Сейчас в теме
(84) в дополнение:
Делфи значительное время тратит на компиляцию...
89. Magister 134 18.01.13 14:50 Сейчас в теме
(84)
По-моему нет. Кто кроме Delphi поймет этот формат? Формат xml вы сможете обработать в любой программной платформе, в т.ч. 1С. JSON также распространен. А доморощенный формат - удел узкого круга посвященных.

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

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

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

(88) Спасибо за развернутый ответ, вашу позицию я понял. Но пока что такой вариант работы мне неинтересен.
Ещё раз спасибо.
90. andrewks 1368 18.01.13 15:58 Сейчас в теме
(89) Magister,
Время для небольших проектов исчисляется секундами.
мой проект с ВК NativeAPI lazarus компилит не дольше одной секунды. :-) правда, там нет оконного интерфейса
64. andrewks 1368 16.01.13 22:47 Сейчас в теме
(62) Magister, кстати, я не был бы так категоричен в утверждении, что отображение быстрее TStream.

если размер буфера в TStream подобрать оптимально, то разницы практически не будет
56. Модератор раздела 16.01.13 18:00 Сейчас в теме
1. 8.3 выгружает не всю инфу. обычные формы выгружаются только как бинарники. Не разбираются внешние файлы и т.д.
Ну и как обычно, вопрос по скорости работы 1С-решения :(
Меня в первую очередь интересует именно сборка/разборка cf и внешних файлов для использования в коллективной разработке.
Если автор сабжа готов выложить свой проект как публичный под GPL-лицензией, я готов присоединиться к проекту.

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


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

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

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


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

и, кста, явный провал сейчас скорее не в технологии, а в управленческих методиках работы в таких проектах. Программистов толковых много, а тимлидов, РП и прочих - по пальцам...
74. Elisy 948 17.01.13 09:26 Сейчас в теме
(56) artbear,
Если автор сабжа готов выложить свой проект как публичный под GPL-лицензией, я готов присоединиться к проекту.

Куда вам отправить исходники для предварительного ознакомления? Вам лучше сначала на них посмотреть. Может, там не то, о чем вы думали и что планировали увидеть.
66. Magister 134 16.01.13 22:58 Сейчас в теме
Кстати, можно сделать MapViewOfFile а потом скормить его в TMemoryStream :)
Получим единый интерфейс.
67. andrewks 1368 16.01.13 23:04 Сейчас в теме
(66) Magister, ок, я подумаю. в любом случае, рутина не позволит приступить к этому вопросу раньше февраля. отпишусь
69. Magister 134 16.01.13 23:07 Сейчас в теме
(67) ок. у меня тоже рутины сейчас завались, потому и нет пока дальше развития той публикации...
76. AlexWhite 194 17.01.13 13:07 Сейчас в теме
Ресурсы нужны.
В логе Python 2.2

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

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

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

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

Их есть у меня. Могу делиться, но на взаимовыгодной основе. Предоставлю, что выше написал, но мой проект будет еще несколько лет закрыт.
77. Elisy 948 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 194 17.01.13 16:55 Сейчас в теме
проблема объединения решена, используя текстовые файлы "{0,{..}}"-формата?

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

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

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

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

Это предложение нужно ограничить теми, кто работает с Delphi, так как ваш проект написан на нем.
Может даже лучше обратиться к аутсорсерам. Определить функциональность и принять оптимальную цену.
79. pumbaE 17.01.13 17:45 Сейчас в теме
Продолжайте работать в выбранном направлении за интерес к самостоятельным изысканиям, жертвуя свободным временем, конкурируйте с другими, аналогичными, по скорости, радуясь, что ваш проект открыт :-)
Это философский вопрос и думаю обсуждать его смысла нет, а то скатимся в пропасть.

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

p.s.: еще очень интересен разбор внешних отчетов/обработок, если cf худо бедно 1С и сама разберет/соберет, то epf файл к сожалению не сможет.
83. Elisy 948 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С не составит труда добавить такой функционал во Внешнюю обработку-Действие, раз есть функционал выгрузки всей конфигурации.
85. denis_aka_wolf 79 18.01.13 08:14 Сейчас в теме
(83) А сколько по времени заняла выгрузка??? загрузка??? и после загрузки проверял конфигурацию??? ошибки были???
87. Elisy 948 18.01.13 09:31 Сейчас в теме
(85) denis_aka_wolf,
Elisy, А сколько по времени заняла выгрузка??? загрузка??? и после загрузки проверял конфигурацию??? ошибки были???

Выгрузку делал только средствами 1С 8.3. Время специально не засекал, но судя по разнице дат создания файлов выгрузка занимает 10 минут. Через свою обработку выгрузить пока не могу - не выгрузится без переделки под формат 8.3. А переделывать под сырой формат 8.3 смысла пока нет.
91. andrewks 1368 18.01.13 15:59 Сейчас в теме
(87) а навскидку, что там в 8.3 изменилось в структуре хранения? изменился сам формат 1с-каталога, или изменения уже внутри, в файлах конфигурации?
92. Elisy 948 18.01.13 16:18 Сейчас в теме
(91) andrewks,
Elisy, а навскидку, что там в 8.3 изменилось в структуре хранения? изменился сам формат 1с-каталога, или изменения уже внутри, в файлах конфигурации?

Чисто визуально формат 1С-каталога не поменялся. Внутри файлов конфигурации не смотрел.
80. AlexWhite 194 17.01.13 18:21 Сейчас в теме
О чем спор идет я не могу понять.

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

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

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

В своё время нас пытались склонить к выгрузке семёрошного .MD в xml формате, и даже в один большой файл. И я даже серьёзно рассматривал этот вопрос, прикидывал объёмы, время разборки/сборки, читабельность. В итоге, и к счастью, отказались. Читабельность победила, ну и время конечно.
96. Модератор раздела 30.01.13 20:46 Сейчас в теме
(94) +1
Привет, Алексей!
Да, дифф и мерж проще делать с текстом, проверено.
ЗЫ если кто не знает, это автор GComp :)
97. Elisy 948 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 948 31.01.13 08:12 Сейчас в теме
(94) ADirks,(95) ADirks, (96) artbear,
По поводу формата выгрузки, не думаю, что этот вопрос принципиален. Скорее всего нужно закладывать несколько форматов. Сейчас в виде недокументированной возможности заложена выгрузка в формате XML и в формате TXT (оригинальных строках 1С). Альтернативными могут быть JSON выгрузки - достаточно быстро, думаю, реализовать, взяв парсер из другого нашего проекта. Еще альтернатива: в виде исходного кода на C# или JScript (здесь нужна реализация собственного парсера) - это более трудоемко.
95. ADirks 186 30.01.13 11:53 Сейчас в теме
+94, про читабельность

Причём, гораздо важнее даже не читабельность самих файлов, а читабельность диффов. У XML с этим гораздо хуже чем у незамысловато оформленного plain-text'а
Оставьте свое сообщение