В процессе работы розничного магазина часто возникает ситуация, когда кассиру необходимо изменить цену товара непосредственно в момент оформления продажи. Это может быть связано с индивидуальными скидками, округлением суммы или исправлением ошибок в прайс-листе. Однако в типовой конфигурации 1С:Управление торговлей 10.3 (УТ 10.3) пользователи часто сталкиваются с тем, что поле цены в документе Чек ККМ или в интерфейсе РМК (Рабочее место кассира) заблокировано для редактирования. Разберем подробно, почему это происходит и как настроить систему для свободного ввода цен.
Первым делом проанализируем настройки прав доступа. В 1С 8.3 (Обычные формы) существует разделение на общие роли (в Конфигураторе) и дополнительные права (в режиме Предприятие). Часто полных прав в конфигураторе недостаточно для управления логикой документов.
Рассмотрим по шагам, как включить право на редактирование цен:
Важный нюанс: После изменения этих настроек пользователю необходимо перезайти в программу или заново открыть форму РМК. Если после установки галочки цена все равно не редактируется, причина может крыться в более глубоких настройках склада или учетной политики.
Выясним, как настройки торговой точки влияют на возможность изменения цены. Если ваш склад имеет вид Розница или НТТ (Неавтоматизированная торговая точка), в его настройках может быть жестко закреплен конкретный тип цен.
Проанализируем ситуацию: когда в настройках склада указан тип цен, система при подборе товара в чек автоматически перезаписывает цену, подтягивая её из регистра сведений ЦеныНоменклатуры. В некоторых случаях программные модули формы РМК могут блокировать изменение, чтобы обеспечить соответствие установленному прайс-листу.
Если вам требуется произвольная цена, убедитесь, что в настройках учетной политики не стоит запрет на продажу ниже себестоимости, а также проверьте, не используются ли Автоматические скидки. Иногда включенный механизм автоматических скидок пересчитывает строку при любом изменении, возвращая цену к исходному значению.
Рассмотрим различие между обычным документом Чек ККМ и специализированным интерфейсом кассира. Интерфейс РМК — это отдельная обработка, которая призвана упростить работу пользователя. В ней часто скрыты лишние колонки и заблокированы поля, чтобы минимизировать риск случайной ошибки кассира.
Если в обычном документе Чек ККМ (открытом через список документов) цена доступна для изменения, а в РМК — нет, значит, ограничение зашито на уровне свойств элементов формы этой обработки. В этом случае мы имеем дело с программным ограничением. Посмотрите на колонку % Скидки. Часто кассиру проще установить ручную скидку, которая изменит итоговую сумму, чем менять саму базовую цену. Это позволяет сохранить историю базовых цен в аналитике, но получить нужный результат в чеке.
Проанализируем современные реалии работы с УТ 10.3. После введения обязательной маркировки (табак, обувь, одежда) разработчики внесли существенные изменения в код типовых конфигураций. Это критически важный момент, о котором часто забывают.
Если в чеке выбрана маркированная продукция, типовая конфигурация программно блокирует редактирование строки. Это сделано для того, чтобы цена продажи соответствовала требованиям законодательства (например, МРЦ для сигарет) и корректно передавалась в ОФД. В коде формы документа часто встречается проверка: если товар подлежит маркировке, свойство ТолькоЧтение для всей строки устанавливается в значение Истина.
Если стандартные настройки не помогают, разберем, как внести минимальные изменения в конфигурацию. Нам необходимо найти процедуру, отвечающую за обновление цен при выборе товара.
Как правило, это процедура ОбработкаПодбора или ТоварыНоменклатураПриИзменении в модуле формы документа ЧекККМ (или в модуле обработки РМК). Чтобы разрешить ввод своей цены, нужно найти фрагмент кода, который принудительно устанавливает цену из справочника, и добавить условие.
Пример логики, которую можно внедрить (псевдокод):
Процедура ТоварыНоменклатураПриИзменении(Элемент)
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
// Если цена еще не установлена или мы хотим разрешить её ввод
// Стандартный код обычно вызывает:
// СтрокаТабличнойЧасти.Цена = Ценообразование.ПолучитьЦенуНоменклатуры(...);
// Мы можем добавить проверку на наличие прав
Если НЕ РольДоступна("ПолныеПрава") Тогда
// Обычная логика
Иначе
// Разрешаем оставить введенную цену, если она больше нуля
Если СтрокаТабличнойЧасти.Цена = 0 Тогда
СтрокаТабличнойЧасти.Цена = Ценообразование.ПолучитьЦенуНоменклатуры(СтрокаТабличнойЧасти.Номенклатура, ...);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Также обратите внимание на сообщение одного из участников форума относительно маркировки. Чтобы разблокировать цену для маркированных товаров, нужно в коде формы найти место, где устанавливается запрет на редактирование строки, и добавить исключения для колонок Цена и Сумма.
Если вы не хотите вносить изменения в код конфигурации, рассмотрим другие варианты решения задачи:
Подводя итог, можно сказать: в типовой 1С:Управление торговлей 10.3 возможность изменения цены в чеке ККМ существует «из коробки», но она часто ограничена либо правами пользователя, либо защитными механизмами для маркированного товара. Проверьте настройки дополнительных прав и вид товара в строке — в 90% случаев решение кроется именно здесь.