Как разделить учет и нумерацию документов ответственного хранения при обмене между 1С:УТ 11 и 1С:БП 3.0?

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

При интеграции систем «1С:Управление торговлей 11» (УТ) и «1С:Бухгалтерия предприятия 3.0» (БП) часто возникает необходимость отражения специфических хозяйственных операций, таких как прием товаров на ответственное хранение. Если в УТ для этого используются доработанные или нетиповые документы, а в БП они должны загружаться как стандартные поступления на забалансовый счет 002, разработчики и аналитики сталкиваются со сложной задачей.

Основными проблемами в данном сценарии являются: разделение учета обычного поступления от ответхранения в бухгалтерской базе, предотвращение коллизий при двустороннем обмене и управление нумерацией. В этой статье мы подробно разберем, как правильно организовать архитектуру такого обмена, настроить аналитику в БП и решить проблемы с номерами документов.

Методология разделения учета в БП 3.0 без привязки к номерам

Попытка разделять операции ответственного хранения и обычные закупки исключительно по номерам документов или префиксам — это методологическая ошибка. Бухгалтерский учет должен опираться на четкие аналитические разрезы (субконто). Рассмотрим, как правильно настроить разделение в бухгалтерии:

  1. Выделенный склад ответственного хранения:

    Создадим в «1С:Бухгалтерия предприятия» отдельный элемент справочника Склады (например, «Склад ответственного хранения»). Это ключевой шаг для автоматизации проводок.

  2. Настройка счетов учета номенклатуры:

    Перейдем в регистр сведений Счета учета номенклатуры и создадим новую запись. В поле «Склад» укажем наш созданный склад ответхранения. В поле «Счет учета» установим забалансовый счет 002 («Товарно-материальные ценности, принятые на ответственное хранение»). Теперь, какой бы документ поступления ни загружался в БП, если в нем указан данный склад, система автоматически сформирует проводки по дебету счета 002 вместо стандартных балансовых счетов 41 или 10.

  3. Обособленные договоры контрагентов:

    Для расчетов и учета ТМЦ на ответственном хранении необходимо использовать отдельные договоры с поклажедателями. В свойствах договора рекомендуется явно указывать признак ответственного хранения в наименовании, чтобы бухгалтер мог легко фильтровать оборотно-сальдовую ведомость по счету 002 в разрезе контрагентов и их соглашений.

Решение проблемы уникальности номеров при двустороннем обмене

Выясним, как работает механизм синхронизации 1С. При использовании стандартного обмена (например, через универсальный формат EnterpriseData) сопоставление объектов происходит по их уникальному идентификатору — UUID (GUID), а не по номеру или дате. Если документ был создан в УТ, выгружен в БП, изменен в БП и затем снова отправлен в УТ, зацикливания или дублирования не произойдет. Система найдет документ по его уникальному GUID и обновит его свойства.

Однако проблема коллизии номеров возникает тогда, когда пользователи начинают создавать документы параллельно в обеих информационных базах. Например, если в БП вручную вводится документ с тем же номером, который должен прийти из УТ. Рассмотрим два способа решения этой проблемы:

Вариант 1. Использование префиксов и суффиксов в правилах обмена

Если базы уже имеют стандартные префиксы (например, УТ- для торговли и БП- для бухгалтерии), при двустороннем обмене этого может быть недостаточно, так как нумерация документов одного типа все равно может пересекаться. Мы можем кастомизировать правила конвертации данных:

При выгрузке нетиповых документов ответхранения из УТ в БП (где они превращаются в типовые поступления) мы можем программно изменять номер, добавляя к нему специализированный буквенный маркер. Например, номер УТ00-000125 при переносе в БП трансформируется в УТ00-ОХ0125 (где «ОХ» означает «Ответственное хранение»).

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


// Пример изменения номера при выгрузке документа ответхранения
Если ТипЗнч(Источник) = Тип("ДокументОбъект.ПоступлениеНаОтветхранение") Тогда
    ОригинальныйНомер = Источник.Номер;
    // Предположим, префикс базы занимает первые 4 символа (например, "УТ00")
    ПрефиксБазы = Лев(ОригинальныйНомер, 4);
    ХвостНомера = Сред(ОригинальныйНомер, 5);
    // Формируем новый номер с разделителем "ОХ" (Ответхранение)
    Значение = ПрефиксБазы + "ОХ" + ХвостНомера;
КонецЕсли;

Это полностью исключит пересечение номеров с обычными документами поступления, создаваемыми непосредственно в конфигурации «1С:Бухгалтерия предприятия».

Вариант 2. Разделение диапазонов через подписку на событие в БП 3.0

Если документы создаются в БП вручную, мы можем программно управлять их нумерацией в зависимости от заполненных реквизитов. Для этого создадим подписку на событие ПриУстановкеНовогоНомера для документа ПоступлениеТоваровУслуг.

Рассмотрим код обработчика, который анализирует склад документа и, если это склад ответхранения, присваивает документу уникальный префикс:


Процедура ПриУстановкеНовогоНомераДокументаОтветхранения(Источник, СтандартнаяОбработка, Префикс) Экспорт
    // Проверяем тип объекта
    Если ТипЗнч(Источник) = Тип("ДокументОбъект.ПоступлениеТоваровУслуг") Тогда
        // Проверяем, назначен ли специальный склад ответхранения
        Если ЗначениеЗаполнено(Источник.Склад) И 
             (Найти(НРег(Источник.Склад.Наименование), "ответхранение") > 0 Или Источник.Склад.ТипСклада = Перечисления.ТипыСкладов.Резервный) Тогда
            
            // Добавляем к текущему префиксу базы символ "Х" для обособления нумерации
            Префикс = Префикс + "Х";
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Благодаря этому подходу документы ответхранения, создаваемые в БП, будут получать номера вида БПХ0-000001, что предотвратит их конфликт со стандартными закупками (номера которых будут иметь вид БП00-000001).

Отказ от нетиповых документов и переход на стандартный функционал УТ 11

Использование кастомных (самописных) документов для ответственного хранения в УТ 11 — это серьезный источник технического долга. Современные версии «1С:Управление торговлей» (начиная с релизов 11.4 и 11.5) обладают мощным встроенным функционалом для этих целей.

Проанализируем преимущества перехода на типовые механизмы:

Архитектурные риски двусторонней синхронизации

В практике построения распределенных информационных систем на базе решений 1С двусторонний обмен первичными складскими и финансовыми документами (такими как поступления, реализации, возвраты) считается антипаттерном. Выясним, почему этого следует избегать:

При двустороннем обмене велика вероятность возникновения конфликтов редактирования. Если менеджер в УТ изменил количество товара в поступлении, а бухгалтер в БП параллельно исправил ставку НДС или номер входящего документа, при синхронизации одна из версий перезапишет другую (в зависимости от настроек правил разрешения коллизий). Это приведет к потере данных.

Рекомендованное архитектурное решение:

Информационная база «1С:Управление торговлей 11» должна выступать в роли единственного источника правды (Master-системы) для всех логистических и складских операций. Все поступления, возвраты, перемещения и списания (включая операции ответственного хранения) должны создаваться и редактироваться строго в УТ 11.

Обмен данными для этих документов должен быть настроен строго в одну сторону: из УТ в БП. В базе «1С:Бухгалтерия предприятия» загруженные документы должны блокироваться для изменения складской и количественной части. Бухгалтеру разрешается лишь заполнять счета учета (если они не заполнились автоматически), регистрировать входящие счета-фактуры и проводить документы. Для контроля изменений рекомендуется настроить даты запрета редактирования данных.

← На главную