Назначение
На карточке номенклатуры часто нужно быстро увидеть не все цены из базы, а только выбранный набор — розничную, оптовую, для конкретного прайс-листа и т.д. Расширение решает две задачи:
-
Отбор видов цен — через регистр
ExUT_ВидыЦенДляОтображения(измерение «Вид цены»). -
Наглядный вывод — табличный документ на форме с динамическим набором колонок и переключаемым дизайном.
Поддерживаются оба режима ценообразования УТ:
-
классический регистр
ЦеныНоменклатуры; -
ценообразование 2.5 —
ЦеныНоменклатуры25.
Состав расширения
|
Объект |
Назначение |
|---|---|
|
|
Список видов цен для показа |
|
|
Выбор оформления таблицы |
|
|
5 вариантов дизайна |
|
|
Получение цен и верстка табличного документа |
|
|
Заимствованная форма, доработка в модуле |
|
|
Доступ к настройкам в интерфейсе |
Логика отображения колонок
Таблица строится с учётом контекста номенклатуры:
-
Вид цены, Цена, Валюта — всегда;
-
Характеристика — если
ИспользованиеХарактеристик <> НеИспользовать; -
Упаковка — если хотя бы у одной отобранной цены заполнена упаковка.
Порядок колонок: Вид цены → Характеристика → Цена → Валюта → Упаковка.
Варианты оформления (константа)
-
Классический UT — серая шапка, рамки, чередование строк (зебра).
-
Минимализм — без вертикальных линий, акцент на типографике.
-
Акцент на цене — выделенная колонка «Цена», сумма с кодом валюты.
-
Группировка по виду цены — блоки с заголовком вида цены.
-
Компактный дашборд — строка «Текущие цены на <дата>», компактная тёмная шапка.
Настройка и использование
-
Загрузить расширение в конфигуратор, обновить конфигурацию БД.
-
В подсистеме ExUT Номенклатура (или через поиск):
-
заполнить регистр Виды цен для отображения;
-
выбрать Вариант дизайна таблицы цен.
-
-
Открыть карточку номенклатуры — на вкладке «Данные номенклатуры» отобразятся актуальные цены.
Если регистр пуст, цены не показываются.
Технические приёмы реализации
Ниже — ключевые решения, которые могут быть полезны при разработке собственных расширений УТ.
1. Программное расширение заимствованной формы без правок Form.xml
Обработчики подключаются через аннотации &После, а не через события в метаданных формы:
&НаСервере
&После("ПриСозданииНаСервере")
Процедура ExUT_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ExUT_СоздатьСтраницуДанныхНоменклатуры();
ExUT_ЗаполнитьТабличныйДокументЦены();
...
КонецПроцедуры
Страница, реквизит и поле создаются в коде:
-
ИзменитьРеквизиты()— реквизитExUT_ТабличныйДокументЦенытипаТабличныйДокумент; -
Элементы.Добавить(..., Тип("ПолеФормы"), ...)сВид = ВидПоляФормы.ПолеТабличногоДокумента; -
поиск родителя
СтраницыКарточкаНоменклатурытиповой формы УТ.
Зачем: при обновлении УТ не нужно вручную мержить изменения в громоздком Form.xml (~8000 строк заимствованной формы).
2. Работа с программным реквизитом «Табличный документ»
Для реквизитов, добавленных через ИзменитьРеквизиты(), не работают ЗначениеВРеквизитФормы() и РеквизитФормыВЗначение().
Используется паттерн из типовой формы печати:
ЭтаФорма.ExUT_ТабличныйДокументЦены = ExUT_НоменклатураЦеныСервер.СформироватьТабличныйДокументТекущихЦен(
Объект.Ссылка,
Объект.ИспользованиеХарактеристик);
Имя элемента формы совпадает с именем реквизита — как в CommonForm.ПечатьДокументов.
3. Фильтрация цен через регистр настроек
Запрос к ценам дополняется внутренним соединением с регистром отбора:
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, Номенклатура = &Номенклатура) КАК Цены
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ExUT_ВидыЦенДляОтображения КАК ВидыДляОтображения
ПО Цены.ВидЦены = ВидыДляОтображения.ВидЦены
ГДЕ
Цены.Цена <> 0
Пустой регистр = пустая таблица на форме. Настройка не требует программирования.
4. Поддержка классического ценообразования и 2.5
Выбор регистра через функциональную опцию типовой конфигурации:
Если ПолучитьФункциональнуюОпцию("ИспользуетсяЦенообразование25") Тогда
ExUT_ЗаполнитьТекущиеЦены25(...);
Иначе
ExUT_ЗаполнитьТекущиеЦеныКлассические(...);
КонецЕсли;
Для 2.5 характеристика и упаковка разделяются (ранее могли объединяться в одну строку аналитики).
5. Динамическая верстка табличного документа
Оформление вынесено в серверный модуль с диспетчером по константе:
ВариантДизайна = Константы.ExUT_ВариантДизайнаТаблицыЦен.Получить();
Если ВариантДизайна = Перечисления.ExUT_ВариантыДизайнаТаблицыЦен.Минимализм Тогда
ExUT_ОформитьМинимализм(...);
...
Общие приёмы верстки:
-
описание колонок через массив структур
{Имя, Заголовок, Ширина}; -
Область.Объединить()— заголовки групп и строка «Текущие цены на …»; -
ФиксацияСверху— закрепление шапки при прокрутке; -
ГраницаСлева/Справа/Сверху/Снизу+Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1); -
Новый Цвет(R, G, B)— фоны шапки, зебра, акцентные колонки; -
условный вывод колонок до начала верстки, а не скрытие уже нарисованных.
6. Миграция при обновлении расширения
При смене способа отображения (таблица значений → табличный документ) предусмотрена очистка устаревших реквизитов:
ИзменитьРеквизиты(, УдаляемыеРеквизиты); // ExUT_ТекущиеЦены и колонки
При повторном открытии формы удаляется старая страница, если элементы созданы по устаревшей схеме.
7. Разделение ответственности модулей
|
Слой |
Ответственность |
|---|---|
|
Модуль формы |
Создание UI, вызов сервера, видимость вкладки (скрыта для групп) |
|
ExUT_НоменклатураЦеныСервер |
Запросы, бизнес-логика колонок, верстка, чтение константы дизайна |
Экспортный API модуля:
-
ПолучитьТекущиеЦены()— таблица значений; -
ЗаполнитьТабличныйДокументТекущихЦен()— заполнение переданного документа; -
СформироватьТабличныйДокументТекущихЦен()— создание нового документа.
Совместимость и ограничения
-
Платформа: 8.3.24+ (режим совместимости расширения
Version8_3_24). -
Конфигурация: УТ 11.5 (расширение с префиксом
ExUT_). -
Обновление типовой: форма номенклатуры заимствована; при существенных изменениях формы в новых релизах УТ может потребоваться перепривязка
ExtendedConfigurationObject. -
Права: стандартные права на константу, регистр и чтение цен.
Для кого публикация
-
Внедренцы и разработчики УТ 11.5, которым нужен быстрый просмотр цен на карточке номенклатуры.
-
Те, кто изучает программное расширение форм в расширениях конфигурации.
-
Те, кому интересна верстка табличного документа на управляемых формах с переключаемыми шаблонами оформления.
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.27.68, 11.5.26.118
Вступайте в нашу телеграмм-группу Инфостарт