Как организовать подтверждение складских перемещений в 1С

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

Одной из классических проблем складского учета является ситуация, когда перемещение товара между складами происходит бесконтрольно со стороны принимающей стороны. В типовых конфигурациях (особенно старых версий, таких как 1С 7.7 «Торговля и Склад») документ часто проводится сразу, меняя остатки на обоих складах. Это порождает «виртуальные» недостачи и излишки, так как один кладовщик может «списать» товар на другой склад без ведома коллеги. Разберем, как реализовать надежный механизм подтверждения перемещений, исключающий человеческий фактор и хаос в учете.

Метод 1: Механизм двухступенчатого подтверждения (флаги «Сдал» и «Принял»)

Самый простой и эффективный способ с точки зрения программирования — добавление в документ перемещения двух реквизитов, фиксирующих факт отгрузки и факт приемки. Рассмотрим подробнее, как это реализовать.

В структуру документа ПеремещениеТМЦ (или аналогичного) добавим два реквизита типа «Число» или «Справочник.Пользователи»:

  1. ПодписьОтправителя — заполняется при отгрузке.
  2. ПодписьПолучателя — заполняется при фактическом поступлении товара.

Проанализируем алгоритм работы: документ не должен делать никаких движений по регистрам, пока не установлены оба признака. Однако, для управленческого учета часто важно видеть товар «в пути». Поэтому разберем по шагам логику модуля проведения:


Процедура ОбработкаПроведения()
    Если (ПустоеЗначение(ПодписьОтправителя) = 1) Тогда
        Сообщить("Документ не подписан отправителем! Проведение невозможно.");
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;

    // Вариант 1: Жесткое подтверждение
    Если (ПустоеЗначение(ПодписьПолучателя) = 1) Тогда
        // Товар уже списан с одного склада, но еще не пришел на другой
        // Здесь можно реализовать движение только по регистру "Остатки" (Расход)
        // Но приход не делать.
        Регистр.Остатки.Склад = СкладОтправитель;
        Регистр.Остатки.Товар = Товар;
        Регистр.Остатки.Количество = Количество;
        Регистр.Остатки.ДвижениеРасход();
    Иначе
        // Полное проведение
        Регистр.Остатки.Склад = СкладОтправитель;
        Регистр.Остатки.ДвижениеРасход();
        
        Регистр.Остатки.Склад = СкладПолучатель;
        Регистр.Остатки.ДвижениеПриход();
    КонецЕсли;
КонецПроцедуры

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

Метод 2: Использование транзитного склада («Товары в пути»)

Если склады территориально удалены друг от друга, рекомендуется использовать схему виртуального склада. Выясним причину популярности этого метода: он позволяет в любой момент времени увидеть по отчетам, какой объем ТМЦ находится в процессе транспортировки.

Схема работы выглядит следующим образом:

  1. Кладовщик-отправитель создает перемещение со своего склада на склад «Транзит». Документ проводится сразу.
  2. В этот момент товар числится за виртуальным складом, за который может отвечать экспедитор или общая материальная ответственность.
  3. Кладовщик-получатель, увидев прибывшую машину, заходит в систему и на основании первого документа (или отдельным перемещением) делает проводку со склада «Транзит» на свой склад.

Проанализируем ситуацию: если получатель обнаружил недостачу, он фиксирует приход только фактически принятого количества. Разница останется «висеть» на транзитном складе, что сразу станет заметно руководству или бухгалтерии при проверке остатков.

Метод 3: Идентификация через персональные пароли и штрихкоды

Чтобы избежать споров в стиле «я этого не подписывал», внедрим систему персональной ответственности. Рассмотрим вариант использования личных штрихкодов сотрудников.

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


Процедура НажатьПодтвердить()
    Перем ТекКод;
    Если ВвестиСтроку(ТекКод, "Отсканируйте личный код", 20) = 1 Тогда
        Сотр = СоздатьОбъект("Справочник.Сотрудники");
        Если Сотр.НайтиПоРеквизиту("ЛичныйШтрихкод", ТекКод, 1) = 1 Тогда
            Если Сотр.Склад = ТекущийДокумент.СкладПолучатель Тогда
                ТекущийДокумент.ПодписьПолучателя = Сотр.ТекущийЭлемент();
                ТекущийДокумент.Записать();
                Сообщить("Приемка подтверждена!");
            Иначе
                Предупреждение("Вы не являетесь ответственным за склад-получатель!");
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Такой подход заменяет бумажную подпись и психологически дисциплинирует персонал. Если же бюджет позволяет, можно использовать сканеры отпечатков пальцев, интегрированные с 1С через компоненты внешнего оборудования.

Метод 4: Статусная модель и автоматические уведомления

В современных конфигурациях 1С 8.3 (ERP, УТ 11) механизм перемещения реализован через статусы: К отгрузке, Отгружено, Принято. Для 1С 7.7 мы можем эмулировать эту модель, используя реквизит Статус (перечисление).

Рассмотрим подробнее этапы жизни документа:

Для оперативного взаимодействия сотрудников настроим автоматическое оповещение. Поскольку в 7.7 нет встроенных Push-уведомлений, можно использовать отправку сообщений в Telegram через HTTPСоединение или запись в специальную таблицу «Задачи», которую будет мониторить обработка ожидания на рабочих местах кладовщиков.

Метод 5: Автоматизация расхождений при приемке

Часто возникает коллизия: отправитель утверждает, что отправил 10 штук, а получатель видит только 8. Чтобы бардак не автоматизировался, нужно заложить в систему механизм «Акта о расхождениях».

Разберем алгоритм решения:

  1. В табличную часть документа добавим колонку КоличествоПринято.
  2. По умолчанию она заполняется из колонки Количество.
  3. Если при приемке обнаружена недостача, кладовщик меняет значение в КоличествоПринято.
  4. При проведении документа в статусе «Принято», 1С должна автоматически сформировать второй документ — Акт о расхождениях, который уйдет на рассмотрение начальнику службы безопасности или материальному бухгалтеру.

Практический совет: Не позволяйте кладовщикам самостоятельно «исправлять» количество в исходной колонке Количество. Оригинальное значение должно остаться для фиксации вины отправителя, а фактическое — для фиксации прихода.

Административные меры и выводы

Никакая автоматизация не поможет, если в компании не установлена четкая материальная ответственность. Разберем три «золотых правила» складского перемещения:

  1. Правило подписи: Любой ввод данных в систему должен быть авторизован. Использование общего логина «Склад» недопустимо.
  2. Правило закрытого периода: После подтверждения приемки документ должен быть полностью закрыт для редактирования любым пользователем, кроме администратора.
  3. Правило инвентаризации: Минимум раз в месяц необходимо сверять виртуальные остатки на «Транзитном складе» с реальностью. Если там копятся остатки — это либо воровство, либо халатность при оформлении документов.

Проанализировав все способы, мы видим, что наиболее надежным для платформы 7.7 является сочетание двух подписей в одном документе с жестким ограничением прав доступа. Это минимизирует количество создаваемых объектов в базе и обеспечивает прозрачность ответственности каждого участника процесса.

← На главную