Каталог решений - Обновление базы 1с 7.7. с помощью движка 1с 8.х

Обновление базы 1с 7.7. с помощью движка 1с 8.х

Обновление базы 1с 7.7. с помощью движка 1с 8.х

В наличии

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

Используя возможности движка платформы 1с 8.х можно существенно сэкономить себе время и нервы.

Категория:

Описание

 Лень — двигатель прогресса

(С) не знаю чей Frown 

В последнее время стали очень часто выходить новые релизы ЗиК 7.7. С учетом того, что в глобальном модуле сделаны изменения, от которых невозможно отказаться, обновление превращается в идиотскую проблему на несколько часов — как объединить новый релиз со своими правками.

В общем задача стояла рутинная, в последнее время довольно регулярная, но от этого не менее противная, а может даже и более — обновиться на новый релиз.

Все бы ничего, изменения в конфе сделаны крайне аккуратно, головняка практически не представляют за исключением глобального модуля. В этом монстре программирования от 1с почти 90 тысяч строк. А изменения касаются тех, в которых сама 1с постоянно косячит и их же исправляет, но как-то не там где надо — расчет страховых взносов, ндфл, формирование проводок и т.п. В общем не самые безобидные куски кода.

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

Технология обновления нетиповых конфигураций, оно же Технология обновления нетиповых конфигураций 7.7

помогают, но очень слабо в виду ограниченности возможностей 1с 7.7 в плане визуализации отличий и в инструментах объединения двух, не побоюсь этого слова,  гигантских модулей.

Грешным делом подумал: «А не написать ли свой объединятель модулей?»… и даже в течение 10 — 15 минут в голове зрели алгоритмы. Потом в голову пришла смелая мысль, которая спасла от дурацкой работы с неизвестным финалом: а ведь 1с 8.х при объединении конфигураций позволяет определять правила объединения модулей на уровне процедур и функций… Так зачем же изобретать велосипед???

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

Итак, что надо иметь, так это платформу 1с 8.х (у меня под руками оказалась 8.2).

Создал 2 пустые базу. Я их создал в варианте обычного приложения (для 8.0 и 8.1 это единственно возможный вариант).

Взял содержимое глобального модуля текущего ЗиКа и скопировал в модуль обычного приложения одной базы, а глобальный модуль нового релиза в такой же модуль обычного приложения другой базы. Сохранил конфигурацию 1-ой базы в файл и во второй базе вызвал «Конфигурация -> Сравнить, объединить с конфигурацией из файла…»

Чтобы 8-ка не ругалась на непривычный синтаксис, можно в настройках отключить автоматическую проверку синтаксиса. 

Получил очень человеческий диалог, в котором работать намного проще, чем в 7.7 и можно определять правила замещения, объединения на уровне процедур и функций. Дополнительный бонус в том, что различия в непечатных символах в 8.2 не отображаются как отличия. Т.е. если 1с заменить табуляцию на пробелы, то в 7.7 вы увидите при сравнении модулей, что строки различны (хотя и не видно в чем разница), а 8-ка покажет, что они идентичны (во сяком случае у меня получилось именно так).

Таким образом можно объединять не только глобальный модуль, но и модуль любого другого объекта, изменения в котором Вам дороги. Тексты можно загружать в любые объекты модулей 8-ки, например наделать общих модулей. Если Вы работаете с двумя базами как я, то учтите, что модули должны называться одинаково. Или же вторую базу можно делать из первой. 

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

Еще рекомендую выполнять сравнение и объединение в непривычном порядке — в качестве основы использовать новый релиз, а на него натягивать свою измененную конфу. Логика такого совета в том, что 1с 8.х при объединении модулей, если в исходной конфигурации каких-то процедур и функций нет, новые процедуры и функции могут быть добавлены в конец. В основном это, конечно, касается конфигураций с поддержкой, но были преценденты и для самописных. Для 8-ки порядок следования функций и процедур в модуле неважен, а вот для 7.7 очень небезразличен. Поэтому я на текст нового релиза, содержащего новые процедуры и функции натягивал старый релиз с исправлениями. (Каюсь, на картинке показано наоборот, потому что картинку делал опосля процесса).

has been added to your cart:
Оформление заказа