Шаблон «Межотельный период»
Почему в файле строк меньше, чем отёлов
Межотельный период книга не хранит, а считает: разница между датами соседних отёлов. У первого отёла его нет по определению, а аборт и запуск отёлами не считаются.
- Колонок в шаблоне
- 5
- Из них кладёт книга
- 3
- Замер по живой базе
- 30 августа 2026
Что это за шаблон
Реестр просит отдельной таблицей то, что и так следует из уже сданных отёлов: сколько дней прошло между двумя соседними. Своего события за этой строкой нет — есть вычитание одной даты из другой, и всё содержание шаблона в том, какие именно две даты берутся.
Номер в строке — позднейшего из двух отёлов. «Период до отёла номер три» естественнее, чем «после отёла номер два»: так его и спрашивают у зоотехника, и так он ложится рядом с номером лактации в остальных таблицах.
Колонка называется «Номер отела» — не «Номер лактации», как в соседнем сервис-периоде. Это не описка реестра: сервис-период принадлежит лактации, которая шла, а межотельный период — промежутку между двумя, и назвать его номером лактации значило бы приписать его одной из них.
Обязательные колонки
- Базовый номер ФГИАС ПР
- Номер животного в реестре, из обратного файла. Без него строки нет — и придержана она будет не по одной, а всеми периодами животного разом, одной записью в отчёте.
- Идентификатор учётной системы
- Наш ключ. Пуст — придерживаются все периоды этого животного.
- Номер отела
- Номер позднейшего из двух отёлов. Берётся из самой записи об отёле, а не считается по порядку дат: нумерация сквозная по жизни коровы, и книга не вправе её переписывать под свой порядок.
- Межотельный период, дни
- Целое от нуля по контракту. Ноль означал бы два отёла в один день, отрицательное — что второй записан раньше первого; ни то ни другое в файл не уезжает.
Что кладёт книга
Файл собирается кнопкой в кабинете. Своего поля под межотельный период в книге нет и не будет: хранимая копия вычислимого расходится с источником в первый же день правки отёла — и расходится молча. Правку даты пришлось бы разносить по всем производным, и однажды не разнесли бы. Поэтому книга обязана уметь его посчитать и отдать, а не хранить.
Отёлы животного сортируются по дате, и период считается между соседними. Дни вычисляются от разобранных чисел даты, а не через часовой пояс машины, на которой запущена выгрузка: иначе на сервере западнее Гринвича период вышел бы на день короче, чем у зоотехника, и заметить это было бы нечем.
В счёт идут только отёлы. Аборт и запуск лежат в той же таблице и различаются типом события — выгрузка отбрасывает их явно, потому что это события внутри лактации, а не её начало. Считать от аборта значило бы назвать межотельным периодом промежуток, в котором отёла не было вовсе. Запись с пустым типом считается отёлом: она заведена до того, как типы появились, а других событий тогда в этой таблице не бывало.
У первого отёла строки нет — и в придержанные он не попадает. Это не пробел в данных, а свойство первого отёла: до него отёлов не было. Отсюда и главный вопрос к этому файлу: строк в нём всегда меньше, чем отёлов, ровно на число отелившихся коров, и это правильно.
Ровно эта же арифметика теперь стоит и за средним межотельным периодом в отчёте по стаду. До недавнего времени отчёт считал его вместе с абортами и запусками — выгрузка отбрасывала их явно, а отчёт нет, — и у хозяйства, ведущего аборты записями, промежуток «отёл — аборт» уходил в число как настоящий.
Где спотыкаются
Отказ реестра называет колонку, а не причину. Ниже — что за ним стоит.
- Даты отёлов идут не по порядку
- Разница между соседними отёлами вышла нулевой или отрицательной. Это всегда ошибка ввода: либо в дате, либо в привязке события к животному. Строка придерживается с этой причиной, а не отправляется отрицательным числом — контракт требует целое от нуля, и подгонять его к нулю значило бы придумать данные.
- Базовый номер ФГИАС ПР
- Животное не зарегистрировано в реестре. Придерживаются все его периоды сразу, одной записью в отчёте: перечислять их по одному бессмысленно, работа одна.
- Идентификатор учётной системы
- Пуст наш собственный ключ. Реестру он нужен, чтобы узнать строку при повторной сдаче; без него та же корова заведёт себе второй набор периодов.
- Между отёлами меньше стельности
- Проверка качества данных: промежуток короче двухсот семидесяти дней. Реестр такую строку примет — контракт требует лишь целое от нуля, — но корова не может отелиться дважды быстрее, чем длится стельность. Либо ошибка в дате, либо второй записью отмечен аборт, который забыли назвать абортом.
- Два отёла под одним номером
- У животного несколько отёлов с одинаковым номером — например, два третьих. В файл уедут две строки с одним и тем же значением в колонке «Номер отела», и разобрать их в реестре будет нечем. Причина обычно одна из двух: задвоенная загрузка или съехавшая привязка, когда отёл записался не тому животному.
- Пропуск в нумерации отёлов
- В ряду номеров не хватает одного. Файл соберётся, но период «до отёла номер пять» окажется длиной в два отёла — то есть числом, которое ничего не меряет. Либо отёл не записан вовсе, либо номера проставлены неверно.
Чего книга не кладёт и почему
Базовый номер животного книга не кладёт — он приходит обратным файлом; «Идентификатор ФГИАС ПР» уходит пустым, как у новой записи и положено по шаблону.
Аборты и запуски книга в этот файл не кладёт и не будет. Они сдаются своим шаблоном «Отёл / Аборт / Запуск», где у них есть тип события, — а здесь их присутствие испортило бы единственное число, ради которого шаблон существует.
Строки первого отёла не будет никогда. Не потому, что данных не хватает, а потому, что величины не существует.
Чего этот шаблон не закрывает
Это не сервис-период. Разница между ними — длительность стельности, и вычитать из межотельного двести восемьдесят пять дней нельзя: ошибка выйдет ровно там, где стельность оказалась короче или длиннее обычной, то есть на тех коровах, ради которых показатель и смотрят.
Шаблон не отчитывается о самих отёлах. Даты, тип события и приплод уезжают отдельным файлом, и без него межотельный период в реестре повиснет числом, за которым нет событий.
Он не объясняет, отчего период длинный: за четырьмястами днями стоит и позднее осеменение, и неудачные попытки, и потерянная стельность — три разные беды, которые лечатся по-разному и различаются только вместе с сервис-периодом.
И он ничего не говорит о первотёлках. Возраст первого отёла — своя величина и свой вопрос, а в этом файле у первого отёла строки нет вовсе.
Слова этой страницы
Определения с нашими числами и с тем, чего каждое слово не означает.
| Межотельный период | Дни между двумя отёлами одной коровы. У благополучного стада 380–400. |
|---|---|
| Сервис-период | Дни от отёла до плодотворного осеменения — того, от которого корова стала стельной. |
| Стельность | Беременность коровы. В расчётах книги принята равной 279 дням; отёл раньше 270 дней после предыдущего считается ошибкой записи. |
| Возраст первого отёла | Сколько месяцев было тёлке при первом отёле. Ориентир — 22–25 месяцев при условии 400 кг живой массы к 14–15 месяцам. |