Имя: Пароль:
1C
1С v8
Обновление измененных процедур и функций
0 Gorr
 
12.10.13
21:37
Прошу поделиться опытом кто как поступает, если часть кода процедуры нужно оставить свою, а часть кода все той же процедуры взять из новой конфигурации поставщика. На ум приходят два варианта. Вариант 1. Использовать объединение текста процедуры с тем или иным приоритетом, а затем, после объединения конфигураций, поиском в тексте модулей служебных тегов MRG и дополнительной правкой кода. Вариант 2. Использование дополнительной копии базы для выявления различий в коде и ручной правкой кода в обновляемой конфигурации. По-видимому первый вариант штатно задумывался разработчиком платформы для решения подобной задачи, на мой взгляд код получаемый в результате объединения малочитаемый, вторым вариантом я пользовался еще при обнолении решений еще на седьмой версии платформы. Возможно есть и другие варианты на 8й платформе? Мне было бы интересно выслушать мнения по данному вопросу.
Заранее всех благодарю!
1 Лефмихалыч
 
12.10.13
21:46
лазить в код поставщика, если планируешь принимать его обновки - последнее дело. Потому что простого общего решения нет - это в любом случае геморрой
2 Gorr
 
12.10.13
21:49
(1) для кого-то это "последнее дело", лично для меня - работа))
3 Euguln
 
12.10.13
21:56
(1) + 1
Согласен. Есть масса вариантов не лезть в типовой код.
4 Gorr
 
12.10.13
22:03
(3) Да я все это прекрасно знаю -  и про механизм доп свойств, и про подписки на события, и про создание новых объектов, форм и т.д. все знаю. тут дело в том что мне клиент достался с такой конфой, а перерабатывать всю конфу уже нецелесообразно.
Давайте не будем оффтопить!
5 Euguln
 
12.10.13
22:09
(4) Хочешь оптимизировать дерьмо - избавься от дерьма.
6 Vexcel
 
12.10.13
23:33
Смотрю чего больше добавлено в новой конфигурации, от 1С или "моего дописанного". Ну например в процедуре у новой конфы больше изменений от 1С, значит беру полностью процедуру от 1С, а свой участок кода копирую в блокнот(естественно не только свой участок кода, но и захватываю другие участки кода, что бы можно было найти нужное место), а потом уже, после обновления - вставляю этот участок.

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

Плюс стараюсь избавиться от дерьма, если клиенту часто нужны обновления. Если вижу, что есть изменения в печатной форме, то обычно без вопросов делаю внешнюю печатную форму, клиент платит)))
7 ПТР
 
13.10.13
00:13
1.Все дополнения делаю в модулеОбработки в виде процедур и функций.
2.Ненужные фрагменты исходного модуля не удаляю, а гашу слежами и помечаю метками спереди
3.Новые фрагменты модуля необходимые для вызова процедур по п.1 помечаю метками сзади.(В пределах трех строк на вызов)
4.После штатного обновления специальной обработкой выбираю помеченные строки  модулей исходной и обновленной конфигураций и сравниваю их. Недостающие строки переношу вручную из исходной конфигурации. Таких групп строк как правило несколько десятков, а общее количество новых строк с учетом п.1 составляет десятки тысяч.
8 hhhh
 
13.10.13
03:10
если эти изменения находятся в разных частях процедуры, то однозначно первый вариант. Можно сделать на автомате, везде выбираешь, обновить с приоритетом основной конфигурации, а потом просто после обновления, поиск во всех текстах MRG и пройти все места и изменить.

если изменения рядом, то да, можно на процедуре снять галку (не обновлять вообще), и сформировать отчет о сравнении новой конфигурации поставщика со старой и его сохранить в файл (блокнот). И потом вручную добавить эти изменения.
9 badboychik
 
13.10.13
03:28
вообще не объединяю с приоритетами ибо лень копаться в этом УГ с MRG. Делаю сравнение без учета процедур и потом кидаю оба текста в WinMerge. Спокойно и удобно сравниваю, сливаю изменения, потом вставляю в свой модуль 1С.
10 hhhh
 
13.10.13
04:03
(9) это если вы меньше 50-ти модулей изменили
11 badboychik
 
13.10.13
04:13
(10) а часто у вас больше 50 модулей меняется? Через 10 обновлений перепрыгиваете?
12 hhhh
 
13.10.13
04:19
(11) что значит часто? количество модулей одинаково всегда. Со временем увеличиается.
13 Gorr
 
14.10.13
13:28
Благодарю всех откликнувшихся за очень интересные мнения. Можно подвести итог, что сильно далеко восьмерка от седьмой версии платформы в этом плане так и не ушла - ваниант №2 по факту остается актуален и по сей день.

Еще наверняка многим было бы не интересно узнать планы 1С по развитию инструмента в этом направлении.
14 AlexITGround
 
14.10.13
14:04
(13) Пользовался вторым методом - считаю наиболее безопасным, особенно если учесть, что слияние кода может затянуться, поэтому лучше сделать бэкап и развернуть две базы. http://www.1c-cpp.ru/download.htm# - вот здесь мне понравилось как объясняется.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.