Каждый практикующий специалист 1С или системный администратор рано или поздно сталкивается с классической проблемой: в наследство достается несколько баз данных (например, две базы 1С:Бухгалтерия разных организаций и одна доработанная база склада/торговли), которые никак не синхронизируются. Как результат — справочник Номенклатура превращается в хаос. Кладовщики создают дубли по своему усмотрению, бухгалтеры дописывают даты в наименования для ведения псевдо-партионного учета, а консолидировать остатки становится физически невозможно.
В этой статье мы подробно разберем комплексный подход к решению этой проблемы. Мы объединим организационные меры и технические инструменты 1С, чтобы раз и навсегда навести порядок в нормативно-справочной информации (НСИ).
---
Опыт показывает, что любые технические доработки бесполезны, если пользователи продолжают хаотично вводить данные. Поэтому начинать работу необходимо с административных решений. Проанализируем, какие шаги следует предпринять в первую очередь:
Кирпич красный полнотелый М-150. Это позволит пользователям легко находить нужные позиции по алфавиту при подборе в документах.ЕдиницаИзмерения на базе классификатора ОКЕИ).---
Поскольку у нас есть три несвязанные базы (две бухгалтерии и склад), нам необходимо выбрать одну базу в качестве первоисточника (Мастер-базы). Логично, чтобы такой базой стала складская система, так как именно там происходит оперативный учет движения товаров.
Рассмотрим схему разграничения прав доступа:
Не проверен или отправлять их в специальную папку «На модерацию».1С:Бухгалтерия полностью блокируется ручное создание элементов номенклатуры для всех пользователей. Справочник в бухгалтерию должен поступать исключительно через настроенный обмен данными (синхронизацию) из складской мастер-базы.---
Бухгалтеры часто дописывают даты в названия товаров (например, «Бумага А4 (15.05.2024)»), пытаясь обойти ограничения программы для ведения ручного партионного учета. Это грубейшая методологическая ошибка, которая плодит тысячи дублей карточек одного и того же товара. Выясним, как решить эту проблему правильно:
В самой 1С:Бухгалтерия партионный учет должен вестись автоматически штатными средствами (по ФИФО) на субсчетах счетов учета (например, 10 или 41) с использованием субконто Документы поступления, а не путем пложения новых карточек товаров. После наведения порядка бухгалтерам нужно продемонстрировать, как программа сама списывает партии по датам поступления.
Если же складская база требует детального партионного учета (например, по срокам годности или сериям), необходимо задействовать штатный функционал платформы 1С — Характеристики или Серии номенклатуры. Карточка товара (например, Йогурт Клубничный) должна быть одна, а даты поступления или серии должны выбираться в документах как подчиненные разрезы учета.
---
Теперь перейдем к самой трудоемкой технической части — слиянию справочников и поиску дубликатов. Нам предстоит объединить данные из трех баз. Посмотрим на алгоритм выполнения этой задачи:
Поиск и удаление дублей (меню Администрирование -> Обслуживание -> Корректировка данных). Он позволяет искать похожие элементы по нечеткому поиску, сравнивать артикулы и штрихкоды.Критически важно: Любые операции по программной замене ссылок номенклатуры напрямую влияют на партионный и финансовый учет прошлых периодов. Поэтому выполнять процедуру можно строго на копии базы данных с последующей сверкой оборотно-сальдовой ведомости (ОСВ) до и после автозамены!
Для понимания того, как работает механизм замены дублей «под капотом» платформы 1С, рассмотрим упрощенный пример кода, который выполняет поиск и замену дублирующихся ссылок программным путем:
// Пример программной замены дублей номенклатуры
Процедура ЗаменитьДубли Номенклатуры(СсылкаОригинал, СсылкаДубль) Экспорт
ТаблицаСсылок = Новый ТаблицаЗначений;
ТаблицаСсылок.Колонки.Добавить("Ссылка");
ТаблицаСсылок.Колонки.Добавить("Данные");
ТаблицаСсылок.Колонки.Добавить("Метаданные");
// Ищем все места использования дублирующегося элемента в базе данных
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(СсылкаДубль);
ТаблицаНахождений = НайтиСсылки(МассивСсылок);
Для Каждого СтрокаНахождения Из ТаблицаНахождений Цикл
// Производим замену ссылки дубля на оригинал в найденных объектах
ОбъектМетаданных = СтрокаНахождения.Данные.Метаданные();
Если Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда
ДокументОбъект = СтрокаНахождения.Данные.ПолучитьОбъект();
// Здесь должна быть логика обхода табличных частей документа и замены значений
// ...
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
КонецЕсли;
КонецЦикла;
// Помечаем дубликат на удаление после успешной замены
ДубльОбъект = СсылкаДубль.ПолучитьОбъект();
ДубльОбъект.УстановитьПометкуУдаления(Истина);
ДубльОбъект.Записать();
КонецПроцедуры
---
Частая проблема при замене дубликатов в базах 1С:Бухгалтерия — это потеря корректных проводок. Например, товар после объединения может неожиданно начать списываться как материал (вместо счета 41 пойти на счет 10). Чтобы избежать этой ситуации, настроим систему правильно:
Счета учета номенклатуры.При таком подходе, даже если мы заменим одну карточку товара на другую внутри одной папки, программа автоматически подставит правильный счет учета при проведении документов.
---
Физически удалить старые дублированные позиции из баз данных зачастую невозможно, так как по ним велся учет в прошлых годах, периоды закрыты и сдана отчетность. Перепроводить документы за прошлые годы категорически запрещено.
В этом случае мы используем следующий алгоритм работы с историческими данными:
_Архив (Не использовать!). Символ подчеркивания в начале названия поднимет эту папку в самый верх списка.Не использовать в подборе (или переключатель Номенклатура больше не используется / Недействительна). Благодаря этому менеджеры и кладовщики перестанут видеть архивные позиции при выписке новых документов.---
Наведение порядка в справочнике «Номенклатура» — это не разовое техническое действие, а постоянный процесс контроля качества данных. Сочетание строгого регламента ввода, назначения ответственного администратора НСИ, использования встроенных обработок поиска дублей и настройки правильной синхронизации гарантирует, что ваши базы данных 1С всегда будут находиться в актуальном и чистом состоянии.