Технология обновления нетиповых конфигураций 1С:Предприятия 8.0 и 1С:Предприятия 8.1
В статье не описываются методики применения автоматического и автоматизированного обновления конфигураций с использованием внешних компонент и/или программных продуктов. Информацию по ним вы можете найти на других ресурсах интернета.
Данная статья основана на многолетнем опыте по развитию и поддержанию учетных решений на платформе 1С:Предприятия. В статье описаны некоторые довольно часто встречающиеся ситуации, вызывающие сложности при обновлении конфигураций 1С:Предприятия 8.
Процесс обновления конфигураций 1С:Предприятия 8 более автоматизирован по сравнению с 1С:Предприятием 7.7. Достаточно высокий уровень автоматизации позволяет значительно снизить трудоемкость работ при обновлении нетиповых конфигураций. К сожалению, чаще всего процесс обновления не может быть выполнен полностью в автоматическом режиме и требует вмешательства специалиста.
Возможна ли ситуация, когда процесс обновления будет выполнен полностью автоматически? Конечно. Для этого изменяемые объекты должны быть добавлены и не должны использовать функционал существующей конфигурации. Т.е. эти объекты должны решать абсолютно другие учетные задачи, расширяющие функционал типовой конфигурации поставщика. Согласитесь, что описанная ситуация является крайне редкой. Практически всегда изменения затрагивают объекты типовой конфигурации.
Следует обратить внимание на то, что база данных может содержать несколько конфигураций:
конфигурация базы данных – это конфигурация, с которой работают пользователи;
основная конфигурация (рабочая) – это конфигурация, в которую мы можем вносить изменения, при этом пользователи могут продолжать работать;
конфигурация поставщика – это исходная конфигурация поставщика, на основе которой были созданы основная конфигурация и конфигурация базы данных.
В случае, когда конфигурация снята с поддержки, третьей конфигурации не будет. Что в свою очередь значительно повысит трудоемкость обновления.
Рассмотрим процесс обновления и разберем возможные ошибки на примере обновления конфигурации УПП (поставщик типовой конфигурации – фирма «1С», доработки компании Информ Сервис). Обновление данной конфигурации выполнялось не по описанной в данной статье технологии, поэтому возникающие ошибки будут наиболее типовыми. Обновление будет выполняться на версию 1.2.14.1.
Этап 1. Подготовка.
На первом этапе приведем в соответствие рабочую конфигурацию к конфигурации поставщика. Это очень важный этап, который позволит значительно уменьшить объем работ по анализу внесенных нами ранее изменений. Этот этап можно пропустить, если последнее обновление прошло через «поддержку» (Меню «Конфигурация» --> «Поддержка» --> «Обновить конфигурацию»). Несоответствие версий может возникнуть при использовании для обновления *.cf файлов, не из дистрибутива поставщика.
Проверим номера версий рабочей конфигурации и конфигурации поставщика. Номер рабочей конфигурации смотрим: меню «Конфигурация» --> «Открыть конфигурацию» меню «Правка» --> «Свойства». В блоке «Разработка» пункт «Версия». (Рисунок 1).

Рисунок 1.
Номер конфигурации поставщика смотрим: меню «Конфигурация» --> «Поддержка» --> «Настройка поддержки…» пункт «Версия». (Рисунок 2).

Рисунок 2.
Если номера совпадают, то переходим к следующему этапу. См. Этап 2.
В данном примере необходимо привести в соответствие рабочую конфигурацию и конфигурацию поставщика с постановкой на поддержку объектов, снятых с поддержки или добавленных без постановки на поддержку. Для этого выполним следующие действия:
Сохраним рабочую конфигурацию в файл, например work.cf. Для этого выберем пункт меню «Конфигурация» --> «Сохранить конфигурацию в файл…».
Для приведения в соответствие конфигураций нам понадобится файл *.cf из дистрибутива поставщика с тем же номером версии, что у рабочей конфигурации (Рисунки 3 и 4). Данный файл можно получить при установке соответствующего дистрибутива. По умолчанию установка дистрибутива конфигурации выполняется в каталог C:Program Files1cv81tmplts. Подробнее об установке шаблонов конфигураций см. документацию.

Рисунок 3.

Рисунок 4.
Используя полученный *.cf файл поставщика выполним обновление. Для этого выберем пункт меню «Конфигурация» --> «Поддержка» --> «Обновить конфигурацию», «Выбор файла обновления», «Готово» (Рисунок 5), «Выполнить» (Рисунок 6).

Рисунок 5.

Рисунок 6.
Итак, первая проблема – «Обнаружены ссылки на объекты, помеченные на удаление». (Рисунок 7).

