Уверенное обновление

09.03.22

База данных - Обновление 1С

Уверенное обновление. Анализ файла ОтчетОСравнении.txt. Bash

Введение

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

Описание проблемы

Запускаем сравнение конфигураций, видим дерево метаданных. Чтобы найти отличие (в реквизитах или параметрах) между тестовой и эталонной формами объекта, снятого с поддержки - нужно пару раз щелкнуть мышью, затем открыть Отчет о сравнении объектов и там искать разницу. Если объектов для проверки много - скорби умножаются.

Решение проблемы

Как находить ВСЕ различия в один момент ? Из окна сравнения конфигурации откроем контекстное меню, сформируем файл в текстовом формате ОтчетОСравнении.txt для всей конфигурации и сохраним его в отдельный каталог.

В моем случае размер файла 90 Мб. Для анализа файла будем использовать скрипты Bash. Скачать оболочку с сайта https://git-scm.com/download/win. Немного непривычно, но цель оправдывает средства. Для использования Bash нужно с помощью Notepad++ для файла ОтчетОСравнении.txt  установить кодировку UTF8.

То же можно сделать командой Bash, имя файла меняется

iconv -f UCS-2LE -t UTF-8 ОтчетОСравнении00.txt > ОтчетОСравнении.txt

Пример 1

 
 Ниже фрагменты файла для примера:

 Скрипт обработки

cat ОтчетОСравнении.txt \
| egrep '(\*\*\*.*Форма\.)|(<--Реквизит\W)|(<--Колонка реквизита\W)|(<--Параметр\W)' \
| awk -vORS= '{if ($0~"Форма\.") { print "\n"$0;} \
else { print $0; } }' \
| egrep '(<--Реквизит)|(<--Колонка реквизита)|(<--Параметр)' \
| sed "s/- \*\*\*/\n- \*\*\*/g; s/- <--/\n- <--/g; s/[ \t]//g" > Result.txt

Небольшие пояснения:

Команда cat здесь открывает файл ОтчетОСравнении.txt

Символ "|" в начале строки означает передачу данных от предыдущего оператора к следующему. Внутри скобок и кавычек этот символ означает «ИЛИ».

Символ "\" в конце строки означает, что скрипт продолжается.

Символ «;»в конце строки означает, что закончилась одна команда пакета и начинается следующая.

Символы «\*»  «\.» «\n» означают соответственно «*»  «.» перевод строки.

Команда egrep здесь оставляет только те строки, которые соответствуют фильтру.

Команда awk здесь убирает переход строки, поднимает строку вверх.

Команда sed здесь вставляет перевод строки перед символами «***» и «- <--», удаляет лишние пробелы.

Если вместо символов "- <--" использовать "- -->", будут показаны удаленные. 

Результат работы скрипта записываем в файл Result.txt

 

 
 Результат: Список форм, в которых добавлены реквизиты.

Если полученный результат пустой - скорее всего, кодировка файла ОтчетОСравнении.txt не соответствует UTF8.

Пример 2

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

 
 Ниже фрагменты файла для примера:

Скрипт обработки

cat ОтчетОСравнении.txt \
| egrep '(- \*\*\*(Перечисление|Справочник|Документ|РегистрНакопления|РегистрСведений|Обработка|Отчет|ЖурналДокументов)\.)|(Имя...Различаются значения)' \
| awk -vORS= '{if ($0~"\*\*\*(Перечисление|Справочник|Документ|РегистрНакопления|РегистрСведений|Обработка|Отчет|ЖурналДокументов)\.") { print "\n"$0;} \
else { print $0; } }' \
| egrep 'Имя...Различаются значения' \
| sed "s/- \*\*\*/\n- \*\*\*/g; s/- <--/\n- <--/g; s/[ \t]//g" > Result.txt
 
 Результат: список реквизитов - изменено имя

Пример 3

Поставщик добавил новые движения для документа:

 
 Ниже фрагменты файла для примера:

Скрипт обработки 

