Загрузка данных


Чтобы отследить, откуда берутся данные и сработала ли загрузка из регистра или дефолтного макета, можно добавить вывод сообщений в ключевые точки `ПрочитатьДанныеПроизводственногоКалендаря`.

### Куда добавить комментарии и отладку

```bsl
&НаСервере
Процедура ПрочитатьДанныеПроизводственногоКалендаря(ПроизводственныйКалендарь, НомерГода)
	
	// 1. Получаем данные из регистра сведений
	ТЗДанные = Справочники.ГрафикРаботы.ДанныеПроизводственногоКалендаря(ПроизводственныйКалендарь, НомерГода);
	
	// Очередь проверки: сколько строк реально прочиталось из регистра
	Сообщить(СтрШаблон("[ОТЛАДКА] Из регистра прочитано строк: %1", ТЗДанные.Количество()));
	
	// 2. Если в регистре пусто — переходим на заполнение по умолчанию
	Если ТЗДанные.Количество() = 0 И ЗначениеЗаполнено(Объект.ПроизводственныйКалендарь) Тогда
		
		Сообщить("[ОТЛАДКА] Регистр пуст! Вызывается заполнение по умолчанию из макета/функции.");
		
		ТЗДанные = Справочники.ГрафикРаботы.РезультатЗаполненияПроизводственногоКалендаряПоУмолчанию(
			Объект.ПроизводственныйКалендарь, НомерГода, Объект.ПроизводственныйКалендарь
		);
		
		Сообщить(СтрШаблон("[ОТЛАДКА] Из макета по умолчанию сформировано строк: %1", ТЗДанные.Количество()));
	КонецЕсли;
	
	ПреобразоватьДанныеПроизводственногоКалендаря(ТЗДанные);

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

```

```bsl
&НаСервере
Процедура ПреобразоватьДанныеПроизводственногоКалендаря(ДанныеПроизводственногоКалендаря)
	
	ВидыДнейСоответствие = Новый Соответствие;
	ПереносыДнейСоответствие = Новый Соответствие;
	
	Для Каждого СтрокаТаблицы Из ДанныеПроизводственногоКалендаря Цикл
		ВидыДнейСоответствие.Вставить(СтрокаТаблицы.Дата, СтрокаТаблицы.ВидДня);
		Если ЗначениеЗаполнено(СтрокаТаблицы.ДатаПереноса) Тогда
			ПереносыДнейСоответствие.Вставить(СтрокаТаблицы.Дата, СтрокаТаблицы.ДатаПереноса);
		КонецЕсли;
	КонецЦикла;
	
	// Проверяем, сколько уникальных дат попало в массив до генерации отсутствующих дней
	Сообщить(СтрШаблон("[ОТЛАДКА] В соответствие видов дней загружено исходных дат: %1", ВидыДнейСоответствие.Количество()));
	
	// Дополнение отсутствующих дней года
	ДатаДня = Дата(НомерТекущегоГода, 1, 1);
	ДатаОкончания = Дата(НомерТекущегоГода, 12, 31);
	СчетчикДописанныхДней = 0;
	
	Пока ДатаДня <= ДатаОкончания Цикл
		Если ВидыДнейСоответствие[ДатаДня] = Неопределено Тогда
			НомерДня = ДеньНедели(ДатаДня);
			Если НомерДня <= 5 Тогда
				ВидДняПоУмолчанию = Перечисления.ВидыДнейПроизводственногоКалендаря.Рабочий;
			ИначеЕсли НомерДня = 6 Тогда
				ВидДняПоУмолчанию = Перечисления.ВидыДнейПроизводственногоКалендаря.Суббота;
			Иначе
				ВидДняПоУмолчанию = Перечисления.ВидыДнейПроизводственногоКалендаря.Воскресенье;
			КонецЕсли;
			ВидыДнейСоответствие.Вставить(ДатаДня, ВидДняПоУмолчанию);
			СчетчикДописанныхДней = СчетчикДописанныхДней + 1;
		КонецЕсли;
		ДатаДня = ДатаДня + 86400;
	КонецЦикла;
	
	Сообщить(СтрШаблон("[ОТЛАДКА] Автоматически дозаполнено пропущенных дней: %1", СчетчикДописанныхДней));
	Сообщить(СтрШаблон("[ОТЛАДКА] Итого дней в соответствии: %1", ВидыДнейСоответствие.Количество()));
	
	ВидыДней = Новый ФиксированноеСоответствие(ВидыДнейСоответствие);
	ПереносыДней = Новый ФиксированноеСоответствие(ПереносыДнейСоответствие);  
	
КонецПроцедуры

```

### Что будет видно в окне сообщений:

* Если из регистра прочитано больше 0 строк, значит записи были в базе.
* Если прочитано 0 строк и выводится сообщение про макет — регистр был пуст.
* По значению `Автоматически дозаполнено пропущенных дней` будет видно, сколько именно дней пришлось рассчитывать вручную на лету.