Рисунок 7.
Варианты решения:
снять пометку удаления с объекта;
удалить ссылку на объект, помеченный на удаление.
Исходя из того, что ссылка в добавленном интерфейсе «РуководительОтдела» выполнена на объект конфигурации поставщика, поддержка с которого снята поставщиком (возможно в связи с изменением методики учета), то правильным решением в данной ситуации будет удаление ссылки на этот отчет из интерфейса «РуководительОтдела». После удаления ссылки выполним повторное сравнение конфигураций. Для этого нажмем кнопку «Обновить» в окне обновления (Рисунок 6).
Для восстановления частично утерянных настроек выполним объединение с ранее сохраненным файлом рабочей конфигурации work.cf. Для этого выберем пункт меню «Конфигурация» --> «Сравнить, объединить с конфигурацией из файла…».
Сохраним изменения рабочей конфигурации и обновим конфигурацию базы данных. Для этого выберем пункт меню «Конфигурация» --> «Обновить конфигурацию базы данных».
Здесь нас поджидает очередная проблема (Рисунок 8).

Рисунок 8.
Для решения данной проблемы посмотрим на причину ее возникновения. Причин может быть несколько, но наиболее вероятны следующие из них. Данные объекты были скопированы в рабочую конфигурацию из конфигурации поставщика или поставщик удалил ранее данные объекты, а позже добавил новые с такими же именами, но с другими внутренними идентификаторами. В результате в конфигурации появляются объекты с разными внутренними идентификаторами, но с одинаковыми именами.
С ролями поступаем просто – удаляем, т.к. роли не изменялись (это можно проверить, сравнив старую конфигурацию поставщика и рабочую конфигурацию). С реквизитом документа действуем иначе. Реквизит необходимо переименовать, например ЗаказРезерв1, а после обновления перенести значения из переименованного реквизита в новый. Для этого можно воспользоваться обработкой УниверсальныеПодборИОбработкаОбъектов.epf с диска ИТС.
Сохраним изменения рабочей конфигурации и обновим конфигурацию базы данных. Перенесем значения реквизита ЗаказРезерв1 в ЗаказРезерв с помощью обработки.
Что можно сделать, если нет *.cf файла старой конфигурации поставщика? В этом случае можно воспользоваться файлами *.cfu и повторив описанную процедуру несколько раз последовательно поднять номер версии до требуемого уровня, в данном случае до 1.2.6.2. Следует отметить, что использование файлов *.cfu может не вскрыть ошибки, допущенные ранее при обновлении, т.к. в сравнении будут участвовать не все объекты конфигурации.
Этап 2. Обновление.
После проведения подготовительных работ переходим к обновлению конфигурации и переносу ранее сделанных доработок типовой конфигурации поставщика.
Для обновления конфигурации нам понадобится файл *.cfu или файл *.cf из дистрибутива поставщика. Данные файлы можно получить при установке дистрибутива обновления. По умолчанию установка дистрибутива обновления выполняется в каталог C:Program Files1cv81tmplts. Подробнее об установке шаблонов конфигураций см. документацию.
Если в комплекте поставки новой версии конфигурации существует файл *.cfu для перехода с текущей версии конфигурации, то лучше воспользоваться именно этим файлом. В этом случае в сравнении будут участвовать только измененные поставщиком объекты, соответственно вся процедура обновления может быть выполнена значительно быстрее.
Если обновление выполняется через несколько версий конфигурации, то следует обратить внимание на ситуацию описанную в статье "Обновление конфигураций 1С:Предприятия 8. Прыжок через 20 версий".
Если обновление выполняется через несколько версий конфигурации, как в нашем случае или нет в наличии подходящего файла *.cfu, то необходимо использовать файл *.cf, входящий в состав пакета обновления. При использовании *.cf файла следует обязательно обратить внимание на удаляемые объекты и на объекты с измененными именами, а также на действия выполняемые при первом запуске после обновления. Если это объекты используются в обработке при первом запуске после обновления, то не следует их удалять, а по объектам с измененными именами следует внести соответствующие изменения в текст модуля обработки. В этом случае, оставленные объекты могут быть удалены при повторном или следующем обновлении.
Если обновление выполняется через несколько версий и нет файла *.cf , то придется воспользоваться несколькими файлами *.cfu и последовательно выполнить обновления. Это может значительно повысить трудоемкость обновления, т.к. анализ измененных объектов придется выполнить несколько раз.
Используя имеющийся файл новой конфигурации, выполним обновление. Для этого выберем пункт меню «Конфигурация» --> «Поддержка» --> «Обновить конфигурацию», «Выбор файла обновления», «Готово» (Рисунок 9).

Рисунок 9.
В результате сравнения трех конфигураций (старая конфигурация поставщика, новая конфигурация поставщика и рабочая конфигурация) получаем список измененных объектов. Устанавливаем фильтр «Показывать только дважды измененные свойства» (Рисунки 10 и 11).
Именно с этими объектами необходимо разобраться в первую очередь, т.к. после обновления, выполненные ранее настройки, могут быть утеряны.

Рисунок 10.

Рисунок 11.