cat ОтчетОСравнении.txt \
| egrep '(\*\*\*Документ\.)|(\*\*\*Движения)|(- <--Регистр)' \
| awk -vORS= '{if ($0~"\*\*\*Документ\.") { print "\n"$0;} \
else { print $0; } }' \
| egrep '\*\*\*Движения.*<--Регистр' \
| sed "s/- \*\*\*/\n- \*\*\*/g; s/- <--/\n- <--/g; s/[ \t]//g" > Result.txt
 
 Результат: список документов

Соберем все скрипты в один супер-пупер мега скрипт.

Echo ".........................................................................................." > Result.txt; \
cat ОтчетОСравнении.txt \
| egrep '(\*\*\*.*Форма\.)|(<--Реквизит\W)|(<--Колонка реквизита\W)|(<--Параметр\W)' \
| awk -vORS= '{if ($0~"Форма\.") { print "\n"$0;} \
else { print $0; } }' \
| egrep '(<--Реквизит)|(<--Колонка реквизита)|(<--Параметр)' \
| sed "s/- \*\*\*/\n- \*\*\*/g; s/- <--/\n- <--/g; s/[ \t]//g" >> Result.txt; \
Echo ".........................................................................................." >> Result.txt; \
cat ОтчетОСравнении.txt \
| egrep '(- \*\*\*(Перечисление|Справочник|Документ|РегистрНакопления|РегистрСведений|Обработка|Отчет|ЖурналДокументов)\.)|(Имя...Различаются значения)' \
| awk -vORS= '{if ($0~"\*\*\*(Перечисление|Справочник|Документ|РегистрНакопления|РегистрСведений|Обработка|Отчет|ЖурналДокументов)\.") { print "\n"$0;} \
else { print $0; } }' \
| egrep 'Имя...Различаются значения' \
| sed "s/- \*\*\*/\n- \*\*\*/g; s/- <--/\n- <--/g; s/[ \t]//g" >> Result.txt; \
Echo ".........................................................................................." >> Result.txt; \
cat ОтчетОСравнении.txt \
| egrep '(\*\*\*Документ\.)|(\*\*\*Движения)|(- <--Регистр)' \
| awk -vORS= '{if ($0~"\*\*\*Документ\.") { print "\n"$0;} \
else { print $0; } }' \
| egrep '\*\*\*Движения.*<--Регистр' \
| sed "s/- \*\*\*/\n- \*\*\*/g; s/- <--/\n- <--/g; s/[ \t]//g" >> Result.txt

Какая красота получилась! Мир спасен?

Пример 4

Если поле базы данных содержит данные составного типа, а при обновлении составной тип становится меньше, то ссылки неподходящего типа очищаются, возможна потеря данных. Для анализа "потерянных" типов нужно использовать сравнение конфигурации рабочей базы и конфигурации обновления. Сформируем файл ОтчетОСравнении.txt для нового сравнения, запишем в другой каталог и сменим кодировку.

 Информацию об измененных типах можно увидеть при сравнении конфигураций.

 
 Ниже фрагменты файла для примера:

Скрипт обработки

cat ОтчетОСравнении.txt \
| egrep '(\*\*\*)|(-->)|(<--)' \
| awk -vORS= '{ if ($0~"(ПланВидовХарактеристик|Справочник|Документ|РегистрНакопления|РегистрСведений|Обработка|Отчет|ЖурналДокументов|Реквизит|Измерение|Ресурс|ОпределяемыйТип)\.") \
{ print "\n"$0;} else { print $0; } }' \
| egrep '(\*\*\*)Тип(\W)*(- -->)' \
| sed "s/\*\*\*/\n- \*\*\*/g; s/- <--/\n- <--/g; s/[ \t]//g" > Result.txt
 
 Результат: список метаданных (Реквизит, Измерение, Ресурс, ОпределяемыйТип), в которых изменился тип

Пример 5.

После установки обновления от поставщика, строки кода наших сотрудников не должны изменяться. Поэтому в файле ОтчетОСравнении конфигурации рабочей базы и конфигурации обновления не должно быть строк, помеченных префиксом. Не забудьте изменить НАШПРЕФИКС на префикс, который используют ваши разработчики.

