Персональная страница Федора Езеева
Главная
Download
Ссылки
MS SQL
Обмен данными
Новости
Статьи
О себе
Крупные разделы...
Коллективная разработка
1С++, OOP, XP
FuncTest
FAQ
Структура 1cv7.md
Назад Содержание Вперед

Коллективная разработка конфигураций 1С.

Небольшой FAQ

  1. В версии GComp 1.00 потоки Container.Contents нужно выкладывать в репозиторий как бинарные файлы. Проблема в том, что у них последним символом - 0x0A. Для текстовых файлов cvs при цикле commit/update добавляет к одиночным 0x0A символ 0x0D - сказываются различия обозначения конца строки между Windows и Unix. А получившаяся в результате сборки конфигурация оказывается неработоспособной.


  2. Если попробовать собрать конфигурацию в каталоге, который входит в состав сборки - gcomp вполне предсказуемо повиснет, поскольку будет стараться засунуть формируемый compound сам в себя.
    Тем, кто не понял сути вышесказанного - попробуйте помедитировать над следующей командой (точка в конце - значимый элемент команды):

    gcomp -c -D .


  3. (Вопрос) Как CVS-у один раз и навсегда рассказать, какие типы файлов GComp являются текстовыми, а какие - бинарными?
    (Ответ) в папке CVSROOT найти файл cvswrappers. Если нет - создать. Если туда добавить следующие строки

    __Picture.* -k 'b'
    Gallery -k 'b'
    *.mxl -k 'b'
    Page.* -k 'b'
    GUIDData -k 'b'
    TagStream -k 'b'
    
    то файлы по указанным маскам будут считаться двоичными.


  4. (Вопрос) Ну сделал, как сказано в предыдущем пункте, а при импорте WinCVS все равно предлагает раздать файлам какие-то свои типы, игнорируя настройки в cvswrappers.
    (Ответ) WinCVS игнорирует содержимое файла cvswrappers. И это не баг, а документированная фича :-/ Приходится либо каждый раз ручками указывать типы файлов, либо импортировать другими клиентами (TortoiseCVS понимает cvswrappers).
    При добавлении новых файлов через WinCVS та же история: как скажешь (add или add binary) - так и загрузится. WinCVS любит ругаться, мол совсем это не текстовый файл, но мы-то лучше знаем, правда? :))


  5. (Вопрос) Пытаюсь собрать gcomp из исходников - а оно ругается, говорит нету какого-то bison. Что это за бизон, и где он пасется?
    (Ответ) Bison - это такой специализированный инструмент для написания парсеров и синтаксических анализаторов. GComp его использует для разбора потока Main Metadata Stream. Разработчики GComp используют bison из состава пакета CygWin. Однако, если не залезать в разбор MMS - можно обойтись и без бизона. Достаточно удалить из состава проекта все файлы с расширением .y, поскольку одноименные .cpp (результат работы бизона) так же входят в поставку.


  6. (Вопрос) Можно ли с помощью gcomp уменьшить размер внешнего отчета?
    (Ответ) Можно. Если написать

    gcomp -d -F СуперКрутаяОбработка.ert
    gcomp -c -F СуперКрутаяОбработка.ert --no-empty-mxl --truncate-mms
    
    то размерчик файла станет много меньше, за счет того, что выкидываются пустые моксели и обрезается Main Metadata Stream.
    Нельзя только делать --truncate-mms на обработках, где есть типизированные поля (документы, справочники, счета, перечисления).
    Еще на внешних обработках нельзя делать --no-profiles - они после этого перестают работать.


  7. (Вопрос) Можно ли с помощью gcomp уменьшить размер конфигурации?
    (Ответ) Можно. Если написать

    gcomp -d --no-empty-mxl --no-profiles
    gcomp -c
    
    то размерчик конфигурации станет немного меньше.
    Делать --truncate-mms на файлах конфигурации не только не надо, но и чревато сильными неприятностями.


  8. (Вопрос) Запускаю декомпиляцию следующей командой

    gcomp -d -D "c:\program files\1cv77\MyConfig\"
    а gcomp отказывается работать. Что я делаю не так?
    (Ответ) Чтобы можно было указать имя файла, содержащее в себе символ "двойная кавычка", было придумано заменять этот символ на escape последовательность \"
    Соответственно, указанный в вопросе путь распознается не так, как это может показаться с первого взгляда, а распознается вовсе даже совсем по другому. Вариантов выхода из сложившейся ситуации - три.
    • Избавиться от кавычек:
      gcomp -d -D c:\progra~1\1cv77\MyConfig\
    • Избавиться от заключительного слэша:
      gcomp -d -D "c:\program files\1cv77\MyConfig"
    • Изобразить последний слэш соответствующей escape последовательностью:
      gcomp -d -D "c:\program files\1cv77\MyConfig\\"


  9. (Вопрос) У меня есть две конфигурации: одна оригинальная, вторая перекомпилированная gcomp'ом.
    Я запускаю 1С-вое объединение конфигураций, и 1С мне говорит, что конфигурации идентичны (или наоборот, показывает различия).
    Насколько можно доверять этой информации?
    (Ответ) В большинстве случаев - можно. Однако бывает, что объединение конфигураций врет.

    1. Если изменить галерею картинок - 1С при объединении этого не заметит и скажет, что конфигурации идентичны.
    2. Если программные модули перепаковать не 1С-вым zlibeng.dll, а сторонним алгоритмом (как это делает например Inserter от АЛьФа) то при объединении 1С будет уверена, что модули изменились, хотя при попытке сравнить такие "изменившиеся" модули сама же скажет, что файлы не отличаются.
    3. Форматы экранных форм, интерфейсов и прав пользователей несут определенное количество излишней информации, которая никаким образом на функциональность 1С не влияет. GComp по умолчанию такую информацию "оптимизирует", что и становится заметным при сравнении. Особенно сильно грешат этим экранные формы. Чтобы смягчить этот эффект - используйте опцию --no-dialogs-default, чтобы исключить совсем - --no-parse-dialogs.


  10. (Вопрос) Мне кажется, что я нашел ошибку в gcomp. Кому и как об этом сообщить?
    (Ответ) Ошибки в gcomp бывают двух типов.

    1. gcomp вообще не работает (аварийно завершается или выдает какую-то ошибку).
      В этой ситуации сначала попробуйте воспроизвести ошибку.
      Если ошибка воспроизводится - попробуйте локализовать проблему (не работает при определенном наборе параметров, или не работает с определенной конфигурацией, или не работет на определенном компьютере).
      Когда ошибка локализована - сходите на http://cvs.alterplast.ru/bugs/, и на Форум возможно, об этой ошибке уже известно. Если же не известно - Багзилла или форум - лучшее место, куда можно поведать миру о вашем открытии.
    2. gcomp работает, но не так, как ожидается (портит/изменяет конфигурацию).
      В этой ситуации, в дополнение к предыдущим пунктам, необходимо убедиться, что в процессе ваших экспериментов конфигурацию изменял только gcomp. Конфигурация могла измениться и в процессе прогонки через CVS (см. первый вопрос этого FAQ), и в результате работы третьих программ (например, Inserter, см. предыдущий вопрос).


  11. (Вопрос) Работает ли gcomp на конфигурациях, закрытых паролем? На базовых конфигурациях?
    (Ответ) Нет. И скорее всего - не будет. Лично мое отношение к этому такое: gcomp - это ежедневный инструмент разработчика. Разрабатывать базовую конфигурацию - вообще невозможно, она сразу перестает быть базовой. А ставить пароль нужно (если нужно) - только перед отправкой к потребителю. Ежедневная работа с запароленной конфигурацией довольно сильно утомляет.
    В крайнем случае, для особо страждущих, есть ActiveMD от Павла Бычковяка, которая умеет работать и с базовыми конфигурациями, и с закрытыми паролем.


      Назад Содержание Вперед
Rambler's Top100 1C:TOP-100

© 1998-2004 Fedor Ezeev.

Last updated: 2005-09-28