Одной из классических проблем складского учета является ситуация, когда перемещение товара между складами происходит бесконтрольно со стороны принимающей стороны. В типовых конфигурациях (особенно старых версий, таких как 1С 7.7 «Торговля и Склад») документ часто проводится сразу, меняя остатки на обоих складах. Это порождает «виртуальные» недостачи и излишки, так как один кладовщик может «списать» товар на другой склад без ведома коллеги. Разберем, как реализовать надежный механизм подтверждения перемещений, исключающий человеческий фактор и хаос в учете.
Самый простой и эффективный способ с точки зрения программирования — добавление в документ перемещения двух реквизитов, фиксирующих факт отгрузки и факт приемки. Рассмотрим подробнее, как это реализовать.
В структуру документа ПеремещениеТМЦ (или аналогичного) добавим два реквизита типа «Число» или «Справочник.Пользователи»:
ПодписьОтправителя — заполняется при отгрузке.ПодписьПолучателя — заполняется при фактическом поступлении товара.Проанализируем алгоритм работы: документ не должен делать никаких движений по регистрам, пока не установлены оба признака. Однако, для управленческого учета часто важно видеть товар «в пути». Поэтому разберем по шагам логику модуля проведения:
Процедура ОбработкаПроведения()
Если (ПустоеЗначение(ПодписьОтправителя) = 1) Тогда
Сообщить("Документ не подписан отправителем! Проведение невозможно.");
СтатусВозврата(0);
Возврат;
КонецЕсли;
// Вариант 1: Жесткое подтверждение
Если (ПустоеЗначение(ПодписьПолучателя) = 1) Тогда
// Товар уже списан с одного склада, но еще не пришел на другой
// Здесь можно реализовать движение только по регистру "Остатки" (Расход)
// Но приход не делать.
Регистр.Остатки.Склад = СкладОтправитель;
Регистр.Остатки.Товар = Товар;
Регистр.Остатки.Количество = Количество;
Регистр.Остатки.ДвижениеРасход();
Иначе
// Полное проведение
Регистр.Остатки.Склад = СкладОтправитель;
Регистр.Остатки.ДвижениеРасход();
Регистр.Остатки.Склад = СкладПолучатель;
Регистр.Остатки.ДвижениеПриход();
КонецЕсли;
КонецПроцедуры
Важный момент: необходимо заблокировать возможность редактирования состава товаров и складов, если установлена хотя бы одна подпись. Это предотвратит ситуацию, когда получатель подтверждает одно количество, а отправитель после этого меняет данные в документе.
Если склады территориально удалены друг от друга, рекомендуется использовать схему виртуального склада. Выясним причину популярности этого метода: он позволяет в любой момент времени увидеть по отчетам, какой объем ТМЦ находится в процессе транспортировки.
Схема работы выглядит следующим образом:
Проанализируем ситуацию: если получатель обнаружил недостачу, он фиксирует приход только фактически принятого количества. Разница останется «висеть» на транзитном складе, что сразу станет заметно руководству или бухгалтерии при проверке остатков.
Чтобы избежать споров в стиле «я этого не подписывал», внедрим систему персональной ответственности. Рассмотрим вариант использования личных штрихкодов сотрудников.
Для подтверждения приемки кладовщик не просто нажимает кнопку в интерфейсе, а сканирует свой бейдж. Программа должна проверить соответствие текущего пользователя и склада, за который он отвечает. Посмотрим на пример кода обработки кнопки подтверждения:
Процедура НажатьПодтвердить()
Перем ТекКод;
Если ВвестиСтроку(ТекКод, "Отсканируйте личный код", 20) = 1 Тогда
Сотр = СоздатьОбъект("Справочник.Сотрудники");
Если Сотр.НайтиПоРеквизиту("ЛичныйШтрихкод", ТекКод, 1) = 1 Тогда
Если Сотр.Склад = ТекущийДокумент.СкладПолучатель Тогда
ТекущийДокумент.ПодписьПолучателя = Сотр.ТекущийЭлемент();
ТекущийДокумент.Записать();
Сообщить("Приемка подтверждена!");
Иначе
Предупреждение("Вы не являетесь ответственным за склад-получатель!");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Такой подход заменяет бумажную подпись и психологически дисциплинирует персонал. Если же бюджет позволяет, можно использовать сканеры отпечатков пальцев, интегрированные с 1С через компоненты внешнего оборудования.
В современных конфигурациях 1С 8.3 (ERP, УТ 11) механизм перемещения реализован через статусы: К отгрузке, Отгружено, Принято. Для 1С 7.7 мы можем эмулировать эту модель, используя реквизит Статус (перечисление).
Рассмотрим подробнее этапы жизни документа:
Для оперативного взаимодействия сотрудников настроим автоматическое оповещение. Поскольку в 7.7 нет встроенных Push-уведомлений, можно использовать отправку сообщений в Telegram через HTTPСоединение или запись в специальную таблицу «Задачи», которую будет мониторить обработка ожидания на рабочих местах кладовщиков.
Часто возникает коллизия: отправитель утверждает, что отправил 10 штук, а получатель видит только 8. Чтобы бардак не автоматизировался, нужно заложить в систему механизм «Акта о расхождениях».
Разберем алгоритм решения:
КоличествоПринято.Количество.КоличествоПринято.Практический совет: Не позволяйте кладовщикам самостоятельно «исправлять» количество в исходной колонке Количество. Оригинальное значение должно остаться для фиксации вины отправителя, а фактическое — для фиксации прихода.
Никакая автоматизация не поможет, если в компании не установлена четкая материальная ответственность. Разберем три «золотых правила» складского перемещения:
Проанализировав все способы, мы видим, что наиболее надежным для платформы 7.7 является сочетание двух подписей в одном документе с жестким ограничением прав доступа. Это минимизирует количество создаваемых объектов в базе и обеспечивает прозрачность ответственности каждого участника процесса.