При разработке отчетов, обработок или написании запросов к регистру сведений ЦеныНоменклатуры в конфигурации «1С:Управление торговлей» версии 11 (УТ 11) разработчики часто сталкиваются с неожиданным поведением интерфейса платформы. При попытке задать фильтр по конкретному виду цены или выбрать его в качестве параметра запроса система открывает форму единственного элемента вместо привычного списка справочника ВидыЦен. В этой форме отсутствует кнопка создания новых элементов, а сам выбор ограничен предопределенной позицией «Прайс-лист».
В этой статье мы подробно разберем, почему возникает данная проблема, как устроена логика работы платформы «1С:Предприятие 8.3» в этой ситуации и как за несколько простых шагов разблокировать полноценную работу со справочником видов цен.
Для начала проанализируем поведение системы изнутри. В конфигурациях «1С:Управление торговлей 11», «1С:Комплексная автоматизация 2» и «1С:ERP Управление предприятием» по умолчанию применяется концепция упрощенного ценообразования. Разработчики фирмы «1С» предположили, что небольшим торговым компаниям на старте работы может быть достаточно всего одного вида цен для продажи товаров.
По умолчанию в справочнике ВидыЦен (в метаданных он также может фигурировать как «Колонки прайс-листа») создан только один элемент — «Прайс-лист». Логика платформы «1С:Предприятие» оптимизирует интерфейс пользователя следующим образом:
Именно поэтому при попытке заполнить параметр &ВидЦены в тестовой консоли запросов или в режиме «1С:Предприятие» вы неизбежно попадаете в карточку «Прайс-листа» без возможности добавить оптовые, розничные или дистрибьюторские цены.
Чтобы разблокировать справочник и получить возможность создавать неограниченное количество видов цен, нам необходимо изменить настройки администрирования системы. Выполним следующие действия по шагам:
После установки этой опции константа ИспользоватьНесколькоВидовЦен принимает значение Истина, что кардинально меняет поведение интерфейса программы.
Перейдем в раздел CRM и маркетинг, откроем меню Настройки и справочники и выберем пункт Виды цен. Теперь вместо карточки «Прайс-листа» мы увидим полноценную, удобную форму списка справочника. В командной панели появится активная кнопка Создать, с помощью которой мы сможем добавить любые необходимые виды цен:
При создании новых видов цен важно правильно заполнить ключевые реквизиты в их карточках, иначе они могут не появиться в документах продажи или закупки:
1. Область действия (Назначение использования): В карточке вида цены обязательно обратите внимание на галочки использования. Если вам нужно, чтобы цена подставлялась в документы продаж клиентам, установите флажок При продаже клиентам. Если эта цена используется для фиксации стоимости поставок от поставщиков — выберите При закупке у поставщиков.
2. Способы расчета цен: 1С:УТ 11 позволяет автоматизировать расчет цен. Вы можете выбрать один из следующих вариантов:
3. Разрешение редактирования реквизитов: Если вы решите изменить настройки уже созданного или предопределенного вида цены (например, изменить валюту цены или правила округления для «Прайс-листа»), система заблокирует эти поля для изменения во избежание нарушения целостности данных. Чтобы отредактировать их, нажмите кнопку Еще в правом верхнем углу карточки вида цены и выберите команду Разрешить редактирование реквизитов. Подтвердите действие в появившемся диалоговом окне.
После того как мы активировали функциональную опцию и создали новые виды цен в справочнике, наш поисковый SQL-подобный запрос к регистру сведений будет отрабатывать корректно. Рассмотрим пример оптимального запроса для получения актуальных цен номенклатуры с отбором по виду цены:
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
ЦеныНоменклатурыСрезПоследних.Валюта КАК Валюта
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
&ДатаВыборки,
Номенклатура = &Номенклатура
И ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
Проанализируем этот запрос. Обратите внимание, что фильтрация по параметрам &Номенклатура и &ВидЦены наложена непосредственно в параметрах виртуальной таблицы СрезПоследних, а не во внешнем условии ГДЕ. Это является стандартом разработки на платформе 1С:Предприятие 8.3, так как позволяет СУБД выбрать данные максимально быстро, минуя чтение лишних записей из базы данных.
Теперь при передаче в параметр &ВидЦены ссылки на созданный элемент справочника СправочникСсылка.ВидыЦен (например, «Оптовая» или «Розничная»), запрос вернет точные и актуальные данные на указанную в параметре &ДатаВыборки дату.