Как одновременно открыть две копии внешней обработки или отчета в 1С:Предприятие 8?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

Почему 1С «не видит» разницы между файлами?

Прежде чем переходить к алгоритмам решения, проанализируем ситуацию и выясним причину проблемы. Многие разработчики ошибочно полагают, что для платформы идентификатором является имя файла на диске. Это не так. Когда мы открываем файл через меню «Файл — Открыть», 1С считывает внутренние метаданные. Даже если вы измените свойство Имя в корне дерева метаданных конфигуратора, этого может оказаться недостаточно.

Основными причинами «склеивания» окон являются:

  1. Одинаковый UUID (Уникальный идентификатор) обработки. При простом копировании файла средствами Windows (Ctrl+C, Ctrl+V) создается точная бинарная копия, где все внутренние идентификаторы остаются прежними.
  2. Идентификация по UUID формы. Платформа 1С использует уникальные идентификаторы форм для управления окнами и хранения настроек пользователя. Если в двух разных файлах формы имеют один и тот же UUID, система считает их одним и тем же интерфейсным объектом.
  3. Кэширование метаданных. Сеанс «Предприятия» кэширует структуру открываемых внешних файлов. Если имена объектов внутри файлов совпадают, платформа может ошибочно обращаться к уже загруженным в память данным.

Способ 1: Метод пересоздания основной формы (Самый быстрый)

Как показывает практика и обсуждения опытных разработчиков, самым эффективным способом «разъединить» две обработки является манипуляция с формой. Рассмотрим этот процесс по шагам:

  1. Откроем наш скопированный файл (новую версию) в Конфигураторе.
  2. Перейдем в ветку Формы. Выделим основную форму обработки и скопируем её (нажмем правую кнопку мыши — «Копировать» или используем стандартное сочетание клавиш).
  3. Вставим скопированную форму в этот же список. У нас появится объект с именем типа Форма1.
  4. Теперь нам нужно сделать эту новую форму основной. В свойствах самой обработки (корень дерева) найдем поле Основная форма и выберем в нем нашу новую Форма1.
  5. Старую форму, которая была в файле изначально, теперь можно смело удалить.
  6. После удаления старой формы переименуем Форма1 обратно в оригинальное имя (например, в ФормаОтчета), чтобы сохранить логику кода, если в нем были обращения к имени формы.

Важное примечание: При копировании формы внутри конфигуратора 1С автоматически генерирует для новой копии новый UUID. Именно это действие «обрывает» связь со старым файлом. Теперь платформа будет считать, что это совершенно другой объект интерфейса, и позволит открыть обе обработки параллельно.

Способ 2: Создание «чистого» файла через перенос объектов

Если первый способ кажется вам «грязным» из-за удаления объектов, рассмотрим более фундаментальный подход. Проанализируем ситуацию: нам нужно, чтобы у файла был новый UUID самого объекта метаданных. Рассмотрим алгоритм действий:

  1. В Конфигураторе создадим абсолютно новый файл внешней обработки через меню Файл — Новый — Внешняя обработка.
  2. Зададим новой обработке нужное Имя и Синоним. Поскольку файл создан с нуля, 1С присвоила ему уникальный идентификатор, отличный от всех существующих.
  3. Откроем старый файл обработки рядом в этом же окне Конфигуратора.
  4. Используя механизм Drag-and-drop (перетаскивание мышью) или буфер обмена, перенесем все необходимые объекты из старого файла в новый:
    • Формы;
    • Макеты;
    • Команды.
  5. Скопируем программный код из Модуля объекта и Модуля менеджера (если они заполнены).
  6. Сохраним новый файл под нужным именем на диске.

Этот метод считается наиболее «правильным», так как он гарантирует отсутствие конфликтов не только на уровне форм, но и на уровне самого объекта метаданных. Это особенно важно, если обработки регистрируются в справочнике «Дополнительные отчеты и обработки».

Влияние на настройки пользователя

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

Если вы просто переименуете файл на диске, но оставите UUID формы прежним:

При использовании Способа 1 (копирование формы), настройки станут независимыми. Для платформы это будет новая форма, для которой еще нет записей в хранилище настроек. Это критически важно, когда вы разрабатываете два варианта одного отчета для разных отделов компании.

Особенности работы с кэшем

Иногда даже после смены UUID и имен файлы продолжают вести себя странно. Рассмотрим, что еще может мешать корректной работе. Платформа 1С активно использует кэширование метаданных для ускорения работы. Если вы внесли изменения в конфигураторе, сохранили файл, но в «Предприятии» ничего не изменилось или файлы по-прежнему конфликтуют, попробуйте следующее:

  1. Полностью закройте все окна внешних обработок в пользовательском режиме.
  2. Перезапустите сеанс «1С:Предприятие».
  3. Если это не помогло, воспользуйтесь параметром запуска /ClearCache (очистка кэша клиентского приложения).

Резюме

Подведем итоги нашего исследования. Для того чтобы успешно работать с двумя копиями одной обработки одновременно, мы должны обеспечить их уникальность для платформы 1С. Посмотрим на краткий чек-лист:

  1. Не ограничивайтесь простым копированием файла .epf средствами Windows.
  2. Обязательно меняйте UUID основной формы путем её копирования и переназначения в свойствах обработки.
  3. Меняйте внутреннее имя объекта в дереве метаданных, а не только имя файла на диске.
  4. Для получения максимально «чистого» результата создавайте новый файл и переносите в него функционал из оригинала.

Используя эти методы, вы обеспечите стабильную работу своих инструментов и избежите путаницы в настройках пользователей.

← На главную