1С 8.3 Заполнение списка значений для полей наборов данных и параметров в СКД - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Заполнение списка значений для полей наборов данных и параметров в СКД

Данные > Примеры кода 1С > 1С 8.3 Схема компоновки данных (СКД)
Перейти в раздел примеры кода 1С 8.3:
Пруф (оригинал): https://infostart.ru/1c/articles/2421467/
В авторском коде изменена логика работы. Код подготавливает параметры отчета для выбора периода (12 месяцев текущего года) и организации (из справочника организаций), чтобы пользователь мог выбирать эти значения при формировании отчета.
В область инициализации модуля объекта отчета добавляем код:
// Модуль объекта отчета

Процедура ИнициализироватьСКД()

  // Инициализация параметра периода
  ИнициализироватьПараметрПериода();

  // Инициализация поля организации
  ИнициализироватьПолеОрганизации();

КонецПроцедуры

Процедура ИнициализироватьПараметрПериода()

  ПараметрПериод = СхемаКомпоновкиДанных.Параметры.Найти("Период");
  Если ПараметрПериод = Неопределено Тогда
      Возврат;
  КонецЕсли;

  ДоступныеЗначенияПериода = Новый СписокЗначений;

  // Получаем первый день текущего года
  ТекущийГод = НачалоГода(ТекущаяДатаСеанса());
  // Устанавливаем начальную дату - первый день следующего месяца после конца года
  // (чтобы начать с января текущего года после вычитания 1 месяц)
  Период = КонецМесяца(ТекущийГод) + 1;

  Для Счетчик = 1 По 12 Цикл
      // Получаем последний день предыдущего месяца
      ДатаПериода = Период - 1;
      Представление = Формат(ДатаПериода, "ДФ='MMMM yyyy'"); // Например: "Январь 2025"
      ДоступныеЗначенияПериода.Добавить(ДатаПериода, Представление);
      Период = ДобавитьМесяц(Период, 1);
  КонецЦикла;

  ПараметрПериод.УстановитьДоступныеЗначения(ДоступныеЗначенияПериода);

КонецПроцедуры

Процедура ИнициализироватьПолеОрганизации()

   ОсновнойНаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Найти("ОсновнойНаборДанных");
   Если ОсновнойНаборДанных = Неопределено Тогда
       Возврат;
   КонецЕсли;

   ПолеОрганизация = ОсновнойНаборДанных.Поля.Найти("Организация");
   Если ПолеОрганизация = Неопределено Тогда
       Возврат;
   КонецЕсли;

   ДоступныеЗначенияОрганизации = Новый СписокЗначений;

   // Используем запрос для получения организаций
   Запрос = Новый Запрос;
   Запрос.Текст = "
    |ВЫБРАТЬ
    |    _ДемоОрганизации.Ссылка КАК Ссылка,
    |    _ДемоОрганизации.Наименование КАК Наименование
    |ИЗ
    |    Справочник._ДемоОрганизации КАК _ДемоОрганизации
    |ГДЕ
    |    НЕ _ДемоОрганизации.ПометкаУдаления
    |УПОРЯДОЧИТЬ ПО
    |    Наименование";

   РезультатЗапроса = Запрос.Выполнить();
   Если Не РезультатЗапроса.Пустой() Тогда // Такая проверка рекомендуется фирмой 1С
       Записи = РезультатЗапроса.Выбрать();
       Пока Записи.Следующий() Цикл
           ДоступныеЗначенияОрганизации.Добавить(Записи.Ссылка, Записи.Наименование);
       КонецЦикла;
   Иначе // Например: Сообщить("Данные отсутствуют!");
   КонецЕсли;

   ПолеОрганизация.УстановитьДоступныеЗначения(ДоступныеЗначенияОрганизации);

КонецПроцедуры
Описание работы кода по инициализации параметров схемы компоновки данных (СКД) в отчете:

Основная процедура ИнициализироватьСКД():
  • Вызывает две подпроцедуры для настройки параметров отчета:

Процедура ИнициализироватьПараметрПериода():
  • Находит параметр "Период" в схеме компоновки данных.
  • Создает список доступных значений периода за последние 12 месяцев текущего года.
  • Для каждого месяца (от января до декабря текущего года) добавляет в список:
    • Значение - последний день месяца
    • Представление - название месяца и год (например, "Январь 2025")
  • Устанавливает этот список как доступные значения для параметра периода.

Процедура ИнициализироватьПолеОрганизации():
  • Находит поле "Организация" в основном наборе данных схемы компоновки.
  • Выполняет запрос к справочнику "_ДемоОрганизации" для получения списка организаций:
    • Выбирает только неудаленные организации
    • Сортирует по наименованию
  • Создает список доступных значений с ссылками на организации и их наименованиями.
  • Устанавливает этот список как доступные значения для поля организации.
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 01.07.2025
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Назад к содержимому