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

В этой инструкции нетипового обновления измененной 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С:Предприятие позволяет сохранить в другие форматы (например, таблица Excel).

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Спасибо!

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

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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

Конфигурация , с точки зрения пользователя, это программное решение, заточенное под определенные бизнес-задачи. Например, есть конфигурация 1С:Управление торговлей, для автоматизации торговых операций. С точки зрения разработчика, бизнес-логика данного программного решения реализована с помощью конкретных объектов конфигурации - электронных форм ввода, отчетов, справочников, алгоритмов etc. Эти объекты сгруппированы в виде дерева конфигурации :

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

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

После внесения изменений, их нужно "спроецировать" на ту конфигурацию, в которой хранятся непосредственно бизнес-данные - на конфигурацию базы данных . Например, новый реквизит после добавления в основную конфигурацию не будет сразу доступен для пользователя, так как конфигурация базы данных еще не изменена. Для обновления конфигурации базы данных нажимаем F7; после обновления конфигурация базы данных становится равной основной конфигурации:

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

Каждая конфигурация состоит из прикладных объектов, сгруппированных в дерево конфигурации по принципу схожести. Например, дерево объектов типа Документ:

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

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

Вопрос 01.02 экзамена 1С:Профессионал по платформе. В каком объекте содержится редактируемая пользователем информация?

  1. Объект конфигурации
  2. Объект встроенного языка
  3. Объект информационной базы
  4. Верны ответы 1 и 3
  5. Верны все варианты
Правильный ответ третий. Каждому объекту конфигурации (например, документу РеализацияТоваровУслуг) соответствует произвольное число экземпляров объектов информационной базы (например, конкретные документы Реализация товаров и услуг, оформляемые по каждому факту продажи товаров).

Вопрос 01.05 экзамена 1С:Профессионал по платформе. Выберите верный набор ассоциаций "Объект" - "тип файла":

  1. внешняя обработка -"epf", внешний отчет – "erf", конфигурация – "сf"
  2. внешняя обработка -"ert", внешний отчет – "mxl", конфигурация – "pfl"
  3. внешняя обработка -"ert", внешний отчет – " erf", конфигурация – "cfu"
  4. внешняя обработка -"epf", внешний отчет – "mxl", конфигурация – "cfu"

Правильный ответ первый. External processor file это расширение внешних обработок, External report file расширение внешних отчетов, Configuration file это расширение файла конфигурации.

Вопрос 01.21 экзамена 1С:Профессионал по платформе. Из чего состоит конфигурация?

  1. Объекты конфигурации
  2. Объекты встроенного языка
  3. Объекты информационной базы
  4. Верны ответы 1 и 3
  5. Верны все варианты
Правильный ответ первый, из объектов, просмотреть которые можно в дереве конфигурации.

Вопрос 01.27 экзамена 1С:Профессионал по платформе. Какие объекты используются при описании алгоритма?

  1. Объекты конфигурации
  2. Объекты встроенного языка
  3. Объекты информационной базы
  4. Верны ответы 1 и 3
  5. Верны все варианты
Правильный ответ второй, алгоритмы описываются встроенным языком.

Вопрос 01.34 экзамена 1С:Профессионал по платформе. Какую конфигурацию можно изменять интерактивно в конфигураторе?

  1. Основная конфигурация
  2. Конфигурация базы данных
  3. Конфигурация поставщика
  4. Внешние конфигурации
Правильный ответ первый. Конфигурация поставщика остается неизменной, конфигурация базы данных приводится к конфигурации поставщика после процедуры обновления.

Вопрос 01.57 экзамена 1С:Профессионал по платформе. Произвольная классификация объектов конфигурации осуществляется с помощью …

  1. свойства Комментарий у объекта конфигурации
  2. создания реквизита "Классификация"
  3. с помощью объекта конфигурация Подсистемы
  4. верны варианты 1 и 2
  5. верны все варианты
Правильный ответ третий - объекты могут быть объединены в подсистему, каждый объект может входить в одну или несколько подсистем.

Вопрос 01.63 экзамена 1С:Профессионал по платформе. Сколько информационных баз может быть с одной и той же конфигурацией?

  1. Только одна
  2. Только две (рабочая и демонстрационная)
  3. Неограниченно
  4. Определяется комплектом поставки прикладного решения
  5. Определяется в настройках конфигурации
Правильный ответ третий - программное решение может быть растиражировано сколь угодно широко.

Вопрос 01.64 экзамена 1С:Профессионал по платформе. Сколько конфигураций обязательно должно существовать в прикладном решении?

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

Вопрос 03.13 экзамена 1С:Профессионал по платформе. В каком случае в окне конфигурации доступно изменение метаданных?

  1. Всегда
  2. Только для основной конфигурации
  3. Для основной конфигурации и конфигурации базы данных
  4. Для конфигурации поставщика
  5. Для конфигурации открытой из файла