cat ОтчетОСравнении.txt \
| egrep '(Модуль|Перечисление|Справочник|Документ|РегистрНакопления|РегистрСведений|Обработка|Отчет|ЖурналДокументов|НАШПРЕФИКС)' \
| awk -vORS= '{if ($0~"\*\*\*(ОбщийМодуль|Перечисление|Справочник|Документ|РегистрНакопления|РегистрСведений|Обработка|Отчет|ЖурналДокументов)") \
{ print "\n"$0;} else { print $0; } }' \
| egrep 'Модуль.*НАШПРЕФИКС' \
| sed "s/- Модуль/\n- Модуль/g; s/[ \t]//g" > Result.txt

 Заключение

Надеюсь, этот небольшой опус поможет вам при проверке –сравнении конфигураций. Конечно, тема автоматического анализа результатов обновления еще не закрыта. Есть идеи анализировать изменение функций/процедур и еще много разных идей. Буду рад конструктивным предложениям.

Спасибо за внимание !

Обновление январь 2019

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

cat ОтчетОСравнении.txt \
| egrep '((^..- ((\*\*\*)|(-->))(Справочник|Документ|РегистрНакопления|РегистрСведений))|(Реквизит|Ресурс|Измерение))\.' \
| awk -vORS= '{if ($0~"(^..- ((\*\*\*)|(-->))(Справочник|Документ|РегистрНакопления|РегистрСведений))\.") { print "\n"$0"ENTER"; } else { print $0"ENTER"; } }' \
| egrep '(^..- \*\*\*).*(Реквизит|Ресурс|Измерение)\.' \
| sed "s/ENTER/\n/g" > Result.txt
cat ОтчетОСравнении.txt \
| egrep '((^..- ((\*\*\*)|(-->))(Документ))|(РегистрНакопления|РегистрСведений))\.' \
| awk -vORS= '{if ($0~"(^..- ((\*\*\*)|(-->))(Документ))\.") { print "\n"$0"ENTER"; } \
else { print $0"ENTER"; } }' \
| egrep '(^..- ((\*\*\*)|(-->))).*(РегистрНакопления|РегистрСведений)\.' \
| sed "s/ENTER/\n/g" > Result.txt

Обновление март 2022

Всем привет ! Мне удалось найти методику, которая пригодится всем. Идея очень простая. Если у нас были доработки кода, то после обновления они должны остаться. Сравниваем  конфигурацию до обновления со старой конфигурацией поставщика, сравниваем конфигурацию после обновления с новой конфигурацией поставщика. Получаем два файла, которые можно сравнить между собой в интерактивной среде, например Araxis. Если все правильно, то добавленный и измененный нашими программистами код остается без изменения в обоих файлах. Чтобы различий между файлами было меньше, обработаем их скриптом:

#!/bin/bash
printf "" > "result"
iconv -f UCS-2LE -t UTF-8 $1 \
| awk '{ \
if ($0~"\\*\\*\\*Справочная информация") {a=1;} \
else if ($0~"\\*\\*\\*") {a=0;} \
if ($0~" [0-9]{1,6} - [0-9]{1,6}") {} \
else if (a!=1) {gsub("\t","",$0); \
print $0 >> "result"} \
}'
  1. первая строка - традиционная для bash скриптов
  2. очищаем файл "result". В конце строки нет слеша, потому что действие не имеет логического продолжения.
  3. читаем файл - параметр ($1) запуска скрипта, утилитой iconv, изменяем в нем кодировку, передаем содержимое дальше
  4. начало awk скрипта, каждая строка ($0) файла обрабатывается отдельно. Значение переменной $1 изменено.
  5. если начинается справочная информация - устанавливаем флаг a=1.
  6. иначе, начинается другой раздел (символы ***) - устанавливаем флаг a=0
  7. если строка содержит цифры по шаблону (Например, "Изменено 121 - 135") - пропускаем ее.
  8. иначе, если флаг a<>1, убираем из строки ($0) табуляцию
  9. добавляем строку к файлу "result". Любопытно, что оператор printf выдает ошибку, если в строке ($0) есть спец. символы
  10. завершение awk скрипта. Результат сохранен в файле "result".

Bash отчетосравнении обновление

См. также

