Разработка и Конфигурация · 12 мин
ПКС в 1С: что это и как настроить правила конвертации свойств
ПКС в 1С — это правила конвертации свойств при обмене данными. Разбираем назначение, структуру, настройку в Конвертации данных и типичные ошибки.
ПКС в 1С — это правила конвертации свойств, один из базовых элементов типовой конфигурации «1С:Конвертация данных». ПКС определяет, как значение конкретного реквизита объекта-источника преобразуется в реквизит объекта-приёмника при выгрузке и загрузке данных между информационными базами.
Когда между двумя базами 1С настраивается обмен — например, между «Управлением торговлей» и «Бухгалтерией предприятия» или при миграции данных из старой конфигурации в новую — недостаточно просто указать соответствие объектов целиком. Нужно описать перенос каждого свойства: наименования, кода, даты документа, суммы, ссылок на справочники. Именно эту работу выполняют ПКС.
Ошибка в правилах конвертации свойств — одна из самых частых причин «битых» данных после обмена: пустые реквизиты, потерянные ссылки на контрагентов, неверные суммы в документах. Поэтому понимание устройства ПКС необходимо и разработчику, настраивающему обмен, и администратору, который проверяет результат миграции.
Где используются ПКС и как они связаны с другими правилами
ПКС не существуют отдельно — они всегда входят в состав правила конвертации объектов (ПКО). ПКО описывает соответствие двух типов объектов целиком, например «Справочник.Номенклатура источника → Справочник.Номенклатура приёмника», а ПКС внутри него описывают перенос каждого реквизита: Наименование → Наименование, Артикул → Артикул и так далее.
Кроме ПКО и ПКС, в структуру правил обмена входят правила конвертации значений (ПКЗ) — они задают соответствие предопределённых значений перечислений и применяются, когда значения перечислений в источнике и приёмнике не совпадают по именам. ПКС может ссылаться на ПКЗ, если конвертируемое свойство имеет тип перечисления.
Правила конвертации создаются в конфигурации «1С:Конвертация данных» (актуальные редакции — 2.1 и 3.0) и сохраняются в XML-файл правил обмена. Этот файл затем используется универсальными обработчиками обмена или типовыми планами обмена.
Структура и ключевые параметры правила конвертации свойств
У каждого ПКС есть набор параметров, от которых зависит поведение при обмене. Основные из них:
- Свойство источника — имя реквизита в конфигурации-источнике. Может быть пустым, если значение формируется только алгоритмом или выражением.
- Свойство приёмника — имя реквизита в конфигурации-приёмнике, куда попадёт значение.
- Правило конвертации — ссылка на ПКО или ПКЗ, если свойство является ссылкой на другой объект или перечислением. Для примитивных типов (строка, число, дата) правило не нужно.
- Перед выгрузкой / При выгрузке / После выгрузки — обработчики событий, в которых можно написать произвольный код преобразования значения.
- Не замещать значение при загрузке — флаг, защищающий существующее значение в приёмнике от перезаписи.
Отдельный вид — ПКС табличных частей: они конвертируют не одиночный реквизит, а целую табличную часть документа, и внутри них действуют собственные ПКС для каждой колонки. Аналогично устроена конвертация движений документов по регистрам.
Если типы свойств в источнике и приёмнике совпадают и не требуют преобразования, достаточно указать имена свойств — конвертация выполнится автоматически. Сложные случаи (разные типы, составные поля, вычисляемые значения) решаются через обработчики событий.
Как создать и настроить ПКС на практике
Работа ведётся в конфигурации «1С:Конвертация данных». Предварительно нужно загрузить структуру метаданных обеих конфигураций (источника и приёмника) через обработку выгрузки описания структуры метаданных — без этого справочник конфигураций будет пустым и правила создать не получится.
- 1Загрузите структуры метаданных источника и приёмника в Конвертацию данных
- 2Создайте или откройте правило конвертации объекта (ПКО) для нужной пары объектов
- 3В табличной части «Конвертация свойств» добавьте строку и укажите свойство источника и свойство приёмника
- 4Если свойство — ссылка на другой объект, укажите правило конвертации (ПКО или ПКЗ)
- 5При необходимости преобразования напишите код в обработчике «Перед выгрузкой» или «При выгрузке»
- 6Сохраните правила обмена в XML-файл и выполните тестовую выгрузку на копии базы
Простейший пример обработчика «Перед выгрузкой»: нужно перенести телефон контрагента из табличной части контактной информации в строковый реквизит приёмника. В обработчике значение формируется вручную, а затем присваивается переменной Значение:
Значение = Источник.КонтактнаяИнформация.Найти(Перечисления.ТипыКонтактнойИнформации.Телефон).Представление;
Если обработчик должен отменить выгрузку свойства в конкретной ситуации, используется переменная Отказ: установка Отказ = Истина пропускает выгрузку данного свойства, не прерывая конвертацию объекта целиком.
Обработчики событий и переменные в ПКС
Обработчики событий — основной инструмент нестандартной конвертации. Внутри кода ПКС доступны стандартные переменные: Источник (выгружаемый объект), Приемник (загружаемый объект, доступен в событиях загрузки), Значение (текущее значение свойства), Отказ, Параметры (параметры обмена), ИмяПКС и другие.
Типовые сценарии использования обработчиков: склейка нескольких реквизитов в один (например, Фамилия + Имя + Отчество → Наименование), разбор одного поля на несколько, преобразование типов (строка в число), подстановка значения по умолчанию, когда источник пуст, поиск объекта приёмника по произвольным полям через запрос.
Для поиска связанных объектов в приёмнике часто применяется вызов Выполнить("Запрос...") или обращение к менеджерам объектов — но в событиях выгрузки контекст базы-приёмника недоступен, поэтому поиск организуют через правила поиска в ПКО или через параметры обмена. Это ограничение важно учитывать, чтобы не писать код, который физически не сможет выполниться.
Если одно и то же преобразование нужно в нескольких ПКС (например, склейка ФИО), вынесите его в алгоритм глобального модуля правил и вызывайте одной строкой. Так проще поддерживать правила и меньше риск рассинхронизации кода в разных местах.
Как проверить, что ПКС отработали правильно
Проверку всегда начинают на копии базы-приёмника, а не на рабочей. После тестовой загрузки сверяют несколько контрольных объектов: открывают выгруженный элемент справочника или документ и сравнивают каждый реквизит с источником вручную. Для документов дополнительно проверяют табличные части и движения по регистрам.
Полезно включить в обработке обмена протоколирование: в протокол загрузки попадают ошибки конвертации, не найденные по правилам поиска объекты и сообщения из обработчиков. Типовой признак проблемы — записи вида «Объект не найден» в протоколе и пустые ссылочные реквизиты в загруженных данных.
Как проверить результат обмена
Заполнены, открываются реальные объекты приёмника
Пустые значения или «Объект не найден» в протоколе
Совпадают с источником при выборочной сверке
Расхождения, округления, потерянные строки табличных частей
Нет ошибок конвертации свойств
Сообщения об ошибках в обработчиках ПКС
Значения соответствуют по смыслу
Пустые значения из-за отсутствия ПКЗ
Типичные ошибки и ограничения при работе с ПКС
Первая группа ошибок — логические: свойство источника указано, но в приёмнике реквизит называется иначе или имеет другой тип, и значение молча теряется. Вторая группа — ошибки в обработчиках: обращение к несуществующему реквизиту источника вызывает исключение, и в зависимости от настроек обмен прерывается либо объект загружается неполностью.
Отдельная ловушка — обновление одной из конфигураций. После обновления имена реквизитов могут измениться, и ранее рабочие ПКС начнут давать пустые значения или ошибки. Поэтому после каждого обновления конфигураций, участвующих в обмене, правила нужно перепроверять и при необходимости перезагружать структуру метаданных.
Альтернативы и смежные механизмы обмена
Классические ПКС — не единственный способ организовать обмен. Для однотипных конфигураций часто достаточно типовых правил обмена, где правила уже настроены поставщиком и доработка не требуется. Для обмена с внешними системами (сайты, CRM, WMS) чаще применяют веб-сервисы, HTTP-запросы и форматы JSON/XML без Конвертации данных.
Сравнение подходов к обмену
Гибкая настройка любых соответствий между разными конфигурациями; требует навыков разработки и сопровождения правил
Быстрый старт между поддерживаемыми конфигурациями; ограниченная кастомизация без доработки
Современный универсальный формат для обмена между продуктами 1С; другая архитектура правил, не классические ПКС
Подходят для интеграции с не-1С системами; требуют самостоятельной разработки логики преобразования данных
Выбор зависит от задачи: разовая миграция между разными конфигурациями — типичный случай для Конвертации данных 2.1 с ручной настройкой ПКС; регулярный обмен между типовыми продуктами — повод сначала проверить типовые правила и только потом писать свои.
Что важно запомнить
ПКС — это правила переноса отдельных реквизитов внутри правил конвертации объектов. Простые свойства переносятся автоматически, сложные — через обработчики событий. Ссылочные свойства требуют указания ПКО, перечисления — ПКЗ. Тестируйте правила только на копии базы и проверяйте протокол обмена после каждой загрузки.
Частые вопросы о ПКС в 1С
Чем ПКС отличается от ПКО?
ПКО описывает соответствие объектов целиком (например, справочник «Контрагенты» источника и приёмника), а ПКС — перенос каждого отдельного реквизита внутри этого соответствия. ПКС всегда существуют в составе ПКО и не применяются самостоятельно.
Можно ли обойтись без Конвертации данных при обмене?
Да, если конфигурации поддерживаются типовыми правилами обмена — тогда настройка сводится к настройке синхронизации в самих базах. Собственные ПКС нужны, когда конфигурации нестандартные, сильно доработаны или требуются нестандартные преобразования данных.
Почему после обмена ссылочный реквизит пустой?
Наиболее вероятные причины: для свойства не указано правило конвертации объекта, связанный объект не выгрузился (не попал в выборку или отфильтрован), либо правила поиска в ПКО не смогли найти объект в приёмнике. Проверьте протокол загрузки — там обычно есть сообщение «Объект не найден».
Где писать код преобразования — «Перед выгрузкой» или «При выгрузке»?
В «Перед выгрузкой» обычно формируют значение и могут отказаться от выгрузки свойства через переменную «Отказ». «При выгрузке» выполняется, когда значение уже сформировано, и подходит для финальной корректировки. Для большинства задач достаточно обработчика «Перед выгрузкой».
Что делать с ПКС после обновления конфигурации?
Заново выгрузите структуру метаданных обновлённой конфигурации, загрузите её в Конвертацию данных и проверьте правила: переименованные или удалённые реквизиты будут подсвечены как отсутствующие. Обновите затронутые ПКС и обработчики, затем выполните тестовый обмен на копии базы.
Подходят ли классические ПКС для обмена через универсальный формат EnterpriseData?
Нет, обмен в формате EnterpriseData строится на Конвертации данных 3.0, где вместо ПКО и ПКС используются правила обработки данных и правила конвертации объектов новой редакции с иной структурой. Механизмы похожи по смыслу, но правила между редакциями напрямую не переносятся.