Как организовать формирование заказа поставщику или фиксацию потребности при подборе товара в 1С 7.7

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

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

Анализ проблемы и постановка задачи

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

Решение 1: Доработка формы «Ввод количества» (Создание документа «Потребность»)

Самый прямой путь, выбранный автором темы — внедрение дополнительного функционала в модальное окно ввода количества. Это окно (обычно это форма vvod_kol.ert или встроенная форма в обработке подбора) открывается каждый раз, когда пользователь выбирает позицию.

Алгоритм реализации:

  1. В форму ввода количества добавляется кнопка «Заказать».
  2. При нажатии на кнопку система должна создать или дополнить документ (например, Потребность или ЗаказПоставщику с особым признаком).
  3. Данные о номенклатуре, количестве и текущем менеджере записываются в базу данных.

Рассмотрим пример кода, который может быть размещен в модуле формы ввода количества при нажатии на кнопку «Заказать»:


Процедура ПриНажатииКнопкиЗаказать()
    // Создаем объект документа Потребность
    Док = СоздатьОбъект("Документ.Потребность");
    Док.Новый();
    Док.ДатаДок = РабочаяДата();
    Док.Менеджер = глПользователь;
    
    // Заполняем табличную часть
    Док.НоваяСтрока();
    Док.Номенклатура = Контекст.Номенклатура; // Переданная из подбора номенклатура
    Док.Количество = НужноеКоличество - ОстатокНаСкладе;
    
    // Записываем и проводим (или оставляем непроведенным)
    Док.Записать();
    Предупреждение("Потребность зафиксирована для отдела закупок");
    СтатусВозврата(0); // Закрываем форму ввода количества
КонецПроцедуры

Важный нюанс: Чтобы не создавать сотни мелких документов, целесообразно накапливать данные в Таблице Значений в памяти подбора и формировать один итоговый документ при закрытии формы подбора, либо использовать механизм поиска уже созданного «дневного» документа текущего менеджера.

Решение 2: Использование регистров для учета дефицита

Проанализируем техническую сложность: 1С 7.7 при записи документов в многопользовательском режиме может вызывать блокировки. Если 10 менеджеров одновременно будут нажимать кнопку «Заказать», возникнет конфликт доступа к таблице документов _1SJOURN.

Для решения этой проблемы эффективнее использовать Регистры. Мы можем создать регистр остатков ПотребностиТоваров. При нажатии кнопки «Заказать» в форме ввода количества будет выполняться не запись документа, а прямое движение по регистру (через служебный документ-регистратор или операцию).

Преимущества использования регистра:

Решение 3: Штатный механизм «Анализ заявок»

Прежде чем приступать к кодингу, стоит рассмотреть штатные возможности ТиС 7.7. Рассмотрим механизм работы с заказами:

  1. Менеджер оформляет документ ЗаявкаПокупателя.
  2. В строках, где товара нет, устанавливается вид отгрузки «Ожидание».
  3. Отдел закупок использует отчет «Анализ заявок». В этом отчете есть колонка «К заказу», которая рассчитывается автоматически на основании всех проведенных заявок, по которым нет резерва на складе.
  4. На основании данных отчета формируется документ ЗаказПоставщику.

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

Технические хитрости реализации в 1С 7.7

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

1. Передача контекста: При открытии формы ввода количества из подбора используйте передачу контекста (ОткрытьФорму("Форма", Контекст)), чтобы иметь доступ ко всем переменным подбора, включая текущий склад и выбранную категорию цен.

2. Использование внешних компонент: Чтобы подсвечивать строки с нулевым остатком или добавлять иконки «Заказано» прямо в список номенклатуры, профессиональные разработчики используют компоненту FormEx. Это позволяет менять цвета текста и фона ячеек динамически, что визуально облегчает работу менеджера.

3. Глобальный модуль: Для хранения промежуточных данных о потребностях в течение сессии пользователя удобно использовать глобальные переменные, объявленные в Global.ert с ключевым словом Экспорт. Это позволит «собирать» корзину заказов из разных форм подбора и выгружать её в документ один раз в конце работы.

Организация работы отдела закупок

Выясним, как отдел закупок будет обрабатывать эти данные. Создание «аккумулирующего» документа, как предложил автор темы, — это лишь половина дела. Разберем шаги по автоматизации закупа:

Такой подход минимизирует человеческий фактор и исключает ситуацию, когда менеджер по продажам «забыл» передать информацию о заказе закупщику.

Резюме

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

← На главную