gifts2017

Методика и инструменты полуавтоматического обновления конфигураций 7.7 до типовой версии с сохранением модификаций

Опубликовал Дмитрий Юрасов (dime2) в раздел Администрирование - Системное

Данная публикация описывает методику и предоставляет инструменты для полуавтоматического обновления модифицированных типовых конфигураций 1С Предприятие 7.7 (версий ПРОФ) до типовых с сохранением модификаций.
В данной методике не используются системы контроля версий.

Благодарности

Благодарю Федора Езеева за создание и распространение такой утилиты, как GComp (http://1c.alterplast.ru/gcomp/);

Алексея (alexqc) за создание и распространение утилиты ConfStarter (http://infostart.ru/public/14304/);

Ларри Уолла за создание языка программирования PERL и PERL-сообщество, продолжающее его развивать;

Авторов таких утилит, как diff и diff3 и тех, кто перенёс эти утилиты на платформу windows (http://gnuwin32.sourceforge.net/packages/diffutils.htm)

Компанию ActiveState за windows-версию PERL 5 (http://www.activestate.com/activeperl)


Предисловие

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

Методика разработана в 2009 году и используется по сегодняшний день практически без изменений. С её помощью обновляются программы 1С Бухгалтерия 7.7, УСН, Зарплата и Кадры. Обновление занимает 15-20 минут с использованием RAM-диска.

Методика основана на трехстороннем сравнении 3-х конфигураций: Типовой, модифицированной Типовой и новой Типовой.

Методика основана на следующих принципах:

1. Обновление реквизитов, форм и таблиц осуществляется стандартным методом объединения 1С

2. Объединение текстов модулей производится методом diff3 с последующей автоматической зачисткой конфликтов 1с.orig <-> 1c.new, так как они не содержат модификаций.

3. Если форма или таблица не подвергались модификации, то принудительно подставляется форма 1C.new.

4. Контроль конфликтов осуществляется через Полный синтаксический контроль. Diff3 выделяет знаками "<", "|", ">" части текста, которые менялись и в новой типовой и в модифицированной. А эти знаки, сами по себе, не являются кодом встроенного языка 1С.

 

Методика основана на следующих инструментах:

1. Набор bat-скриптов, автоматизирующих основные этапы обновлений.

2. Утилита GComp для разборки/сборки MD-файла

3. Утилита ConfStarter для автоматического обновления результирующей базы обновлённым MD-файлом

4. Утилит diff и diff3 для сравнения текстовых файлов и автоматического внесения правок.

5. Набора PERL-скриптов, осуществляющих автоматизирующих процесс  сравнения и склейки модификаций.

Утилиты тестировались в среде x32. Хотя была сделана подготовка для использования в x64, рекомендуется, при необходимости, исправить явно указанные пути в скриптах.

Начало

1. Установить AcivePerl версии 5.

1.1. Убедиться в ассоциации файлов .pl с файлом perl.exe.

2. Установить DiffUtils for Windows.

2.1. Убедиться, что утилиты доступны через переменную окружения PATH.

3. Установить UnRAR for Windows (http://www.rarlab.com/rar_add.htm)

4. Скачать и установить утилиты GComp и ConfStarter. Убедиться, что пути к ним есть в переменной окружения PATH

5. Скачать архив с утилитами update77.zip.

Методика

Термины

1с.ORIGinal. Типовая конфигурация, на которой базируется модифицированная.

1c.NEW. Типовая конфигурация, до которой обновляем.

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

original. Модифицированная конфигурация. Которую обновляем.

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

result. Результирующая конфигурация. Результат обновления до типовой с сохраненим модификаций.

Порядок обновления

1. Создать папку c:\update

2. Распаковать в c:\update\ файлы архива update77.zip

3.1 Запустить файл prepare1.4.bat. Будут созданы каталоги и скрипт ставится на паузу

+old
+1c.XXX
+1c.YYY
 

3.2. В этом месте нужно скопировать MD файл (или базу) обновляемой конфигурации в каталог OLD.

3.3. В каталог 1c.XXX нужно скопировать MD файл Типовой конфигурации, на которой базируется модифицированная. Должен быть оригинальный файл MD для ПРОФ версии. С Базовой GComp не работает. Каталог можно переименовать в 1C.<Номер версии>. Например, 1С.262

Порядок каталогов важен! При определении старой-новой версии конфигурации используется обычная сортировка.

3.4. В каталог 1c.YYY нужно скопировать MD файл Новой Типовой конфигурации.

Должен быть оригинальный файл MD для ПРОФ версии. Каталог можно переименовать в 1C.Номер версии. Например, 1С.270

3.5. Нажать Enter в окне скрипта.

3.6. Запустится Конфигуратор для каталога  c:\update\WORK.

Нужно выполнить обновление в режиме объединения с приоритетом текущей конфигурации. Обновляемся на 1C.NEW. Т.е. новую типовую. Сохраняем, закрываем конфигуратор.


3.7. Скрипт делает технологические каталоги и копии. Распаковывает src.rar в подкаталог src

+old
+1c.XXX
+1c.YYY
+result
+work
+src
+1c.new
+1c.original
+modified
+work
+original

3.8. Жмём Enter. Скрипт закрыватся.

4. Заходим в src и запускаем 0.make.bat. Ждём паузы ("Для продолжения нажмите любую клавишу...")

5. Запускаем Конфигуратор в каталог c:\update\result. Делаем полный синтаксический контроль. При обнаружении ошибок на знаки "<", "|", ">" анализируем текст конфикта и правим код.

Обновление завершено. Дальше - работа напильником. Правка форм и таблиц.

Дополнения, баги и фичи

1. Предполагается, что 1С установлена в c:\Program Files\1cv77\BIN\1cv7.exe. Если исполняемый файл 1С отличается, то необходимо исправить это в файле 7.update.result.bat и вернуть его обратно в src.rar

2. При частых обновлениях, возможно наложение нескольких безимянных групп на формах объектов (например, форма элемента Справочник.Сотрудники в ЗиК).

3. При обновлении в режиме объединения, 1С делает следующие "косяки":

3.1. Если MOD-реквизит был неограниченной длины, а в 1C.NEW-типовой - ограниченной, то 1С поставит ограниченную длину, что чревато потерями данных.

3.2. То же касается констант.

3.3. Не сохраняется Ввод на основании.

4. Для 1С Бухгалтерии у документа ПоступлениеМатериалов возможно "пропадание" двух текстовых колонок в МЧ, из-за того, что GComp выгружает их с одинаковым идентификатором (Себестоимость и ВсегоСебестоимость). Наличие бага проверяется простым открытием формы документа после обновления. Исправляется воссозданием колонок.

5. При изменениях в типовых печатных формах возможно дублирование печатных форм (т.е. 1С.NEW форма + модифицированная). Связано с внутренними идентификаторами.

6. В каталоге src создаются 2 лог-файла объединения форм:
result. Содержит указание метода подмены модулей с путями (если объединение кода не требуется, а код модуля не менялся)
result2. Содержит указание форм, возможно, требующих проверки. Значит форма менялась и 1С и Вами.

Исправления

1. По досадному недоразумению в первую публикацию ошибочно был залит тестовый файл prepare1.2.bat

В нём нужно заменить (строки 23-28)

xcopy /y /e old\*.* result\
for /F %%A in ('dir /on /b 1c.*') do (
copy /y %%A\1cv7.md work\
goto NEXT2
)
:NEXT2

на

xcopy /y /e old\*.* result\
xcopy /y /e old\*.* work\

Исправленный файл в архиве перезалит

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

Наименование Файл Версия Размер
update77.zip 1
.zip 5,47Kb
15.04.15
1
.zip 1.4 5,47Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Дмитрий Юрасов (dime2) 15.04.15 23:44
В первичную публикацию вкралась досадная ошибка. Был вложен неверный файл prepare1.2.bat (являвшийся экспериментальным)
Правильный файл prepare1.4.bat прилагается
Прикрепленные файлы:
prepare1.4.bat
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа