Шаблон «Межотельный период»

Почему в файле строк меньше, чем отёлов

Межотельный период книга не хранит, а считает: разница между датами соседних отёлов. У первого отёла его нет по определению, а аборт и запуск отёлами не считаются.

Колонок в шаблоне
5
Из них кладёт книга
3
Замер по живой базе
30 августа 2026

Что это за шаблон

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

Номер в строке — позднейшего из двух отёлов. «Период до отёла номер три» естественнее, чем «после отёла номер два»: так его и спрашивают у зоотехника, и так он ложится рядом с номером лактации в остальных таблицах.

Колонка называется «Номер отела» — не «Номер лактации», как в соседнем сервис-периоде. Это не описка реестра: сервис-период принадлежит лактации, которая шла, а межотельный период — промежутку между двумя, и назвать его номером лактации значило бы приписать его одной из них.

Обязательные колонки

Базовый номер ФГИАС ПР
Номер животного в реестре, из обратного файла. Без него строки нет — и придержана она будет не по одной, а всеми периодами животного разом, одной записью в отчёте.
Идентификатор учётной системы
Наш ключ. Пуст — придерживаются все периоды этого животного.
Номер отела
Номер позднейшего из двух отёлов. Берётся из самой записи об отёле, а не считается по порядку дат: нумерация сквозная по жизни коровы, и книга не вправе её переписывать под свой порядок.
Межотельный период, дни
Целое от нуля по контракту. Ноль означал бы два отёла в один день, отрицательное — что второй записан раньше первого; ни то ни другое в файл не уезжает.

Что кладёт книга

Файл собирается кнопкой в кабинете. Своего поля под межотельный период в книге нет и не будет: хранимая копия вычислимого расходится с источником в первый же день правки отёла — и расходится молча. Правку даты пришлось бы разносить по всем производным, и однажды не разнесли бы. Поэтому книга обязана уметь его посчитать и отдать, а не хранить.

Отёлы животного сортируются по дате, и период считается между соседними. Дни вычисляются от разобранных чисел даты, а не через часовой пояс машины, на которой запущена выгрузка: иначе на сервере западнее Гринвича период вышел бы на день короче, чем у зоотехника, и заметить это было бы нечем.

В счёт идут только отёлы. Аборт и запуск лежат в той же таблице и различаются типом события — выгрузка отбрасывает их явно, потому что это события внутри лактации, а не её начало. Считать от аборта значило бы назвать межотельным периодом промежуток, в котором отёла не было вовсе. Запись с пустым типом считается отёлом: она заведена до того, как типы появились, а других событий тогда в этой таблице не бывало.

У первого отёла строки нет — и в придержанные он не попадает. Это не пробел в данных, а свойство первого отёла: до него отёлов не было. Отсюда и главный вопрос к этому файлу: строк в нём всегда меньше, чем отёлов, ровно на число отелившихся коров, и это правильно.

Ровно эта же арифметика теперь стоит и за средним межотельным периодом в отчёте по стаду. До недавнего времени отчёт считал его вместе с абортами и запусками — выгрузка отбрасывала их явно, а отчёт нет, — и у хозяйства, ведущего аборты записями, промежуток «отёл — аборт» уходил в число как настоящий.

Где спотыкаются

Отказ реестра называет колонку, а не причину. Ниже — что за ним стоит.

Даты отёлов идут не по порядку
Разница между соседними отёлами вышла нулевой или отрицательной. Это всегда ошибка ввода: либо в дате, либо в привязке события к животному. Строка придерживается с этой причиной, а не отправляется отрицательным числом — контракт требует целое от нуля, и подгонять его к нулю значило бы придумать данные.
Базовый номер ФГИАС ПР
Животное не зарегистрировано в реестре. Придерживаются все его периоды сразу, одной записью в отчёте: перечислять их по одному бессмысленно, работа одна.
Идентификатор учётной системы
Пуст наш собственный ключ. Реестру он нужен, чтобы узнать строку при повторной сдаче; без него та же корова заведёт себе второй набор периодов.
Между отёлами меньше стельности
Проверка качества данных: промежуток короче двухсот семидесяти дней. Реестр такую строку примет — контракт требует лишь целое от нуля, — но корова не может отелиться дважды быстрее, чем длится стельность. Либо ошибка в дате, либо второй записью отмечен аборт, который забыли назвать абортом.
Два отёла под одним номером
У животного несколько отёлов с одинаковым номером — например, два третьих. В файл уедут две строки с одним и тем же значением в колонке «Номер отела», и разобрать их в реестре будет нечем. Причина обычно одна из двух: задвоенная загрузка или съехавшая привязка, когда отёл записался не тому животному.
Пропуск в нумерации отёлов
В ряду номеров не хватает одного. Файл соберётся, но период «до отёла номер пять» окажется длиной в два отёла — то есть числом, которое ничего не меряет. Либо отёл не записан вовсе, либо номера проставлены неверно.

Чего книга не кладёт и почему

Базовый номер животного книга не кладёт — он приходит обратным файлом; «Идентификатор ФГИАС ПР» уходит пустым, как у новой записи и положено по шаблону.

Аборты и запуски книга в этот файл не кладёт и не будет. Они сдаются своим шаблоном «Отёл / Аборт / Запуск», где у них есть тип события, — а здесь их присутствие испортило бы единственное число, ради которого шаблон существует.

Строки первого отёла не будет никогда. Не потому, что данных не хватает, а потому, что величины не существует.

Чего этот шаблон не закрывает

Это не сервис-период. Разница между ними — длительность стельности, и вычитать из межотельного двести восемьдесят пять дней нельзя: ошибка выйдет ровно там, где стельность оказалась короче или длиннее обычной, то есть на тех коровах, ради которых показатель и смотрят.

Шаблон не отчитывается о самих отёлах. Даты, тип события и приплод уезжают отдельным файлом, и без него межотельный период в реестре повиснет числом, за которым нет событий.

Он не объясняет, отчего период длинный: за четырьмястами днями стоит и позднее осеменение, и неудачные попытки, и потерянная стельность — три разные беды, которые лечатся по-разному и различаются только вместе с сервис-периодом.

И он ничего не говорит о первотёлках. Возраст первого отёла — своя величина и свой вопрос, а в этом файле у первого отёла строки нет вовсе.

Слова этой страницы

Определения с нашими числами и с тем, чего каждое слово не означает.

Межотельный периодДни между двумя отёлами одной коровы. У благополучного стада 380–400.
Сервис-периодДни от отёла до плодотворного осеменения — того, от которого корова стала стельной.
СтельностьБеременность коровы. В расчётах книги принята равной 279 дням; отёл раньше 270 дней после предыдущего считается ошибкой записи.
Возраст первого отёлаСколько месяцев было тёлке при первом отёле. Ориентир — 22–25 месяцев при условии 400 кг живой массы к 14–15 месяцам.

Читать дальше