Как дорабатывать работающую конфигурацию 1С:УНФ: от выбора лицензий до переноса изменений

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет
← На главную

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

Выбор правильной лицензии и серверной части

Прежде чем приступать к доработкам, проанализируем лицензионную политику. Для компании с 5–10 рабочими местами и потребностью в программировании стандартная «Базовая» версия 1С:УНФ не подойдет. Выясним почему:

  1. Версия конфигурации: Нам необходима поставка 1С:УНФ ПРОФ. Только она позволяет вносить изменения в структуру метаданных и поддерживает работу нескольких пользователей одновременно.
  2. Клиентские лицензии: Лицензии в 1С имеют свойство суммироваться. Если мы планируем работу 10 человек, нам потребуется основная поставка и дополнительные лицензии. Например, комплект на 5 пользователей и еще 5 индивидуальных лицензий, либо одна лицензия на 10 рабочих мест.
  3. Серверная архитектура: При работе 10 активных пользователей файловая база может начать «тормозить», особенно на тяжелых операциях в производстве. Разберем оптимальный вариант: покупка 1С:Предприятие 8.3. Сервер МИНИ на 5 подключений позволит использовать SQL-вариант базы данных при минимальных затратах. Если же количество пользователей превысит 5, потребуется полноценная лицензия на сервер.
  4. Лицензия разработчика: Специальная лицензия для работы в Конфигуратор не требуется — программист просто занимает одну из имеющихся клиентских лицензий в локальной сети.

Организация среды разработки: Dev-Test-Prod

Проанализируем ситуацию: вносить изменения напрямую в «боевую» (рабочую) базу категорически запрещено. Рассмотрим классическую схему разработки, которая гарантирует сохранность данных:

  1. Рабочая база (Prod): Здесь работают пользователи, вводятся реальные документы.
  2. Тестовая база (Test): Это полная копия рабочей базы. Здесь мы проверяем, как новые доработки ложатся на реальные данные.
  3. База разработки (Dev): Здесь пишется код. Она может быть пустой или с минимальным набором данных.

Разберем по шагам процесс переноса: мы пишем код в Dev, выгружаем файл конфигурации (расширение .cf), загружаем его в Test, проводим тестирование и только после этого повторяем загрузку в Prod.

Механизм сравнения и объединения конфигураций

Выясним, как технически происходит перенос объектов, не затирая данные пользователей. Для этого в 1С существует механизм «Сравнение и объединение конфигураций». Посмотрим на алгоритм действий в Конфигуратор:

  1. Откроем рабочую базу в режиме Конфигуратор.
  2. Выберем пункт меню Конфигурация — Сравнить и объединить с конфигурацией из файла.
  3. Выберем файл 1cv8.cf, подготовленный в тестовой базе.
  4. Система покажет дерево объектов, где галочками отмечены только измененные части. Важно: 1С сопоставляет объекты не по названию, а по внутреннему идентификатору (UUID). Это гарантирует, что если вы переименовали реквизит, система поймет, что это тот же самый объект.

Помните: Добавление новых реквизитов, справочников или документов никогда не приводит к удалению существующих данных. Данные могут пропасть только в двух случаях: если вы удалили объект из конфигурации или изменили его тип (например, превратили Число в Строка).

Расширения против изменения основной конфигурации

Рассмотрим вопрос, поднятый в теме: стоит ли использовать расширения или менять конфигурацию напрямую. Существует миф, что 20 расширений — это предел стабильности. На самом деле, современная платформа 8.3.15+ легко справляется с десятками расширений.

Преимущества расширений: Главный плюс в том, что основная конфигурация остается на «поддержке». Это позволяет обновлять 1С:УНФ до новых релизов от фирмы «1С» в автоматическом режиме. Если же вы «снимете с поддержки» объект (например, измените модуль формы документа ЗаказПокупателя напрямую), то при каждом обновлении вам придется вручную сравнивать свой код с кодом вендора.

Когда использовать расширения:

  1. Для добавления новых печатных форм и отчетов.
  2. Для изменения логики проведения документов через перехват процедур (используя &После, &Вместо или &Перед).
  3. Для добавления небольших реквизитов в существующие объекты.

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

Безопасное обновление работающей базы

Проанализируем понятие «динамическое обновление». В сообществе его часто называют «демоническим». Рассмотрим, почему это опасно:

Динамическое обновление позволяет нажать «Принять изменения», когда пользователи находятся в системе. Однако это часто приводит к ошибкам кэша, когда у одних пользователей работает старый код, а у других — новый.

Рекомендация: Всегда обновляйте структуру базы данных (кнопка F7), когда в системе нет активных сеансов. Для этого используйте Консоль кластера серверов, чтобы принудительно завершить работу пользователей, если кто-то забыл выйти из программы на ночь.

Работа с данными после обновления

Иногда просто добавить реквизит недостаточно, его нужно заполнить историческими данными. Рассмотрим пример: мы добавили в справочник Номенклатура реквизит ТипОборудования и хотим заполнить его для всех существующих позиций. Для этого мы создаем внешнюю обработку.

Посмотрим на пример кода для такой обработки:


Процедура ЗаполнитьРеквизитыНаСервере()
    Выборка = Справочники.Номенклатура.Выбрать();
    Пока Выборка.Следующий() Цикл
        ОбъектНоменклатура = Выборка.ПолучитьОбъект();
        Если ОбъектНоменклатура.ЭтоГруппа Тогда
            Продолжить;
        КонецЕсли;
        
        // Логика заполнения
        ОбъектНоменклатура.ТипОборудования = Перечисления.ТипыОборудования.Стандарт;
        
        Попытка
            ОбъектНоменклатура.Записать();
        Исключение
            Сообщить("Ошибка при записи: " + Выборка.Ссылка);
        КонецПопытки;
    КонецЦикла;
КонецПроцедуры

Такие обработки запускаются один раз сразу после обновления конфигурации. Это позволяет корректно внедрить новый функционал, не нарушая целостность управленческого учета.

Итоговая стратегия для новичка

Подводя итог, зафиксируем основные правила совместной работы над проектом:

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

← На главную