Как программно заполнить реквизит типа таблица значений на форме обработки неделями года в зависимости от количества недель года

Для того чтобы программно заполнить реквизит типа “Таблица значений” на форме обработки неделями года, можно использовать следующий подход. Мы создадим таблицу значений, добавим в нее колонки для номера недели и других необходимых данных, а затем заполним ее в зависимости от количества недель в году.

Вот пример кода на языке 1С:

// Создаем новую таблицу значений
ТаблицаНеделей = Новый ТаблицаЗначений;

// Добавляем колонки
ТаблицаНеделей.Колонки.Добавить(“НомерНедели”, Новый ОписаниеТипов(“Число”));
ТаблицаНеделей.Колонки.Добавить(“ДатаНачала”, Новый ОписаниеТипов(“Дата”));
ТаблицаНеделей.Колонки.Добавить(“ДатаОкончания”, Новый ОписаниеТипов(“Дата”));

// Получаем текущий год
ТекущийГод = Год(ТекущаяДата());

// Определяем количество недель в году
КоличествоНедель = 52; // По умолчанию 52 недели
Если (Месяц(КонецГода(ТекущийГод)) = 12) И (День(КонецГода(ТекущийГод)) = 31) Тогда
Если (ДеньНедели(КонецГода(ТекущийГод)) = 1) Тогда
КоличествоНедель = 53; // Если 31 декабря – понедельник
КонецЕсли;
КонецЕсли;

// Заполняем таблицу значениями
Для НомерНедели = 1 По КоличествоНедель Цикл
// Определяем даты начала и окончания недели
ДатаНачала = НачалоНедели(Дата(ТекущийГод, 1, 1) + (НомерНедели – 1) * 7);
ДатаОкончания = КонецНедели(ДатаНачала);


// Добавляем строку в таблицу
НоваяСтрока = ТаблицаНеделей.Добавить();
НоваяСтрока.НомерНедели = НомерНедели;
НоваяСтрока.ДатаНачала = ДатаНачала;
НоваяСтрока.ДатаОкончания = ДатаОкончания;

КонецЦикла;

// Присваиваем таблицу значений реквизиту на форме
ЭтотОбъект.РеквизитТаблицаНеделей = ТаблицаНеделей;

В этом коде мы:

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

Не забудьте заменить РеквизитТаблицаНеделей на фактическое имя вашего реквизита на форме.