1с имя конфигурации и поставщик совпадает с одной из конфигураций поставщика

Обновлено: 03.07.2024

Особенности сравнения и объединения конфигураций в режиме обновления

Для сопоставления объектов при объединении конфигурации в 1С:Предприятии 8 используются свойство "Имя" объекта метаданных и его внутренний идентификатор. Однако в различных вариантах сравнения алгоритм сопоставления объектов разный. Прежде чем подробно описать различные варианты, сначала опишем правила изменения внутреннего идентификатора. Идентификатор в пределах одной конфигурации никогда не изменяется. Идентификатор не изменяется при выгрузке конфигурации в cf или dt файлы (включая файлы поставки cf и обновления cfu ). Идентификатор не изменяется при использовании механизма групповой разработки (в процессе перемещений между конфигурацией и хранилищем). Идентификатор всегда изменяется при копировании объекта, в том числе в процессе объединения конфигураций. Поясним на примере. Создаем новую конфигурацию. Выполняем команду " Конфигурация - Сравнить, объединить с конфигурацией из файла. ". Программа обнаружит что текущая конфигурация пустая и предложит выполнить полную загрузку (аналогично команде " Конфигурация - Загрузить конфигурацию из файла "). Если согласится на предложенный вариант, то в результате все объекты сохранят свои идентификаторы. Если же отказаться и выполнить обычное объединение, то все объекты идентификаторы поменяют, хотя логически получатся две одинаковые конфигурации.

Теперь рассмотрим алгоритмы сопоставления объектов. Существуют три варианта.

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

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

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

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

Влияние сопоставления объектов на скорость сравнения конфигураций

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

  1. Среди сопоставленных объектов нет пар с различными идентификаторами.
  2. Среди несопоставленных объектов нет возможных пар с одинаковыми идентификаторами.

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

Замечания по методике использования механизма

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

Удаление объектов поставщика

Рассмотрим варианты удаления объекта поставщика.

Удаление пользователем

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

Удаление поставщиком

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

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

Особенности сравнения и объединения конфигураций в режиме обновления

Для сопоставления объектов при объединении конфигурации в 1С:Предприятии 8 используются свойство "Имя" объекта метаданных и его внутренний идентификатор. Однако в различных вариантах сравнения алгоритм сопоставления объектов разный. Прежде чем подробно описать различные варианты, сначала опишем правила изменения внутреннего идентификатора. Идентификатор в пределах одной конфигурации никогда не изменяется. Идентификатор не изменяется при выгрузке конфигурации в cf или dt файлы (включая файлы поставки cf и обновления cfu ). Идентификатор не изменяется при использовании механизма групповой разработки (в процессе перемещений между конфигурацией и хранилищем). Идентификатор всегда изменяется при копировании объекта, в том числе в процессе объединения конфигураций. Поясним на примере. Создаем новую конфигурацию. Выполняем команду " Конфигурация - Сравнить, объединить с конфигурацией из файла. ". Программа обнаружит что текущая конфигурация пустая и предложит выполнить полную загрузку (аналогично команде " Конфигурация - Загрузить конфигурацию из файла "). Если согласится на предложенный вариант, то в результате все объекты сохранят свои идентификаторы. Если же отказаться и выполнить обычное объединение, то все объекты идентификаторы поменяют, хотя логически получатся две одинаковые конфигурации.

Теперь рассмотрим алгоритмы сопоставления объектов. Существуют три варианта.

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

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

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

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

Влияние сопоставления объектов на скорость сравнения конфигураций

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

  1. Среди сопоставленных объектов нет пар с различными идентификаторами.
  2. Среди несопоставленных объектов нет возможных пар с одинаковыми идентификаторами.

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

Замечания по методике использования механизма

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

Удаление объектов поставщика

Рассмотрим варианты удаления объекта поставщика.

Удаление пользователем

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

Удаление поставщиком

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

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

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

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

Сразу замечу, что основная конфигурация 1.3.17 в моем случае значительно отличается от типовой 1.3.17. Большинство критичных изменений вышедших в релизах с 1.3.18 по 1.3.47 были внесены через сравнение и объединение необходимых модулей и подсистем, так как этот метод занимает меньше времени (значительная часть УПП кардинально переписана под специфику работы нашего предприятия).

Итак, обновляя конфигурации через сравнение и объединение я получил основную конфигурацию 1.3.48, при этом конфигурация поставщика 1.3.17 рис.1. и рис.2.


Рис. 1. Основная конфигурация. Релиз 1.3.48.1


Рис.2. Конфигурация поставщика 1.3.17.1

Как же поставить конфигурацию на поддержку актуального релиза и не потерять никаких внесенных изменений?

Конфигурация – Поддержка – Настройка поддержки - "Снять с поддержки". Снимаем конфигурацию с поддержки рис.3. и закрываем окно настройки.


Рис.3. Конфигурация не находится на поддержке

Выполняем через «Сравнить, объединить с конфигурацией из файла» объединение с типовой, актуальной конфигурацией CF (в данном случае 1.3.48.1). На вопрос рис.4. о возможности постановки на поддержку отвечаем «Да».


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

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


Рис.5. "Пустое" сравнение и объединение конфигураций

Конфигуратор предложит настроить правила поддержки. Если необходима в дальнейшем возможность редактирования объектов конфирурации, то настраиваем правила поддержки так, как показано на рис.6.


Рис.6. Настройка правил поддержки

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


Рис.7. Постановка на поддержку объекта "УправлениеПроизводственнымПредприятием"

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

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


Вот кажется и все. Вопросы приветствуются. Надеюсь, что для кого-то данная статья окажется полезной. С Уважением к сообществу, Андрей.

Вот пример такой ошибки:

Прежде всего, если у вас базовая 1с - исключите вот этот вариант: ссылка.

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

Чтобы проверить присутствует ли эта проблема в нашей базе открываем конфигуратор:


Смотрим версию базы:

В данном случае она равна 2.0.65.9

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

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

Как обстоят дела в вашем случае?

У меня версия конфигурации поставщика совпадает с версией в окне 'О программе' У меня версия конфигурации поставщика отличается от версии в окне 'О программе'

Это отличная новость. С базой у вас всё в порядке - проблема именно в том, что вы выбрали неверное обновление для базы.

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

Вариант решения только один - достать корректное обновление, которое может быть применено именно к вашей версии базы.

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

В этом случае у вас проблема с базой.

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

Если же вы чувствуете в себе силы и есть уверенность в своих навыках, то вот общая инструкция для исправления:

1. Перво-наперво создайте резервную копию базы: копию папки (предварительно выгнав пользователей) и на всякий случай выгрузку в dt.

2. Где-нибудь достаньте файл конфигурации (.cf) версии базы - той, что мы видим в окне "О программе". Это самый сложный этап и тут я не дам готовых решений. Можно вытащить этот файл из другой базы этой версии, а можно попросить его у коллег. Сразу скажу, что у меня его просить бесполезно - я его вам предоставить не смогу.

3. Имея на руках файл конфигурации (с расширением .cf) нужной версии (той, что у вас в окне "О программе") в конфигураторе базы открываем пункт:

Файл обновления мы укажем сами:

Внимание! Далее появится окно сравнения старой и новой конфигурации - снимите все галки в дереве сравнения - тогда объекты основной конфигурации останутся не тронутыми, а объекты конфигурации поставщика обновятся.

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

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

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

Читайте также: