Как корректно изменить ошибочно введенный инвентарный номер ТМЦ в эксплуатации в 1С:ERP и 1С:Комплексная автоматизация?

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

При работе в системах 1С:ERP Управление предприятием или 1С:Комплексная автоматизация пользователи часто сталкиваются с необходимостью корректировки данных, особенно если ошибка была допущена при вводе документов в закрытом периоде. Одной из таких распространённых ситуаций является неверное указание инвентарного номера товарно-материальных ценностей (ТМЦ), переданных в эксплуатацию. Чтобы минимизировать последствия, важно проводить своевременный поиск ошибок в учете, обеспечивая целостность данных в системе.

Понимание структуры учета ТМЦ в эксплуатации

Прежде чем приступать к исправлению, критически важно понять, как система 1С:ERP и 1С:КА учитывает ТМЦ, переданные в эксплуатацию, так называемую «малоценку» или «спецоснастку». В отличие от основных средств, инвентарный номер для таких ТМЦ не является реквизитом самого справочника «Номенклатура». Вместо этого, каждая уникальная единица ТМЦ, поступившая в эксплуатацию, идентифицируется через инвентарный номер, который фиксируется в специализированных регистрах в момент ввода в эксплуатацию. Это позволяет отслеживать конкретные экземпляры одной и той же номенклатуры (например, 50 одинаковых мониторов).

Рассмотрим ключевые объекты и регистры, задействованные в этом процессе:

  1. Определяемый тип ИнвентарныйНомерТМЦВЭксплуатации: Этот объект в конфигураторе лишь описывает возможные типы данных для инвентарного номера. В реальности он чаще всего представляет собой строку определенной длины, например, Строка(11).
  2. Регистр накопления ТМЦВЭксплуатации: Это основной регистр для количественного учета ТМЦ в разрезе организаций, подразделений, материально-ответственных лиц (МОЛ), номенклатуры, характеристик, серий и, конечно же, инвентарных номеров. Именно здесь хранятся остатки ТМЦ, выданных в эксплуатацию. Для работы с подобными данными полезно иметь под рукой инструмент, выполняющий чтение и корректировку остатков регистра накопления.
  3. Регистр сведений СтоимостьТМЦВЭксплуатации: Этот регистр предназначен для хранения информации о стоимости ТМЦ в эксплуатации. Он также имеет измерение ИнвентарныйНомер, связывая стоимость с конкретным экземпляром ТМЦ. В ряде случаев для исправления точечных ошибок в измерениях может потребоваться редактор регистров сведений для управляемых форм.
  4. Регистр сведений НаработкиТМЦВЭксплуатации: Если стоимость ТМЦ в эксплуатации погашается в зависимости от наработки (например, по пробегу или часам работы), то этот регистр будет использоваться для фиксации этих наработок. В нем также присутствует измерение ИнвентарныйНомер.
  5. Документы-регистраторы: Инвентарные номера присваиваются и изменяются различными документами. Основным документом, вводящим ТМЦ в эксплуатацию и присваивающим инвентарный номер, является ВнутреннееПотребление. Однако инвентарный номер может фигурировать и в других документах, таких как ВводОстатков, ВводОстатковТМЦВЭксплуатации, ИнвентаризацияТМЦВЭксплуатации, НаработкаТМЦВЭксплуатации, ОприходованиеТМЦВЭксплуатации, ПеремещениеВЭксплуатации, ПрочееОприходованиеТоваров, СписаниеИзЭксплуатации, УведомлениеОбОстаткахПрослеживаемыхТоваров, а также в обработках, например, ПечатьЭтикетокТМЦВЭксплуатации.
  6. Справочник ПартииТМЦВЭксплуатации: Инвентарный номер также может быть реквизитом элемента этого справочника.
  7. Бухгалтерский учет: Учет ТМЦ в эксплуатации часто отражается на забалансовых счетах бухгалтерского учета, таких как МЦ.04. Настройка такого учета производится в параметрах учетной политики организации.

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

  1. Откройте конфигурацию в режиме "Конфигуратор".
  2. В дереве конфигурации найдите один из регистров, например, РегистрСведений.СтоимостьТМЦВЭксплуатации.
  3. Внутри регистра найдите измерение ИнвентарныйНомер.
  4. Нажмите на нем правой кнопкой мыши и выберите пункт меню "Поиск ссылок в объекте". В служебных сообщениях вы увидите, что это измерение ссылается на ОпределяемыйТип.ИнвентарныйНомерТМЦВЭксплуатации.
  5. Дважды щелкните по строке с ОпределяемыйТип.ИнвентарныйНомерТМЦВЭксплуатации, чтобы перейти к этому объекту в конфигураторе.
  6. Нажмите на нем правой кнопкой мыши и выберите пункт меню "Поиск ссылок НА объект", а затем "В свойствах". Система предоставит вам полный список всех объектов (документов, регистров, справочников), где используется этот определяемый тип. Этот список будет критически важен для анализа влияния изменений.

Рассмотрим пример запроса, демонстрирующий, как инвентарные номера учитываются в системе, который может быть использован для заполнения документов инвентаризации:


&НаСервере
Процедура ЗаполнитьПоОстаткамНаСервере()
    ТекущиеДанныеУчета = Новый ФиксированноеСоответствие(Новый Соответствие);
    Если НЕ ЗначениеЗаполнено(Объект.Организация) ИЛИ НЕ ЗначениеЗаполнено(Объект.Подразделение) Тогда
        Возврат;
    КонецЕсли;

    ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                 | ТМЦВЭксплуатации.ФизическоеЛицо КАК ФизическоеЛицо,
                 | ТМЦВЭксплуатации.Номенклатура КАК Номенклатура,
                 | ТМЦВЭксплуатации.Характеристика КАК Характеристика,
                 | ТМЦВЭксплуатации.Серия КАК Серия,
                 | ТМЦВЭксплуатации.ИнвентарныйНомер КАК ИнвентарныйНомер,
                 | СУММА(ТМЦВЭксплуатации.КоличествоОстаток) КАК КоличествоПоДаннымУчета
                 |ИЗ
                 | РегистрНакопления.ТМЦВЭксплуатации.Остатки(
                 | &Дата,
                 | Организация = &Организация
                 | И Подразделение = &Подразделение
                 | И (ФизическоеЛицо = &ФизическоеЛицо
                 | ИЛИ &ФизическоеЛицо = ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка))) КАК ТМЦВЭксплуатации
                 |
                 |СГРУППИРОВАТЬ ПО
                 | ТМЦВЭксплуатации.ФизическоеЛицо,
                 | ТМЦВЭксплуатации.Номенклатура,
                 | ТМЦВЭксплуатации.Характеристика,
                 | ТМЦВЭксплуатации.Серия,
                 | ТМЦВЭксплуатации.ИнвентарныйНомер
                 |
                 |ИМЕЮЩИЕ
                 | СУММА(ТМЦВЭксплуатации.КоличествоОстаток) > 0
                 |
                 |УПОРЯДОЧИТЬ ПО
                 | ТМЦВЭксплуатации.ФизическоеЛицо.ФИО,
                 | ТМЦВЭксплуатации.Номенклатура.Представление,
                 | ТМЦВЭксплуатации.Характеристика.Представление,
                 | ТМЦВЭксплуатации.Серия.Представление,
                 | ТМЦВЭксплуатации.ИнвентарныйНомер
                 |";
    Запрос = Новый Запрос(ТекстЗапроса);
    Запрос.УстановитьПараметр("Организация", Объект.Организация);
    Запрос.УстановитьПараметр("Подразделение", Объект.Подразделение);
    Запрос.УстановитьПараметр("ФизическоеЛицо", Объект.ФизическоеЛицо);
    Запрос.УстановитьПараметр("Дата", ?(ЗначениеЗаполнено(Объект.Дата), НачалоДня(Объект.Дата), НачалоДня(ТекущаяДатаСеанса)));
    // РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    // Дальнейшая обработка результата запроса для заполнения табличной части документа.
КонецПроцедуры

Этот код наглядно показывает, что система при инвентаризации или для получения остатков оперирует не абстрактной номенклатурой, а конкретными экземплярами ТМЦ, идентифицируемыми в том числе по инвентарным номерам, хранящимся в регистре ТМЦВЭксплуатации.

Методы исправления ошибки в инвентарном номере

