Объединить форму с дважды измененными реквизитами. Режим объединения

Произошли ещё изменения в обновлении: Улучшение сравнения и объединения конфигураций . В этих 2 ссылках самое важное, что теперь при обновлении можно сразу именять результат объединения процедур и функций. Об этом в статье нет ни слова, хотя если уж и дополнять то, что было сказано в культовой статье - то эта новая особенность одна из основных. Есть ряд других и все их можно почитать в зазеркалье.

2. Т.к. статья позиционируется как краткая инструкция для новичка многие моменты опущены, зато очевидный момент про то, что у нас должна быть 2 база копия текущей расписано аж на 3 абзаца. Причём расписано неправильно:

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


А если копия базы совсем древняя? Что будет если прыгнуть через 50 релизов таким вот способом? Да, cf-ник получится корректный, но возможны ошибки в режиме предприятия, на анализ которых уйдёт куча времени. И всё-равно программист должен будет вынужден снять актуальную копию и обновлять её. Риски см. в п.7, в и в , но эта информация не для новичка. Для новичка всё просто: см. п.7 чтобы не повторяться.

Устанавливаем переключатель на «Выбор файла обновления» и указываем наш файл обновления.


Зачем? Почему рекомендуется для новичков в краткой инструкции именно этот метод, а не рекомендованный фирмой 1с? Поиск доступных обновлений на конфигурации УправлениеПтицефабрикой не работает?

После того как появилось окно сравнения, первым делом снимаем галочку с корневого элемента конфигурации.
...
Потом заходим в фильтр и устанавливаем «Показывать отличия новой конфигурации поставщика от старой конфигурации поставщика».
При этом фильтре устанавливаем галку на корневом элементе конфигурации – у нас выберутся все необходимые объекты.


Вы пробовали сравнивать то что было до и что получилось после всех этих манипуляций? Боюсь результат одинаков: то что вы старательно первым делом убрали, то же в конце концов обратно и получилось! В новой версии платформы (ну как новой, для вас да - новой, а так она уже не новая, но и не старая) можно делать XML файл настроек объединения конфигураций. Попробуйте сделать до и после и сравнить их.

У ролей и тех объектов, у которых изменен состав – устанавливаем «объединить с приоритетом новой конфигурации поставщика»


И ни слова о том, что результат желательно проверить. Сколько пользовался "Объединить с приоритетом..." время от времени возникают ситуации когда результат отличный от того, что ожидается по логике... Короче все эти "объединить с приоритетом" лучше проверять после.

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


Во-первых: если это чисто ваша база и только вы её обновляете, возможно стоит задуматься чтобы сделать все изменения формы кодом. Минусы: придётся почитать ИС как это делается (если не знаете); на начальном этапе уйдёт куча времени. Плюс: экономия времени при каждом обновлении.
Во-вторых: ничего не сказано что нужно (и как это сделать) определить была ли форма изменена по сравнению со старой конфигурацией поставщика.
В-третьих: когда конкретно "возможно достаточно будет объединить форму с приоритетом"? Вообще статься про обновление, а основные моменты уж очень кратко расписаны!

Так можно накатить сразу несколько релизов (на копии мы последовательно накатываем релизы с обновлением в режиме предприятия), а на рабочую базу накатываем общий получившийся в результате этого фай cf.


Это инструкция для новичка? Если поставщиком не предусмотрен переход с версии 1 на 3, то и не нужно новичку этого делать. А не новичку нужно понимать, что он берёт на себя риск. В указанной выше статье написано:

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


Но эта информация не для краткой инструкции для НОВИЧКОВ! Для новичков всё просто: делайте как рекомендует поставщик конфигурации, обновляйте последовательно! Если поставщик сказал, что можно с 1 версии перескочить на 3, то делайте, нельзя - не делайте.

Режим объединения можно установить для каждого объединяемого объекта. Существует два вида режима: «Взять из загружаемой конфигурации» и «Объединять...», во втором случае обычно указывается приоритет конфигураций при объединении.

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

При выборе метода «Объединять ...» происходящее при объединении конфигураций зависит от установленного приоритета.

Если из загружаемой конфигурации необходимо взять только новое и максимально сохранить старое, необходимо выбрать «Объединить» с приоритетом основной конфигурации. В этом режиме добавляются только новые объекты.

Тексты

Для модуля формы влияние выбора приоритета на результирующий текст можно проиллюстрировать следующим примером.

Объединение свойств объектов . Для объектов, значения свойств которых определяются простым указанием в палитре свойств (например, Синоним, Комментарий ), зависимость результата объединения от приоритета и наличия значений представлена в таблице:

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

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



Макеты объединяются следующим образом:

Приоритет Результат
Приоритет основной Макет основной конфигурации остается
Макет загружаемой конфигурации добавляется, но, если его имя совпадает с именем макета основной конфигурации, оно изменяется (например, «Макет» -> «Макет!»); таким образом, по этому имени в объединенной конфигурации будет вызываться макет основной конфигурации, но макет загружаемой тоже не потерян.
Приоритет загружаемой Макет загружаемой конфигурации добавляется
Макет основной конфигурации остается, но, если ее имя совпадает с именем макета загружаемой конфигурации, имя макета основной конфигурации изменяется (тем самым, макет основной конфигурации не потерян, но вызываться будет макет из загружаемой конфигурации).