Зарплата Регламентированный учет и отчетность Кадровый учет Обновление 1С Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Зарплата и Управление Персоналом 2.5 Бухгалтерский учет Налоговый учет Управленческий учет Акцизы ЕНВД ЕСН Земельный налог ИП, ПБОЮЛ, КФХ Налог на имущество Налог на прибыль НДС НДФЛ ФОМС, ЕФС Транспортный налог УСН ПСН (патентная система налогообложения) Платные (руб)

Обновления для конфигураций: КА 1.1; ЗУП 2.5; БУХ 2.0; КА 1.1 Комплексная автоматизация торговли алкогольной продукцией; КА 1.1 Комплексный учет сельскохозяйственного предприятия

27900 руб.

01.04.2020    147099    649    360    

235

Обновление 1С Программист Платформа 1С v8.3 Бесплатно (free)

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

21.10.2024    2661    mixaeel    18    

17

Обновление 1С Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

Те кто объединял конфигурации находящиеся на поддержке, обновлял подсистемы БСП прекрасно помнят упражнение «10000 тысяч кликов мышкой» или, непонятное словесное заклинание, после которого конфигурация снимается с поддержки целиком.

1 стартмани

26.09.2024    501    3    milkers    2    

7

Обновление 1С Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 Россия Бесплатно (free)

Вышел новый релиз для УТ11 5.19.63. На копии базы было выполнено обновление и вылезли проблемы с номенклатурой, подлежащей маркировке. В публикации описаны проблемы, обнаруженные в копии базы конкретной организации.

24.09.2024    861    gull22    2    

8

Обновление 1С Программист Платформа 1С v8.3 Бесплатно (free)

Как исправить медленное сравнение конфигурации с файлом cf, сохраненным из хранилища.

17.09.2024    4369    vatkir    15    

10

Обновление 1С Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 Абонемент ($m)

Упрощенное обновление конфигураций 1С (предпочтительно самописных) с помощью батника и Яндекс Диска (по публичной ссылке)

1 стартмани

22.08.2024    558    0    user1694357    0    

4

Обновление 1С Системный администратор Россия Абонемент ($m)

На ИТС есть статья, в которой поверхностно описан процесс автоматического обновления тонких клиентов. В качестве примера, что логично, представлены методы конфигурации 1С. Но, в отличие от того же управления списками баз, для обновления не требуется хранить информацию, потому я решил переписать код на php, чтобы можно было отвязаться от 1С. Не работает для файловых баз, подключенных как File="ПутьКПапкеБазы"; (а жаль), для опубликованных файловых - работает.

1 стартмани

20.08.2024    681    MikeSh    10    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Maxisussr 18.07.19 13:21 Сейчас в теме
(0)
После 1С:Эксперта "заболел" регулярками?
4. vasilev2015 2722 18.07.19 13:44 Сейчас в теме
(1) да, это заразно.
starik-2005; +1 Ответить
2. VmvLer 18.07.19 13:22 Сейчас в теме
в Notepad++ можно писать макросы, зачем тогда скрипт?

думаю для того чтобы написать макрос и ничего не качать
cleaner_it; +1 Ответить
8. vasilev2015 2722 18.07.19 15:41 Сейчас в теме
(2) Здравствуйте !

Выкладывайте макрос. Плюс заочно.
3. acanta 18.07.19 13:42 Сейчас в теме
Спасибо, добрый человек.
5. capitan 2507 18.07.19 13:46 Сейчас в теме
6. DmitryKSL 156 18.07.19 14:55 Сейчас в теме
Может я чего-то не понимаю, но судя по скриншоту не применен фильтр "дважды измененные". Зачем такой геморрой себе придумывать?
gudim1979; +1 Ответить
7. vasilev2015 2722 18.07.19 15:40 Сейчас в теме
(6) Здравствуйте !

Как правило, при обновлении я использую этот фильтр.

Но если искать разницу между двумя конфигурациями по предложенной методике, то такой фильтр не нужен:

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

