Как убедиться, что измененную типовую конфигурацию мы обновили успешно и ничего не отвалилилось?
Итак, после обновления у нас есть 4 cf-ника:
и сохраняем эти отчеты в текстовые файлы. Эти два текстовых файла сравниваем с помощью любой сравнивалки текста (я использую WinMerge).
Так вот - не считая технической информации, такой как номера строк с изменным/удаленным кодом и т.п., эти файлы НЕ ДОЛЖНЫ ОТЛИЧАТЬСЯ! Потому что оба отчёта показывают одно и то же - разницу, которую добавила в конфигурацию 1С.
После этого сравниваем попарно:
Если что-то отличается (помимо технической информации) - значит или не накатили какое-то изменение из типовой, или затерли какое-то своё изменение.
P.S. Чтобы убрать из отчетов о сравнении неинформативный хлам (такой как номера строк с изменным/удаленным кодом и т.п.), можно выполнить в текстовых файлах с отчетами следующие замены по регекспам:
1. Заменить:
2. Заменить:
P.P.S. Эти замены можно выполнить с помощью следующего макроса для Notepad++ (добавить в %appdata%\Notepad++\shortcuts.xml в раздел <Macros>...</Macros>)
Итак, после обновления у нас есть 4 cf-ника:
- ПоставщикСтарая - старая конфигурация поставщика;
- ПоставщикНовая - новая конфигурация поставщика - та, на которую обновляли;
- ОсновнаяСтарая - измененная конфигурация, по сути это ПоставщикСтарая с нашими изменениями;
- ОсновнаяНовая - то, что получилось после обновления ОсновнаяСтарая с помощью ПоставщикНовая.
- ПоставщикСтарая и ПоставщикНовая;
- ОсновнаяСтарая и ОсновнаяНовая.
и сохраняем эти отчеты в текстовые файлы. Эти два текстовых файла сравниваем с помощью любой сравнивалки текста (я использую WinMerge).
Так вот - не считая технической информации, такой как номера строк с изменным/удаленным кодом и т.п., эти файлы НЕ ДОЛЖНЫ ОТЛИЧАТЬСЯ! Потому что оба отчёта показывают одно и то же - разницу, которую добавила в конфигурацию 1С.
После этого сравниваем попарно:
- ПоставщикСтарая и ОсновнаяСтарая;
- ПоставщикНовая и ОсновнаяНовая.
Если что-то отличается (помимо технической информации) - значит или не накатили какое-то изменение из типовой, или затерли какое-то своё изменение.
P.S. Чтобы убрать из отчетов о сравнении неинформативный хлам (такой как номера строк с изменным/удаленным кодом и т.п.), можно выполнить в текстовых файлах с отчетами следующие замены по регекспам:
1. Заменить:
^(\s*)Объект присутствует только в(.+) конфигурации: \d+ - \d+$на:
$1Объект присутствует только в$2 конфигурации: N - N
2. Заменить:
^(\s*)Изменено: \d+ - \d+$на:
$1Изменено: N - N
P.P.S. Эти замены можно выполнить с помощью следующего макроса для Notepad++ (добавить в %appdata%\Notepad++\shortcuts.xml в раздел <Macros>...</Macros>)
<Macro name="ОбработкаОтчетаОСравнении" Ctrl="no" Alt="no" Shift="no" Key="0"> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" /> <Action type="3" message="1601" wParam="0" lParam="0" sParam="^(\s*)Объект присутствует только в(.+) конфигурации: \d+ - \d+$" /> <Action type="3" message="1625" wParam="0" lParam="2" sParam="" /> <Action type="3" message="1602" wParam="0" lParam="0" sParam="$1Объект присутствует только в$2 конфигурации: N - N" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" /> <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" /> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" /> <Action type="3" message="1601" wParam="0" lParam="0" sParam="^(\s*)Изменено: \d+ - \d+$" /> <Action type="3" message="1625" wParam="0" lParam="2" sParam="" /> <Action type="3" message="1602" wParam="0" lParam="0" sParam="$1Изменено: N - N" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" /> <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" /> </Macro>
К сожалению, иногда после обновлений перемешивается порядок объектов, и при сравнении может получиться каша. Когда единичные объекты, то в принципе не страшно, а когда много - приходится предварительно выстраивать порядок.
ОтветитьУдалитьСпасибо за Ваш комментарий!
УдалитьЕсли в обновлении поменяется порядок объектов, то порядок объектов станет другим и в конфигурации "ПоставщикНовая", и в конфигурации "ОсновнаяНовая" (если обновлять с установкой порядка из "конфигурации поставщика"). Поэтому на данную методику порядок объектов теоретически (!) особо влиять не должен.
Вот сейчас как раз возимся с этим, в УПП в релизе 1.3.112 по сравнению с 1.3.106 поменялся порядок типовых объектов (которые еще при этом изменены и видны в отчете о сравнении), и сравнение отчетов о сравнении перекашивает, механизм сравнения с какого-то момента начинает сравнивать не соответствующие друг-другу тексты и все становится красным. Ищем способы, как это обойти. Можно, конечно, вручную текст в отчетах о сравнении перенести в нужные места, но это может оказаться трудоемко.
УдалитьУточню, что я веду речь про сравнение №2:
ОтветитьУдалитьПоставщикСтарая и ОсновнаяСтарая;
ПоставщикНовая и ОсновнаяНовая.
То есть я проверяю все ли наши изменения переехали в конфигурацию с новым релизом. Сравнение №1, где проверяются изменения внесенные 1С (поставщиком), я не делаю, потому что это вроде бы избыточно, сравнение №2 и так покажет отличие, если какое-то изменение от 1С потеряли. Я так понимаю, любое из этих сравнений достаточно для полной проверки, просто я оперирую именно проверкой сохранения именно наших изменений.
Вот при этой проверке возникают сложности, если 1С меняет порядок типовых объектов. Мы выкрутились так: Для сравнения ПоставщикСтарая и ОсновнаяСтарая приводим в конфигурации ОсновнаяСтарая порядок объектов к порядку в ОсновнаяНовая (при помощи объединения с выключенным флагами). Тогда в отчете о сравнении "ПоставщикСтарая - ОсновнаяСтарая" порядок объектов такой же, что и в "ПоставщикНовая - ОсновнаяНовая", но есть минус - показываются отличия от порядка типовой ПоставщикСтарая. Но эти надписи "изменен порядок объекта" просто пропускаем, так как знаем из-за чего они.
Спасибо за Ваши дополнения!
УдалитьПо поводу избыточности первого сравнения (ПС-ПН и ОС-ОН), похоже на то. Но для верности от него отказываться пока не буду. )))
Фигня кака-то, при изменении формирования текста запроса, или изменении метода функции, изменения внесённые ранее приходится "творчески" переосмысливать, читай разрабатывать заново.
ОтветитьУдалитьВывод: фиг сойдутся файлы сравнения Старый-Старый и Новый-Новый.
Они и не должны "сходиться" один в один, а прямо идентичными не будут никогда с вероятностью 99,9(9)% (спасибо за это как минимум какому-нибудь "Порядок объекта изменен").
УдалитьНо это не проблема, потому что Вы знаете какой "переосмысленный" код Вы добавили в конфигурацию, и поэтому наличие этих различий Вас нисколько не смутит. (Как раз таки должно смутить их отсутствие)
Что касается "изменений формирования текста запроса" или "изменении метода функции", то тут очень важно каким образом изначально вносились изменения в исходную конфигурацию. Уже существуют более-менее устоявшиеся методики как добавить необходимые изменения 1с-вскую конфигурацию таким образом, чтобы потом можно было обновлять эту доработанную конфигурацию с минимальными потерями времени и нервов (это и подписки на события, и программное изменение форм вместо их правки в редакторе форм, и прочее, и подобное). Если придерживаться этих методик, то к "творческому" переосмыслению и разработке заново придётся прибегать крайне редко.
При подготовке обновления в EDT, похоже, это не работает. Если сравнить размеры файлов ПоставщикСтарая_ОсновнаяСтарая и
ОтветитьУдалитьПоставщикНовая_ОсновнаяНовая, то первый имеет на два порядка меньший размер, чем второй.
На 2 порядка - это вряд ли. А в 2 раза - запросто. Скорее всего один из cf-ников содержит только конфигурацию поставщика, а второй конфигурацию поставщика + основную (изменённую) конфигурацию.
УдалитьЕщё полезные замены:
ОтветитьУдалить^(\s*)- \*\*\*Группировка строк <(\d|\s)+ - (\d|\s)+> - <(\d|\s)+ - (\d|\s)+>$
на
$1- ***Группировка строк <N - N> - <N - N>
^(\s*[<>]\s*)"#" - "R\d+"$
на
$1"#" - "RN"