Элементы управления, располагаемые в форме , не отображаются в окне «Объединение конфигураций» и, поэтому при объединении Конфигуратор производит анализ состава формы, определяет:

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

Новые элементы управления добавляются в форму. Совпадающие элементы (по именам) в основной форме будут заменены (заменяются свойства, размеры и расположение), если выбран приоритет загружаемой конфигурации, и оставлены без изменения, если выбран приоритет основной формы.

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

Для некоторых объектов (реквизитов объектов) выбор режима объединения может отсутствовать. Так например, для реквизита с базовым типом (например «Число») режим объединения устанавливается только «Взять из загружаемой конфигурации».

Для некоторых объектов выбор приоритетности также может отсутствовать. Например, для свойства Подсистемы можно выбрать режим объединения «Взять из загружаемой конфигурации» и «Объединить». Если выбран режим «Объединить», то при объединении происходит простое объединение указанных подсистем двух конфигураций.

Установка порядка подчиненных объектов

Для видов объектов, которые могут иметь неограниченное число подчиненных объектов (например, подчиненные объекты Реквизиты, Формы, Макеты, Табличные части справочников и документов), в некоторых случаях важен порядок следования объектов в каждой такой группе.

Если в процессе сравнения конфигураций Конфигуратор определил соответствие объектов, входящих в группу, но их порядок в конфигурациях различен, то в графе «Режим объединения и порядок подчиненных объектов» можно указать нужный порядок следования объектов.

Для указания порядка выберите любой подчиненный объект и в третьей графе выберите вариант установки порядка: «Порядок из основной конфигурации» или «Порядок из загружаемой конфигурации».

Выбор порядка действует на все подчиненные объекты данного вида.

Если для выбранного объекта его подчиненные объекты изменены и расположены в другом порядке, то в третьей колонке можно выбрать только порядок. Режим объединения указывается в объекте верхнего уровня с помощью контекстного меню. Например, в обеих конфигурациях для документа «Счет» есть несколько подчиненных объектов типа «Формы». Они изменены и порядок их следования также изменен. Для выбора режима объединения укажите объект более высшего уровня («Формы» или «Счет») и в контекстном меню выберите нужный режим объединения.

В этой инструкции нетипового обновления измененной 1с 8.3 я не буду описывать базовые вещи, такие как: как открыть конфигуратор, что такое конфигурация БД, конфигурация поставщика и основная конфигурация. Об это и там много написано, и вы можете самостоятельно найти эту информацию на просторах интернета. Я постараюсь описать основные моменты процесса обновления и на что нужно обратить внимание.
Я взял для примера нетиповую бухгалтерию 3.0.51.22 и покажу как обновить ее до версии 3.0.53.29. На платформе версии 8.3.10.2561 (нет большой разницы на более старых платформах, просто раньше окошко сравнения выглядело чуть иначе).
Скажу сразу, будет много картинок и мало текста. Я считаю, что визуально проще запоминать процесс, чем читать море текста.

1. Проверить соответствие конфигурации БД и конфигурации поставщика.

Для этого вам нужно


При совпадении можете смело переходить к пункту 2.

1а. Постановка конфигурации на поддержку.

Если у вас отличаются версия БД и версия конфигурации поставщика, то вам нужно удалить текущую конфигурацию все через то же меню: конфигурация – поддержка – настройка поддержки. И нажать кнопку «Снять с поддержки».


После «недолгого» ожидания снимаем все галочки. Ну и можно убрать галку «Сохранять настройки автоматически». И жмем выполнить.


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

2. Обновление базы.

Теперь можно переходить к обновлению.

Скажу сразу обновление делать нужно ТОЛЬКО через меню «Конфигурация» - «Поддержка» - «Обновить конфигурацию…».
Использовать «Сравнить, объединить с конфигурацией из файла…» НЕЛЬЗЯ!!! При использовании этого механизма вам при следующем обновлении придется переходить к пункту 1а. Поэтому давайте не будем так делать и создавать себе (или тому, кто будет в следующий раз обновлять базу) лишние проблемы.


Далее выбираем файл обновления.
Хотелось бы сказать про обновление через несколько релизов. 1С не рекомендует обновлять на CF файлы, сразу прыгая через несколько релизов. Это нужно делать последовательно. В теории это правильно.
Объясню почему так не рекомендуют делать. Если программисты хотят удалить какой-либо реквизит, то они сначала приписывают к нему приставку «удалить», потом через несколько релизов удаляют его. И могут в каком то релизе перенести из него информацию. Вот пропуская этот релиз, вы можете потерять данные. Но на практике за свои уже лет 10 работы с базами 1с у меня был такой один случай. Когда почему-то разработчики решили перенести данные с перечисления на справочник. При том ничем критичным это для меня не закончилось. Я написал простую обработку, которая перекинула эти данные из архива в текущую базу. Никакого повторного обновления делать не пришлось.
Можете кидать в меня камни, но я всегда обновляю базу через cf файлы на несколько релизов.
Итак мы нажали обновление, нам выскочило сообщение с какой на какую версию будет произведено обновление. Мы нажимаем ОК.



Ожидаем, пока пройдет сравнение объектов.
Далее нам нужно внизу из списка выбрать пункт «показывать только дважды измененные свойства.


Так же хочу сказать по старые версии, раньше это был флажок.


Итак, мы теперь видим гораздо меньше объектов.


Если у вас пусто, то вам несказанно повезло, и вы можете смело нажимать кнопку «выполнить» и считайте обновление закончено. Ну у нас не все так просто, поэтому пробегусь по основным объектам.


Первое что хочется сказать. Ни в коем случае не переключайте режим объединения. Он должен стоять «Взять из новой конфигурации поставщика». Иначе вы получите в базе мусор с комментарием MGR.
Никаких кнопок «показать различия в модулях…» !
Жмем именно на значок шестеренки рядом с модулем


Открывается окошко, в котором очень много изменений в функциях и процедурах.


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


И вот ту можно уже посмотреть изменения через «показать различия в модулях…». Т.к. мы не собираемся ничего менять, мы только хотим посмотреть, что было изменено.


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


Вернемся к обновляемой конфигурации. Там мы через значок шестеренки зашли с режим объединения модулей. Далее ставим все галки…вручную..говоря про себя «спасибо» разработчикам платформы:)


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


Копируем его из верхнего окна и вставляем в нижнее окно.


Так проделать со всеми модулями. Если модуль не был изменен, как в нашем случае со справочником валюты. Мы просто ставим режим «Взять из новой конфигурации поставщика» и НЕ нажимаем на шестеренку (рядом с шестеренкой не должно стоять зеленой галочки, это означает что код полностью будет взят из новой конфигурации, без ручной настройки).


Отлично. Теперь пробежавшись по всем объектам можно снять галку «сохранять настройку автоматически» и потом «выполнить»


На сообщение «Существуют объекты, измененные в основной конфигурации по отношению к старой конфигурации….. При обновлении будет выполнено замещение этих объектов! Выполнить?» Нажимаем смело ДА.


В следующем окне оставляем галки, как показано на картинке. И никак иначе!!! Должны стоять обе галки – «объекты редактируются с сохранением поддержки». Нажимаем ОК.


Все. Обновление нетиповой конфигурации 1с завершено.
Этот метод не претендует на идеал, но я думаю, многие совершают ошибки в этих шагах.
Конечно, я рассказал не все, тут еще много подводных камней. Но я думаю 90% обновлений можно смело обновлять по этой инструкции.

Нетиповая конфигурация 1С, это когда: 1) конфигурация 1С написана с нуля самостоятельно программистом, 2)конфигурация 1С была типовой, но в нее добавили изменения, даже если добавили один реквизит.

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

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

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

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

Существует 2 варианта обновления: а) Обновление 1С через поддержку (вызов через диалог Конфигурация/Поддержка/Обновить конфигурацию) и б) через Сравнение объединение с конфигурацией из файла. Следует обратить особое внимание, что разница между этими двумя пунктами в том, что в первом случае обновляется и основная конфигурация и конфигурация поставщика, а при сравнении объединении конфигураций обновляется только основная конфигурация, конфигурация поставщика остается старой. Таким образом наиболее рекомендуемым вариантом является обновление через Обновить конфигурацию. Для обновления через Поддержку конфигурации используются файлы поставки поставщика CF или CFU, которые можно найти поиском, в каталоге шаблонов, указав путь в Интернете, или напрямую указать путь к нужному файлу на жестком диске.

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

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

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

Т.е. в случае, если в нашей конфигурации 1С и в конфигурации поставщика изменены различные процедуры модуля, то, правильно расставив, галочки мы избавим себя от ручного переноса изменений кода. Чтобы до этого добраться, необходимо нажать кнопку в виде лупы рядом с названием режима объединения модулей:

При выводе меню действий по объекту (например нажатием правой кнопки мыши) мы можем вызвать отчет о сравнении объектов.

Чтобы подтвердить проведенное обновление 1С - нужно выбрать пункт меню Конфигурация/Обновить конфигурацию базы данных.

Чтобы отказаться от обновления 1С – нужно выбрать пункт меню Конфигурация/Вернуться к конфигурации БД.

Несколько правил, которые упрощают будущее обновление конфигураций 1С:

Основное правило обновления 1С: нужно добавлять новые объекты, т.к. при обновлении новые объекты системой не затрагиваются

При изменении текстов модулей желательно также добавлять свои новые процедуры и функции, а из существующих вызывать свои новые

Использование подписок на события, благодаря этому можно дорабатывать типовые механизмы, не изменяя типового кода

Использование типового функционала конфигураций

Программное создание элементов формы (В событии ПриСозданииФормыНаСервере)

Спасибо!