При доработке типовых конфигураций 1С разработчики часто сталкиваются с задачей расширения структуры данных, например, добавления нового измерения или ресурса в существующий регистр сведений. Ситуация усложняется, когда версия платформы позволяет использовать новые возможности расширений (например, 8.3.18), но сама конфигурация работает в режиме совместимости с более старой версией (например, 8.3.16). В старых режимах совместимости добавление объектов или их полей в регистры сведений через расширения попросту недоступно.
В этой статье мы подробно разберем, как поступить в такой ситуации, проанализируем варианты решения и выясним, почему простое отключение режима совместимости может быть фатальной ошибкой для базы данных. Рассмотрим ситуацию на примере добавления нового поля «Назначение ШК» в регистр штрихкодов в конфигурации «1С:Управление нашей фирмой».
Первое, что приходит на ум — это поднять версию режима совместимости до требуемой (например, 8.3.17 или 8.3.18), либо вовсе отключить его, чтобы получить доступ ко всем современным возможностям расширений.
Разберем, к чему это может привести на практике:
Поэтому настоятельно рекомендуем: не меняйте режим совместимости в типовых конфигурациях ради одного-двух новых реквизитов. Лучше дождитесь официального обновления конфигурации от 1С, где вендор сам повысит режим, адаптировав весь программный код.
Если расширением добавить нужную «фичу» в регистр сведений нельзя, наиболее правильным подходом будет добавление реквизита непосредственно в основную конфигурацию, но с соблюдением правил поддержки.
Рассмотрим по шагам, как это сделать:
Конфигурация — Поддержка — Настройка поддержки.ШтрихкодыНоменклатуры) и установите для него правило «Объект поставщика редактируется с сохранением поддержки». Это снимет «замок» с объекта, но не лишит его связи с типовой конфигурацией.НазначениеШК.Многих пугает снятие объектов с замка из-за возможных проблем при обновлениях. Выясним, как правильно обновлять измененную таким образом систему.
Правило «Объект поставщика редактируется с сохранением поддержки» означает, что при установке нового релиза платформа предложит вам окно сравнения и объединения. Вам потребуется выполнять трехстороннее объединение:
Объединять с приоритетом основной конфигурации или Объединять с приоритетом новой конфигурации в зависимости от ситуации.После правильного объединения все типовые изменения применятся, а ваша доработка сохранится.
Проанализируем конкретную задачу из обсуждения: добавление поля «Назначение ШК» в регистр штрихкодов. Прежде чем снимать регистр с поддержки, стоит подумать, нет ли более изящных способов решить проблему.
Регистр сведений со штрихкодами в современных конфигурациях тесно связан с механизмами обмена с торговым оборудованием и системами обязательной маркировки (например, Честный Знак). Вторжение в структуру такого регистра может привести к конфликтам при работе с государственными системами.
Посмотрим на альтернативные варианты:
Если задача требует обязательного физического расширения таблицы базы данных, а режим совместимости это запрещает в расширении — смело добавляйте реквизиты в основную конфигурацию, включив правило редактирования с сохранением поддержки. Это безопаснее для данных (реквизит физически сохранится в СУБД) и гарантирует стабильность типовых механизмов (вы не сломаете платформенные вызовы старого режима совместимости). При этом всю бизнес-логику работы с этим реквизитом продолжайте выносить в расширение.