2. Список дважды измененных объектов тоже может быть большим. Работает команда программистов.
За всеми не уследить, а в результате работы скрипта получается несколько строк. Проще контролировать.
9. user953800 18.07.19 22:10 Сейчас в теме
"супер-пупер мега скрипт" сохранен в кодировке utf-8 (re.sh)
При запуске получаю ошибки:
awk: cmd. line:1: warning: escape sequence `\.' treated as plain `.'
awk: cmd. line:1: warning: escape sequence `\*' treated as plain `*'
awk: cmd. line:1: warning: escape sequence `\.' treated as plain `.'
awk: cmd. line:1: warning: escape sequence `\*' treated as plain `*'
awk: cmd. line:1: warning: escape sequence `\.' treated as plain `.'
awk: cmd. line:1: warning: escape sequence `\.' treated as plain `.'
10. user953800 18.07.19 22:49 Сейчас в теме
(9) Подправил в строках awk, поставив двойной \\
11. vasilev2015 2722 19.07.19 08:01 Сейчас в теме
(9, 10) Здравствуйте !

я ввожу скрипт в командную строку консоли, у меня те же сообщения,

но это правильно: символами \* и \. я обозначил звездочку и точку.

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

Главное, чтобы файл ОтчетОСравнении.txt был в кодировке utf8.

Интересно: какой результат у вас выдает скрипт ?
12. user953800 19.07.19 10:48 Сейчас в теме
(11) Добрый день. Написал в личку.
13. vasilev2015 2722 19.07.19 11:06 Сейчас в теме
(12) Спасибо, мне интересно. В движениях показаны добавленные регистры с локальным префиксом. Это немного странно: если в окне сравнения рабочая конфигурация слева, а конфигурация поставщика справа - то должны показываться добавленные типовые регистры, они без префикса. Чтобы результат стал чище, вместо символов - <-- в скрипте по движениям давайте использовать - <--Регистр (внесу правку в статью). Попробуйте - пришлите результат в личку.
14. user953800 19.07.19 11:08 Сейчас в теме
(13) Только вечером, т.к. все действия были на личном компьютере.
15. vasilev2015 2722 19.07.19 11:12 Сейчас в теме
(14) и еще в файле ОтчетОСравнении.txt посмотрите пожалуйста

ключевые слова Имя - Различаются значения
и ключевые слова <--Реквизит, <--Колонка реквизита, <--Параметр

маловероятно что различий нет
16. user953800 19.07.19 11:41 Сейчас в теме
(15) Таких ключевых полей в отчете нет. Отчет - итог сравнения с конф поставщика в базе, а не конф поставщика обновленной.
Вот такие слова только встречаются:
- ***Реквизит -
- ***Параметр -
- ***Колонка реквизита - 

Ну и добавленные нетиповые реквизиты:
- -->Справочник.Контрагенты.Реквизит
17. vasilev2015 2722 19.07.19 11:57 Сейчас в теме
(16) приложил пример добавления реквизита на форму.
Прикрепленные файлы:
18. user953800 19.07.19 12:04 Сейчас в теме
(17) вот у меня в отчете добавленный реквизит
Очень может быть, что результат без этих строк, т.к. я неправильно в скрипте поменял эти стрелки...
Прикрепленные файлы:
19. vasilev2015 2722 19.07.19 12:36 Сейчас в теме
(18) на картинке не реквизит, а элемент формы. я такие случаи пробовал искать, но не удалось сформулировать скрипт корректно.

Если префикс "т_" является префиксом разработки, и поскольку добавлен элемент с префиксом разработки -

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

Слева основная конфигурация, справа - конфигурация производителя (как на картинке в статье).
20. user953800 19.07.19 13:15 Сейчас в теме
(19) Первая строка - как раз добавленный реквизит. И потом он же выведен на форму.
Сравнение конф так и производилось. Первая - основная, вторая - поставщика.
21. vasilev2015 2722 19.07.19 13:18 Сейчас в теме
(20) сообразил: т_ЦФО это реквизит объекта и он добавлен на форму как элемент.
Скрипт из статьи находит только добавленные реквизиты формы и параметры формы.
Реквизиты объекта как правило, успешно добавляются при обновлении.
А элементы формы я не смог описать в скрипте.
user953800; +1 Ответить
22. AlX0id 22.07.19 08:17 Сейчас в теме
Какая красота получилась! Мир спасен?

До той поры, пока 1сники не нарисуют лишнюю запятую в отчете о сравнении..
23. vasilev2015 2722 22.07.19 08:22 Сейчас в теме
(22) Здравствуйте !

