1C-Company / dt-demo-configuration

77 stars 45 forks source link

Необходима утилита работающая в командном режиме преобразующая edt проект в проект с которым может работать 1с #6

Closed pumbaEO closed 6 years ago

pumbaEO commented 9 years ago

Сейчас иерархическая структура с которой работает 1с отличается от ирерхаческой структурой с которой работает edt.

artbear commented 9 years ago

Вставлю свой комментарий: @1C-Company Похоже, что EDT и 1С используют разные версии иерархической выгрузки конфигурации :)

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

Скачал 1С 8.3.7.1633, выполнил штатную иерархическую выгрузку нашего открытого продукта xUnitFor1C, получил следующие расхождения:

1 Модули объектов при типовой выгрузке 1С выгружаются как

т.е. 1С создает ненужный каталог Ext и выгружает туда модуль. В этом каталоге будет всего один файл. В данном случае у Вас удобнее структура, чем у типовой выгрузки 1С.

2 Макеты выгружаются еще дальше

В данном случае и у Вас, и у штатной выгрузки 1С структура не так удобна. Опять один каталог на один файл.

3 Что интересно, у штатной выгрузки 1С хмл-файлы описания макетов находятся в одном каталоге :)

Вопросы:

  1. Как Вы совмещаете 2 вида выгрузки - EDT и 1С ?
  2. Зачем так далеко укладывать файлы, которые все уникальны и их можно положить в один общий каталог? Фактически мы только удлиняем путь к файлам и затрудняем использование различных инструментов, например, инструментов для просмотра код-ревью и т.п.

ИМХО 1С в своем стремлении сделать все иерархически пошла слишком далеко, часть файлов удобно положить в одном общем каталоге (я про макеты и модули объектов)

В нашем открытом продукте https://github.com/xDrivenDevelopment/v83unpack этой проблемы нет. Например, модуль лежит на верхнем уровне выгрузки объекта, макеты лежат в одном каталоге

MinimaJack commented 9 years ago

Как Вы совмещаете 2 вида выгрузки - EDT и 1С

EDT - экспортирует и импортирует из(в) формата 1С-xml. EDT - выгрузки по сути не существует, это проект(eclipse) в котором очень много xml - файлов...

1C-Company commented 9 years ago
  1. Как Вы совмещаете 2 вида выгрузки - EDT и 1С ?

@artbear, @MinimaJack все верно говорит.

  1. Зачем так далеко укладывать файлы, которые все уникальны и их можно положить в один общий каталог?

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

Фактически мы только удлиняем путь к файлам и затрудняем использование различных инструментов, например, инструментов для просмотра код-ревью и т.п.

а в чем затруднение при код-ревью?

artbear commented 9 years ago

@1C-Company

а в чем затруднение при код-ревью?