Рассмотрим различные подходы к исправлению ошибочно введенного инвентарного номера, начиная от наиболее предпочтительных и заканчивая рискованными, но иногда необходимыми.

1. Использование стандартных механизмов 1С: Исправительные документы

Наиболее безопасным и методологически корректным способом исправления ошибок в закрытых периодах является применение функционала исправительных документов, предусмотренного в 1С:ERP и 1С:КА. Этот механизм позволяет корректировать или сторнировать ранее созданные документы, включая ВнутреннееПотребление, в текущем периоде, сохраняя целостность учета.

  1. Активация функционала: Убедимся, что в настройках финансового результата и контроллинга установлен флаг "Использовать исправительные документы".
  2. Создание исправительного документа: На основании ошибочного документа ВнутреннееПотребление создадим новый исправительный документ. Система автоматически сформирует сторнирующие записи по старым данным и внесет новые, корректные движения с правильным инвентарным номером. Этот подход гарантирует сохранение логики учета как в управленческом, так и в регламентированном контурах, а также оставляет полный аудит изменений.

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

2. Временное открытие периода и перепроведение документов

Этот метод подходит, если политика компании допускает временное открытие закрытых периодов. Это более прямолинейный подход, но сопряженный с определенными рисками:

  1. Снятие даты запрета изменения данных: Необходимо временно снять или изменить дату запрета изменения данных в настройках пользователей и прав.
  2. Корректировка первичного документа: Внесем изменения непосредственно в ошибочный документ ВнутреннееПотребление, указав правильный инвентарный номер.
  3. Перепроведение документа: После изменения необходимо перепровести документ. Это приведет к автоматической перезаписи всех движений, сформированных этим документом, во всех связанных регистрах (ТМЦВЭксплуатации, СтоимостьТМЦВЭксплуатации, НаработкиТМЦВЭксплуатации и др.).

Важно! Этот способ требует максимальной осторожности. Изменения в закрытом периоде могут потребовать сдачи корректирующей отчетности.

3. Ручная корректировка с помощью обработки

Автор исходной темы предлагает написать обработку для прямого изменения данных в документе и регистрах. Это наиболее рискованный метод, который следует применять только в крайних случаях. Прямое изменение записей может привести к серьезному рассогласованию. Если вы решитесь на этот путь, изучите примеры корректировки записей регистра, чтобы корректно сформировать программный код.

Если мы все же решаем использовать этот подход, необходимо учитывать следующее:

  1. Изменение документа-регистратора: В первую очередь необходимо изменить реквизит ИнвентарныйНомер в табличной части документа ВнутреннееПотребление.
  2. Изменение записей в регистрах: Далее следует скорректировать записи во всех затронутых регистрах. В некоторых ситуациях также может потребоваться исправление ключей аналитики учета номенклатуры, если инвентарный номер косвенно влияет на аналитические разрезы.
  3. Проверка других документов: Крайне важно убедиться, что измененный ТМЦ с ошибочным инвентарным номером не фигурировал в других документах после ВнутреннегоПотребления.
  4. Использование ОбменДанными.Загрузка = Истина: При программном изменении данных это позволяет выполнять запись объектов с обходом некоторых контролей, однако это требует глубокого понимания логики системы.

Пример части кода обработки для изменения в регистре:


// Предполагается, что мы уже определили старый и новый инвентарный номер,
// а также ссылку на документ-регистратор.

// Замена в РегистреНакопления.ТМЦВЭксплуатации
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |    ТМЦВЭксплуатации.Период,
    |    ТМЦВЭксплуатации.Организация,
    |    ТМЦВЭксплуатации.Подразделение,
    |    ТМЦВЭксплуатации.ФизическоеЛицо,
    |    ТМЦВЭксплуатации.Номенклатура,
    |    ТМЦВЭксплуатации.Характеристика,
    |    ТМЦВЭксплуатации.Серия,
    |    ТМЦВЭксплуатации.ИнвентарныйНомер,
    |    ТМЦВЭксплуатации.Количество,
    |    ТМЦВЭксплуатации.Регистратор
    |ИЗ
    |    РегистрНакопления.ТМЦВЭксплуатации КАК ТМЦВЭксплуатации
    |ГДЕ
    |    ТМЦВЭксплуатации.Регистратор = &Регистратор
    |    И ТМЦВЭксплуатации.ИнвентарныйНомер = &СтарыйИнвентарныйНомер";