Автор придерживается тех же взглядов.

Поэтому фраза с вопросом и не в конце статьи, а между третьим и четвертым примером.
24. kosmo0 111 25.07.19 09:09 Сейчас в теме
У меня методика обновления измененной конфы примерно следующая.
1. Делаю краткий отчет о сравнении текущей рабочей конфигурации и текущей типовой конфигурации. Получаем список объектов которые были изменены.
2. Делаю краткий отчет о сравнении текущей типовой конфигурации и новой типовой конфигурации. Получаем список измененных объектов в типовой конфигурации.
3. Сравниваем список объектов из 1 и 2. Объекты присутствующие в обоих списках требуют контроля при обновлении. А убрав из списка 2 совпадающие объекты, получаем объекты которые обновляем на автомате (тупо ставим галочку при обновлении).

Конечно есть масса особенностей и граблей.
- Порядок объектов. В большинстве случаев абсолютно не критично (но может создать большой размер файла о сравнении). Теоретически можно почистить от этой информации файл сравнения. Если у изменяемого объекта меняется ТОЛЬКО порядок, то можно убрать и сам объект из файла о сравнении.
НО, наблюдаем потенциальную граблю - изменение порядка реквизитов (измерений, ресурсов для регистров) для документов (справочников, регистров и проч.). Если есть обмены в которых просто передаются объекты, то обмен может встать пока новая конфигурация не будет загружена в передающий и принимающий узел. То есть, если вдруг используется при приеме данных Объект = ПрочитатьXML() и хотябы порядок реквизитов не совпадает - объект не будет принят.
- Случай когда указывается что форма (обычная) отличается от формы в типовой конфигурации, хотя на самом деле это не так (и в ряде случаев можно обновлять ее просто заменив на форму из типовой). Как это получается. Изменили тип ревизита объекта и он выводится на данной форме (например в справочнике увеличили длину кода и сравнение будет показывать различия по элементу формы который выводит код).
- Случай когда при обновлении вроде на затрагиваются измененные процедуры и функции, а просто добавляются пара новых процедур. И можно не напрягая мозг просто добавить новые модули.
Возможные грабли - было процедура Расчет() в которой вы внесли изменения, а тут добавилась процедура Расчет2019() которая будет применяться с 01.01.2019. Если в новую процедуру не внести ваши изменения, то у пользователей могут возникнуть вопросы.

Ну и другие нюансы. Хотя, с развитием платформы в сторону Расширений, это все теряет актуальность. И если вдруг кому-то помог - буду рад.
WellMaster; acanta; +2 Ответить
25. vasilev2015 2722 25.07.19 10:26 Сейчас в теме
(24) Здравствуйте !

Чем отличается пункт (3) от списка дваждыизмененных объектов, который формируется штатно ?
26. kosmo0 111 01.08.19 13:05 Сейчас в теме
(25) Однажды, когда начинал заниматься обновлением, заметил что окно обновления почему-то не выделило объект который необходимо обновить. С тех пор не надеюсь на это окно. Хотя, возможно, платформа была устаревшая.
27. vasilev2015 2722 03.08.19 08:54 Сейчас в теме
(26) Здравствуйте !

За полгода постоянных обновлений только один раз у меня было что-то подобное.
Поэтому я считаю, что типовой механизм очень надежный.
TerveRus; +1 Ответить
28. kosmo0 111 08.08.19 08:46 Сейчас в теме
(27) Заметил один раз? Если полгода сравнений типового механизма с другой методикой - это одно. А если только заметил один раз - это другое. Вполне вероятно что не заметил еще раз 5 или 10.

Кроме того, имхо, не считаю надежным механизм, который работает непредсказуемо. Опять же, здесь как с бекапами - лучше сейчас потратить лишних полчаса, чем потом разгребать последствия полнедели без сна.
29. kosmo0 111 12.08.19 09:42 Сейчас в теме
(27) Пожалуйста пример. Обновление УПП с 1.3.124.1 на 1.3.124.2.
Изменений кот наплакал. Но по дефолту общий модуль ИнтеграцияЕГАИССлужебныйКлиент не становится на обновление, хотя он в нашей конфе не изменялся. Можно заметить отличающийся квадратик в левой части, но у меня различающихся объектов порядка 10000, поэтому все просматривать весьма утомительно.

