В процессе работы с программой 1С:Розница 2.3 пользователи часто сталкиваются с ситуацией, когда при наличии нескольких магазинов и разных видов цен для каждого из них печать ценников работает некорректно. Рассмотрим типичный сценарий: в форме обработки «Печать этикеток и ценников» вы выбираете нужный магазин и соответствующий ему вид цен. В табличной части обработки данные отображаются правильно, однако при нажатии на кнопку Печать в предпросмотре или на бумаге появляется цена другого вида (часто — основная розничная или цена первого магазина в списке).
Проанализируем ситуацию: почему система «игнорирует» ваш выбор в интерактивной форме и как заставить ее использовать актуальные данные? Разберем по шагам несколько методов решения этой проблемы, от простых настроек интерфейса до проверки архитектурных связей конфигурации.
Как показывает практика и опыт участников форумов, корень проблемы часто кроется не в самой обработке печати, а в настройках справочника Магазины. Система 1С:Розница при формировании печатных форм может обращаться к реквизитам магазина, чтобы определить приоритетный вид цен для вывода.
Выясним причину через проверку справочников:
Попробуем установить правильный вид цен в этих полях, сохраним изменения и перезапустим обработку печати. Часто именно это действие синхронизирует данные в таблице и в печатной форме.
Рассмотрим подробнее механизм связи магазина и цены. В 1С:Розница цена для конкретной торговой точки определяется через объект ПравилаЦенообразования. Если в обработке печати ценников вы не указали явно Магазин в шапке, система может использовать настройки «по умолчанию», которые не соответствуют вашим ожиданиям.
Проанализируем цепочку настроек:
Важный совет: всегда заполняйте поле Магазин в обработке печати этикеток и ценников перед подбором товаров. Это гарантирует, что система применит контекст конкретной торговой точки.
Если настройки магазинов верны, но проблема сохраняется, нам необходимо проверить сам шаблон ценника. Выясним, какое именно поле выводится в макет. В редакторе шаблонов этикеток и ценников поле цены может быть настроено двумя способами.
Посмотрим на пример настройки шаблона:
Цена. Это системное динамическое поле. Оно должно выводить то значение, которое передает обработка в момент формирования печати.Цена в макет было добавлено пользовательское поле или прямая ссылка на конкретный вид цен (например, Цена.Розничная), то макет всегда будет искать именно этот вид цен, игнорируя ваши переключения в форме.Рекомендация: используйте только стандартное поле Цена из группы Номенклатура или Печать, чтобы обеспечить гибкость вывода данных. Чтобы не настраивать макеты вручную, можно использовать набор готовых макетов ценников для Розницы 2.3.
В релизах ветки 2.3.19.x была замечена техническая особенность: данные в табличной части обработки обновляются при смене вида цен, но при нажатии кнопки Печать программный код обращается к временному хранилищу, где зафиксированы данные на момент первичного заполнения таблицы.
Разберем, как обновить контекст данных:
ОбъектыПечати), и в макет попадут актуальные цифры.Для программистов и опытных пользователей полезно понимать, как работает запрос к данным. Система обращается к регистру сведений ЦеныНоменклатуры. Рассмотрим упрощенный пример кода, который иллюстрирует логику получения среза последних цен, используемую в подобных механизмах:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Цена КАК АктуальнаяЦена,
| ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ВидЦены = &ВыбранныйВидЦены) КАК ЦеныНоменклатурыСрезПоследних
|ГДЕ
| ЦеныНоменклатурыСрезПоследних.Номенклатура = &Номенклатура";
Запрос.УстановитьПараметр("Период", ТекущаяДата());
Запрос.УстановитьПараметр("ВыбранныйВидЦены", Объект.ВидЦеныДляПечати);
Запрос.УстановитьПараметр("Номенклатура", ТекущаяСтрока.Номенклатура);
Проанализируем этот код: если параметр &ВыбранныйВидЦены передается некорректно из формы в модуль печати, система либо вернет пустую цену, либо (при наличии механизмов подстановки) возьмет первую попавшуюся цену из регистра. В типовой Рознице 2.3 процедура формирования печатных форм находится в модуле менеджера обработки ПечатьЭтикетокИЦенников. Если вы используете расширение, проверьте, не перекрывается ли там метод ПодготовитьДанныеДляПечати.
Мы рассмотрели основные причины, по которым в 1С:Розница могут печататься неверные цены. Подведем итог действий:
Магазины и убедитесь, что поле Вид минимальных цен продажи заполнено корректно.Цена, а не жестко прописанный реквизит.Соблюдение этой последовательности действий позволяет решить проблему в 95% случаев без привлечения программистов и изменения кода конфигурации. В качестве альтернативы типовому механизму можно использовать расширение для быстрой печати ценников и этикеток в 1С:Розница.