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