Плюс маленькая засада для юных падованов - дважды измененные объекты никак не выделяются на общей картине (смотреть на ветку Документы). И если начинающий специалист по обновлениям не знает куда смотреть то он может упустить это.
Прикрепленные файлы:
30. vasilev2015 2722 12.08.19 10:27 Сейчас в теме
(29) Здравствуйте !

Похвально, что Вы так скурпулезно подходите к обновлению.

Вы анализируете файл ОтчетОСравнении.txt регулярками или другими средствами ?
31. kosmo0 111 15.08.19 10:59 Сейчас в теме
(30) Здравствуйте.

Уровень скурпулезность работы зависит от сложности решения потенциальных проблем. Одно дело база на 5 человек. Другое дело база на 100 человек. И совсем отдельный случай когда база с филиалами по всей стране работает 24/7 и когда 1 час простоя это многмилионные убытки. У меня примерно второй вариант.

У меня для анализа 1с-обработка. На обычных формах и внутри мракобесие (делал одну функцию, со временем прикручивал доп. функционал, короче бардак, но работает).
Упрощенно - два отчета о сравнении (вид - краткий, текстовый), а) между стврой и новой типовой конфой и б)между текущей и типовой конфой нормализуются и сравниваются между собой. Получаем список дважды измененных объектов (получается это быстрее чем при процессе обновления (ну у меня точно), можно распечатать (и видеть не только в момент обновления), можно примерно оценить сложность обновления - как много дважды измененных и как много среди них форм (обновление дважды измененых обычных форм самая сложная проблема (когда элементы форм начинают появляться, исчезать).
Нормализация - приведение к виду "Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента".
Плюс учет разных граблей. Учитывать или нет изменение порядка. Отслеживать изменение в наименовании и прочее.

Если изменений достаточно много, то самый простой контроль. Отчет о сравнении (опять же вид краткий текстовый) между старой и новой ТИПОВЫМИ конфигурациями должен совпадать с отчетом о сравнении между предыдущей и обновленной рабочей конфигурациями.
Также должны совпадать отчеты о сравнении между рабочей и типовой конфигурациями до и после обновления. Это если нет ваших изменений в рабочую конфигурацию.

Опять же повторюсь - на перспективу смотрите на расширения конфигурации.
А если изменений много то воспользуйтесь услугой по обновлению. Если не вру - фирма ИжТиСи, пару лет назад прайс был 12К рублей за год.
32. vasilev2015 2722 15.08.19 11:25 Сейчас в теме
(31) Здравствуйте !

Когда руководитель предложил мне делать обновления - я тоже его связал с ИжТиСи.
Они составили нам смету - догнать один год стоит около 1 млн, длительность обновления - три месяца.
Но три месяца - это долго ))) - поэтому решили делать самостоятельно.
33. kosmo0 111 22.08.19 08:42 Сейчас в теме
(32) Догонять - это отдельная песня. И опять все упирается в количество измененных по сравнению с типовой конфигурацией объектов. Насколько я знаю, в ИжТиСи для обновления конфигурации делают через "Выгрузить конфигурацию в файлы", обновления, "Загрузить конфигурацию из файлов". А эта загрузка/выгрузка занимает много времени (если конфигурация не маленькая). Плюс вроде как у них проводится тестирование.
А руководителю можно рассказать старую историю - "быстро, качественно, не дорого" - выбирайте любые два параметра.
34. u_n_k_n_o_w_n 35 29.08.19 14:14 Сейчас в теме
Самое главное "грамотно" вносить изменения в конфигурацию и проблем с обновлениями вообще не будет.
dtripleh; +1 Ответить
35. dtripleh 25.09.19 13:08 Сейчас в теме
Какой-то геморр если честно. Вполне достаточно штатного функционала по сравнению и объединению, даже если очень сильно переписана конфигурация
36. u_n_k_n_o_w_n 35 09.10.19 16:07 Сейчас в теме
На управляемых формах стало более менее понятно.

Но на обычных формах без детального анализа будет тяжеловато.
Оставьте свое сообщение