При разработке внешних отчетов или обработок часто возникает ситуация, когда на базе уже готового инструмента нужно быстро создать его модификацию. Казалось бы, достаточно просто скопировать файл .epf или .erf в операционной системе, изменить его имя и начать работу. Однако на практике многие сталкиваются с неприятным поведением платформы: при попытке открыть вторую (подпиленную) копию обработки, первая автоматически закрывается, или же вторая копия просто не открывается, пока активна первая.
В этой статье мы подробно разберем причины такого поведения платформы 1С и изучим надежные способы, которые позволят вам работать с несколькими копиями внешних файлов одновременно и независимо друг от друга.
Прежде чем переходить к алгоритмам решения, проанализируем ситуацию и выясним причину проблемы. Многие разработчики ошибочно полагают, что для платформы идентификатором является имя файла на диске. Это не так. Когда мы открываем файл через меню «Файл — Открыть», 1С считывает внутренние метаданные. Даже если вы измените свойство Имя в корне дерева метаданных конфигуратора, этого может оказаться недостаточно.
Основными причинами «склеивания» окон являются:
Как показывает практика и обсуждения опытных разработчиков, самым эффективным способом «разъединить» две обработки является манипуляция с формой. Рассмотрим этот процесс по шагам:
Форма1.Форма1.Форма1 обратно в оригинальное имя (например, в ФормаОтчета), чтобы сохранить логику кода, если в нем были обращения к имени формы.Важное примечание: При копировании формы внутри конфигуратора 1С автоматически генерирует для новой копии новый UUID. Именно это действие «обрывает» связь со старым файлом. Теперь платформа будет считать, что это совершенно другой объект интерфейса, и позволит открыть обе обработки параллельно.
Если первый способ кажется вам «грязным» из-за удаления объектов, рассмотрим более фундаментальный подход. Проанализируем ситуацию: нам нужно, чтобы у файла был новый UUID самого объекта метаданных. Рассмотрим алгоритм действий:
Этот метод считается наиболее «правильным», так как он гарантирует отсутствие конфликтов не только на уровне форм, но и на уровне самого объекта метаданных. Это особенно важно, если обработки регистрируются в справочнике «Дополнительные отчеты и обработки».
Выясним, как эти действия влияют на сохраненные настройки (фильтры, выбранные значения, варианты отчетов). В системе 1С настройки привязываются к ключу, который формируется из ИмениОбъекта и ИмениФормы, а также внутреннего идентификатора.
Если вы просто переименуете файл на диске, но оставите UUID формы прежним:
При использовании Способа 1 (копирование формы), настройки станут независимыми. Для платформы это будет новая форма, для которой еще нет записей в хранилище настроек. Это критически важно, когда вы разрабатываете два варианта одного отчета для разных отделов компании.
Иногда даже после смены UUID и имен файлы продолжают вести себя странно. Рассмотрим, что еще может мешать корректной работе. Платформа 1С активно использует кэширование метаданных для ускорения работы. Если вы внесли изменения в конфигураторе, сохранили файл, но в «Предприятии» ничего не изменилось или файлы по-прежнему конфликтуют, попробуйте следующее:
/ClearCache (очистка кэша клиентского приложения).Подведем итоги нашего исследования. Для того чтобы успешно работать с двумя копиями одной обработки одновременно, мы должны обеспечить их уникальность для платформы 1С. Посмотрим на краткий чек-лист:
.epf средствами Windows.Используя эти методы, вы обеспечите стабильную работу своих инструментов и избежите путаницы в настройках пользователей.