Как вывести историю изменения цен из регистра сведений в карточку номенклатуры?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При разработке собственных конфигураций на платформе 1С:Предприятие часто возникает задача отображения истории изменений определенных данных. Один из классических примеров — просмотр истории изменения цен на конкретный товар, хранящихся в периодическом РегистреСведений. Давайте разберем, как грамотно реализовать этот функционал в рамках управляемого приложения.

Вариант 1: Открытие формы списка регистра с отбором

Это самый быстрый и распространенный способ решения задачи. Мы не перегружаем основную форму номенклатуры лишними данными, а предоставляем пользователю возможность открыть детализацию по нажатию на кнопку. Для реализации используем метод ОткрытьФорму с передачей параметров отбора.

Разберем реализацию по шагам:

  1. Создайте команду на форме элемента справочника «Номенклатура».
  2. В обработчике нажатия этой команды напишите следующий код:

Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
    Парам = Новый Структура; 
    Отбор = Новый Структура; 
    Отбор.Вставить("Номенклатура", Объект.Ссылка); 
    Парам.Вставить("Отбор", Отбор); 
    
    ОткрытьФорму("РегистрСведений.ЦенаНоменклатуры.Форма.ФормаСписка", Парам);  
КонецЕсли;

В этом примере мы создаем структуру Отбор, где ключом выступает имя измерения регистра, по которому мы фильтруем записи, а значением — ссылка на текущий элемент номенклатуры. Затем мы передаем эту структуру в стандартную форму списка регистра. Платформа 1С автоматически применит отбор, и пользователь увидит историю цен только по выбранному товару.

Вариант 2: Использование динамического списка на форме

Если вы хотите, чтобы история цен была видна сразу, без открытия дополнительных окон (например, на отдельной странице формы), лучшим решением будет использование ДинамическогоСписка.

Рассмотрим, как настроить такой механизм:

  1. Добавьте на форму элемента новый реквизит с типом ДинамическийСписок.
  2. В свойствах списка укажите основную таблицу — ваш РегистрСведений.
  3. Для автоматического обновления списка при открытии формы в событии ПриСозданииНаСервере пропишите установку параметра отбора:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    СписокЦен.Параметры.УстановитьЗначениеПараметра("Номенклатура", Объект.Ссылка);
КонецПроцедуры

Обратите внимание: чтобы это сработало, в тексте запроса динамического списка должно быть задано условие на параметр, например: ГДЕ Регистр.Номенклатура = &Номенклатура.

Какой метод выбрать?

Выбор способа зависит от ваших задач по проектированию интерфейса:

В процессе работы не забывайте про возможности СКД (Схемы компоновки данных), если вам потребуется не просто список, а сложная аналитика с расчетами, группировками или графическим отображением динамики цен. Это позволит сделать отчет более гибким и визуально привлекательным.

Теперь вы знаете, как быстро и профессионально реализовать вывод истории изменений данных из регистра сведений, используя возможности платформы 1С.

← На главную