Как настроить автоматическое определение вида цен при сканировании штрихкода в 1С:Управление торговлей 11?

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

При оформлении оптовых и розничных продаж в программе 1С:Управление торговлей (редакция 11) пользователи часто сталкиваются со странным поведением системы: если добавлять товар в табличную часть документа Реализация товаров и услуг вручную с помощью кнопки Добавить, программа автоматически заполняет вид цены (например, «Розничная»). Однако при использовании сканера штрихкодов или при ручном вводе штрихкода через клавишу F7 поле вида цены заполняется значением <Произвольная>.

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

Почему ручное добавление и сканирование работают по-разному?

Разберем внутреннюю логику работы управляемых форм в 1С:УТ 11. Различное заполнение реквизитов строки при разных способах ввода обусловлено следующими механизмами:

  1. Интерактивное добавление строки (Кнопка «Добавить»): При нажатии кнопки «Добавить» срабатывает стандартное событие при изменении номенклатуры. Платформа 1С использует механизмы копирования данных из предыдущей строки табличной части или задействует кэшированные данные формы. Если в первой строке документа вы уже выбрали вид цены «Розничная», то при создании последующих строк интерактивным путем программа автоматически подставляет это значение для удобства пользователя.
  2. Программное добавление строки (Сканирование штрихкода): Сканирование вызывает внешнее событие оборудования, которое запускает процедуру ОбработкаСканирования. Программа ищет номенклатуру по штрихкоду в базе данных и программно добавляет новую строку. При программном добавлении кэширование формы не работает. Система обращается к строгому алгоритму заполнения цен, описанному в общем модуле ЦенообразованиеКлиентСервер. Этот алгоритм ищет предопределенный источник цены в шапке документа (соглашение, договор или тип склада). Если в шапке документа правила ценообразования не заданы явным образом, алгоритм не может «угадать» цену и устанавливает значение <Произвольная>.

Выясним основную причину сбоя: если у вас в документе отсутствует поле Соглашение, программа лишается главного источника информации для автоматического расчета цен при сканировании.


Вариант 1. Включение и настройка соглашений с клиентами (Рекомендуемый способ)

Использование соглашений — это базовый методологический сценарий для автоматического ценообразования в 1С:УТ 11. Настроим этот функционал по шагам:

  1. Перейдем в раздел НСИ и администрирование, далее выберем пункт Настройка НСИ и разделов и откроем подраздел Продажи.
  2. В группе параметров Оптовые продажи найдем опцию Использование соглашений с клиентами.
  3. Установим флаг в положение Типовые и индивидуальные соглашения или выберем только Типовые соглашения.
  4. Перейдем в раздел Продажи -> Правила продаж -> Типовые соглашения с клиентами и создадим новое соглашение (например, назвав его «Продажи розничным покупателям»).
  5. В карточке соглашения на вкладке Условия продаж в поле Вид цены укажем значение «Розничная» (или любой другой нужный вам вид цен).
  6. Запишем и закроем соглашение, установив для него статус Действует.

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


Вариант 2. Настройка вида цен через Договоры

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

Рассмотрим последовательность действий:

  1. Откроем карточку партнера (клиента), для которого оформляется продажа.
  2. Перейдем по гиперссылке Договоры и откроем действующий договор (или создадим новый).
  3. Если соглашения в системе отключены, в форме договора на вкладке Условия продаж станет доступно поле Вид цены.
  4. Выберем в этом поле необходимый вид цены (например, «Розничная») и сохраним изменения в договоре.

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


Вариант 3. Использование розничных механизмов (РМК)

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

Для розничной торговли в 1С:УТ 11 предусмотрено специальное Рабочее место кассира (РМК) и документ Чек ККМ. В этом режиме сканирование оптимизировано по умолчанию:


Вариант 4. Техническая диагностика сканера штрихкодов

Иногда сбои при сканировании вызваны некорректной настройкой самого торгового оборудования. Проверим параметры сканера:

  1. Перейдем в меню НСИ и администрирование -> Администрирование -> РМК и оборудование -> Подключаемое оборудование.
  2. Откроем параметры настройки вашего сканера штрихкодов.
  3. Убедимся, что суффикс сканера настроен правильно. Обычно в качестве суффикса используется символ перевода строки CR (код 13) или Tab (код 9).
  4. Если сканер передает лишний символ возврата каретки (Enter) до того, как форма успеет обработать событие, фокус в документе может соскочить на другое поле, сбивая алгоритм заполнения цен. Попробуйте протестировать работу устройства в окне теста подключения оборудования.

Решение для программиста: доработка через Расширение конфигурации

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

Создадим расширение и перехватим процедуру обработки добавления строки при сканировании штрихкода. Нам нужно дополнить модуль формы документа РеализацияТоваровУслуг или общий модуль работы с торговым оборудованием. Рассмотрим пример программного кода:


&После("ЗаполнитьСтрокуНоменклатуры")
Процедура Расш_ЗаполнитьСтрокуНоменклатуры(СтрокаТабличнойЧасти, ПараметрыЗаполнения)
    
    // Проверяем, заполнен ли вид цены стандартным алгоритмом
    Если Не ЗначениеЗаполнено(СтрокаТабличнойЧасти.ВидЦены) Тогда
        
        // Получаем предопределенный розничный вид цен по умолчанию
        РозничныйВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Розничная");
        
        Если ЗначениеЗаполнено(РозничныйВидЦены) Тогда
            СтрокаТабличнойЧасти.ВидЦены = РозничныйВидЦены;
            
            // Вызываем пересчет цен согласно установленному виду цен
            СтруктураПересчета = Новый Структура("Номенклатура, Характеристика, ВидЦены", 
                СтрокаТабличнойЧасти.Номенклатура, 
                СтрокаТабличнойЧасти.Характеристика, 
                РозничныйВидЦены);
                
            СтрокаТабличнойЧасти.Цена = ЦенообразованиеВызовСервера.ПолучитьЦенуНоменклатуры(СтруктураПересчета);
        КонецЕсли;
        
    КонецЕсли;
    
КонецПроцедуры

Использование этого кода гарантирует, что если стандартные механизмы 1С:УТ 11 не смогли определить вид цен по соглашению или договору, система автоматически подставит «Розничную» цену, избегая появления пустых полей и предупреждений о произвольных ценах. Чтобы дополнительно защититься от случайных продаж по некорректной стоимости, можно применить расширение для запрета установки произвольных цен пользователям.

← На главную