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