Рисунок 12.
В результате получаем список объектов, измененных при доработке типовой конфигурации и в новой конфигурации поставщика. Если согласиться с обновлением, то сделанные ранее доработки в этих объектах будут утеряны. Поэтому по каждому объекту необходимо принять решение о том, каким образом он будет обновлен (Рисунок 12).
Если изменений в объекте больше в новой конфигурации поставщика, то оставляем экземпляр объекта поставщика. Оставляем галочку. Затем переносим изменения из рабочей конфигурации.
Если изменений в объекте больше в рабочей конфигурации, то оставляем экземпляр объекта рабочей конфигурации. Снимаем галочку. Затем переносим изменения из конфигурации поставщика.
Для сокращения времени на анализ изменений типовой конфигурации и, соответственно, на обновление было бы уместно комментировать все вносимые в конфигурацию изменения. По ряду причин очень часто этого не делают. При выполнении обновления интересуют не причины внесения изменений, а их последствия. А именно необходимость сохранить функционал измененной конфигурации.
Сравнение форм, таблиц, и модулей объектов в конфигурации выполняется с достаточной степенью детализации (Рисунок 13). Этого вполне достаточно для принятия решений.

Рисунок 13.
Но в некоторых случаях данные в отчетах о сравнении представляются в виде, не позволяющем принять решение быстро. Например, в случае изменения типа реквизитов, имеющих составной тип данных, состав вводимых на основании объектов и т.д. Именно на данном этапе, ввиду его сложности, происходит потеря доработок при обновлении. Рассмотрим эту ситуацию на примере реквизитов, имеющих составной тип данных. При формировании отчета о сравнении объектов (Рисунок 13) различающиеся данные в сравниваемых конфигурациях представлены в виде списков, содержащих состав типов данных, разделенных запятыми. При этом в отчете совершенно не видно, какие типы данных были добавлены или удалены. Конечно, для выявления различий отчет можно распечатать и «скрыжить». В рассматриваемом примере таких объектов около 200. Очевидно, что процесс сравнения представляется достаточно трудоемким и составит около 50 часов.
Для снижения трудоемкости работ при сравнении объектов можно воспользоваться конфигурацией «Сравнение ячеек», разработанной компанией Информ Сервис. Примерно в 20 раз может выть снижена трудоемкость работ при сравнении составных объектов.
Конфигурация «Сравнение ячеек» запускается в режиме 1С:Предприятие и позволяет представить информацию из отчета о сравнении объектов в наглядном виде (Рисунки 14 и 15). Для сравнения используются возможности 1С:Предприятия 8.

Рисунок 14.

Рисунок 15.
Схема работы конфигурации проста. В конфигураторе создаем отчет о сравнении объектов (Рисунок 13) и сохраняем в файл, например ОтчетОСравнении.mxl. Открываем 1С:Предприятие и в диалоге (Рисунок 14) выбираем сохраненный файл и указываем сравниваемые ячейки. Для этого дважды щелкаем правой клавишей мыши на выбранной ячейке табличного документа. По кнопке «Сравнить» получаем результат сравнения, в котором различающиеся позиции выделены цветом (Рисунок 15).
Далее, исходя из того, что сравнение выполняется по тем же принципам сравнения объектов, схема действий будет выглядеть так. Сохраняем следующий отчет под тем же именем файла. Нажимаем кнопки «Обновить» и «Сравнить».
После завершения обновления и переноса, ранее сделанных изменений типовой конфигурации выполним синтаксический контроль модулей и проверим работу измененных объектов. После успешного тестирования процесс обновления можно считать завершенным.
Этап 3. Сдача работ.
В приведенном примере объем работ по обновлению и переносу изменений типовой конфигурации составляет порядка 100-150 часов. Выполнить такой объем работ, выполняя обновление непосредственно в базе заказчика, не представляется возможным. Соответственно подготовительные работы необходимо выполнить на копии базы данных, а результат обновления перенести в рабочую базу заказчика.
Для переноса настроек воспользуемся методикой использованной на первом этапе. Для этого нам понадобится файл *.cf типовой конфигурации поставщика (1.2.14.1) и результат обновления в виде также *.cf файла. Для этого сохраним рабочую конфигурацию в файл, например work_2.cf, выбрав пункт меню «Конфигурация» --> «Сохранить конфигурацию в файл…».
Дальнейшие действия на стороне поставщика будут следующие:
создать резервную копию базы данных;
используя файл *.cf типовой конфигурации поставщика, выполним обновление. Для этого выберем пункт меню «Конфигурация» --> «Поддержка» --> «Обновить конфигурацию», «Выбор файла обновления», «Готово» (Рисунок 9), «Выполнить»;
используя файл work_2.cf, переносим изменения. Для этого выберем пункт меню «Конфигурация» --> «Сравнить, объединить с конфигурацией из файла…»;
cохраним изменения рабочей конфигурации и обновим конфигурацию базы данных. Для этого выберем пункт меню «Конфигурация» --> «Обновить конфигурацию базы данных».
Выполнение данного этапа позволит в дальнейшем избежать работ, описанных в этапе 1.