В практике автоматизации на базе 1С:Управление нашей фирмой 3.0 часто встречается ситуация, когда бизнес начинает свой путь как небольшая компания с одной организацией. В этом случае в настройках устанавливается флаг «Учет по компании в целом». Это упрощает интерфейс и автоматизирует заполнение реквизитов. Однако со временем структура бизнеса усложняется, появляются новые юридические лица, и возникает необходимость видеть раздельный «Анализ бизнеса» по каждой организации.
Проблема заключается в том, что система 1С официально не поддерживает простой переход в обратную сторону. Если учет велся «по компании в целом», то все движения в регистрах уже зафиксированы на одну предопределенную организацию. Разберем, как сделать «невозможное возможным» и корректно разделить учет, сохранив исторические данные.
Прежде чем приступать к активным действиям, проанализируем, почему разработчики 1С предупреждают о невозможности смены режима. Когда включена опция учета по компании в целом, во всех документах и, что более критично, во всех проводках в поле Организация подставляется служебный элемент. При простом переключении флажка старые записи в регистрах не изменятся сами собой. Это приведет к тому, что:
Первым делом нам необходимо разблокировать возможность ведения учета по нескольким организациям. Рассмотрим последовательность действий:
Организации, соответствующие реальным юридическим лицам.После этого новые документы уже можно будет вводить от разных лиц, но старые данные все еще «висят» на общей компании. Переходим к самому сложному — корректировке истории.
Чтобы отчеты начали «видеть» разделение, нам нужно пройтись по всем регистрам накопления и сведений, где есть измерение или реквизит Организация, и заменить старое значение на актуальное, взятое из документа-регистратора. Рассмотрим пример логики обработки, которую можно реализовать:
// Пример упрощенной логики обхода регистров
Для Каждого Регистр Из Метаданные.РегистрыНакопления Цикл
// Проверяем наличие измерения Организация
Если Регистр.Измерения.Найти("Организация") <> Неопределено Тогда
// Выбираем записи, где установлена старая "Компания"
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ Регистратор ИЗ РегистрНакопления." + Регистр.Имя + " ГДЕ Организация = &СтараяОрганизация";
Запрос.УстановитьПараметр("СтараяОрганизация", СтараяОрганизация);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// Перезаписываем набор записей в режиме обмена данными
Набор = РегистрыНакопления[Регистр.Имя].СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Выборка.Регистратор);
Набор.Прочитать();
Для Каждого Запись Из Набор Цикл
// Берем организацию из самого документа
Запись.Организация = Выборка.Регистратор.Организация;
КонецЦикла;
Набор.ОбменДанными.Загрузка = Истина;
Набор.Записать();
КонецЦикла;
КонецЕсли;
КонецЦикла;
Важный момент: Мы используем свойство ОбменДанными.Загрузка = Истина. Это критически важно, так как позволяет избежать запуска стандартных проверок и обработчиков при записи, что ускоряет процесс и предотвращает блокировки логикой конфигурации.
Проанализируем ситуацию, с которой столкнулись пользователи на практике. Даже после массовой перезаписи регистров некоторые данные могут остаться некорректными. Выясним причину:
УчетнаяПолитика или МетодыОценкиСтоимости. Если в них нет привязки к конкретной новой организации, механизмы расчета себестоимости могут давать сбои.После того как мы «разнесли» движения по разным организациям, система начнет строго контролировать права собственности на товар. Рассмотрим ситуацию: товар был закуплен на Организацию А (в старом учете это была общая компания), а продается теперь от Организации Б.
Проанализируем два пути решения:
Если вы работаете в облаке, помните, что прямое выполнение внешних обработок, изменяющих регистры, может быть ограничено. Рассмотрим варианты:
ОбменДанными.Загрузка = Истина может потребовать дополнительных обоснований для службы поддержки облака.После завершения всех манипуляций обязательно выполните следующие действия:
Организация.Таким образом, переход с одной организации на несколько в 1С:УНФ 3.0 вполне возможен программным путем. Главное — обеспечить идентичность данных в документах-регистраторах и их движениях в регистрах накопления, а также уделить особое внимание документам финансового закрытия.