Для того чтобы программно заполнить реквизит типа “Таблица значений” на форме обработки неделями года, можно использовать следующий подход. Мы создадим таблицу значений, добавим в нее колонки для номера недели и других необходимых данных, а затем заполним ее в зависимости от количества недель в году.
Вот пример кода на языке 1С:
// Создаем новую таблицу значений
ТаблицаНеделей = Новый ТаблицаЗначений;
// Добавляем колонки
ТаблицаНеделей.Колонки.Добавить(“НомерНедели”, Новый ОписаниеТипов(“Число”));
ТаблицаНеделей.Колонки.Добавить(“ДатаНачала”, Новый ОписаниеТипов(“Дата”));
ТаблицаНеделей.Колонки.Добавить(“ДатаОкончания”, Новый ОписаниеТипов(“Дата”));
// Получаем текущий год
ТекущийГод = Год(ТекущаяДата());
// Определяем количество недель в году
КоличествоНедель = 52; // По умолчанию 52 недели
Если (Месяц(КонецГода(ТекущийГод)) = 12) И (День(КонецГода(ТекущийГод)) = 31) Тогда
Если (ДеньНедели(КонецГода(ТекущийГод)) = 1) Тогда
КоличествоНедель = 53; // Если 31 декабря – понедельник
КонецЕсли;
КонецЕсли;
// Заполняем таблицу значениями
Для НомерНедели = 1 По КоличествоНедель Цикл
// Определяем даты начала и окончания недели
ДатаНачала = НачалоНедели(Дата(ТекущийГод, 1, 1) + (НомерНедели – 1) * 7);
ДатаОкончания = КонецНедели(ДатаНачала);
// Добавляем строку в таблицу
НоваяСтрока = ТаблицаНеделей.Добавить();
НоваяСтрока.НомерНедели = НомерНедели;
НоваяСтрока.ДатаНачала = ДатаНачала;
НоваяСтрока.ДатаОкончания = ДатаОкончания;
КонецЦикла;
// Присваиваем таблицу значений реквизиту на форме
ЭтотОбъект.РеквизитТаблицаНеделей = ТаблицаНеделей;
В этом коде мы:
- Создаем таблицу значений и добавляем необходимые колонки.
- Определяем текущий год и количество недель в нем.
- Заполняем таблицу значениями, вычисляя даты начала и окончания каждой недели.
- Присваиваем заполненную таблицу реквизиту на форме.
Не забудьте заменить РеквизитТаблицаНеделей на фактическое имя вашего реквизита на форме.