Запрос.УстановитьПараметр("Регистратор", ДокументСсылка); // Ссылка на документ "Внутреннее потребление"
Запрос.УстановитьПараметр("СтарыйИнвентарныйНомер", СтарыйИнвентарныйНомер); // Строка со старым инвентарным номером

РезультатЗапроса = Запрос.Выполнить().Выгрузить();

Если РезультатЗапроса.Количество() > 0 Тогда
    ДвиженияТМЦ = Движения.ТМЦВЭксплуатации;
    ДвиженияТМЦ.Записывать = Истина;
    Для Каждого СтрокаДвижения Из РезультатЗапроса Цикл
        // Создаем сторнирующую запись
        ДвижениеСторно = ДвиженияТМЦ.Добавить();
        ДвижениеСторно.ВидДвижения = ВидДвиженияНакопления.Расход;
        ДвижениеСторно.Период = СтрокаДвижения.Период;
        ДвижениеСторно.Организация = СтрокаДвижения.Организация;
        ДвижениеСторно.Подразделение = СтрокаДвижения.Подразделение;
        ДвижениеСторно.ФизическоеЛицо = СтрокаДвижения.ФизическоеЛицо;
        ДвижениеСторно.Номенклатура = СтрокаДвижения.Номенклатура;
        ДвижениеСторно.Характеристика = СтрокаДвижения.Характеристика;
        ДвижениеСторно.Серия = СтрокаДвижения.Серия;
        ДвижениеСторно.ИнвентарныйНомер = СтрокаДвижения.ИнвентарныйНомер;
        ДвижениеСторно.Количество = СтрокаДвижения.Количество;
        // Регистрируем новую запись с правильным номером
        ДвижениеПриход = ДвиженияТМЦ.Добавить();
        ДвижениеПриход.ВидДвижения = ВидДвиженияНакопления.Приход;
        ДвижениеПриход.Период = СтрокаДвижения.Период;
        ДвижениеПриход.Организация = СтрокаДвижения.Организация;
        ДвижениеПриход.Подразделение = СтрокаДвижения.Подразделение;
        ДвижениеПриход.ФизическоеЛицо = СтрокаДвижения.ФизическоеЛицо;
        ДвижениеПриход.Номенклатура = СтрокаДвижения.Номенклатура;
        ДвижениеПриход.Характеристика = СтрокаДвижения.Характеристика;
        ДвижениеПриход.Серия = СтрокаДвижения.Серия;
        ДвижениеПриход.ИнвентарныйНомер = НовыйИнвентарныйНомер; // <--- Новый инвентарный номер
        ДвижениеПриход.Количество = СтрокаДвижения.Количество;
    КонецЦикла;
    ДвиженияТМЦ.Записать();
КонецЕсли;

Важные аспекты и риски при изменении инвентарного номера

Независимо от выбранного метода, необходимо тщательно проанализировать следующие аспекты:

  1. Целостность данных: Любое изменение в учетной системе, особенно в закрытых периодах, должно быть тщательно продумано. Прямое изменение данных в регистрах без корректировки документа-регистратора может привести к нарушению логической связи.
  2. Влияние на отчетность: Изменения в прошлом периоде могут потребовать сдачи корректирующей отчетности.
  3. Аудит и отслеживаемость: Штатные механизмы 1С (исправительные документы) сохраняют полный аудит изменений.
  4. Зависимые документы: Убедимся, что измененный ТМЦ не участвовал в других операциях с некорректным номером.
  5. Количество нулей: Проверьте, как строка инвентарного номера используется в системе. Если инвентарный номер хранится как строка, то "00123" и "123" — это разные значения.

Таким образом, для корректного изменения ошибочно введенного инвентарного номера ТМЦ в эксплуатации в 1С:ERP и 1С:КА наиболее предпочтительным и безопасным способом является использование функционала исправительных документов. В случае, когда требуется более глубокая корректировка, можно использовать специализированный инструмент для исправления проблем в проведенных документах. Помните, что любые ручные правки требуют повышенного внимания к синхронности и целостности данных.

← На главную