В практике ведения бизнеса в сфере услуг часто возникает ситуация, когда одну и ту же услугу необходимо продавать в разных единицах измерения. Например, проживание в отеле может измеряться в часах, сутках или днях. В программе 1С:Управление торговлей, редакция 11 (УТ 11) по умолчанию за номенклатурной позицией закрепляется одна базовая единица измерения. Рассмотрим подробнее, какими способами можно обойти это ограничение и дать пользователю возможность выбора нужной единицы в документе «Реализация товаров и услуг».
Многие пользователи ошибочно полагают, что механизм упаковок предназначен исключительно для товарных позиций (коробки, паллеты). Однако в современных версиях УТ 11 (начиная с 11.5) этот функционал успешно применяется и для услуг. Проанализируем, как это настроить шаг за шагом.
Упаковки номенклатуры.Индивидуальный набор.Упаковка пользователь сможет выбрать нужную единицу измерения. Программа автоматически пересчитает количество базовых единиц, исходя из установленного коэффициента.Важный нюанс: Если по услуге уже были движения (продажи), система может заблокировать изменение настроек упаковок. В этом случае потребуется временно разрешить редактирование реквизитов через меню «Еще — Разрешить редактирование реквизитов».
Выясним причину, по которой первый способ может не подойти. Если ваше решение интегрировано с внешними системами (например, Bitrix) через JSON и логика обмена жестко завязана на передачу конкретного кода единицы измерения по ОКЕИ, использование упаковок может «сломать» интеграцию. Если вам нужно видеть разные единицы измерения только в печатной форме УПД для клиента, а управленческий учет вести в одной единице, оптимальным будет использование расширения.
Разберем алгоритм реализации:
ЕдиницаИзмеренияДляПечати с типом данных Классификатор единиц измерения.Пример программного кода для подмены значения в расширении может выглядеть следующим образом:
Процедура ПечатьУПД_ПриПечати(ДанныеПечати, ОбъектыПечати)
Для Каждого СтрокаТаблицы Из ДанныеПечати.ТабличнаяЧасть Цикл
Если ЗначениеЗаполнено(СтрокаТаблицы.СсылкаНаОбъект.ЕдиницаИзмеренияДляПечати) Тогда
СтрокаТаблицы.ЕдиницаИзмеренияНаименование = СтрокаТаблицы.СсылкаНаОбъект.ЕдиницаИзмеренияДляПечати.Наименование;
СтрокаТаблицы.ЕдиницаИзмеренияКод = СтрокаТаблицы.СсылкаНаОбъект.ЕдиницаИзмеренияДляПечати.Код;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Внимание: Этот метод подходит только в том случае, если вы не используете Электронный документооборот (ЭДО). При использовании ЭДО данные в XML-файл будут уходить из стандартных регистров, и ваш контрагент все равно увидит базовую единицу измерения, а не ту, что вы «подрисовали» в печатной форме.
Посмотрим на ситуацию под другим углом. Если коэффициенты пересчета между единицами (например, час и сутки) не являются константными или для каждой единицы должна быть своя уникальная цена, не зависящая от базовой, можно использовать тип номенклатуры Набор.
В этом случае вы создаете одну карточку набора «Проживание в отеле», а в состав набора включаете различные услуги: «Проживание (час)», «Проживание (сутки)». При выборе набора в документе пользователь сможет выбрать конкретный вариант. Однако этот метод считается избыточным для простых задач и больше подходит для комплектации сложных товаров.
Проанализируем преимущества и недостатки каждого подхода:
Механизм упаковок (Штатный):
+ Не требует программирования.
+ Автоматический пересчет количества и цен.
- Требует настройки обмена с внешними сайтами.
- Жесткая привязка цены через коэффициент (нельзя сделать «сутки» дешевле, чем 24 «часа» без ручных правок цены).
Дополнительные реквизиты (Кастомный):
+ Не влияет на складской и финансовый учет.
+ Идеально для специфических требований контрагентов по оформлению документов.
- Требует навыков программирования (создание расширения).
- Не работает для ЭДО.
Таким образом, если ваша основная задача — корректное отображение данных в печатной форме без изменения логики взаимодействия с Bitrix, выбирайте Способ №2. Если же вы хотите использовать всю мощь типового функционала и готовы к настройке интеграции — Способ №1 будет наиболее правильным с точки зрения архитектуры 1С.