Например, тем, что инструменты код ревью показывают полный путь объекта (и это правильно) в дерево объектов. Если полный путь слишком длинен, то правая часть (фактически уникальная и самая важная) "съедается" и не показывается :(

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

Иерархия - это отлично, но зачем добавлять несуществующие/"пустые" уровни ?

artbear commented 9 years ago

@1C-Company

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

А еще есть общие модули, модули метаданных (модуль объекта для всех метаданных и модуль менеджера, где он есть). Наверняка они выгружаются по тем же "пустым" каталогам с единственным файлом внутри.

pumbaEO commented 9 years ago

Хотелось бы вернуться к сути вопроса. Сейчас структура каталогов, файлов выгружаемая и загружаемая 1с отличается от структуры каталогов edt, в командном режиме преобразовать туда и обратно нет возможности, так же в edt нет возможности проимпортить не из базы, а уже с готовой выгрузки, т.е. с файловой системы - указать путь к папке с предварительно уже выгруженной конфигурации и получить проект в edt. Т.е. помещаять в хранилище edt исходники не имеет смысла, т.к. 1с их не поймет, помещать исходники 1с - сильно удлиняется путь для импорта(загрузить в 1с из исходников, зайти в edt и проимпортить данные, а erp 2.1 импортиться чуть более 8 часов).

1C-Company commented 9 years ago

так же в edt нет возможности проимпортить не из базы, а уже с готовой выгрузки

есть! см Документацию пункт "2.3.2.4. Загрузка конфигурации"

На счет командлайн утилиты по импорту\экспорту... у нас такая задача записана

MinimaJack commented 9 years ago

К сожалению бандлы EDT сильно завязаны на гуй, быстро явно не получится. Очень жаль что погрязли(

pumbaEO commented 9 years ago

С наличием импорта протупил, согласен. (только вот отменить импорт невозможно на квадратик нажимаешь, а он все висит и висит).

p.s.: может опишите ваше видение командной разработки, использование git, как планировали делать deploy на pre-prodaction сервер, merge изменений.

1C-Company commented 9 years ago

@MinimaJack такого не должно быть, подскажите, что у вас вызвало затруднение?

1C-Company commented 9 years ago

С наличием импорта протупил, согласен. (только вот отменить импорт невозможно на квадратик нажимаешь, а он все висит и висит).

похоже на ошибку, исправим.

1C-Company commented 9 years ago

p.s.: может опишите ваше видение командной разработки, использование git, как планировали делать deploy на pre-prodaction сервер, merge изменений.

в перспективе ничто не должно помешать построить разработку через CI и CD. Данные вопросы прорабатываются и учитываются.

pumbaEO commented 9 years ago

в перспективе ничто не должно помешать построить разработку через CI и CD

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

Данные вопросы прорабатываются и учитываются.

юнит тесты, bdd тесты, code-covarage, генерация документации по анотациям для разработчиков, тоже?

MinimaJack commented 9 years ago

@pumbaEO не все сразу строится... @1C-Company слабо представляю OSGI архитектуру для CI. Возможно в чем то и неправ, но пока так.

SergeyDjam commented 9 years ago

Было бы неплохо, когда имелся бы компилятор для 1С

sergey-s-betke commented 8 years ago

@1C-Company , очень не хватает внятных средств unit тестирования. Понятно, что единого подхода к unit тестам в таких проектах не будет, но хотя бы:

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

sergey-s-betke commented 8 years ago

@1C-Company , кстати - сразу нужен пока что бесплатный build server, интегрируемый к github. Отправили commit, а там уже - и тестирование пошло, и результат будет через какое-то время. По примеру github + appveyor или другие решений...

rsyuzyov commented 8 years ago

@serge-s-betke, Вам сюда: https://github.com/xDrivenDevelopment/xUnitFor1C

sergey-s-betke commented 8 years ago

@rsyuzyov , спасибо, почитаем, попробуем :-)

igostv commented 6 years ago

@1C-Company

На счет командлайн утилиты по импорту\экспорту... у нас такая задача записана

Каков статус у этой задачи? без этого хранить проект EDT в git не имеет смысла, т.к. Auto DevOps невозможен

marmyshev commented 6 years ago

1.8 вышла, есть коммандлайн.

ring edt help
Description of module "edt" (version 1.8.0 for x86_64 architecture):
    1C:Enteprise Development Tools Ring Cli

List of available commands:

ring edt platform-versions <params>
    List 1C:Enterprise Development Tools supported platfrom versions.

ring edt workspace export <params>
    Export the 1C:Enterprise Development Tools project to the 1C:Enterprise platform configuration XML files.

    Parameters description:
    --configuration-files <value>
        Required parameter. The target directory location for the 1C:Enterprise platform configuration XML files.
    --project <value>
        The source directory location of the 1C:Enterprise Development Tools project.
    --project-name <value>
        The source 1C:Enterprise Development Tools project name existing in the workspace.
    --workspace-location <value>
        Required parameter. The location of the workspace for 1C:Enterprise Development Tools execution.

ring edt workspace import <params>
    Import 1C:Enterprise Development Tools project from the 1C:Enterprise platform configuration XML files.

    Parameters description:
    --base-project-name <value>
        The base project name for the creating project. It is allowed for dependent projects only.
    --configuration-files <value>
        Required parameter. The source directory location of the 1C:Enterprise platform configuration XML files.
    --project <value>
        The target directory location to create 1C:Enterprise Development Tools project in.
    --project-name <value>
        The target 1C:Enterprise Development Tools project name to create in the workspace.
    --version <value>
        The 1C:Enterprise platform version.
    --workspace-location <value>
        Required parameter. The location of the workspace for 1C:Enterprise Development Tools execution.

ring edt workspace validate <params>
    Validate the 1C:Enterprise Development Tools project and prints report as CSV file to the provided file.

    Parameters description:
    --file <value>
        Required parameter. The target file location for the validation report in CSV format.
    --project-list <value>
        A list of source directory locations of 1C:Enterprise Development Tools projects. Use the following syntax: c:\somewhere\project1 c:\somewhere\project2.
    --project-name-list <value>
        A list of 1C:Enterprise Development Tools source project names existing in the workspace. Use the following syntax: project1 project2
    --workspace-location <value>
        Required parameter. The location of the workspace for 1C:Enterprise Development Tools execution.

Пример использования https://github.com/marmyshev/edt_git_sync/blob/master/sync.bat

pumbaEO commented 6 years ago

К сожалению не нашел, магического определения, как эту утилиту программно найти и куда она поставится, если я поменяю каталог по умолчанию. Если с платформой все понятно, ищем 1Cestart.cfg в ProgramData там легкий парсинг и определяем базовый каталог с установками, то с ring не так все просто. /opt/1C/1CE/components/1c-enterprise-ring-0.11.1+3-x86_64/ring

marmyshev commented 6 years ago

Может я чего-то не понимаю, но если вы ее ставите типа так:

1ce-installer-cli all --products-home "/opt/1C/1CE"

то вы управляете куда ставится.

1C-Company commented 6 years ago

после установки утилита прописывается в PATH документация по установщику: https://its.1c.ru/db/inst10doc

pumbaEO commented 6 years ago

@1C-Company к сожалению, не увидел возможности отказа или подтверждения на добавление в переменную path пути именно к ring (как это делают, например, при установке git scm)... В документации поискал в настройках yaml файла тоже не смог найти такого пункта. Ну и возникает удивительный вопрос, зачем необходимо вначале требовать повышения прав, если в дальнейшенм пользователь может выбрать путь в каталог, который он имеет право и так записывать. В частности под linux зачем привязыватся к каталог /etc/... , если по стандарту вроде сначала ищем настройку XDG_CONFIG_DIR, если там не существует, тогда пытаемся найти в /etc/. Можно попросить поменять поведение на возможность установки без полных прав, добавить пункт и настройку cli с указанием добавлять/не добавлять в path, ну и сохранения файлов настроек в XDG_CONFIG_DIR/../1CE/*.lock , если сохранение в /etc/ невозможно.

1C-Company commented 6 years ago