Інструкція користувача
Повний посібник з роботи в застосунку · версія 2.40.548
—
1 Основи: вхід, гілки, ролі

Вхід. Кожен користувач заходить під своїм логіном і паролем. Забули пароль — зверніться до адміністратора (він скине його в розділі «Користувачі»). Пароль — щонайменше 8 символів. Давній коротший пароль ще пускає, але після входу згори зʼявиться нагадування змінити його (кружок угорі праворуч → «Пароль»). На сервері ферми сторінка входу не показує перелік логінів — його треба вводити.

Двофакторний вхід (адміністратори). Кружок угорі праворуч → «Двофакторний вхід»: поставте на телефон Google Authenticator або Microsoft Authenticator, відскануйте QR-код і введіть 6 цифр. Після цього вхід — пароль і свіжий код із телефона: без телефона пароль сам по собі вже не пускає. Діє лише на сервері ферми (адреса …bovio.pro); на компʼютері з застосунком Bovio код не питається — там вхід мусить працювати й без інтернету. Вимкнути — там само, з паролем і кодом. Загубили телефон — інший адміністратор у «Користувачах» натискає «скинути» біля позначки «🛡 2FA».

Перепит перед тим, що не відкотиш. Видалення запису, скасування накладної, повторне проведення дня, заміна бази — усе це питає підтвердження одним і тим самим вікном застосунку: у ньому видно, що саме станеться, а кнопка називає дію («Видалити», «Скасувати накладну», «Провести»), а не безлике «ОК». Enter погоджується, Escape відмовляє. Вікон браузера («Цей сайт повідомляє…») в застосунку більше немає.

Гілки виробництва. Зліва вгорі — перемикач гілок: Головна (огляд усього), Управління стада, Аптека (медикаменти), Матеріали. Кожна гілка має власний склад і документи; перемикання не змішує дані.

Стежка — де ви були. Тонкий рядок під шапкою, над пошуком тварини: останні 7 сторінок гілок — пункти бічного меню (Головна, Рух поголівʼя, Календар, Склад аптеки…). Ліворуч — де ви зараз (виділено кольором), далі вправо — крок назад, два… Картка тварини рахується як «Головна». На кожній плитці — значок її гілки (🐄, 💊…). Клік по плитці — одразу туди; повернулись на сторінку, де вже були, — вона стає першою, а не двоїться. Під час прокрутки рядок лишається вгорі. Стежка своя в кожного користувача й памʼятається в цьому браузері.

Виправити внесену подію. У картці тварини в «Історії подій» натисніть ✎ біля рядка. Змінити можна ВСЕ, що подія питає: дату, нотатку й самі відповіді — бика, техніка, спосіб осіменіння, результат перевірки тільності, причину бракування тощо. Після збереження параметри тварини перераховуються з усіх її подій, тож «днів тільності», очікуваний отел і репродуктивний код стають правильні самі. Приплід отелу й службові позначки при цьому не чіпаються. Якщо подія внесена групою, унизу видно її номер — виправиться лише ця тварина, решта голів лишиться як була.

Ролі. «Адміністратор» бачить усі розділи (Користувачі, База даних, Ліцензія, Налаштування). Звичайний користувач працює зі складом, приходом і видачею.

Підказки. Наведіть мишу на кнопку чи значок — пояснення зʼявляється одразу, без очікування.

2 Огляд (головна сторінка гілки)

Угорі три показники: баланс складу за закупівельними цінами (з кількістю позицій і одиниць), видано сьогодні та видано за місяць — під останнім стовпчики видачі за 30 днів (наведіть на стовпчик — сума за день). Клік по показнику веде у відповідний розділ.

Потребує уваги — не лише числа, а самі препарати: прострочені партії (червоні), термін спливає за 30 днів (жовті) і ті, яких на складі не більше мінімуму (сині). Позначки «прострочено · скоро термін · мало на складі» в шапці ведуть на Терміни чи Склад. Нічого не горить — так і написано.

Нижче — Найбільше видавали за місяць (значок колонок праворуч задає, що показувати) і Останні операції: прихід, видача, списання з датою й сумою.

3 Склад і товари

Список товарів. Розділ «Склад» показує всі позиції з поточним залишком. Клацніть по товару, щоб побачити його партії (кожен прихід — окрема партія з ціною і терміном).

Рядок над таблицею: пошук, далі фільтри — залишок, термін, постачальник, одиниця (увімкнений фільтр підсвічується синім, поруч зʼявляється ✕ «скинути все»). Праворуч значки: колонки таблиці, зелений значок Excel і + — новий товар. Назву значка видно при наведенні.

Значок Excel (зелений квадрат із «X») стоїть на кожній сторінці Аптеки й Матеріалів і вивантажує те, що зараз на екрані: видимі колонки, відібрані фільтром рядки (в Історії приходу й видачі — операції за вибраний період, рядок на позицію). Штрихкоди й коди у файлі — текстом, суми — числами.

Той самий значок стоїть і в інших гілках — у шапці кожної таблиці: Рух годівлі, Огляд годівлі, Виробництво КК, Надої, Продаж і Облік молока, Фінанси, Рух поголівʼя, Події, Календар (у кожного списку), Здоровʼя, Продаж худоби, «Робота зі стадом». Багатоярусна шапка у файлі стає «Група · Колонка».

Терміни в партіях підсвічуються кольором: що ближче кінцевий термін, то яскравіше попередження. Код товару — 6 знаків, для швидкого пошуку та сканера. У пошуку почніть вводити назву або код — список фільтрується миттєво.

Вирівняти залишок (інвентаризація). Якщо на складі фактично не стільки, скільки в обліку, розкрийте товар і натисніть ⚖ Вирівняти залишок у шапці блоку «Надходження» (та сама кнопка є у стовпці дій рядка). Вводите фактичну кількість — програма сама показує різницю й проводить її з вашою причиною: нестача списується зі старіших партій (FIFO), надлишок стає окремою партією за середньою ціною закупки.

Коли треба поправити саме одну партію (бій, пересортиця, зайве в конкретному приході) — кнопка ± у рядку партії: там кількість і сума рахуються за ціною цієї партії.

4 Прихід (надходження на склад)

Якщо списання лягли не на ту партію. Прив\'язка руху до партії фіксується в момент проведення, тож накладна, внесена пізніше за списання, лишає старішу партію недоторканою. Годівля → ⚙️ Налаштування → «Залишок корму на дату» → оберіть корм і натисніть ↺ Переписати списання за FIFO: спершу покажемо план, і лише після підтвердження кожне списання візьме корм зі старішої партії, якщо вона на ту дату вже надійшла. Кількості, дати й документи не змінюються.

Якщо залишок «завис» не на тій партії. Буває, коли накладну внесли пізніше за списання: тоді частина корму списалась із новішої партії, хоча старіша ще не вичерпана. Годівля → ⚙️ Налаштування → панель «Самоперевірка» → кнопка ⚖ Вирівняти партії: залишок розкладеться за датою приходу (спершу витрачаються старіші). Документи, кількості й дати списань при цьому не змінюються.

Дата приходу. Товар стає на облік саме тією датою, яку ви вказали в документі, а не днем, коли внесли накладну. Тому накладну можна вносити заднім числом — залишки, звіти руху й собівартість за минулі дні порахуються правильно. (З версії 1.61.7; наявні приходи вирівнюються автоматично при першому запуску.)

Сторінка має дві вкладки: Прихід (нові накладні) і Історія (уже проведені — найсвіжіші за датою приходу зверху, суми стоять рівними стовпцями). Накладних можна вести кілька одночасно — кожна зі своїм постачальником і датами; скан потрапляє в ту, що відкрита.

  1. Натисніть «+ Накладна» і заповніть шапку: постачальник, номер, дата накладної, дата приходу. «№ » підставляється саме.
  2. Скануйте штрихкод або почніть вводити назву — товар потрапляє в накладну. Невідомий штрихкод одразу відкриває міні-форму нового товару.
  3. Введіть кількість і ціну. Ціну можна вводити з ПДВ або без — друга порахується за ставкою; замість ціни можна ввести суму рядка. Десяткові — через кому.
  4. «Провести прихід» — залишки збільшаться, створяться партії. Товар стає на облік датою приходу з документа.

Виправити проведену накладну. Вкладка «Історія» → олівець ✎ у шапці накладної. Картка перемикається в правку: шапка (постачальник, №, дати), кількість, ціни та ставка ПДВ по кожному рядку. Хрестик прибирає позицію з накладної (повторний клік — повертає). Поле «+ Додати позицію» під таблицею шукає товар за назвою чи штрихкодом і додає його новим рядком (позначка «нова»): впишіть кількість і ціну — після збереження він стане приходом цієї самої накладної. «Зберегти зміни» застосовує все разом, «Видалити накладну» прибирає її повністю.

Що саме програма не дасть зробити: якщо з партії вже видавали, її кількість не можна опустити нижче виданого, а саму позицію (і всю накладну) не видалити — спершу скасуйте ті видачі. Правка приходу не змінює ціну продажу товару.

5 Видача та списання

Аптека і Матеріали — нова видача накладними. Зверху дві вкладки: Видача і Історія. Робота йде накладними — їх може бути кілька одночасно, кожна на свою людину і групу:

  1. Оберіть дату (перемикач ‹ дата › + «Сьогодні», можна заднім числом). Кнопка + Накладна створює нову накладну; у її шапці — кому видано (жирним) і група (Корови/Молодняк/Свині).
  2. Скануйте штрихкод або починайте вводити назву — товар потрапляє в активну (підсвічену) накладну, фокус одразу стрибає на кількість: скан → число → Enter → знову скан, без миші. Блок напроти товару підставляється сам (останній використаний для цього товару в цій групі).
  3. У рядку видно «лишиться N» після видачі; якщо кількість більша за залишок — рядок червоний. Жовта/червона позначка «терм.» попереджає, що FIFO спише партію з близьким або простроченим терміном.
  4. Кожна накладна проводиться своєю кнопкою «Провести видачу» — інші лишаються в роботі. Накладні можна згортати (клік по шапці), згорнути всі (кнопка-іконка) або видалити (кошик, з підтвердженням). Набране зберігається навіть після закриття сторінки.

Історія — операції картками (згорнуті, розкриваються кліком), з періодами Сьогодні / Тиждень / Місяць / Період, вибором місяця і пошуком. У кожній операції: ↻ повторити (нова накладна з тими самими позиціями), ✎ редагувати і ⊘ скасувати з поверненням на склад.

Списання — той самий екран, перемикач «Видача | Списання» зверху: накладна без «кому» і блоків, з полем «Причина списання».

Годівля (корми): ручна видача корму на групу рахується як спожитий корм — входить у «Рух годівлі» та у собівартість («Всього витрачено», «Витрачено на корм», «Корм на 1 кг молока» для Корів). Якщо корм пішов не в годівлю (напр. солома-підстилка), постав галочку «Не корм (підстилка)» у панелі видачі — тоді він ляже лише у витрати складу, але НЕ рахуватиметься як спожитий корм і не піде у ₴/л. Списання корму (втрати: порча, угар тощо) у споживання не входить — лише у витрати.

Таблиці видачі (по днях). На сторінці «Видача» гілки «Годівля» вгорі — перемикач 📝 Видача / 📊 Таблиця (по днях). Таблиць може бути кілька (вкладки, кнопка + таблиця). Створили таблицю — над нею зʼявляються два поля: Категорія (Корови/Молодняк/Свині) і Підкатегорія (списком із Довідників; пункт «+ нова підкатегорія…» створює нову). Поруч — Днів (за замовчуванням 7).

Шлях налаштування. Доки щось у програмі не доведено до ладу, згори зʼявляється смужка з найважливішим незакритим кроком: що саме не налаштовано, навіщо це потрібно і кнопка переходу. Де дія однозначна — є кнопка, яка робить її просто звідти (у підписі видно, якого пристрою це стосується). Для складніших кроків є «як це зробити» — покрокова інструкція з посиланнями (наприклад, як завести Telegram-бота через @BotFather). Кроки персональні: ви бачите лише те, що стосується ваших гілок і прав. Свідомо непотрібний крок приберіть кнопкою «пропустити» — більше не нагадає.

Компʼютери ферми й оновлення. На сторінці «🧭 Як налаштовано» видно кожен компʼютер, що обмінюється з фермою: хто на ньому працює, яка версія і чи прийме він підписане оновлення (таке не можна підмінити дорогою). «Треба перевстановити» — поставте застосунок заново з bovio.pro/download, дані лишаються на місці. «Невідомо» — там ще стара версія, стан зʼявиться після найближчого оновлення. Коли всі компʼютери «приймають», оновлення почнуть виходити з підписом.

Щоранку як учора. У панелі таблиці є галочка й час: у вказану годину застосунок сам бере останній день, де ця таблиця щось видавала, підставляє ті самі кількості на сьогодні й одразу списує. Якщо за сьогодні вже щось видано — неважливо, автоматикою, людиною чи з іншого компʼютера — автоматика день не чіпає. Поруч із часом є вибір де їй працювати: «де ведеться ферма» (за замовчуванням), «на серверній фермі» або «на цьому пристрої». Виконує рівно один пристрій — той, який ви оберете: якщо годівлю ведуть у застосунку на компʼютері, оберіть на ньому «на цьому пристрої», і решта екземплярів для цієї таблиці мовчатимуть (інакше кожен спрацює о своїй годині й видача помножиться). Не згодні з цифрами — просто виправте їх у таблиці й натисніть «Провести ще раз»: рахується різниця, задвоєння немає. Кнопка «зараз» робить те саме одноразово, не чекаючи ранку. Налаштування своє для кожної таблиці; поруч видно, коли автоматика спрацьовувала востаннє і що зробила.

Далі додайте корми-стовпці кнопкою + у шапці таблиці (× — прибрати). Перша колонка — дата; проставляєте кг по днях і тиснете «Списати» у рядку — створюється видаткова відомість. Накладна — одна на день на КАТЕГОРІЮ: усі підкатегорії цієї категорії (напр. Телят_0-3 і Телята_3-6) потрапляють в один документ окремими рядками, кожен зі своєю групою; інша категорія (напр. Свині) — це вже окрема накладна. Статуси: ✓ списано, ◐ змінено («Провести ще раз» — перераховується різниця, задвоєння немає), ● не списано. Солома-підстилка. У шапці стовпця є перемикач 🌾/🛏 — натисніть його, щоб позначити корм як підстилку (заголовок стане піщаним із підписом «підстилка»). Такі списання йдуть у витрати складу, але НЕ рахуються як спожитий корм і не потрапляють у «₴ на 1 л». Це те саме, що галочка «Не корм (підстилка)» у звичайній видачі.

Клітинки показують фактичну історію видачі; якщо частину видано не цією таблицею, під числом видно скільки. 🧹 Очистити період прибирає ручну видачу за показаний період (корм повертається на склад) — щоб внести все заново.

Звіт-2: Зріз годівлі за день (сторінка 🌾 Огляд годівлі, під плитками) — реальний відбиток процесу за день. Угорі зведення: скільки було роздач і в які години, завантажено (з планом і точністю), роздано, витрата корму ₴ без ПДВ. Далі — блок «🚜 Годівля — хід дня»: кожен кормороздатчик окремою карткою, у тій послідовності, як ішла робота. У картці: № роздачі, назва міксера, час (🕐 старт завантаження → період роздачі), секція, раціон і поголівʼя; таблиця завантаження по інгредієнтах (план, факт, відхилення, точність, ₴ без ПДВ) і підсумковий рядок роздачі — скільки роздано, точність роздачі та ₴ на голову. Нижче окремий блок «🏭 Виготовлення комбікорму» — воно показане окремо від годівлі, бо це не роздача: комбікорм увійде у витрати тоді, коли його згодують. Тут видно компоненти і виготовлений КК з ціною за кг без ПДВ; заміси, які того дня були у звіті, але ще не проведені як виробництво, показані жовтим із позначкою «ще не проведено». Поруч із виробництвом — підсумок по секціях: завантажено на секцію, кг на голову, залишок, спожито, ₴ на голову й сума, з рядком «Всього по стаду».

PDF окремо для кожного звіту. Біля перемикача дат кожного звіту є кнопка ⭳ PDF — вона зберігає у PDF тільки цей звіт (Звіт-1 або Звіт-2 окремо, а не обидва разом).

Звіт-3: Щоденна ефективність молочної ферми. Внизу сторінки 🌾 Огляд годівлі — розгорнутий дашборд: KPI власника (виручка, маржа, надій/гол, DMI, конверсія, точність), управлінський P&L, виробничі та годівельні KPI, графік динаміки за 7 днів і дві щоденні таблиці (молоко; корми та економіка корму). Має свій перемикач день / період. Фактичні дані (надій, продаж, поголів'я, розхід корму, точність) — з бази; фінансові показники (позначені *) рахуються за приблизними ставками з розділу «Припущення» і поки є оцінкою. Тепер цей звіт живе у «Фінансах» → «Огляд» і відкривається одразу: його рахує фоновий процес, тож після змін даних угорі видно «Оновлюю числа…» — показано попереднє, свіже з'явиться само.

У таблиці «5.2 Корми та економіка корму» є перемикач груп (Усе стадо / Молодняк / Корови фуражні / дійні / сухостій), колонки Корм/гол спожито, Втрати/гол, Вартість/кг корму (вартість завантаженого ÷ завантажено). Клік по даті розгортає розкладку по раціонах дня: секція, назва раціону, план/роздано/спожито/залишок, вартість, ₴/кг. У «5.1 Виробництво молока» колонка Різниця = Прийнято мз − Продано (прийнято більше → зелене «+»).

Завантаження звіту з Profeed (API). ⚙️ Налаштування годівлі → «Завантаження звіту з Profeed»: вкажіть email і пароль Profeed, номер ферми (farm) та код звіту латиницею (напр. pleshkani_report) — і натисніть «Зберегти». Поле «Імʼя файлу» задає, як називати збережений звіт: до назви автоматично додається дата (feedreport → feedreport_2026-08-16.xlsx); можна вписати {date} у потрібному місці, а порожнє поле лишає назву від Profeed. Мова звіту завжди українська (під неї налаштований розбір заголовків). Кнопка «Перевірити доступ» звіряє логін без завантаження файлу. Кнопка «⤓ Завантажити зараз» тягне звіт за вказаний період у теку звітів Profeed і (якщо стоїть галочка) одразу списує нові заміси. Завантажується звіт за сьогодні, а з галочкою «і за вчора» — ще й вчорашній (окремим файлом; вчорашній день у Profeed часто дописується вже після півночі; щойно галочку ввімкнули й зберегли — обидва дні завантажуються одразу, не чекаючи розкладу). Галочка «оновлювати кожні … хв» (типово 60; можна від 1 до 1440) і поля «з … по …» — застосунок робить це сам із заданою частотою лише у вказаному проміжку доби (напр. з 06:00 по 17:00 — останнє завантаження саме о 17:00; порожні поля — цілодобово; проміжок через північ теж працює), перезаписуючи файли свіжими версіями, після чого списує лише ті заміси, яких ще не було. Стан видно на плитках Сьогодні / Вчора (файл і час оновлення), Списано замісів і Наступне завантаження (час і скільки лишилось), а нижче — журнал завантажень: час, день, файл, спосіб запуску (авто/вручну), скільки списано і стан (новий / оновлено / збій із текстом помилки). Пароль зберігається лише локально в базі цього ПК.
Якщо зʼявляється помилка CERTIFICATE_VERIFY_FAILED — на цьому ПК немає кореневих сертифікатів. Застосунок сам пробує знайти їх (пакет certifi або системний набір ОС); якщо не допомогло — натисніть «Оновити бібліотеки» в Налаштуваннях, це встановить certifi.

Архів звітів. ⚙️ Налаштування годівлі → «Архів звітів»: позначте давні файли (чи «Виділити до дати») і натисніть «Архівувати вибрані». Заміси з них спершу лягають у базу, потім файли переїжджають у підтеку _archive тієї самої теки — у робочій лишаються лише свіжі, і сторінки відкриваються швидше. Коли тека звітів лежить в OneDrive, а працюєте в браузері (на сервері), файли переносяться саме в OneDrive — так само їх побачите й на ПК. Архівування йде фоном (буває до хвилини): біля кнопки видно, на якому воно кроці, а наприкінці — скільки файлів перенесено; сторінку можна оновити, робота не перерветься. Не вдалося перенести якийсь файл — сторінка назве його, а він лишиться на місці; архівувати можна повторно.

Залишок корму на дату (балансування). ⚙️ Налаштування годівлі → «Залишок корму на дату»: оберіть корм, дату та спосіб. Поруч показано обліковий залишок на обрану дату.
Початковий залишок — вкажіть, скільки має бути на цю дату. Система відкоригує первинний (найраніший) прихід корму на різницю, тож залишок на вказану дату стане саме таким; ціна й накладна приходу зберігаються, зайвих коригувальних рухів не створюється. Якщо приходів до цієї дати ще немає — створюється стартовий прихід цією датою.
Інвентаризація — вкажіть фактичний залишок; система проведе лише різницю: лишок — приходом, нестачу — списанням. Поле «Різницю віднести»: Лише склад — просто вирівняти залишок (у витрати не йде); Втрати — різниця стає збитком і видно її у витратах годівлі; На групу — обираєте категорію/підкатегорію груп і вводите ± кількість (додатне додає, відʼємне віднімає на цю дату), корм лягає в собівартість цієї групи.
Рухи створюються саме вказаною датою, тож «Рух годівлі» й залишки по днях перераховуються автоматично.
Помилилися? Під кнопкою «Провести» є список «Проведені балансування»: дата, корм, спосіб, куди віднесено, ± кг і час проведення. Кнопка «↩» у рядку скасовує саме цей запис (не обовʼязково останній): створені рухи прибираються, а змінений прихід повертається до попередньої кількості. Галочка «лише обраний корм» залишає у списку записи по вибраному корму. Балансування, зроблені до появи журналу, теж показані (позначка «без журналу») і теж скасовуються — застосунок знаходить їх за самими рухами складу.
Де видно втрати. Різниця, віднесена на Втрати, видно в 🌾 Огляді годівлі → Звіт-3 (щоденна ефективність) як утилізація і втрати. Різниця, віднесена на групу, окремо не виділяється — вона лягає у витрати цієї групи (Рух годівлі, звіти по секціях/категоріях). Різниця «Лише склад» у витрати не потрапляє — тільки вирівнює залишок.

Права користувачів. Для кожної гілки виробництва людині задається рівень: перегляд (тільки дивитися), робота (щоденні дії — внесення, видача, проведення) або керування (ще й налаштування гілки: колонки молока, звіти Profeed, рецепти, довідники). Якщо гілки не задані взагалі — доступ до всіх на рівні «робота», як було раніше. Адміністратор керує всім.

Обмін із Telegram-ботом рівні доступу НЕ зупиняють: він іде у фоні кожні три хвилини сам по собі, без чийогось входу в програму. Рівень вирішує лише, хто натисне кнопки: «Обмін зараз» доступний із рівнем «робота», а налаштування бота і Telegram-звіти — лише з «керуванням».

Годівля, що дає який рівень. З рівнем робота людина веде день: прихід кормів, видача й видача за таблицею, коригування залишку, проведення замісів комбікорму зі звітів Profeed («↻ Оновити» у «Останніх виробництвах» і кнопка «Провести» на чернетці), виробництво вручну і «✓ Зафіксувати списання» на сторінці Рух годівлі. За рівнем керування лишається те, що налаштовує ферму, а не веде день: тека звітів Profeed, рецепти комбікормів, автосписання й розподіл залишків, «↩ Скасувати всі списання», виправлення факту в уже проведеному замісі, Telegram-звіти і ⚙ Налаштування годівлі.

Рівень «керування» відкриває саме те, що раніше вимагало адміністратора: ⚙ Налаштування гілки в меню, Telegram-звіти гілки, «Джерело поголівʼя», рецепти комбікормів і роботу з замісами Profeed на сторінці «Виробництво». З рівнем «робота» ці пункти просто не показуються.

Робота на ПК без інтернету. У супутниковому режимі компʼютер тепер приймає не лише складські операції: виробництво комбікорму, списання й видачу кормів, залишки ЗМР, молоко, поголівʼя та довідники. Кожна така дія виконується на ПК і стає в чергу; щойно зʼявляється звʼязок, сервер повторює її в себе від імені того самого користувача, з його ж правами. Повторне надсилання нічого не задвоює. У «Реєстрі обміну» видно, що саме поїхало: «виробництво КК 1, залишки ЗМР 1».

На ПК лишились недоступними лише дві речі, і обидві навмисно: завантаження звіту з Profeed через інтернет (це робить сама ферма, інакше два компʼютери качали б той самий файл) і скасування проведеного виробництва (документ адресується за номером рядка, який на ПК і на сервері може розійтися). Обидві — у браузері на фермі.

Номер видається найменший вільний, а не «наступний за найбільшим»: досить одному товару мати випадково великий номер, і всі наступні стрибали б за ним. Номер видаленого товару лишається за ним і повторно не видається.

Кожен товар отримує номенклатурний номер одразу при створенні — і в браузері, і на компʼютері; номер їде на ферму разом із товаром. Товарам, які лишились без номера раніше, він видається сам при оновленні.

Видалення товару на ПК теж доїжджає на ферму — раніше товар зникав лише на компʼютері, а наступна копія з сервера повертала його назад. Видалення шукає товар за штрихкодом, а не за номером рядка, тож спрацьовує навіть тоді, коли товар створювали на ПК.

Прихід кормів на ПК. У полі пошуку приходу можна вводити назву — у полі лишиться саме назва, а не службовий номер. Товар знаходиться і за штрихкодом, і за внутрішнім кодом, тож корми без штрихкоду теж оприбутковуються. Форма «Новий товар» відкривається лише тоді, коли товару справді немає; якщо дія заборонена правами, застосунок скаже причину, а не запропонує завести дубль.

Теки й файли — у кожного ПК свої. Шлях до звітів Profeed (а також тека оновлень і тека копій) належить конкретному компʼютеру: його можна змінити прямо на ПК, він переживає оновлення копією з ферми і на сервер не їде. Тому заміси, що чекають проведення, кожен компʼютер бачить зі СВОЄЇ теки — якщо на якійсь машині OneDrive ще не завантажив свіжий звіт, там заміса не буде, хоч би скільки разів синхронізуватись.

Синхронізація на видноті. На ПК у супутниковому режимі у шапці праворуч стоїть пігулка синхронізації: зелена «Синхронізовано 19:46» — усе на фермі, бурштинова «Відправляю · 2» — зміни ще їдуть, червона «Офлайн · 3 зміни тут» — немає звʼязку (зміни збережено на ПК). Наведіть — підказка скаже, коли віддано й отримано. Натиснути її можна будь-коли й будь-кому: спершу поїде все, що в черзі, потім прийде свіжа копія з ферми. Без кнопки те саме відбувається само: кожна зміна їде на ферму за кілька секунд, а за ~15 секунд тиші ПК забирає свіжу копію (і ще раз на 10 хвилин). Без інтернету зміни зберігаються на ПК — «офлайн · N змін збережено тут» — і поїдуть самі, щойно зʼявиться звʼязок. Запис, щойно створений на ПК, можна виправити чи прибрати після того, як він доїхав на ферму (зазвичай за хвилину).

Де людина вносить зміни. У картці користувача є вибір: будь-де, лише у браузері на фермі, на будь-якому компʼютері — або на конкретному компʼютері зі списку робочих місць ферми. Привʼязка до місця — жорстка: людина, чиє місце — конкретний ПК, не ввійде з іншого компʼютера (одразу відмова з назвою її робочого місця), а у браузері на фермі зможе лише дивитись. Той, чиє місце — сервер, не ввійде на жодному ПК. Так у кожного своє місце і немає потреби заходити під чужим обліковим записом. Адміністратор працює лише з сервера — на компʼютері йому доступний тільки службовий режим (посилання на ферму, вимкнення супутникового режиму).

Прихід у новому вигляді (аптека й матеріали). Та сама механіка, що у видачі: велике поле сканера, кілька накладних одночасно — кожна зі своїм постачальником, № і датами, — і «Провести прихід» на кожній окремо. Цикл без миші: скан → к-сть → Enter → ціна → Enter → знову скан; ціни можна вводити і з ПДВ, і без — друга рахується за ставкою. Невідомий штрихкод одразу відкриває міні-форму нового товару. Незавершені накладні зберігаються як чернетки й переживають закриття сторінки. Вкладка «Історія» — проведені накладні картками за період; там же їх можна виправити (олівець у шапці накладної). Так само виглядає прихід у всіх гілках, зокрема в кормах.

Хто що може. На сторінці «Користувачі» є матриця: усі люди × усі гілки одним екраном — хто дивиться, хто вносить, хто керує, і де кожен працює. Рівень міняється прямо в клітинці й зберігається одразу.

Хто що зробив. Там же — журнал дій обраної людини: останні 15 документів (видача, прихід, списання, виробництво) і правки, з часом і компʼютером, з якого це зроблено.

Мої задачі на день. На головній сторінці кожен бачить свій список щоденної роботи за власними правами: що вже зроблено (✅), що ще чекає (⭕). Задача закривається сама — за фактом у базі, а не галочкою. Якщо справу робить автоматика на іншому робочому місці, це підписано поруч.

Перший вхід і робоче місце. Нового працівника не треба привʼязувати руками: при першому вході з компʼютера ферма закріпить його за цією машиною сама. Далі вхід з іншого компʼютера відхиляється одразу. Змінити місце може адміністратор — у картці користувача або в матриці «Хто що може».

Оновлення застосунку — саме, через три хвилини. Коли зʼявляється нова версія, у куті сторінки стає сповіщення з відліком: «Оновлю через 3:00». Натискати нічого не треба — застосунок оновиться сам. Хочете раніше — «Оновити зараз»; не на часі — «Відкласти на 30 хв», і за пів години він нагадає ще раз.
Посеред роботи не оновлює. Якщо ви в цю мить заповнюєте поле або у вас відкрите вікно, відлік дочекається: у сповіщенні так і написано — «Чекаю: ви заповнюєте поле». Оновлення станеться, щойно звільнитеся, тож недописана форма не пропаде.
Це працює у двох випадках, і обидва виглядають однаково: (1) ферму в хмарі вже оновили, а у вашій вкладці ще старий код — сторінка перезавантажиться сама (раніше для цього тиснули Ctrl+F5); (2) вийшов новий пакет для компʼютера — застосунок його поставить і сам перезапуститься, повернувши ту саму сторінку вже на новій версії. Сповіщення бачить кожен користувач: компʼютери працюють окремо один від одного, адміністратор для цього не потрібен.
Застосунок має бути завжди відкритим. Поки він закритий, цей компʼютер не обмінюється даними з фермою й не виконує автоматичних дій — а збоку це виглядає просто як «нічого не оновлюється», тож помічають нескоро. Тому на хрестик і на «Зупинити і вийти» застосунок перепитує: «Ви точно хочете його закрити?», і кнопка за замовчуванням — залишити відкритим. У вікні-пульті хрестик пропонує згорнути біля годинника: вікна не видно, а застосунок працює далі.
Хрестик у вікні-застосунку перепитує. Якщо ви поставили «Облік ферми» з браузера як окремий застосунок (вікно без адресного рядка), хрестик закриває саме те вікно, в якому працюють — тому перед закриттям зʼявляється питання «Залишити сторінку?». У звичайній вкладці питання немає: закрити вкладку — звична дешева дія.
⚠️ Напис у цьому вікні задає браузер, свій текст туди покласти не можна — ми вирішуємо лише, питати чи ні. Перехід сторінками всередині застосунку, збереження й автооновлення нічого не питають.
Нової вкладки перезапуск не відкриває. Застосунок після оновлення перезапускається, і раніше щоразу вискакувала ще одна вкладка браузера. Тепер вкладка відкривається лише при першому запуску застосунку; та, в якій ви працюєте, перечитує себе сама. Відкрити вручну — значок у треї → «Відкрити в браузері».
⚠️ Одне оновлення «навздогін». Виправлення в самому запускачі (перепит на закриття, вкладка) починають діяти лише тоді, коли перезапуститься він сам, а не тільки сервер усередині. Тому після оновлення, яке міняє запускач, один раз закрийте застосунок (значок біля годинника → «Зупинити і вийти») і відкрийте ярликом знову. Далі він оновлює й перезапускає себе сам.
Чи вже все гаразд — видно на сторінці «🧭 Як налаштовано», картка «Оновлення», рядок «Запускач»: «оновлений» або «ще старий» із підказкою, що зробити.
Вікно навіть не обовʼязково відкривати. Якщо застосунок працює значком у треї й жодної сторінки не відкрито, він однаково оновиться сам — але тільки в тишу: коли застосунком ніхто не користувався десять хвилин. Поки хтось працює, рішення лишається за сторінкою з відліком, бо вона бачить, що ви саме заповнюєте поле.
Що саме налаштовано, видно на сторінці «🧭 Як налаштовано», картка «Оновлення»: як ставиться (саме, через 3 хв) і чи є зараз новіша версія.

Виправили звіт Profeed? Прибраний зі звіту заміс зникає із застосунку при наступному читанні теки: день, звіт якого прочитано, вважається джерелом правди. Заміс, за яким уже проведено списання, лишається (щоб не втратити підґрунтя рухів) — його спершу скасуйте. Дні, чиї звіти архівовано, не чіпаються.

Швидкість «Руху годівлі». Таблиці «Рух по секціях», «По категоріях» і «По кормах» рахує фоновий процес застосунку, а пораховане за період памʼятає: повторне відкриття того самого періоду — миттєво. Після вашої правки (залишок, розподіл, молоко) сторінка показує вже нові числа. Якщо підрахунок довший за кілька секунд (зазвичай одразу після оновлення програми), видно попередні числа з позначкою «Оновлюю числа…» — свіжі з'являться самі.

Виробництво комбікорму (розхід кормів). На сторінці 📅 Рух годівлі, у таблиці «По кормах» внизу є окрема секція «🏭 Виробництво комбікорму — розхід кормів»: корми-компоненти, витрачені на виробництво КК, з розкриттям Корм → Дата і тими самими колонками (залишок на дату, кг, ₴ без ПДВ, ₴/кг). Має власний підсумок «Разом виробництво» і не входить у «Разом» роздачі — щоб не задвоїти облік: комбікорм урахується як витрата тоді, коли його згодують. Залишок видно в режимі «Просто по датах». Якщо в обраний день КК не вироблявся, секція показує останній день із виробництвом (з позначкою дати) — комбікорм роблять раз на кілька днів.

Заміси списуються повними — це працює само. Автосписання забирає корми зі складу рівно за звітом Profeed. Якщо міксер ще вантажиться (частину інгредієнтів насипано, решта стоїть із планом і нульовим фактом), заміс не чіпається — він спишеться наступним прогоном, коли міксер добере. Так неповні списання більше не виникають. Якщо ж заміс усе-таки виявився неповним (напр. звіт довантажився пізніше), програма сама дописує різницю тим самим замісом, датою і групою — за весь період, без жодних кнопок. Кожне таке доведення потрапляє в журнал (останні 15 записів), його видно в самоперевірці. Кількості, дати й документи не змінюються — лише додається те, чого бракувало. Робити для цього нічого не треба.

Один заміс — кілька секцій. Якщо міксер завантажили один раз, а роздали у дві (чи більше) секції, витрати діляться між ними пропорційно роздженим кілограмам: роздали 70% в одну секцію і 30% в іншу — так само розкладуться і корми, і гроші. Основні корми (від 10 кг) діляться цілими кілограмами, щоб цифри легше читались (Солома 65 кг → 46 і 19). Дрібні добавки — премікси, Мікоцид, сіль — лишаються точними: округлення спотворило б рецепт. Сума часток завжди дорівнює звіту. Це видно і в списанні (окремі рядки на кожну секцію), і в 📅 Русі годівлі. Загальна кількість зі складу при цьому не змінюється.

Самоперевірка. У ⚙ Налаштуваннях годівлі є панель «Самоперевірка обчислень». Серед перевірок — «Списано = звіт Profeed»: показує, чи всі заміси списані повністю, і коли востаннє програма щось доводила (напр. «доведено замісів 27 · 11745 кг»). «Заміси в роботі» — скільки замісів зараз вантажаться і чекають наступного прогону. Поруч — «Немає зайвих списань»: попереджає, якщо зі складу зняли більше, ніж показує звіт. Перевірка нічого не змінює — виправляє програма сама на найближчому завантаженні звіту Profeed. Під перевіркою з помилкою чи попередженням стоїть посилання на сторінку, де це виправляють: «Залишки ЗМР · 07.10» відкриває «Рух годівлі» саме на цьому дні з панеллю розподілу залишків, «Склад · назва» — склад із цим товаром у пошуку. «Суми: групи = категорії = корми» враховує й ручну видачу корму на групи.

Ширина колонок. Межу між заголовками колонок можна тягнути мишею — ширина запам’ятовується на цьому компʼютері й діє на Складі (аптека, матеріали, корми) окремо від інших таблиць. Приховані через ⚙ вибір колонок стовпці збереженню ширин більше не заважають.

Порядок компонентів у рецепті (Годівля → Виробництво КК → «Рецепти комбікормів» → рецепт): тягніть рядок за ⠿ ліворуч від назви — у такому порядку рецепт зберігається й підставляється в заміс.

Компонент, якого немає у файлі Profeed. Журнал «Останні виробництва» → сірий рядок «чернетка» → розкрийте (▸) → під компонентами список «+ додати компонент, якого немає у файлі…» (з залишком на складі) → оберіть корм, впишіть «Факт, кг» → «Провести». Випуск комбікорму збільшиться на цю кількість, компонент спишеться разом з рештою, у примітці документа буде «вручну: …». Доданий рядок прибирає ✕; до проведення він зберігається в цьому браузері й не зникає після «↻ Оновити» чи оновлення сторінки.

Виправити кількість компонента в уже проведеному замісі. Годівля → Виробництво КК → журнал «Останні виробництва» → розкрийте документ (▸) і виправте число в стовпці «факт, кг». Різниця повертається в ті самі партії (а якщо кількість збільшили — доливається з партій, наявних на дату замісу), рядок і собівартість замісу перераховуються, залишок виготовленого комбікорму переоцінюється. Комбікорм, який уже згодували, лишається списаним за старою ціною — історію годівлі програма не переписує.

Кнопка × у рядку — це не виправлення, а скасування всього замісу: компоненти повертаються на склад, вироблений комбікорм знімається із залишку. Вона працює, лише поки той комбікорм цілий; щойно частину згодовано, скасувати не можна («уже частково витрачено») — тоді правиться саме факт у розкритому документі.

Виробництво комбікорму НЕ входить у годівлю. У звіті Profeed є колонка «Міксер» з типом операції: Годівля або Комбікорм. Заміси типу «Комбікорм» — це виготовлення КК, вони йдуть у розділ виробництва, а не в рух годівлі. Інакше їхні компоненти (шрот, барда, дерть, крейда) списувались би двічі: спершу як годівля секції, потім як виробництво. Якщо такі записи вже потрапили в годівлю, при оновленні вони прибираються самі, а кількість повертається на склад — проведене виробництво при цьому не чіпається.

Як система впізнає комбікорм у звіті Profeed. Заміс — це партія, у якої міксер відповідає виробництву комбікорму. Назва самого комбікорму береться з колонки «Раціон, назва» (напр. «Комбікорм_К3»), а якщо її немає — зі старого формату, де код стоїть у дужках у назві міксера («Дійні (К-2)»). Далі назва зіставляється з товаром на складі кормів: підходять і «Комбікорм_К3», і просто «К3» — префікс «Комбікорм»/«КК» відкидається. Заміси, у яких факт = 0 (заплановані, але не виготовлені), не показуються. Якщо товару з такою назвою ще немає, система запропонує створити його при проведенні.

Свині. У полі «Група» видачі є окремий вид Свині (поряд з ВРХ: Корови/Молодняк). Блоки Свиней задаються в Довідниках → окрема секція «Свині». Свині відокремлені від ВРХ: їхня видача зменшує склад і видно в «Останніх операціях», але жодним чином не впливає на калькуляцію ВРХ (у плитки годівлі та ₴/л не входить).

Одна група на операцію — блоки фільтруються за обраною групою. Останні операції внизу показують проведені видачі з колонкою Група; будь-яку можна відкрити на редагування: кількість, дата, блок, отримувач, група, примітка. Зміна кількості автоматично коригує залишок складу (зменшення повертає товар у партії, збільшення доспис із наявних за FIFO). Так само працює редагування списань.

6 Картка товару

Відкривається зі «Складу» або при додаванні нового товару: назва, код, одиниця, вміст упаковки, категорія. Норма — витрата на голову (для прогнозу замовлення). «Не бере участь у замовленні» — галочка для товарів, які не треба замовляти автоматично (не потраплять у прогноз).

7 Замовлення (прогноз потреби)

Рахує, скільки та чого докупити, виходячи з поголів'я, норм і залишків.

  • Оберіть місяць плану — кількість голів підставиться на цей місяць.
  • У колонці «Стан»: «замовити» (зелене, у схемі й бракує), «вистачає», «не в схемах» (товар є на складі, але жодна схема його не бере). Перемикач Усі · Замовити · Не в схемах з кількістю в кожному і пошук за назвою чи штрихкодом.
  • Готовий список експортується (CSV) для замовлення чи Power BI.
8 Схеми лікування

Схема — набір препаратів на певний випадок (напр. «Новотільні», «Мастит»). Для кожного рядка: медикамент, одиниця (мл/г/табл/доза…), доза, кратність (× разів на голову).

  • Тип: на голову або на період; період — «разово (курс)» за замовчуванням.
  • Джерело поголів'я — зі «Стада»; підсумок рахується поблочно. У «Джерелі поголівʼя» рядки «Колонка → підпис» можна перетягувати за ⠿ або стрілками ▲▼ — цей порядок і буде порядком колонок у таблиці стада.
  • Рядки перетягуються (сортування), нумерація — у колонці «№».
9 Управління стада

Смужка стада — вгорі, на кожній сторінці гілки. Ліворуч пошук, праворуч перемикач тварин — і те, і те доступне з реєстру, з руху поголівʼя, з календаря, звідусіль.

Пошук. Одне поле для всіх номерів: бирка, кличка, ідентифікаційний номер (UA…), номер транспондера. Набираєте будь-який із них (досить початку) — у списку видно, ЧИМ саме тварина збіглася, її секцію і чи вона ще в стаді. Вибір веде просто в картку. Стрілками ↑↓ ходите списком, Enter відкриває, а F2 або Ctrl+K ставить курсор у поле з будь-якого місця гілки. Набрали номер і одразу Enter — відкривається тварина з точно таким номером (або єдина знайдена), а поле очищається й курсор лишається в ньому — можна одразу набирати наступну.

Шукає підрядком, тож досить хвоста номера з нашийника («008766») або шматка з середини — весь транспондер набирати не треба. Великі й малі літери значення не мають («роса» знайде «Росу»), пробіли теж: номер можна скопіювати з картки просто з поділом («296 297 008 766»). Угорі списку — точний збіг номера, далі ті, що починаються з набраного, потім решта; тварини в стаді вище за вибулих.

Смужку можна сховати на сторінці, де вона не потрібна (наприклад, у «Русі поголівʼя»): стрілка ⌃ праворуч у смужці. Сховано лише на цій сторінці й памʼятається; повертає смужку лупа поруч зі стрілками «назад · вперед · оновити» в шапці.

Перемикач тварин «◄ ►» — як перемикач дат, тільки тварини: показує, з ким ви зараз працюєте, і переводить на сусідню. Гортає він ту саму вибірку, що стоїть у реєстрі: обмежили секцією «Нетелі» — ходите 114 нетелями, а не всім стадом. Праворуч від перемикача видно позицію й назву вибірки («12 / 114 · Нетелі»), тож завжди зрозуміло, де ви в списку. Фільтри реєстру й остання відкрита тварина памʼятаються — пішли в календар і повернулись, а перемикач на тому самому місці. Клік по номеру посередині відкриває картку.

Перемикач «Живі · Вибулі · Усі» у смужці вирішує, кого гортати стрілками: тварин у стаді, тих, що вибули (продані, вибракувані, загиблі), чи всіх поспіль. Вибір спільний із панеллю добору й реєстром — поставили тут, діє скрізь. Клік по перемикачу одразу розгортає під смужкою перелік цих тварин: живі — із секцією, вибулі — зі статусом, датою й причиною вибуття; клік по рядку відкриває картку, Esc чи клік повз — згорнути. Поруч напис, наприклад «Вибулі: 119 гол. · X1248 — 7-а з них», каже, скільки тварин у виборі й котра з них відкрита; клік по ньому теж розгортає перелік.

Як рахується обчислене значення. Наведіть мишу на сіре обчислене значення (вік, DIM, днів тільності, очікуваний отел…) — зʼявиться рядок формули, за яким воно пораховане, тими самими кольорами, що в Конструкторі. Вбудовані розрахунки й зібрані з випадайок показуються так само рядком формули (напр. вік — =MONTHS(TODAY(), bdate)).

Виправити подію. У «Історії подій» на кожному рядку при наведенні зʼявляються дві кнопки: ✎ — змінити дату події (і нотатку), ✕ — видалити. Після зміни дати параметри тварини перераховуються з усього ланцюга подій, а не просто переписується дата: підтягнуться «останнє осіменіння», день лактації, дні тільності, календар відтворення. Саме тому дату можна ставити і заднім числом — подія стане на своє місце в ланцюгу. Самі відповіді події (бик, технік, бал) правляться там, де подію вносять — на сторінці «Нова подія».

Параметри по обраній лактації. Перемикач лактацій над історією подій («лакт. 2», «лакт. 3», «усі») змінює не лише стрічку подій, а й усі секції картки — Основне, Відтворення, Родовід, Здоровʼя, Продуктивність: вони показують стан на кінець обраної лактації (день перед наступним отелом) — репрокод, дати осіменіння й отелу, днів тільності, контрольний надій, вагу тощо, як були тоді. Зверху смужка «Стан на кінець N-ї лактації · дата» і «показати сьогоднішній». Поточна лактація й «усі» — сьогоднішній стан. Номери лактацій — справжні (як «№ лактації»): у тварини, заведеної дорослою, ранні отели не записані — період до першого записаного отелу зветься «раніше». Незмінне (порода, УІН, родовід) показується як є; те, чого тоді ще не записували, — «—». Змінювати дані минулої лактації в картці не можна — лише поточні. Шапка з плашками вгорі завжди показує тварину сьогодні.

Перехід між тваринами миттєвий. Картка не перезавантажує сторінку — міняється лише її вміст, а дані сусідніх тварин підвозяться заздалегідь, поки ви дивитесь поточну. Тому клацати стрілкою можна підряд, не чекаючи. Кнопка «назад» у браузері повертає до попередньої тварини, а не викидає з модуля.

Що показувати про тварину — обираєте ви. Кнопка ⚙ Поля на картці перемикає режим налаштування, і тоді смужка під номером тварини (Статус, Секція, Вік…) стає переліком перемикачів: клік додає або прибирає показник. Доступні не лише ці шість — у смужку можна винести будь-який параметр картки: репродуктивний код, живу вагу, останнє осіменіння, номер транспондера. У тому ж режимі нижче позначаєте, які параметри тримати в секціях. Вибір спільний для всіх тварин і памʼятається; щоб вийти — натисніть «⚙ Поля» ще раз.

Показники читаються згори вниз, а порядок задаєте ви. У смужці під номером тварини підпис стоїть дрібним зверху, а значення — жирним під ним, тож числа шикуються по одній вертикалі й видно їх без читання підписів. Порядок міняється перетягуванням: візьміть показник мишкою і покладіть на нове місце — він там і лишиться (окремо для корів, телиць і биків, як і сам набір). Показник, у якого зараз немає значення, у смужці не видно, але зі свого місця він не зникає.

Нуль можна не друкувати. У Конструкторі → Параметри в кожного параметра є галочка «Нуль не друкувати»: якщо значення дорівнює нулю, на паперовому аркуші буде порожньо. Це для днів доїння, номера осіменіння, лактації — нуль там нічого не додає, а на аркуші з сотнею рядків це сотня зайвих знаків і зайва фарба. Працює і в «Роботі зі стадом», і в Календарі.
⚠️ Лише на друку. На екрані, у вивантаженні в Excel/CSV і в підсумках нуль лишається: у файлі він потрібен для рахунку, а порожня клітинка там читалася б як «даних немає». Порожньо стає тільки там, де значення справді нуль (0, 0,0, 0,00); «—» і порожнє поле не чіпаються.

Пошук у режимі «⚙ Поля». Показників там під сотню — усі параметри ферми, — тож угорі смужки є поле пошуку: набираєте «надій», «вага», «отел» — і лишається тільки потрібне, поруч видно «знайдено N із M». Пошук одночасно проріджує й перелік параметрів у відкритій секції нижче, тож ставити галочки можна там же. Escape або порожнє поле повертає всі; при виході з режиму пошук скидається сам.

Назву показника можна змінити. У режимі «⚙ Поля» на кожному показнику є олівець ✎ — натисніть і впишіть своє: «Репродуктивний код» стане «Репрокодом», якщо так звичніше. Порожнє поле повертає назву з Конструктора параметрів, тож перейменування там доходить у картку саме. Назви спільні для биків, телиць і корів — параметр же один.

Таблицю параметрів можна згорнути. Клік по заголовку плитки («Основне», «Родовід», «Крива лактації») ховає її вміст, лишаючи саму смужку; клік ще раз — розгортає. Згорнуте памʼятається й лишається таким на наступній тварині, тож звична вам картка щоразу відкривається однаково.

Добір тварин — панель справа на картці. У ній фільтри (секція, статус, стать, пошук) і список тих, хто під них підпадає: видно, скільки голів у доборі й де ви серед них, а клік по рядку відкриває тварину. Це той САМИЙ добір, яким ходять стрілки «◄ ►» у смужці та який стоїть у реєстрі — налаштували тут, діє скрізь. Кнопкою в куті панель ховається у вузьку смужку, коли добір уже зроблено і потрібна вся ширина; стан памʼятається.

⚙ — за чим добирати. Тут усі параметри стада, по секціях Конструктора, з пошуком; вибрані — вгорі. Переліки (секція, код відтворення, бик…) — випадайкою, числа й дати (дні лактації, вік, надій, дата отелу…) — «від–до», текст — «містить». Обчислювані параметри теж є: значення ті самі, що в картці й у списках.

«Фільтри · Списки». Перемикач угорі панелі: у режимі «Списки» оберіть збережений список з «Роботи зі стадом» — панель покаже його тварин у порядку списку, і стрілками «◄ ►» можна пройтись по ньому, переглядаючи кожну. Склад списку рахується тим самим кодом, що й у «Роботі зі стадом». Режим і список памʼятаються.

Бики, телиці й корови налаштовуються окремо — різні тварини живуть різними числами. Корові важать лактація й дні доїння, телиці — вік і що з осіменінням, бику ні те, ні інше. Групу застосунок визначає сам (стать і чи були отели), перемикати нічого не треба: відкрили корову — бачите налаштування корів, у режимі «⚙ Поля» зліва написано, для кого саме налаштовуєте. Те, що ви вже налаштували раніше спільно, перенеслося в усі три групи.

Нова тварина — вкладка на «Головній». Заведення живе там, де з ним працюють щодня: Головна → вкладка «Додати тварину» (остання в ряду, за «Історією»). Форма показує всі активні параметри ферми, згруповані за розділами конструктора («Основне», «Відтворення», «Родовід», «Здоровʼя», «Продуктивність») — дрібним табличним рядком «назва · поле», тож видно все без прокрутки панелями. Форма будується з самих параметрів: завели новий параметр — він зʼявився тут сам, у своєму розділі.
Зірочкою позначені обовʼязкові. Що саме обовʼязкове, вирішує ферма: у Конструкторі → Параметри є галочка «Обовʼязковий при заведенні тварини». Номер тварини обовʼязковий завжди — без нього тварини не існує. Не заповнили — програма назве поле й підсвітить його, а не просто відмовить.
Обовʼязковий за умовою. У параметра є ще рядок «…або обовʼязковий, якщо» — умова тією самою мовою, що в списках. У «Даті останнього отелу» там стоїть lact>0: поставили № лактації більше нуля — зірочка біля неї зʼявилась, поставили 0 — зникла. Під тим полем, яке ввімкнуло умову, дрібним написано, що саме через нього стало обовʼязковим.
Кого вже додали — видно тут же. Кнопка «Додати в реєстр» (або Enter у будь-якому полі) записує тварину, і вона одразу стає рядком у таблиці під формою: номер (клік відкриває картку), кличка, стать, дата народження, група, лактація й час внесення. Перелік переживає оновлення сторінки й прибирається кнопкою «Прибрати перелік» — у реєстрі тварини від цього лишаються.
Форма не закривається після додавання: очищаються тільки номер, кличка, ідентифікаційний номер, батьки й нотатка, а група, порода, надходження й дата лишаються — партію тварин заводять підряд. «Очистити форму» скидає все.
«Лише обовʼязкові» у смужці над формою лишає на екрані тільки те, без чого тварину не завести (на Буртах це девʼять полів) — розділи без таких полів ховаються. Поле, що стало обовʼязковим за умовою, зʼявляється в цьому режимі саме.
Обчислювані параметри у формі не показані: їх не вводять, вони рахуються самі (вік, днів тільності, очікуваний отел).

Колонки таблиці тварин. Їх задає сама формула у «Роботі зі стадом» — BODY(…); окремої кнопки «⚙ Колонки» більше немає (вона стояла на «Огляді», де таблиці вже немає — там самі панелі). У таблиці можна показати будь-який параметр тварини з конструктора (кличка, група, стать, порода, транспондер, днів тільності, останній бик…) — з пошуком і розділами конструктора, назви колонок теж звідти. Бирка є завжди. Параметри «Кличка», «Порода», «Дата народження», «Надходження», «Дата надходження» і «Нотатки» (розділ «Основне») читають і пишуть те, що записано в самій тварині, тож наявні дані видно одразу. Надходження — звідки тварина на фермі: «Народилась у нас» (ставиться саме при реєстрації приплоду на отелі), «Куплена» (додали вручну), «Імпорт» (зайшла з файлу). Набір свій у кожного користувача й зберігається на сервері. Довгі номери (транспондер) показуються по три цифри, як у картці.

Номер новому телятові підставляється сам. Основний номер — довгий ідентифікаційний (UA…), а бирка це його хвіст: вводите одне, друге стає на місце. Звідки брати номер, вирішує панель «Нумерація приплоду» (Конструктор → 7 Реєстр): за лічильником (свій наступний номер, програма зсуває його після кожного отелу) або найбільший у серії + 1. Враховуються лише номери з вашим префіксом, тож чужа серія нумерацію не зіб’є.

Бирка не повториться. Хвіст короткий, і в стаді вже може бути тварина з таким номером. Тоді програма бере на цифру довший хвіст того самого номера: 1003 зайнято → 31003, і те зайнято → 631003. Поле підсвічується й пояснює, чому номер довший. Якщо бирку вписати вручну і вона вже зайнята — поле стає червоним.

Довжину бирки задаєте полем «Цифр у бирці», але коротше за 5 знаків програма не візьме. Чотиризначні номери навмисно лишаються вільними: їх вішають дійним коровам на нашийники, і тоді бирку корови перейменовують на ці чотири знаки. Довгий номер при цьому не змінюється — він основний. Нулі попереду не рахуються: при 6 цифрах номер UA8019015654 дає хвіст 015654, а бирку — 15654 (номер тварини зберігається числом, тож нуль однаково загубився б). Якщо без нулів лишається менше 5 цифр (005654), береться довший хвіст (9005654).

Номер вибулої тварини звільняється сам. Коли тварина вибуває (продана, вибракувана, загинула), її бирка дістає позначку архіву: 1003 → X1003. Номер одразу вільний для живих — саме його можна віддати під нашийник новій корові. Історія при цьому ціла: пошук за «1003» знаходить X1003, у нащадків поле «Мати» переписується разом із биркою, родовід тримається на внутрішньому звʼязку. Якщо номер вибуває вдруге, архівна бирка отримує порядковий (X1003-2); якщо тварину повертають у стадо, вона забирає свій номер назад, коли той вільний.

Імпорт транспондерів (і будь-яких параметрів). Конструктор → 7 Реєстр → «Імпорт тварин і параметрів». Колонки файлу розпізнаються за назвою, тож достатньо двох стовпців — «Бирка» і «Номер транспондера»; так само заходять «Ідентифікаційний номер», чип чи власний параметр. Порожня клітинка нічого не стирає. Файл, у якому є лише бирка й параметри, нових тварин не заводить — одруківка в бирці інакше створила б фантом; такі рядки порахуються як «не знайдено в реєстрі». Якщо у файлі є ще кличка, стать чи дата народження — імпорт працює як раніше й може створювати тварин.

Імпорт даних файлом — зважування, надої, оцінка вгодованості. Конструктор → 7 Реєстр → «Імпорт даних файлом». Порядок такий: обираєте подію → тиснете «⤓ Зразок файла» → у ньому вже названі колонки (Номер тварини · Дата · поля цієї події · Нотатка) → заповнюєте в Excel → повертаєте файл сюди. Колонки впізнаються за назвою: міняти їх місцями можна, перейменовувати — ні.
У зразку є рядок-приклад: він показує, як писати значення — у полях зі списком стоїть справжня назва з довідника. Видаляти його не обовʼязково: рядок починається словом «приклад», і програма його пропускає.
У кожного рядка своя дата: файл за минулий тиждень ляже тими днями, якими його заповнили. Порожня дата — сьогодні. Числа приймаються і з комою, і з крапкою; дата — і 25.09.2026, і 2026-09-25. Для полів зі списком (причина бракування, спосіб вибуття) пишіть назву значення так, як вона в програмі — великі чи малі літери не важать.
Перед записом завжди показується розбір: скільки рядків готові, кого немає в реєстрі, де число не число, а де значення немає в довіднику. Записуються лише готові рядки — решта лишається вам на виправлення. Увесь імпорт лягає одним внесенням: в «Історії» він стоїть єдиним рядком («Зважування · 12 голів») і скасовується разом.
Кілька подій в одному файлі. Поставте галочку «кілька подій в одному файлі», відмітьте, які саме, — і зразок отримає колонку «Подія» та обʼєднані колонки всіх відмічених. У кожному рядку діють поля ТІЄЇ події, що в ньому названа; решта колонок для нього просто порожні. У розборі видно розкладку («Зважування — 12 · Бракування — 3»), а в «Історії» кожна подія стоїть своїм внесенням: написати «Зважування · 15 голів» там, де п’ятнадцять — це зважування й бракування разом, було б неправдою.
Якщо подію тварині внести не можна (бракованій не вносять осіменіння), рядок не пропаде мовчки: після запису видно, кому й чому не записалось.
Умови працюють і в імпорті. Якщо у параметра стоїть «обовʼязковий, якщо», файл перевіряється так само: колонку лишили порожньою, а умова справдилась — рядок не пройде, і в розборі буде сказано, чого бракує й через яку умову. Умова читається по рядку файла поверх того, що вже стоїть у тварини: лактацію брати з реєстру, коли її у файлі немає. А порожнеча рахується саме по клітинці файла — старе значення з минулого разу не виправдовує порожню колонку.
📌 Чому через подію, а не «просто записати значення»: у програмі значення має дату лише тоді, коли його записала подія — з подій будується вся історія параметра. Імпорт зважування — це те саме, що внести «Зважування» кожній тварині своїм числом, тільки файлом.

За чим саме шукати — ваше рішення: у Конструкторі → Параметри відкрийте параметр і поставте «Шукати тварину за цим значенням». Так само запрацює завтрашній «номер чипа» чи внутрішній код — правити програму не треба. Бирка й кличка шукаються завжди. Галочка діє в трьох місцях одразу: у пошуку вгорі гілки, у реєстрі «Тварини» і в груповому вводі — і однаково для полів самої картки (Надходження, Порода, Нотатки) та для звичайних параметрів. Регістр не має значення: «промінь» знаходить «СТОВ «Промінь»».

  • Поголів'я вводиться сіткою «група × місяці» на рік.
  • Аналітичні таблиці — у «Роботі зі стадом», блок «Таблиці» в бічній панелі праворуч (під «Списками» й «Панелями»). Списки — перелік тварин, панелі — одне число, таблиці — аналіз: рядок на секцію, лактацію чи код, колонки — показники. «+» у блоці «Таблиці» — нова таблиця із заготовкою формули, Enter у рядку формул рахує її й зберігає; клік по таблиці — її формула в рядку, а таблиця — на місці тварин; права кнопка — перейменувати, примітка, категорія (ті самі, що в списків), дублювати, видалити; значок Excel вивантажує саму таблицю. Під час набору TABLE( рядок підказує кожен крок: що по рядках, FILTER / COL / VIEW, колонки (HEADS, середнє, умова, події, панелі «Огляду», час), період і total. Таблиця відкривається як звіт — без кнопок списку: угорі її назва й період. Клік по числу — під таблицею перелік тварин цієї клітинки (номер — посилання на картку); у колонці-відсотку чисел для кліку немає — клацніть числа колонок, з яких він рахується. Таблиця пишеться однією формулою з чотирьох частин: TABLE(що по вертикалі) FILTER(кого рахувати) COL(колонка) COL(колонка) … VIEW(вигляд). Знака «;» у таблиці немає — у мові формул він означає «обʼєднати списки»: кожна колонка — своє COL(…), кожен рядок-показник — своє ROW(…). Після TABLE(…) частини йдуть у будь-якому порядку — нову колонку можна дописати й наприкінці, після VIEW(…); колонки стоять у тому порядку, в якому записані. Дужки, відкриті підказкою, закриваються самі; формула з незакритою дужкою не рахується — під рядком написано, яка саме не закрита («Не закрита дужка FILTER( … )»).
    • TABLE — параметр: TABLE(group) — рядок на кожну секцію, TABLE(lact), TABLE(rc); або рядки-показники, кожен своїм ROW: TABLE(ROW([Отели] EVENT(calving)) ROW([Запуски] EVENT(dryoff))).
    • FILTER (необовʼязково) — умови мовою списків: FILTER(lact>0).
    • COL — одна колонка «[Назва] формула», напр. COL([Голів] HEADS): HEADS — голів у рядку на кінець періоду, START — на початок, IN / OUT — увійшло / вийшло (OUT(by=EVENT(cull)) — лише вибуттям), EVENT(calving) — події, [Отели] / [Голів] * 100 — арифметика з колонок. Час — окремою колонкою: COL(day) (цей місяць), week (8 останніх), month (цей рік), quarter, year (3 останні); з числом — стільки останніх: COL(month 12).
    • VIEW — період (month, last_month, year, 30d…), total — рядок «Разом», all — показувати й рядки без чисел, sort Голів desc.
    Наприклад: TABLE(group) FILTER(lact>0) COL([Голів] HEADS) COL([Отели] EVENT(calving)) COL(month 3) VIEW(total). Аналіз по секціях: TABLE(group) FILTER(lact>0) COL([Голів] HEADS) COL([Надій] VIEW(avg milk/lkd)) COL([DIM] VIEW(avg dim)) COL([Тільні] FILTER(rc=5)) COL([% тільних] [Тільні] / [Голів] * 100) VIEW(total) — у кожному рядку голови секції, середній надій і DIM, тільні та їхня частка; «Разом» — по всьому стаду. VIEW(avg поле) (те саме, що HEADS VIEW(avg поле); після FILTER(…) — середнє серед цих тварин) — середнє параметра в рядку (sum, min, max так само), FILTER(…) у колонці — скільки голів рядка підходить під умову, [Дійні] — панель «Огляду» в кожному рядку. Формулу з помилкою не збережено — під рядком написано, що не так. Секції в історії Бовіо відомі з 21.09.2026: раніші періоди по секціях — «—», а події тих днів — у рядку «без значення».
  • Графіки — так само, як таблиці: запис у «Списках» (вкладка «Списки / Таблиці / Графіки», блок «Графіки» в правій панелі «Роботи зі стадом», «+» — новий). Формула: CHART(час) LINE([Назва] формула) BAR([Назва] формула). Час — day, week, month, quarter, year і кількість (CHART(month 12) — 12 останніх місяців; без числа — як у колонці часу таблиці). LINE — лінія, BAR — стовпчики; серій кілька, формула серії — та сама, що в ROW(…) таблиці: EVENT(calving) — подій за період, [Дійні] чи FILTER(…) — голів на кінець періоду, START / IN / OUT, арифметика. Можна додати FILTER(…) для всіх серій і VIEW(період). Приклад: CHART(month 12) LINE([Дійні] [Дійні]) BAR([Отели] EVENT(calving)). Наведіть на місяць — значення всіх серій; під графіком ті самі числа таблицею, Excel вивантажує її.
  • «Рух поголів'я» — окрема сторінка в меню (02). Тут усі таблиці руху одна під одною: «Рух стада», «Оборот стада», свої таблиці й унизу «Поголів'я для звітів годівлі» (службова: її не перейменувати й не прибрати). Клік по рядку — правка: назва в рядку, формула — у рядку формул угорі; «+ таблиця ▾» — порожня або зразок «Оборот стада»; у правці таблиці — її назва, вигляд (Aa) і 🗑.
  • Рух поголів'я рахується сам — з подій стада за датою події, вписувати руками нічого не треба. Таблиці ферма складає сама: кожен рядок — назва й формула, одне число на місяць (день) і «Разом». Формула завжди в одному вигляді: набрали «filter( lact >0 )» — після Enter вона стане «FILTER(lact>0)» (слова мови великими, біля знаків порівняння без пробілів, частини через один пробіл); те, що в [квадратних дужках], не змінюється. На компʼютері ферми застосунок сам один раз ставить собі Node (≈34 МБ з nodejs.org, зі звіркою контрольної суми) і рахує на місці — одразу, разом із щойно внесеним, і без інтернету. Поки Node ставиться, числа приходять готовими із сервера ферми. Стан видно в «Як налаштовано». Коли звіт рахується вперше (щойно запущений компʼютер, новий рік), замість таблиць видно смугу прогресу з відсотком і тим, що саме зараз рахується; таблиці зʼявляються самі, щойно звіт готовий.
    • Події — одна система запису з «Роботою зі стадом»: там BODY(…) FILTER(…), тут EVENT(…) FILTER(…) — що рахуємо й кого. EVENT(calving) — скільки отелів за період; EVENT(calving) FILTER(lact>0) — отели корів, FILTER(lact=0) — перші отели (нетелі), FILTER(lact=1), FILTER(lact>1) — розподіл за лактацією; EVENT(cull) FILTER(exit_way=Продаж lact>0) — продані корови (умови — через пробіл). Поле, якого подія не питає, — це стан тварини напередодні події (тому отел нетелі — lact=0). Давній запис з умовами в самих дужках, EVENT(cull lact>0), рахує те саме. Подію пишуть її назвою для формул — латиницею, без пробілів (Конструктор → Події, поле «ƒx» біля назви); українською теж можна: EVENT(Отел) — те саме, що EVENT(calving), назву з пробілами — у дужках: EVENT([Переведення в секцію]). Перейменували подію (будь-яку з двох назв) — формули з нею перепишуться самі. Народження й купівля пишуться так само, як будь-яка подія (один стандарт): EVENT(birth) — усі народжені на фермі, EVENT(birth) FILTER(alive) — живі, EVENT(birth) FILTER(dead) — мертвонароджені, EVENT(birth) FILTER(alive gndr=F) — живі телички; EVENT(entry) — куплені. Народжені рахуються з реєстру (лише ті, хто народився на фермі), тож куплена тварина до них не потрапляє. Давні записи BORN(), BORN(dead), ENTRY() рахують як і раніше. У рядку формули після EVENT(…) сама зʼявиться підказка FILTER(, а в ньому — поля цієї події й параметри тварини. Після «=» (і between, contains) для поля події — значення, що справді траплялись у записаних подіях, зі скількома подіями: EVENT(cull) FILTER(exit_way= → «Продаж · 48 подій», «Вибракування на мʼясо · 45 подій»…; числа — від найменшого до найбільшого. Події купленої тварини до дня купівлі (на чужій фермі) не рахуються.
    • Не лише скільки — VIEW(…): EVENT(milk_test) VIEW(avg milk/lkd) — середній контрольний надій, VIEW(sum …), VIEW(min …), VIEW(max fat); поле — коротка назва параметра, як у списках (поле, якого подія не питає, — стан тварини напередодні). «Разом» — та сама функція на всіх подіях (середнє за рік, а не середнє місяців).
    • Таблиця подій — TABLE(…): TABLE(insemination month id date bull tech) — у «Роботі зі стадом» усі осіменіння за цей місяць рядками: номер, дата, бик, технік. Першим — подія, далі (за бажанням) період тими самими словами, що у VIEW (month, last_month, year, 30d), далі колонки: id — номер (клік — картка), name — кличка, date — дата події, note — деталі, решта — поля події чи параметри тварини короткою назвою, як у списках (tech, method, lact; bull — останній бик). Поле, якого подія не питає, — стан тварини напередодні. Умови — як завжди після дужок: TABLE(insemination year id date bull) FILTER(lact>0). Без колонок — номер, кличка, дата й деталі. Таблицю можна зберегти списком, роздрукувати чи вивантажити в Excel.
    • Та сама мова — на «Огляді» й у «Роботі зі стадом». Плитка з формулою EVENT(calving) FILTER(lact>0) показує отели корів за цей місяць; період — у VIEW: month (цей місяць, так і без VIEW), month_1 чи last_month — минулий, month_2 — позаминулий…, year, year_1, quarter, week, today, yesterday, day_3, 30d — останні 30 днів. Частка — як і доти, через «/»: EVENT(calving) FILTER(lact=0) VIEW(year) / EVENT(calving) VIEW(year) — частка перших отелів за рік, EVENT(calving) VIEW(year) / [Фуражні] — отелів на фуражну корову. У «Роботі зі стадом» формула з EVENT(…) показує не тварин, а події за період: номер (клік — картка), кличка, дата, деталі; зберігається списком чи панеллю, друкується й вивантажується так само. У таблиці «Руху поголівʼя» період задають стовпці — VIEW там лише для avg / sum / min / max.
    • Група — панель «Огляду» чи список у квадратних дужках ([Дійні]), своя умова FILTER(lact>0 rc<6) або HERD — усе стадо. Сама група в рядку — голів на кінець періоду; START([Дійні]) — на початок; IN([Дійні]) — скільки увійшло в групу, OUT([Дійні]) — скільки вийшло. Звідки й куди: IN([Фуражні] from=[Нетелі]), OUT([Дійні] to=[Сухостій]); через що: IN([Дійні] by=EVENT(calving)), OUT(HERD by=EVENT(cull) FILTER(exit_way=Продаж)). Склад групи на кожен день рахується з подій тими самими умовами, що й «Огляд», тож на початок + увійшло − вийшло = на кінець сходиться завжди, а сьогоднішнє число дорівнює числу на «Огляді». Наведіть на число «на кінець» — видно цю перевірку (на початок + увійшло − вийшло = на кінець ✓).
    • Арифметика: [Отел] - [Мертвонароджені], EVENT(birth) FILTER(dead) / EVENT(birth) * 100 — з рядків цієї таблиці й функцій (знаки + - * /; «−», «×», «÷», скопійовані з тексту, теж годяться); «Разом» — та сама формула на підсумках за ті самі місяці (частка лишається часткою). Ділення на нуль — «—». Рядок, на який посилаються, має мати неповторну назву в таблиці; перейменували його — посилання перепишуться самі.
    • Межа історії. Склад груп відомий лише з дня, коли стадо зʼявилось у Бовіо: до нього секції й стан тварин по днях, перенесені з іншої програми, неповні. Раніші клітинки груп — «—» (наведіть — видно чому), перший місяць — курсивом (рахується з цього дня), під таблицею — рядок про межу. Події — за всю історію.
    Рядок формули — угорі сторінки, під смужкою пошуку тварини; стоїть завжди (сторінка не стрибає, коли таблиця переходить у правку й назад) і під час прокрутки лишається на місці. Клацніть показник у таблиці — таблиця переходить у правку (вибраний рядок підсвічено), а в рядку формули зʼявиться його формула з підсвіткою й підказками (під полем — лише помилка, якщо є; що рахує рядок — на підказці до його назви). Назва рядка правиться просто в ньому (клік по назві). Хто лише переглядає, бачить формулу в підказці до назви. Клік по числу, як і раніше, показує тварин. Нуль у таблиці не пишеться — клітинка порожня (і в «Разом»). Кнопки «✎ Налаштувати» немає: у правку веде клік по рядку, тоді ж у шапці — поле назви таблиці, Aa і 🗑. Шеврон ліворуч від назви (або клік по назві) згортає таблицю до шапки й розгортає назад; стан памʼятає браузер. Згорнута таблиця показує в шапці головні рядки (до чотирьох, без ↳) за поточний місяць — у «По днях» за сьогодні; коли поточного періоду на екрані немає — за весь показаний рік чи місяць. Кнопка «Згорнути всі» / «Розгорнути всі» — угорі, поруч із «Сьогодні». Поки нове число рядка рахується (після Enter), числа цього рядка тьмяніють, а в «Разом» стоїть «рахую…». Дата «на кінець» для рядків поголівʼя стоїть один раз — у шапці стовпця «Разом» («на 29.09»); під числом — лише коли в рядка вона інша. Кнопок «Готово» й «Скасувати» немає: Enter і є збереження рядка — назви, формули; ↑ ↓ ✕ ↳, вигляд і рух групи записуються одразу. Перейти до іншої таблиці можна будь-коли. Рядок без назви не записується, доки його не назвуть. ↩ у шапці таблиці (або Ctrl+Z / ⌘Z) повертає, як було до останньої зміни, крок за кроком (до 30 кроків); повернене теж одразу записується. У полі з незаписаним набраним Ctrl+Z діє як звичайно — у самому полі. Порядок рядків — перетягуванням: візьміть кружечок перед назвою й тягніть вище чи нижче — лінія покаже, куди ляже; головний рядок їде разом зі своїми ↳ підрядками, перегородка — з усім своїм блоком (до наступної перегородки; її кружечок лише для перетягування), і це одразу записано. Кроки назад переживають оновлення сторінки — доки таблицю не змінив хтось інший (тоді її кроки стираються, щоб ↩ не затер чужої зміни). Решта рядків не розкривається — формулу видно й на підказці до назви. Enter у назві — записати назву й перейти до формули, у формулі — перерахувати й записати; Tab / Shift+Tab — наступний / попередній рядок; Esc — повернути, як було до правки, ще раз Esc — закрити рядок, таблиця знову в перегляді (коли курсор не в полі — одразу); перегородка без назви в перегляді — тонкий розділювач; помилку підкреслено просто у формулі й названо під нею. Кожна таблиця — окремим блоком: шапка з датами — кольоровою смугою, між рядками тонкі лінії; рядки самі кольором не чергуються — фон рядка задаєте ви (Aa рядка). Aa біля назви таблиці (у правці) — колір назви й колір смуги шапки (чи без смуги); зберігається разом із таблицею. Новий рядок — просто між двома рядками: наведіть мишу біля лівого краю таблиці на межу рядків — зʼявиться «+» і лінія, куди ляже рядок; клік — вибір: + рядок, + перегородка чи + рух групи (у таблиці поголівʼя — одразу рядок). Таблиця переходить у правку, курсор — у назві нового рядка (Enter — назву записано, далі формула; Enter у формулі — записано); для руху групи — групу пишуть у рядку формули, Enter додає чотири рядки саме в це місце. Порожня таблиця в правці має ці три кнопки просто в собі. Підгрупа (уточнення рядка вище, як «телички» під «Приплід») — кнопка ↳ у рядку формули або Alt+→ (назад — Alt+←): рядок стає з відступом, тихіше й в одній смузі з головним. Рівнів чотири: головний, ↳, ↳↳, ↳↳↳ — кожен клік ↳ опускає рядок на рівень глибше (після найглибшого — знову головний), Alt+→ глибше, Alt+← вище; глибше за рядок над ним більш ніж на рівень не можна. Рядок, під яким є підрядки, має стрілку перед назвою: клік згортає чи розгортає його підрядки (стан памʼятає браузер). У шапці кожної таблиці, поруч із назвою, — її «Рівні»: «− 1» згортає всі головні рядки, «+ 1» розгортає їх (видно до 2-го рівня), «− 2» / «+ 2» — так само для рівня ↳ і глибше; діє лише на цю таблицю. «+ перегородка» — назва блоку на всю ширину («ВИБУТТЯ»); «+ рух групи» — одразу чотири рядки для групи. Таблиця «Поголівʼя для звітів годівлі» — так само, і в неї теж свій «Aa». Праворуч у рядку формули: значок копіювання — формула рядка в буфер обміну (вставити в інший рядок чи надіслати); Aa — колір, фон, жирний, курсив, відступ, розмір (колір і фон — спадним списком «кружечок · назва», 15 кольорів; так само колір назви й смуги шапки таблиці); вікно Aa стає ліворуч біля рядка. Ледь помітний кружечок перед назвою рядка стоїть завжди (для того, хто керує гілкою): наведіть — він проявиться, клацніть — відкриється прозоре меню вигляду: колір тексту, фон, жирний, курсив, відступ, розмір. Кожна зміна одразу видна в таблиці й одразу збережена — без «Готово» й «Скасувати». Права кнопка миші по рядку — меню дій: правити формулу · вигляд рядка · перейменувати · зробити підрядком / на рівень вище · вище / нижче · + рядок чи перегородка нижче · копіювати формулу · прибрати (з перепитом). ↳ — підрядок; ↑ ↓ (або Alt+↑↓) — порядок; ✕ — прибрати рядок. «+ рядок» і «+ перегородка» стають під вибраним рядком; «+ рух групи» — перегородка й чотири рядки: на початок, надійшло, вибуло, на кінець. Кожен запис — лише цієї таблиці: зміни в інших таблицях, зроблені тим часом з іншої вкладки чи компʼютера, лишаються; якщо змінили саме її, застосунок перепитає: записати вашу версію поверх чи показати свіжу. «+ таблиця ▾» — порожня або зразок «Оборот стада». Перейменували панель — формули таблиць руху перепишуться самі. Перемикач «По місяцях · По днях», ‹ › і «Сьогодні» гортають рік чи місяць; майбутнє — порожнє. Наведіть на число — які тварини й чому (подія того дня); клік показує всіх, клік по тварині — картка.
  • Поголівʼя для звітів годівлі — остання таблиця на тій самій панелі, під таблицями руху, і читається так само: рядок — група (Всього, Фуражні, Дійні…), стовпець — місяць чи день із того самого перемикача «По місяцях · По днях» і ‹ ›; число — голів на кінець місяця (дня), стовпець «На 29.09» праворуч — останнє число. У шапці таблиці — «Бовіо · Excel»: Бовіо — щоденний знімок реєстру за формулою рядка (ведеться від дня налаштування, раніші клітинки — «—»), Excel — книга 03_Herd_Structure («⚙ Джерело» — файл і його колонки). Наведіть на число — на яку дату й звідки воно; на назву — формула рядка. Правка та сама, що й у таблицях руху (у Бовіо): клацніть рядок — назва правиться просто в ньому, формула — у рядку формули вгорі тією самою мовою, що в «Роботі зі стадом» (FILTER(lact>0 rc<6), FILTER(gndr=F lact=0 rc<5 age<3)) або посилання на панель «Огляду» ([Дійні]), і скільки голів зараз за цією формулою. Enter — перерахувати, Tab — наступний рядок, ↑ ↓ — порядок, ✕ — прибрати, «+ рядок» — новий під вибраним. Enter записує формулу й одразу рахує знімок на сьогодні: нова формула діє з нього, давні дні лишаються як були.
  • Звідки звіти годівлі беруть поголівʼя — рядком під назвою цієї таблиці («Звіти годівлі беруть ці числа з 27.09.2026, раніші дні — з книги Excel»). Це корм і молоко на голову в «Русі годівлі», «Огляд годівлі», звіти на сайті аналітики й оберти доїльного залу в боті. Перемикає той, хто веде гілку, посиланням у тому ж рядку: «Рахувати з Бовіо з …» бере знімки Бовіо від першого дня, коли вони є; раніші дні лишаються з книги. «Повернути книгу Excel» — знову книга за всі дні. Звіти беруть звідси дійних, сухостій, фуражних і все поголівʼя — прибрати такий рядок можна лише з перепитом.
  • Ці дані живлять прогноз замовлення та підсумки схем.
  • 📅 Календар — списки, які ферма складає сама. Усі списки показані один під одним і пронумеровані; порядок — перетягуванням за ⠿; клік по заголовку згортає чи розгортає список; наведіть мишу на назву — видно формулу списку. Рядок формули — угорі, одразу під пошуком тварини (як у «Роботі зі стадом» і «Русі поголівʼя»): клік по списку відкриває в ньому його формулу, Enter — застосувати й зберегти. ⚙ відкриває налаштування — пʼять рядків із підписом ліворуч: Назва (і колір), Формула, Формувати (дні тижня і подія — «Внести … · N» у день формування відкриває груповий ввід із цими тваринами), Заголовок таблиці зі змінними ({Назва}, {Дата}, {Усього}, {За планом}, {Пропущені} — вставляються кнопками поруч) і Колонки (повні / короткі назви). Довідка до мови формули згорнута — «Як писати ▸» під рядком формули. Формула — увесь список одним рядком, тією самою мовою, що в «Роботі зі стадом», з підказками під час набору: BODY(name group dslh) — які параметри в таблиці (номер тварини стоїть завжди), FILTER(rc=4 dslh between 28 35) — кого брати, VIEW(nogroup groupby group sort dslh desc) — групи, порядок і нумерація (no — наскрізна, nogroup — з 1 у кожній групі). Групувати й сортувати можна й за параметром, якого немає в BODY — тоді його не видно колонкою, лише в шапці групи. Назви налаштувань ферми (gestCow…) пишуться замість чисел. Enter застосовує; помилку видно під рядком, і тоді список лишається, яким був. «+ додатковий список» — напр. «Пропущені»: дописує в ТОЙ САМИЙ рядок FILTER2([Пропущені] dslh>35); він бере умови основного, а його умови замінюють умову на той самий параметр. Блоків може бути кілька (FILTER2, FILTER3…), тож увесь список — справді один рядок. Список із подій — та сама мова, що в «Русі поголівʼя» й на «Огляді»: EVENT(calving) VIEW(day_7) — на кожен день тварини, що телились рівно 7 днів тому (огляд після отелу), EVENT(insemination) VIEW(day_21) — на 21-й день після осіменіння, EVENT(calving) FILTER(lact>0) VIEW(30d) — отели корів за 30 днів до цього дня. Без VIEW — події самого дня. Колонки — кличка, дата події й деталі. Показується в одній таблиці з основним, рядки позначені червоною стрілкою → зліва від номера, у Календарі й Ганті — лише на найближчий день формування («48+141»), друкується після основного, «Внести подію» — на всіх разом. Формувати — в які дні тижня (не обрано — щодня). 🖨 Друк — точно так, як у «Роботі зі стадом»: вікно попереднього перегляду зі шрифтом, розміром, масштабом, жирним / курсивом, 1 / 2 колонки й книжковим / альбомним аркушем (запамʼятовується для кожного списку); ширину колонок аркуш підбирає під вміст, номери не переносяться; додаткові тварини — з назвою блоку зліва від номера, а під заголовком «додатково: Пропущені · N». Ширина колонки, натягнута на екрані, діє лише на екрані. Підсумки — як у «Роботі зі стадом»: у шапці кожної групи кількість, а з VIEW(avg dcc sum lact cnt …) — ще й числа у своїх колонках; унизу — рядок «Разом» (коли є групи чи підсумки). На аркуші під заголовком завжди стоїть кількість тварин. Вигляди: Список (на найближчий день формування), Календар (скільки тварин буде в списку кожного дня формування — «днів від…» рахуються на той день), Гант (рядок = список). Списки спільні для всієї ферми. Список із «Роботи зі стадом» — у Календар: ⚙ відкритого списку → «📅 У календар» (або 📅 у рядку на вкладці «Списки»). У Календарі зʼявляється копія з тією самою формулою — далі вона живе окремо, правка одного не міняє іншого. Лишається задати дні формування й подію; програма одразу пропонує відкрити новий список. Якщо в Календарі вже є список із такою самою формулою, спершу перепитає.
  • 💉 Здоров’я / Відтворення → Вакцинація (06 у меню стада: вакцинація й синхронізація охоти — на одній сторінці). Дві панелі: «Вакцинація» (схеми з кроками — і тут же, кому за кроком час) і «Проведені вакцинації»; обидві згортаються кліком по шапці (стан памʼятається). У шапці «Вакцинації» — скільки всього «зараз · прострочено · скоро» і перемикачі меж. Кому час — у самому кроці: колонка «Кому час» показує числа кольором (червоне — прострочено, зелене — зараз, синє — скоро); клік по них розкриває під кроком рівні з тваринами й кнопку «Провести · N». Кожну схему можна згорнути до одного рядка — шеврон ліворуч або клік по вільному місцю її шапки; у згорнутій видно, скільки по ній «зараз · прострочено · скоро» (або «нікому»). У шапці «Вакцинації» — «розгорнути / згорнути кроки» (під кожним кроком, кому час, — рівні з тваринами; згорнуті схеми при цьому розгортаються) і «згорнути / розгорнути схеми». Друк списку з vacc («Робота зі стадом» → 🖨 і Календар → 🖨 — на день формування списку): угорі аркуша дрібним — «Hiprabovis 4 — 21 мл · 7 доз» по кожному препарату для тварин, що на аркуші (доз = голів; мл — якщо в дозі кроку є число — кожна тварина зі своєю дозою, тож різні дози на голову сумуються правильно; кроки з тим самим препаратом — разом; загального «Разом» немає — лише кожен препарат окремо). Схеми вакцинації («+ схема»): назва і кроки; саму схему теж можна перетягнути за ⠿ біля назви. Крок — один рядок: ⠿ (тягніть угору-вниз, щоб переставити) · назва (Хіпра 1) з позначкою ☰ ✓ — крок уже є в списках «Роботи зі стадом» (у підказці — в яких) або ☰ + — немає (клік переносить) · препарат · доза · ремарка (складається сама: число з кінця назви кроку · препарат · доза — «Хіпра 1» дає «1 · Хіпрабовіс 4 · 3 мл», «Хіпра 2» — «2 · …» — так її покаже список у «Примітці», коли бере крок через FILTER(vacc=[Хіпра 1])) · дні проведення (пн…нд; жодного — щодня: «До вакцинації» і vacc у списках рахують на найближчий такий день, у картці — «на пт 02.10») · формула · активний / неактивний · ✕. Кому крок — лише формула в стандартному рядку формули під пошуком тварини: клацніть крок, і там стане його FILTER(lact=0 rc<9 days_life between 49 55); Enter — записати (лише FILTER). Вікно кроку — дні, коли тварина під формулу підходить: лічильники днів (дні життя, DIM, дні тільності…) зсуваються самі, тому видно і «скоро» (підійде за ≤14 днів), і «прострочено» (вікно минуло ≤30 днів тому). Новий крок бере формулу попереднього — лишається поправити дні. Права кнопка по кроку — правити формулу, дублювати крок («Хіпра 1» → «Хіпра 2»), «+ Крок нижче», вище / нижче, активний / неактивний, перенести в списки (список «Роботи зі стадом» з назвою кроку: кому зараз, «+» кому скоро, «!» прострочені; список з такою назвою вже є — після перепиту міняються лише його фільтри, колонки й вигляд лишаються), копіювати формулу, прибрати. Права кнопка по шапці схеми — перейменувати, «+ Крок», дублювати схему (з усіма кроками), вище / нижче, усі кроки активні / неактивні, видалити. Кожна зміна зберігається одразу; неактивний крок ніде не рахується. Сторінка памʼятає розгорнуті картки й журнал, дату вакцинації (сьогоднішню) і прокрутку; рядок формули на вході порожній — формула з’являється, коли клацнути крок. Кому час (розкритий крок): три рівні, а кожен рівень — на перелік тварин: прострочено (межі кроку минули, рахуємо до 30, 60 чи 90 днів тому — перемикач «прострочено — за» у шапці «Вакцинації», — і лише після дати «діє з» кроку — колонка в рядку кроку: межі, що минули раніше, ніж крок завели, не прострочка; новий крок — з дня створення), зараз (тварина в межах кроку) і скоро (дійде до кроку протягом 7, 14 або 30 днів — перемикач «скоро — за» у шапці «Вакцинації», найближчі першими). Обидві межі — спільні для всієї ферми: перемикнули на одному ПК — так рахують усі ПК, списки й Календар. Під назвою рівня — його діапазон: для кроку 49–55 і «скоро — за 14» це «Скоро — 35–48-й день життя», «Зараз — 49–55-й», «Прострочено — 56–85-й» (за 30 днів). Тварину, вакциновану із запізненням, прострочка вже не показує. У тварини видно її вік і межі кроку з формули: «через 3 дні · 46-й день життя · колоти на 49–55-й», «5 днів тому · 60-й день життя · колоти на 49–55-й» — тож різні дати в різних тварин означають лише різний вік. Відмічені за замовчуванням лише «зараз» — прострочених і «скоро» відмічайте самі (галочка «вибрати» біля рівня відмічає весь рівень). «Провести · N» — подія «Вакцинація» з препаратом і дозою відміченим тваринам за датою вгорі; тварина зникає з цього кроку, а наступний крок, що рахується «після кроку», — від цієї дати. Склад аптеки ця подія не списує. У списках «Роботи зі стадом» — слово vacc («Вакцинація зараз»): кроки схем, які тварині зараз у вікні й ще не проведені; vacc_late («Вакцинація прострочена») — так само, але прострочені: FILTER(vacc_late=[Хіпра 1]), FILTER(vacc_late notempty) — усі прострочені. Ці три слова — одна родина: FILTER(vacc=[Хіпра 1]) FILTER2([+] vacc_soon=[Хіпра 1]) — кому «Хіпра 1» зараз, плюс (додатково) кому скоро; слово родини в FILTER2 заміняє умову основного FILTER, а не додається до неї. Ремарку кроку «Примітка» показує для всіх трьох слів — і в основному блоці, і в доданих. vacc_soon («Вакцинація скоро») — кому скоро, з тією самою межею «скоро — за» 7 · 14 · 30 днів, що вибрана на «Здоров’ї». BODY(id days_life gndr vacc) FILTER(vacc=[Хіпра 1]) — кому зараз «Хіпра 1»; колонка vacc пише «крок (препарат · доза)». Списки через «;» теж працюють: [Хіпра 1] ; [Хіпра 2]. У Календарі vacc рахується на кожен день: хто того дня буде у вікні кроку (за віком — заходить сам). Вакцинація, внесена деінде (груповий ввід, картка), зараховується кроку, якщо препарат той самий, а дата — у вікні кроку ± 7 днів.
  • 💉 Здоров’я / Відтворення → Синхронізація охоти. Протокол — кроки «день · препарат · доза» від старту (за замовчуванням Ovsynch: GnRH — день 0, PGF2α — 7, GnRH — 9, осіменіння — 10; дні й препарати правте під себе), останнім може бути осіменіння. «Кого ставити» — клік по умові відкриває її в рядку формули вгорі (за замовчуванням FILTER(lact>0 rc=2 or 3 dim>=45 syncDay empty)). Кандидатів визначає лише ця умова: syncDay empty відсікає тих, хто вже в протоколі; без умови протокол нікого не пропонує. Протокол виглядає як схема вакцинації: перший рядок (день 0) — старт, у колонці «Кому час» — скільки корів підходить під умову; розгорніть, відмітьте й «Поставити» (подія «Синхронізація» датою найближчого дня старту від «Дати проведення» — він стоїть біля кнопки, напр. «на сб 10.10»; поставити можна будь-якого дня тижня — кандидати стоять у «Скоро» незалежно від межі «скоро», а старт однаково ляже на день протоколу; до нього syncDay відʼємний, а корова вже в протоколі). Першим рядком протоколу стоїть «Постановка на синхронізацію»: її формула «Кого ставити», день старту (дні тижня) і кнопка «Поставити». «Поставити» лише ставить корову в протокол (syncDay 0 з дня старту), а всі ін’єкції, зокрема першу, — звичайні кроки нижче з формулами syncDay=0, syncDay=7…: розгорніть крок 1, відмітьте корів і «Провести»; нової постановки при цьому не буде. Доки ін’єкцію не відмічено, у картці корови крок стоїть «ін’єкцію не відмічено», а в історії — позначка «не колото». Вручну «Синхронізацію» вносять і в «Подіях» (одна тварина чи група), і з картки: у формі лише протокол — зі списку активних; крок, препарат, дозу, старт і звʼязок із протоколом ставить програма — тож крок видно і тут, і в картці. Корові поза протоколом запишеться старт (на день старту протоколу; дату видно в повідомленні після збереження), корові в протоколі — крок її дня (протокол тоді можна не обирати). Усе це видно й можна виправити у правці внесеної події в картці. Подія з датою після кінця протоколу корови (останній крок) — це вже нова постановка. Не внесеться, з поясненням: нова синхронізація, поки поточний протокол ще триває (спершу дочекайтесь його кінця або «Стоп протоколу синхронізації»); старт корові, що вже в протоколі; крок з іншого протоколу; уже проведений крок; осіменіння (для нього подія «Осіменіння»). Кожен наступний крок розгортається на Прострочено · Зараз · Скоро (межа «скоро» — 1 · 3 · 7 дн. у шапці панелі); «зараз» відмічені наперед, «Провести» записує крок. Які показники видно в переліку тварин (лактація, DIM, код, осіменіння…) — ⚙ у правому куті його шапки; вибір памʼятає браузер. Права кнопка по шапці протоколу чи по кроку — перейменувати, дублювати, «+ крок», перенести в списки «Роботи зі стадом», прибрати; ⠿ — перетягнути протокол. Проведені кроки й осіменіння — окрема панель «Проведені кроки синхронізації». День протоколу — це syncDay: крок належить корові, коли її syncDay дорівнює дню кроку (колонка «syncDay» у протоколі). Крок «осіменіння» відкриває груповий ввід осіменіння з цими коровами, датою і способом «Штучне — синхронізація». Час кроку стоїть біля дня: типово — час старту (06:00), вечірній крок виправте вручну (напр. GnRH 2 — 18:00). Колонка «Год» — скільки годин минає після попереднього кроку; впишіть туди години (напр. 60), і день та час кроку перерахуються самі. ⧉ у шапці протоколу — дублювати протокол: копія з усіма кроками й стандартними препаратами стає під оригіналом неактивною (інакше з тією самою формулою «Кого ставити» вона ставила б тих самих корів), курсор одразу в назві — змініть назву й кроки, потім увімкніть. Стандартні препарати протоколу — стрілка ▾ у полі з назвою протоколу: для GnRH, PGF2α, «P4 in» (вставити) і «P4 out» (вийняти) свій перемикач «активний / неактивний» (неактивного немає у виборі кроку, і він не підставляється), препарат, доза з одиницею (мл, мг, мкг…), введення (в/м, п/ш, в/в, в/матк., в/піхв. — внутрішньопіхвово, для «P4 in»…) і ціна на голову; кнопка «Підставити в кроки цього протоколу» переписує ними наявні кроки. У полі «Крок» стрілка ▾ дає вибір GnRH · PGF2α (лише активні): крок дістає назву, а всі кроки цього типу в протоколі нумеруються наново за днями (один — без номера, кілька — GnRH 1, GnRH 2…; так само після перенесення чи прибирання кроку) і одразу стандартний препарат, дозу, введення й ціну протоколу; назву, як і доти, можна вписати й руками. Введення стоїть і в ремарці: «1 · Сурфагон · 5 мл · в/м». P4 — не окремий крок: він іде того самого дня, що й GnRH чи PGF2α. Позначка «+P4» біля назви кроку дає вибір «без P4 · P4 in (вставити) · P4 out (вийняти)»; препарат і ціна P4 — зі стандартів протоколу, ціна додається до ціни протоколу, а P4 видно в ремарці. В історії подій у «Деталях» синхронізації — лише назва протоколу (препарат і доза — у полях події та в панелі картки), нотатку програма не дописує. Коли «P4 in» і «P4 out» у стандартах протоколу неактивні, P4 у протоколі не видно зовсім — ні позначки, ні в ремарці, ні в ціні; увімкнули — повертається, як було. «Ціна, ₴» — ціна кроку на одну голову (препарат, сперма, робота); сума всіх кроків стоїть у шапці протоколу як «… ₴/гол». «Діє з» — у шапці протоколу, на весь протокол: у протокол ставимо не раніше цієї дати, а запізнення кроків, що виникли раніше, не вважаються прострочкою. У «Зараз» крок потрапляє лише тоді, коли його час близько — за 2 години до часу кроку й до кінця дня; раніше того ж дня корови стоять у «Скоро» з позначкою «сьогодні о 18:00», а сторінка сама переносить їх у «Зараз», щойно настане час. День старту — один день тижня (пн…нд у рядку старту; клік ще раз по обраному — будь-який день), дні тижня кроків виводяться з нього. Перед днями кожного кроку стоїть тиждень протоколу («1 тиж.», «2 тиж.»…): тиждень старту — перший, далі за календарем; кожен тиждень має свій колір рамки й обраного дня. День кроку можна ставити будь-який після попереднього кроку, зокрема в суботу чи неділю; якщо він заходить за наступний крок, усі пізніші кроки посуваються на стільки ж днів (проміжки між ними лишаються). Стоп протоколу — у розкритому кроці відмітьте корів, «Стоп протоколу», оберіть причину (довідник «Причини стопу протоколу синхронізації») і «Стоп»: пишеться подія «Стоп протоколу синхронізації», syncDay стає порожнім, корова — у переліку «Стоп протоколу» під журналом. Корова виходить із протоколу, щойно її осіменили, стала тільною, сухостійною чи браковою, вибула або її зняли («Стоп протоколу синхронізації»); протокол, що скінчився без цього, знімається сам наступного дня після останнього кроку — така корова в переліку «Не завершили протокол» під журналом проведених кроків. Параметр «День синхронізації» (syncDay) — котрий сьогодні день протоколу: 0 у день старту, 7 — у день PGF; порожньо, коли корова не в протоколі (так і за замовчуванням: корова, яку не ставили, має порожній syncDay; у списках — syncDay empty). Його можна брати в колонки й умови списків і Календаря: FILTER(syncDay=7). Рахується від «Старту синхронізації», а гасне після «Кінця протоколу синхронізації» (syncEnd — старт + день останнього кроку); обидві дати кожен крок записує сам. Протоколи відрізняються за внутрішнім номером протоколу, який кожен крок записує в подію разом із назвою протоколу й кроку — тож історія читається, навіть якщо протокол перейменували чи прибрали. Параметр «Поточний протокол синхронізації» (syncProto) — назва протоколу, поки корова в ньому (є syncDay), інакше порожньо: FILTER(syncProto=[Double Ovsynch]). «Протокол синхронізації» (syncProtoLast) — те, що обирають у формі події; лишається й після осіменіння — видно, після якого протоколу корову осіменили. Період обох панелей результатів — перемикач Рік · Квартал · Місяць · Тиждень і стрілки ‹ › («Зараз» — поточний); числа перераховуються одразу. Панель «Результати осіменінь» — осіменіння за період, перемикач Корови · Телиці (телиця — лактація 0 на день осіменіння; біля кожної — скільки осіменінь) показує таблицю вибраних, у заголовку — її %, унизу «Разом», під таблицею «Усього» по стаду, як у Telegram; перемикач Рази · Технік · Бик (і «Спосіб», коли їх кілька; рази — завжди 1 · 2 · 3 · 4+ від останнього отелу); під ними — conception rate за місяцями (рік, квартал) чи за тижнями (місяць): лише вибрані корови чи телиці: рядки вибраного розрізу й унизу «Усього» — їхній підсумок; «Усього» по стаду — рядком під таблицею осіменінь: скільки осіменінь, тільні, ялові, без перевірки, вибули й conception rate = тільні ÷ усі осіменіння (і ті, що ще без перевірки). Кожне осіменіння рахується окремо: тільна — після нього УЗД «тільна», подія «Тільна» чи отел через 200+ днів; ялова — УЗД «ялова», «Ялова» або її знову осіменили (перегул — попереднє осіменіння ялове). Значок Excel після назви панелі вивантажує базу осіменінь за вибраний період: рядок на кожне осіменіння — дата, місяць, номер тварини, корова чи телиця, лактація, днів після отелу, № осіменіння, технік, бик, результат, дата результату, чи вибула; чисті дані без форматування: перший рядок — заголовки з кнопками фільтра, далі значення — для власних зведених таблиць. Таблиця — за шириною підписів; порядок стовпців змінюється перетягуванням заголовка (запамʼятовується в цьому браузері). Conception rate — лише відсоток. «Вибули» — осіменені, що потім вибули: вони вже враховані в тільних чи ялових за станом перед вибуттям (немає перевірки — за репродуктивним кодом перед вибуттям), у підказці — тільні · ялові · без перевірки. Наведіть на будь-яке число (і в «Результатах протоколів») — збоку відкриється перелік тварин; на відсоток — два стовпці, тільні та ялові. У підказку можна завести мишу, клік по номеру — картка тварини. Панель «Результати протоколів» — по кожному протоколу за період (за датою старту): значок Excel після назви — база постановок: рядок на кожну тварину в протоколі (дата старту, протокол, ID, номер, корова чи телиця, лактація, чи пройшла до кінця, чим завершився, причина стопу, дата осіменіння, результат і його дата), чисті дані з фільтром; скільки разів ставили, скільки закрило осіменіння, скільки з них тільні (УЗД з результатом «тільна», подія «Тільна» чи отел), ялові (УЗД, «Ялова» або знову осіменили), чекають УЗД, заплідненість (тільні з усіх осіменених за протоколом), скільки зупинено (стоп) і скільки не завершили (протокол скінчився без осіменіння й без стопу). Під кожним протоколом — його постановки за ID (DO-101026 · старт), від найновішої, з тими самими колонками; клік по рядку протоколу згортає чи розгортає їх. «Пройшли до кінця» — скільки отримали останній крок протоколу (осіменіння — у його день, −2…+3 дні; протокол без осіменіння — сам останній крок) з тих, хто вже пройшов або в кого цей строк минув: «81 % 22 з 27», як у фінальному повідомленні Telegram. Наведіть на число — номери корів; на «Стоп» — ще й причина. Видалити протокол (✕ у шапці) можна лише тоді, коли в ньому немає корів; інакше програма запропонує зробити його неактивним (нових не ставить, розпочаті доводяться — найчастіше саме це й потрібно) або «Стоп протоколу» всім коровам із причиною. Видалений протокол не зникає: він лягає в рядок «Видалені протоколи» під протоколами, кнопка «Відновити» повертає його з тими самими кроками й номером (результати не розділяться) — неактивним. Списки синхронізації в «Роботі зі стадом» і Календарі знають два слова: syncStep — «крок синхронізації сьогодні» (крок протоколу корови, чий день дорівнює її syncDay; у Календарі — на день формування, з препаратом, дозою й P4) і syncNext — наступний крок («GnRH 2 · через 2 дн. (сб 10.10)»). Ще два числа: syncStepNo — № кроку, що корові сьогодні (кроки нумеруються в протоколі за днем, старт — 1; номер видно ліворуч у рядку кроку), і syncSteps — скільки всього кроків у її протоколі: VIEW(sort syncStepNo) шикує список за порядком кроків, FILTER(syncStepNo=1) — лише старт. syncPct — скільки протоколу пройдено, %: № кроку, до якого корова вже дійшла, ÷ кроків × 100 (старт із 4 кроків — 25 %, осіменіння — 100 %; між кроками число лишається): FILTER(syncPct>=50). syncRoute — введення препарату кроку, що корові сьогодні (в/м, п/ш, в/піхв.…; P4 того самого дня — своїм введенням: «в/м + в/піхв. (P4 in)»). Береться з кроку протоколу — ▾ біля назви протоколу → «Введення»: BODY(id syncStep syncRoute), FILTER(syncRoute=в/м). Усі ці слова (і вакцинації — vacc, vacc_late, vacc_soon) стоять у Конструкторі → «Параметри» у своїх секціях з позначкою «з протоколів»: їх рахують протоколи й схеми «Здоров’я», тож змінюються вони там; у рядку формули — синім, як решта параметрів. Значення видно скрізь: у списках і Календарі, у картці тварини («Наступний крок синхронізації: PGF2α · через 6 дн.»), у панелях «Огляду» й зведенні в Telegram, у «Русі поголівʼя» — лише на сьогодні (історії по днях у них немає, раніші дні — «—»). Перемикач «на день / увесь протокол» — у самій формулі: FILTER(syncProto=[Ovsynch] syncStep notempty) — лише ті, кому крок сьогодні; приберіть syncStep notempty — усі корови протоколу. Готові списки: меню протоколу (права кнопка по шапці) → «☰ Список протоколу» (назва «Ovsynch · протокол») і «☰ Перенести всі кроки в списки» (ще й по списку на кожен крок, лише корови цього протоколу); кнопка «☰ На сьогодні» вгорі панелі — список «Синхронізація на сьогодні»: усі протоколи, згруповані за протоколом, кроки — за порядком (№ кроку · з кількох). Перейменування протоколу переписує ці списки й назву протоколу в корів. На друку такого списку (і в «Роботі зі стадом», і в Календарі) вгорі дрібним — скільки препаратів підготувати на тварин аркуша: «Естрофан — 14 мл · 7 доз», P4 окремо, кожен препарат окремо, як у вакцинації. В історії картки тварини кроки й стоп показують протокол попереду й дозу кроку після препарату: «Ovsynch · Оварелін · 2 мл», «Ovsynch · Хвороба» (шаблон деталей подій можна змінити в Конструкторі).
  • Номери інструкцій. Кожна інструкція на сторінках стада підписана номером, напр. «Інструкція 7.2.1»: перше число — номер сторінки в меню гілки (07 — Конструктор), друге — вкладка (2 — Події), третє — крок чи блок усередині (1 — «Доступ»). На інструкцію можна послатись словами. Номер сторінки береться з меню, тож якщо пункти меню переставлять, номери підуть за ними.
  • Налаштування — шоста вкладка Конструктора: числа, на яких тримаються розрахунки ферми. Угорі — цикл відтворення: тільність корів і окремо нетелів (нетель — тварина, що ще не телилась), запуск до отелу, очікування після отелу, перевірка й перепровірка тільності, повторне осіменіння, вік першого осіменіння телиці; з них же рахує календар відтворення. Нижче — власні числа: «+ Додати», назва, коротка назва одним словом, значення, одиниця і пояснення. Назву пишуть у формулі замість числа: у параметрі — ADDDAYS(dateInsem, [Тільність корів]) або коротко gestCow; у списку — FILTER(servPeriod >= spMax). Змінили число тут — змінилось скрізь, де воно вжите. Строк нетелі чи корови обирається у формулі явно, за лактацією: ADDDAYS(dateInsem, IF(lactation = 0, gestHeifer, gestCow)) — так стоїть «Очікуваний отел». Коротший запис того самого — GESTATION(). Назва, яку вже має параметр, не приймається — у формулі їх не розрізнити. Клік по назві в колонці «У формулі» копіює її.
  • Telegram: гілки «Управління стада», «Відтворення», «Мастит» і «Conception rate» (остання — галочка «Conception rate — щопонеділка за минулий тиждень, з …»: окрема гілка, де щопонеділка о 7:00 — осіменіння, зроблені за минулий тиждень, — таблиця по разах 1 · 2 · 3 · 4+, окремо корови й окремо телиці (лактація 0 на день осіменіння): осіменено, тільні, ялові, ще без перевірки і % тільних з усіх осіменених, унизу «Усього»; а 1-го числа о 7:00 — таке саме зведення за минулий місяць (стоїть після тижнів свого місяця); повідомлення доповнюється на місці, щойно вносять перевірки тільності; звіти йдуть по тижнях від вибраної дати, тиждень без осіменінь пропускається) — плитка внизу вкладки «Налаштування». Галочка «Кожне внесення подій» шле кожне внесення окремим повідомленням; осіменіння, УЗД (перевірка тільності) і синхронізація (осіменіння — за техніком, у нього за биком, біля номера № осіменіння; у перевірці тільності окремо номери тільних і ялових, унизу — conception rate: тільні з перевірених, у %) — у гілку «Відтворення»; синхронізація — окреме повідомлення на постановку і на кожен крок: угорі назва протоколу (і позначка з поля «Позначка в повідомленнях синхронізації», напр. «Тест»); у постановці — старт, перший крок, препарат, скільки голів і номери; у кроці — дата, препарат, «N з M гол.» і ті самі тварини постановки стовпчиком, по одній у рядку: хто отримав крок — просто номер, решта з позначкою (осіменена), (вибула), (стоп — причина) чи (без кроку); унизу — «У протоколі: 24 з 27 (89 %)» (без тих, кому зробили стоп, хто вибув чи осіменений раніше) і що далі за протоколом. На день осіменіння за протоколом (±2–3 дні) — фінальне повідомлення «Осіменіння»: осіменені — просто номер, решта з причиною, унизу «Пройшли протокол до кінця: 22 з 27 (81 %)». У назві кожного повідомлення — ID протоколу за датою старту: перші літери назви + день, місяць і рік старту (Double Ovsynch від 10.10.2026 → DO-101026; той самий протокол 10.10.2027 — уже DO-101027); той самий ID — у рядку протоколу на панелі картки й у параметрі «ID протоколу синхронізації» (syncId) для списків: FILTER(syncId=[DO-101026]). Крок, внесений пізніше чи виправлений, переписує своє повідомлення, поки триває протокол; стоп протоколу синхронізації — ще й своїм повідомленням; усе, що заводить тварину в маститну секцію чи виводить з неї (подія «Мастит», переведення, запуск з маститу), — у гілку «Мастит»; решта — в «Управління стада». Якщо в одному груповому внесенні частина тварин іде в мастит, а частина ні, — у «Мастит» лише перші, решта лишається в «Управлінні стада». У гілці «Мастит» — одне повідомлення на день події: «🩺 Мастит · дата»; «🔴 Зайшли — N гол.» — номер, кличка, з якої секції, уражені долі (з події «Мастит»; зайшла переведенням — з останньої такої події за 60 днів), DIM (днів від отелу на день події), останній контрольний надій; «🟢 Вийшли — N гол.» — за секцією, куди пішли, номери; унизу «Поголівʼя: на початок — N · +N · −N · на кінець — N · X % дійного стада». Подію того дня внесли чи виправили пізніше — те саме повідомлення переписується на місці. Повідомлення є на кожен день, що має зведення стада: якщо ніхто не заходив і не виходив — лише «🩺 Мастит · дата» і «Поголівʼя: N · X % дійного стада» (сьогоднішнє — з 7:00, разом зі зведенням). Повідомлення в гілці стоять за датою події: внесли подію заднім числом — пізніші повідомлення перекладаються за нею (без сповіщення, дзенькає лише нове); виправили дату події — повідомлення переїжджає на своє місце. Порядок тримається для внесень за останні 7 днів; якщо старе повідомлення не вдається прибрати, воно лишається на місці, переписане, — другого такого самого бот не кладе. Вигляд: угорі — подія й дата події; нижче — скільки голів (або номер тварини), спільні деталі, номери тварин (у великих пакетах — середнє з межами: надій, жир, вага); у самому низу — хто вніс, дата й час. Групове внесення — одним повідомленням, накладна продажу — одним на всю накладну. Контрольний надій — без номерів тварин: кількість голів і суха статистика (середнє з межами: надій, жир, білок). Повідомлення йде через 10 хвилин після останньої правки внесення — швидкі виправлення не смітять; пізніша правка переписує те саме повідомлення (із позначкою «✏️ виправлено»), прибране цілком внесення — прибирає й повідомлення. У простій групі ферми цін, сум і покупця немає; у фінансовій групі своя гілка «Управління стада» — лише вибуття й продаж, з вагою, цінами, сумами й рядком «Разом». Гілки бот створює сам. «Народження» не шлеться: про телят каже повідомлення отелу. Увімкнення починає з тієї миті — давніші внесення в гілку не йдуть.
  • Telegram: зведення стада — друга галочка на тій самій плитці. Щодня о 7:00 (зі звуком) у гілці «Управління стада» зʼявляється зведення — першим повідомленням дня, внесення того дня йдуть за ним. Угорі — дата; нижче стовпчиком — фуражні, дійні, сухостій, телиці, нетелі, бики: ті самі числа, що на панелях «Огляду» («Фуражні», «Дійні», «Сухостій», «Телиці», «Нетелі», «Бички»; перейменування панелі звʼязку не рве; у дужках — ± до попереднього дня, тобто до вчорашнього зведення на кінець дня); далі за день — запуск, отел, приплід (телички й бички, мертвонароджені окремо) і вибуття, за датою події; нулі не пишуться, а якщо за день не було нічого — блоку «За день» немає. Протягом дня повідомлення переписується на місці, щойно змінюються числа («станом на …»). Подія, внесена пізніше заднім числом (напр. запуск 30.09, внесений 01.10), виправляє зведення ТОГО дня — і рух, і поголівʼя на кінець дня, і «±» наступного — з позначкою «✏️ виправлено». Окремо від стада — «🩺 Мастит — N · X % дійного стада»: панель «Огляду» з такою назвою, а якщо її немає — скільки голів у маститній секції. Це єдине про мастит у «Управлінні стада»: хто зайшов і вийшов — у гілці «Мастит». Будь-яка подія, що міняє секцію (переведення, запуск), показує, звідки й куди: «🔀 Група-4 → Група-6», а коли тварини йшли з різних секцій — у рядку кожної тварини. Працює разом із галочкою «Кожне внесення подій».
  • Робота зі стадом — вкладка на сторінці «Головна» гілки стада: разова вибірка формулою, як в Excel, але словами з Конструктора. Рядок формули — єдиний стандарт для стада: одразу під смужкою пошуку тварини, на всю ширину (так само на «Русі поголівʼя»); під час прокрутки лишається вгорі. Формула пишеться й зберігається без «=» на початку (давні з «=» читаються так само). Назва параметра — у квадратних дужках — коротка назва з Конструктора (дужки необовʼязкові). Три частини, як у списку календаря: =BODY(name group dslh) FILTER(dslh>=35 rc=4) VIEW(no groupby group sort dslh desc) — тіло, фільтрація, відображення; усередині дужок пишеться через пробіл. Дужки й лапки ставляться парою самі (тут і в усіх полях формул — «Рух поголівʼя», Календар, «Здоровʼя», формула параметра, шаблон деталей події, формули молока): набрали (, [, { чи " — закривна стоїть одразу за курсором; набрали закривну перед такою самою — курсор її переступає; Backspace між порожньою парою прибирає обидві; виділене обгортається дужками. Перед словом пара не ставиться. Розгорнутий рядок — кнопка ⌄ праворуч у полі або Ctrl+Shift+U: кожна частина формули стає своїм рядком зі зсувом вправо за ієрархією: перша частина (TABLE, BODY, EVENT) — головна, решта — на рівень глибше, рядки таблиці ROW(…) і ваші переноси всередині дужок — ще глибше; і так тримається під час набору — закрили частину чи вставили підказку, вона стає на своє місце, курсор лишається там, де ви пишете. Alt+Enter (або Shift+Enter) — свій перенос рядка, він зберігається разом зі списком; Enter, як і доти, застосовує. Згорнутий рядок показує перший рядок формули, а кнопка ⌄ підсвічена, коли рядків кілька. Так само розгортаються рядки формули в «Русі поголівʼя», Календарі й «Здоровʼї» (⌄ / Ctrl+Shift+U, Alt+Enter) — і там формула зберігається такою, як ви її розклали. Формула з переносами відкривається одразу розгорнутою; згорнули рядок — формула стає одним рядком і так зберігається. У VIEW: no — колонка № з/п (nogroup — з 1 у кожній групі), groupby <параметр> — групи, sort <параметр> desc — порядок, cnt — кількість (сама по собі — голів, з назвою параметра — скільки тварин мають це значення), avg — середнє, sum — сума, min — найменше, max — найбільше. Проміжок пишеться between: «dcc between 220 226» (можна й через кому, тире чи «та»); дату — звично, due between 25.09.2026 30.11.2026, або відносно сьогодні: due between today 14d (від сьогодні на 14 днів уперед), due<today+30, last_calving>-60d (TODAY() теж розуміється) — межі рахуються щоразу від поточного дня. Тварина без дати (у колонці порожньо, у формулі параметра стоїть 0) у порівняння дат не потрапляє. Значення списку словом шукається спершу точно: rc=Тільна — це код 5, а не «Новотільна»; частину слова (rc=новот) застосунок бере, лише коли вона підходить одному пункту. Зайвий знак (age>>13) — помилка під рядком, а не «нікого». У заголовках таблиці — назви параметрів; слово для формули видно в підказці на заголовку. Звіт від звіту. Замість цілої формули можна поставити назву вже збереженого звіту в квадратних дужках — списку з «Списків» або панелі «Огляду»: FILTER(rc=5) / [Корови фуражні] — частка тільних серед тих, кого добирає список «Корови фуражні». Працює з обох боків «/» і саме по собі ([Корови фуражні] покаже тих самих тварин). Це посилання, а не копія: виправили формулу списку — усі звіти, що на нього посилаються, рахують по-новому. Після «[» поза дужками дії застосунок підказує назви збережених звітів (усередині FILTER(…) ті самі дужки означають назву параметра — там підказка та сама, що й була). Посилання шукається лише за точною назвою (великі й малі літери не важать). Набрали коротко — [Дійн] — Enter сам доповнить до повної назви, якщо вона впізнається однозначно за початком. Звіт, якого вже немає (прибрали чи перейменували), — чесна помилка «немає звіту …», а не мовчки інший звіт зі схожою назвою. Так само вголос — коло («звіт посилається сам на себе»), порожня панель («ще порожня») і складена панель (на неї не посилаються — лише на її показники). Назва — одна на списки й панелі: на звіт посилаються саме назвою, тож список і панель з однаковою назвою завести не вийде; квадратних дужок у назві теж не буває. Перейменування — у ⚙, у «Списках» чи на плитці — одразу переписує посилання на цей звіт у всіх панелях і списках, а «Повернути» в «Історії» повертає й назву, і ці посилання. Посилання на список у панелі рахує кількість його тварин (навіть якщо в його VIEW стоїть avg). ⚠️ Календар посилань НЕ читає — туди переносьте саму формулу. Порядок сам собою. Не написали sort — список іде за першим параметром, який стоїть у BODY; однакові значення (уся секція) розводить номер тварини. Номери шикуються як ЧИСЛА, тож «902» стоїть перед «1023», а «2776-2» — одразу за «2776». Написали своє sort — воно головніше й діє на весь список; додані FILTER2 в автоматичному порядку лишаються після основних. Примітка блоку — rem=: наприкінці FILTER чи FILTER2 допишіть rem=[Хіпра 4] — у списку зʼявиться колонка «Примітка», і в кожної тварини цього блоку стоятиме цей текст (напр. яку вакцину колоти). Приклад: FILTER(age between 3 5 rem=[Хіпра 4]) FILTER2([Коглавакс] age between 4 8 rem=Коглавакс) — тварина, що підходить під обидва блоки, стоїть у списку раз із приміткою «Хіпра 4 · Коглавакс». Примітка — лише в списку (екран, друк, Excel): у картку тварини вона не записується. Пробіли в рядку формули ставляться самі (Enter, відкриття списку чи панелі): один пробіл між словами, біля = > < >= <= <> — без пробілів, після «(» і перед «)» — без, між «…) FILTER(» — один, «;» «|» «/» — з пробілами з обох боків; [у квадратних дужках] — як набрали. Так само в Календарі й «Русі поголівʼя». Кілька списків одним — через «;»: [Хіпра 1] ; [Токсіпра плюс 1] показує тварин обох списків одним суцільним списком за номером (кожна раз, з примітками всіх списків, куди вона потрапила); з якого списку тварина — колонка «Список» (і на екрані, і в Excel/CSV); колонки — першого списку; «Груповий ввід» бере саме цих тварин. На плитці «Огляду» «;», як і раніше, — кілька чисел поруч. Права кнопка по тварині в таблиці: картка · внести подію цій тварині · груповий ввід для всього списку · копіювати номер. У меню панелі (бічна панель, «Огляд») — Дублювати панель: копія з тим самим виглядом стає одразу за оригіналом. Вік рахується ПОВНИМИ місяцями від дати народження: age>=12 бере лише тих, кому 12 місяців уже виповнилось (332 дні — це ще 10-й місяць життя). У колонці стоїть ТЕ САМЕ число, за яким іде добір, — таблиця й умова розійтися не можуть. FILTER2(…) — додаткові тварини до списку: беруть умови основного, а свої замінюють умову на той самий параметр. FILTER(rc=5 dcc between 220 226) FILTER2([Пропущені] dcc>226) — до тих, кого пора запускати, додасть тільних, кого пропустили. Назва в дужках — як підписати цей додаток; блоків може бути кілька (FILTER2, FILTER3…). Додані тварини стоять у тій самій таблиці; назва блоку («+») стоїть ЗЛІВА ВІД НОМЕРА — і на екрані, і на друку, — а номери при цьому не зміщаються. У шапці видно «12 + 3», під рядком формули — скільки кого додано; на аркуші це написано під заголовком. У вивантаженні Excel/CSV назва блоку йде окремою колонкою «Дод.». Числа стають у своїх колонках — у рядку групи («Група-1 · 79») і в рядку «Разом» унизу; на одну колонку можна поставити кілька агрегацій (min dslh avg dslh max dslh → «30 · 118,8 · 444»). Ширина колонок підбирається сама — за найдовшим значенням у колонці. Enter у рядку формули показує тварин і, якщо відкрито збережений список чи панель «Огляду», одразу зберігає змінену формулу в нього (з помилкою у формулі нічого не перезаписується). ✕ у полі очищає рядок і закриває відкритий список — тоді Enter уже нічого не перезапише. Оновлення сторінки й «назад» нічого не гублять: лишаються вкладка, формула, відкритий список (підсвічений у рейці) і місце, де ви були на сторінці. Перехід сюди з іншої сторінки починає з чистого рядка формули — так само в Календарі й на «Здоров’ї». Записується лише те, що змінили на цій сторінці: списки, які тим часом змінили, додали чи прибрали з іншої вкладки чи компʼютера, лишаються як є; якщо той самий список змінили і тут, і там, застосунок перепитає, чи записати ваш варіант поверх (так само в Календарі). Кнопка «+»: якщо в рядку набрана формула, якої ще немає у відкритому списку, — зберігає саме її новим списком і питає назву; якщо рядок порожній (або в ньому формула відкритого списку) — заводить новий порожній список «Новий список» (категорія «Інше») з чистим рядком формули: набираєте формулу, Enter — вона записується в цей список; назву, категорію й коментар міняють у ⚙. Список, з якого почали, лишається як був. Збережені списки стоять у вкладці Списки / Таблиці / Графіки (одні на ферму): перемикач угорі вкладки показує списки, аналітичні таблиці або графіки (графіків поки немає), вибір памʼятається; клік по назві відкриває список чи таблицю в «Роботі зі стадом»; списки згруповані за темами (категоріями), у рядку — назва і сама конструкція, коментар нижче. Там є пошук (за назвою, коментарем і формулою) і добір за категорією; натиснувши назву, список відкривається у «Роботі зі стадом» і лишається приєднаним — під рядком видно, який саме. Виправили формулу й натиснули Enter — збережеться в той самий список без зайвих запитань. + (у рядку кнопок і біля заголовка «Списки» в бічній панелі) заводить новий порожній список; ✕ у рядку списку бічної панелі (зʼявляється при наведенні) видаляє його — з перепитом; подвійний клік по назві списку чи панелі, по заголовку категорії списків чи розділу панелей у бічній панелі — перейменувати просто на місці (Enter — зберегти, Esc — як було; посилання й списки йдуть за новою назвою); список можна перетягнути мишкою на заголовок іншої категорії (ляже в її кінець) або на інший список (стане перед ним); так само панель перетягується на заголовок іншого розділу чи на іншу панель, а категорію списків чи розділ панелей перетягують за заголовок — тягнуть угору, стане перед тим, на який кинули, униз — після нього, а лінія під час перетягування показує, куди саме ляже (розділ переїжджає з усіма панелями, як на «Огляді»); на вузькому екрані заголовки теж є — компактним підписом перед пігулками; ⚙ Категорії (у вкладці «Списки» і ⚙ біля заголовка «Списки» в бічній панелі) — свої категорії списків: додати, перейменувати (списки йдуть за новою назвою), видалити з перепитом (списки переходять у «Без категорії»), перетягнути за ⠿ — у такому порядку категорії стоять і в бічній панелі, і у вкладці; категорію списку міняють у ⚙ списку; так само «+» біля «Панелі» заводить порожню «Нову панель» (формулу набирають у рядку, Enter зберігає), а ✕ на плитці панелі видаляє її — з перепитом; значок копіювання в рядку формули кладе формулу в буфер обміну; Esc у рядку формули (у «Роботі зі стадом», Календарі й на «Здоров’ї» однаково): перший — закрити підказки, другий — повернути формулу, як була, нічого не зберігаючи; а ✕ у полі очищає рядок і відвʼязує від відкритого. У рядку списку: значок копіювання біля самої формули кладе її в буфер (разом із «=», тож одразу вставляється в рядок); ⧉ робить копію списку — вона лягає під оригіналом, у ту саму категорію, з назвою «… (копія)». Усі дії зі списком — права кнопка миші по його назві (у «Списках» і в бічній панелі «Роботи зі стадом»): «Редагувати формулу · Перейменувати · Змінити примітку · Дублювати список · Перенести в календар · Видалити» (видалення — з перепитом); на сенсорному екрані — кнопка «⋯» біля назви. Права кнопка по панелі в бічній панелі — «Редагувати формулу · Перейменувати · Налаштувати · Показати/сховати на «Огляді» · Видалити»; по плитці «Огляду» — «Показати тварин · Налаштувати · Сховати · Прибрати панель»; по списку в Календарі — «Редагувати формулу · Налаштувати · Друк · Дублювати список · Видалити». Дублікат стає під оригіналом: назва, що закінчується числом, дістає наступне вільне («Хіпра 1» → «Хіпра 2»), інша — «(копія)»; у бічній панелі назву копії одразу можна виправити. Назва й примітка правляться просто в рядку: Enter — зберегти, Esc — як було (порожня примітка — прибрати). Збережені списки стоять збоку від таблиці — із кількістю голів у кожному («Дійні корови · 191»), тож видно, куди йти, ще до кліку; клік одразу показує список. У кожній категорії списки пронумеровані своїм рахунком (Інше 1, 2 · Відтворення 1) — щоб список можна було назвати номером уголос. Заголовок «Списки» згортає рейку, і тоді таблиці дістається вся ширина; згорнутою вона й лишається, доки не розгорнете. Під заголовком — пошук по списках (шукає і за назвою, і за категорією, і за приміткою); зʼявляється, щойно списків стає більше одного, а номери при пошуку не міняються, щоб список лишався «третім у Відтворенні» завжди. На вузькому екрані вони лягають пігулками над таблицею. Кількість рахується в браузері тією самою мовою добору, що й сама формула. Enter зберігає без запитань. Коли список (або панель «Огляду») уже відкритий, Enter записує в нього те, що в рядку — жодних вікон. Питання «список чи панель · назва · категорія» зʼявляється лише для нового — по кнопці «+». Щоб зробити окремий список із наявного, змініть формулу й натисніть «+» (а не Enter) — оригінал лишиться цілим; або беріть ⧉ «копію» у «Списках». ⚙ відкритого списку: назва, категорія, коментар, колір шрифту, колір канта і фон, «📅 У календар». Панель налаштовують маленьким вікном поряд із нею: ✎ на панелі в переліку збоку (або ⚙, коли панель відкрита) — назва, розділ, кольори шрифту, канта й фону, розмір (звичайна · велика · ще більша), формат числа (кольори — переліком «кружечок · назва», ті самі 15, що в «Русі поголівʼя», і «свій колір» унизу), «Показувати» (у частці) і «Прибрати панель». Зміни — одразу, без «Зберегти»; клік повз вікно чи Esc закриває його. Колір списку фарбує його пігулку в рейці — щоб важливі списки було видно здалеку; відкритий список позначений рудою смужкою зліва незалежно від кольору (у темній темі колір лише підфарбовує тло, щоб напис лишався читабельним). На «Огляді» ✎ на плитці відкриває ті самі налаштування просто на ній. Панелі — у тій самій рейці, під списками, але окремо. Збоку два блоки у своїх коробках: Списки (перелік тварин — рядок із номером і кількістю) і Панелі (показник числом — плитка з числом угорі й назвою під ним, як на «Огляді»; складених панелей тут немає — лише показники). Кожен згортається окремо, пошук угорі шукає в обох. Панелі згруповані за розділами «Огляду», число на плитці — те саме, що на «Огляді». Клік по панелі кладе її формулу в рядок і показує самих тварин: далі правите формулу й тиснете Enter — панель збережена, число в рейці одразу нове; вигляд і назву міняє вікно ✎ поряд із панеллю. «+» біля заголовка «Панелі» заводить нову панель із набраної формули (назва й розділ — у віконці). Прибирають панель хрестиком на «Огляді» або «Прибрати панель» у вікні ✎ — для схованої, в якої плитки на «Огляді» немає, це єдиний шлях. Кнопка «Груповий ввід · N» відкриває «Події» в режимі групи й переносить туди саму формулу, а не готовий перелік тварин. У груповому вводі зверху стає позначка «За формулою: …», список рахується там наживо тією самою мовою добору, і всі його тварини одразу відмічені — зайвих знімаєте на місці. Хрестик біля позначки повертає все стадо, а вибір при цьому лишається. Тобто якщо за той час хтось отелився чи змінив секцію, у груповому вводі буде вже новий склад списку, а не вчорашній. «🖨 Друк» ставить угорі аркуша назву відкритого списку (а під нею — скільки голів із скількох і дату), тож роздруківку видно, що це за список. Якщо формулу в рядку виправили руками, назва зникає й лишається «Робота зі стадом» — щоб на папері не стояло чуже імʼя. Друк відкриває попередній перегляд на A4 — той самий, що в календарі: книжковий/альбомний, одна або дві колонки, шрифт (гарнітура, розмір, жирний/курсив), масштаб у відсотках, шапка таблиці на кожному аркуші, групи з «(продовження)». Ширину стовпців для паперу застосунок добирає сам — за вмістом і друкованим шрифтом, а не за тим, якими стовпці вийшли на екрані (екран удвічі ширший за аркуш, тож доти останні стовпці зрізало). Якщо навіть так найширший стовпець не стискається (дата не переноситься), весь вміст рівно зменшується настільки, щоб умістити все — угорі поруч із кількістю аркушів видно, до скількох відсотків («вміщено: 96%»). Масштаб у смужці лишається для випадків, коли хочеться дрібніше свідомо. «⤓ Excel» і «⤓ CSV» вивантажують ПЛАСКУ таблицю — тільки шапка й дані. Рядків груп і «Разом» у файлі немає: замість них значення групи стоїть звичайною колонкою в кожного рядка (групували на двох рівнях — буде дві колонки; якщо групували за колонкою, яка й так у списку, другої такої не додається). Так файл можна відсортувати, відфільтрувати й звести — заради цього його й вивантажують; в Excel фільтр по шапці вмикається сам. Файл називається як список («Дійні корови 25.09.2026.xlsx»), в Excel так само підписані перший рядок і сам аркуш, а під назвою стоїть, скільки тварин і за яку дату. Формули добору у файлі НЕМАЄ — тому, хто його відкриє, вона нічого не каже. «Поділитися» (значок із трьома кружечками поруч із CSV) надсилає той самий список файлом — PDF (аркуш A4 з назвою списку, датою й номерами сторінок) чи CSV — у Telegram, Viber або WhatsApp. Формат обираєте вгорі вікна, він запамʼятовується. На телефоні й Mac — одна кнопка «Надіслати…»: відкривається системне вікно «Поділитися», там обираєте Telegram, Viber чи WhatsApp і контакт — файл іде вкладенням. На Windows кнопки «Поділитися» немає: браузер там не вміє передати файл у месенджер — вивантажте Excel чи CSV сусідніми кнопками (PDF — «Друк» → «Зберегти як PDF») і надішліть файл із месенджера. Таблицею надсилайте CSV — його відкриває Excel; файл Excel браузер у «Поділитися» не пускає, тому в цьому вікні його немає (вивантажити Excel можна сусідньою кнопкою). Кнопка зі стрілкою вниз у вікні — просто зберегти файл. Українські слова (ТІЛО, ФІЛЬТРАЦІЯ, ВІДОБРАЖЕННЯ, групувати, сортувати, спад) теж працюють. Під час набору застосунок підказує просто під курсором: дію, параметри з повною назвою, у FILTER після параметра — умову (=, >, between, empty…), а після «rc=» — самі коди з назвами («5 — Тільна»), після «group=» — секції; у VIEW після avg/sum/min/max — лише числові параметри, після sort — desc/asc. Tab вставляє, ↑↓ вибирають (після стрілок Enter теж вставляє), Enter без стрілок — прочитати список, Esc — закрити. Значення з пробілом пишеться в дужках: group=[Група 0-3] (підказка ставить їх сама). Після «=» (і після «[») підказка пропонує варіанти: зі списку параметра, а де списку немає — що зараз стоїть у тварин стада зі скількома головами (breed=, syncDrug=); для syncProto= — назви всіх протоколів, навіть якщо корів у них ще немає. Так само після contains (частина тексту) і between: для чисел і дат — значення стада від найменшого до найбільшого (дати — дд.мм.рррр), а для другої межі — лише не менші за першу: dim between 60 120. Умови: = <> > >= < <=, between 200 260 (між), contains (містить), empty (порожньо), notempty (не порожньо), кілька значень через or (або). Службові слова — англійською, як і FILTER/BODY/VIEW; старі українські (між, містить, порожньо, або) теж розуміються, а після Enter рядок переписується англійською. Якщо у формулі немає BODY(…), таблиця не показується — лише «Знайдено N із M» і показники з VIEW (avg, sum, min, max); друк і Excel/CSV просять додати BODY. «Як писати» показує і довідку, і перелік параметрів — клік по параметру вставляє його назву в рядок; «⤓ CSV» вивантажує таблицю. Нічого не зберігається.
  • № секції (secno) — обчислюваний параметр: яким за рахунком іде секція тварини у списку «Секції» Конструктора. Перетягнули секцію — номери змінились самі. Годиться колонкою, для сортування й для відбору діапазоном (FILTER(secno<=3)). Цей самий номер видно і в Конструкторі → Секції — сірим ліворуч від картки, перед власним номером секції: ліворуч порядковий (за яким іде), праворуч у рамці — ваш короткий номер (01, 02…), і він не змінюється від перетягування.
  • Вибула — код 9: щойно тварині ставиться будь-який статус, крім «в стаді», її репродуктивний код стає 9 «Вибуття» (8 «Переміщення з ферми» лишається, якщо вже стояв). Наявні записи виправляються одноразово при оновленні.
  • Бик лишається биком: тварині чоловічої статі не ставиться маточний репродуктивний код (Телиця, Осіменена, Тільна, Сухостій…) — у неї 7 «Бичок». Переміщення (8) і вибуття (9) діють і для нього. Наявні записи виправляються одноразово при оновленні.
  • Перевірка (меню стада, 07) — де в тварин у стаді порожні параметри. Правило: у кожного параметра має бути значення або прочерк «—» (свідоме «немає»), але не порожньо. Для кожного параметра з пропусками видно скільки порожніх і смужку заповненості; «Заповнити порожні» ставить вказане значення лише там, де порожньо (наявні не змінюються), «Прочерк» — «—», «показати тварин» відкриває саме їх у «Роботі зі стадом». Обчислювані параметри не перевіряються — вони рахуються самі; секція, стать і номер тварини прочерку не приймають. У «Кличці» є ще «За матірʼю»: тварина без клички отримує кличку на ту саму літеру, що й кличка матері (мати Мальва → Марта), бичок — із чоловічих кличок. Клички не повторюються серед живих; коли вільні на цю літеру скінчились — та сама з номером («Мальва-2»). Спершу видно, скільком дасться кличка і скільки лишиться без неї (немає матері або мати без клички). Той самий принцип діє при отелі. Рядок «Код відтворення не за подіями» показує тварин, у яких репродуктивний код не той, що поставила їхня остання подія (осіменіння → «Осіменена», УЗД → його результат, отел → «Новотільна»…). «Перерахувати з подій» ставить код за подіями — спершу видно, скільком і що зміниться. «Дата народження» звіряється ще й зі станом тварини: показує, скільки дат «не за станом» (корова в 1-й лактації з віком 8 років тощо). Кнопка «За станом» рахує дату з того, що відомо напевно: корові — від першого отелу (якщо записані всі) або від останнього отелу назад (перше осіменіння телиці + тільність + ~2 міс, далі на кожну лактацію міжотельний період — тільність + добровільне очікування + ~2 міс; числа — з налаштувань циклу календаря); телиці з осіменінням — перше осіменіння мінус вік осіменіння; решті молодняку — середина віку секції з її назви («Телята 3-6» → 4,5 міс). Спершу видно «було → стане». Разом із датою зсувається подія «Народження» і отел матері, яким записано тварину, якщо це не ламає історію матері (інакше тварина відвʼязується від того отелу, мати лишається). Молодняк, записаний отелом живої матері, не переписується — там дата є фактом. Якщо з нею не збігається щось інше, це окремі рядки «Секція не за віком» і «Осіменіння раніше віку» (раніше 9 міс або ще до народження) з номерами тварин — клік по номеру відкриває тварину в «Роботі зі стадом».
  • Прибрати рядок просто в стрічці — хрестик у кінці рядка; його бачить лише адміністратор, і він завжди перепитує. Рядки тут двох різних природ, тож і прибираються по-різному: позначка «виправлено / прибрано» — це слід правки: зникає сама позначка, а подія лишається такою, якою стала (повернути слід буде нізвідки); внесення — це самі події: прибрати його означає скасувати подію чи цілий пакет із відкотом наслідків, як у журналі подій. Коли рядок прибирає адміністратор, нового рядка «прибрано» не зʼявляється — інакше чистити історію після тесту довелось би двічі.
  • Записи історії стада видаляє лише адміністратор. Ідеться про те, що стоїть у цій стрічці: подію тварини й ціле групове внесення. Прибрати їх можна в картці тварини або в журналі на сторінці «Події» — і хрестик там бачить тільки адміністратор, а спроба в обхід сторінки відхиляється сервером.
    Накладні — за іншим правилом: прихід, видачу, списання, продаж худоби, день молока, записи годівлі та фінансів прибирає той, хто веде відповідну гілку, як і раніше.
    Виправляти може кожен, хто вносить: помилку в даті чи вазі видно в цій самій стрічці позначкою «виправлено», і зрозуміло, хто і що змінив.
  • Історія — четверта вкладка сторінки «Головна»: стрічка того, що робили на фермі, від найсвіжішого. Дні розділені смугою — Сьогодні, Вчора, Позавчора, далі датою з днем тижня; у смузі видно, скільки за день було внесень і подій.
    Дві історії, перемикач угорі. «Події» — що робили з тваринами. «Зміни налаштувань» — що міняли в самому застосунку: списки «Роботи зі стадом», панелі «Огляду», списки календаря, а також параметри й події Конструктора. У кожному рядку: коли, хто, що саме — «назва: Дійні корови → Дійні корови 2 гр.», «формула: … → …», «не друкувати нуль: ні → так», а в подіях ще й словами про поля: «прибрано поля: insem_method». Адміністратор бачить кнопку «Повернути»: вона ставить налаштування таким, яким воно було до цієї зміни — подію разом із її полями, параметр із усіма його властивостями. Саме повернення теж лягає в стрічку, тож відкотити можна і його.
    Ділянка — вибір поруч зі стрічкою: усі налаштування · списки «Робота зі стадом» · панелі «Огляду» · списки календаря · параметри · події. Вибір памʼятається, тож «показати лише події Конструктора» лишається таким і наступного разу.
    ⚠️ Чесна межа. Якщо параметр видалили, «Повернути» відновить саме означення, але не значення в тваринах — вони стерлись разом із ним, і в журналі так і написано, скільки їх було. Один рядок — одне внесення, а не одна тварина: групове внесення на 10 голів стоїть одним рядком «Бракування · 10 голів». У рядку: час, колір категорії події, назва, скільки голів (або номер тварини), номери тварин і спільні деталі, хто вніс. Стрічка стоїть на дні внесення — це відповідь на питання «що сьогодні робили». Якщо саму подію датовано іншим числом, у рядку стоїть жовта позначка за 14.09, щоб не переплутати. Наведіть мишу на рядок — збоку зʼявиться коробка з тим, чого в рядку не видно: обидві дати окремо («подія відбулась» і «внесено»), секції з кількостями, деталі, нотатка й перелік бирок із кличками. Клік по рядку розкриває перелік тварин цього внесення — пронумерований, номери за зростанням, клік по номеру веде в картку.
    Виправлення подій видно окремими рядками. Виправили подію в картці тварини — у стрічці сьогоднішнього дня стане рядок із позначкою ВИПРАВЛЕНО (прибрали подію — ПРИБРАНО), а поруч — що саме змінили: «Група: Група-4 → Група-6», «Дата події: 22.09.2026 → 10.09.2026». Так треба, бо сама подія лишається в тому дні, коли її внесли: без окремого рядка виправлення не було б видно взагалі. Правка цілого групового внесення стоїть ОДНИМ рядком на всі його голови. У смузі дня правки рахуються окремо від внесень («4 внесення · 9 подій · 6 правок») — виправлення не нова робота. Об’єднати внесення. Одну подію внесли кількома заходами (напр. осіменіння трьома груповими вводами)? Права кнопка по внесенню → «Вибрати для обʼєднання», далі клік по інших рядках додає чи прибирає їх (вибрані позначено ✓, угорі смужка «вибрано N · Обʼєднати · Скасувати», Esc — скасувати); обʼєднати можна лише внесення однієї події. Або одразу «Об’єднати всі внесення «Осіменіння» за 12.10» — усі внесення цієї події з цією датою події (групові й поодинокі) стають одним. Тварини, поля й дати не змінюються; рядок стоїть у день останнього внесення, у Telegram — одне повідомлення. Доступно тому, хто керує гілкою. ⚠️ Показуються правки, зроблені після оновлення 2.39.92: раніше застосунок їх ніде не записував. «Показати» вгорі перемикає глибину: за тиждень, за місяць, за три місяці. У день, коли внесень більше сорока (так буває, коли переносили історію), решта ховається за кнопкою «Показати решту» — з чесним числом.
  • Огляд — перша вкладка сторінки «Головна»: налаштовані панелі-показники (Дійні, Сухостій, Телиці, Нетелі, Осіменені, Тільні… — і будь-які свої), згруповані розділами: «Поголівʼя», «Відтворення» — кожен розділ окремою смугою. Звичайну панель заводять у «Роботі зі стадом»: наберіть формулу, натисніть «+» і оберіть «Панель» (у віконці — назва й розділ). Усе налаштування — просто на панелі: ✎ відкриває на ній назву, розділ (зі списку або «+ новий розділ…»), кольори — шрифт, кант зліва і фон, кожен — переліком «кружечок · назва» (ті самі 15 кольорів, що в «Русі поголівʼя», і «свій колір»), — розмір, а в панелі з формулою ще й формат числа; у складеній там же «+ додати…» показник. Зміна одразу видна й одразу збережена; «Готово» або Esc — закінчити. Нікуди переходити не треба: на іншу вкладку веде лише клік по самій плитці — щоб побачити тварин і виправити формулу. Порядок панелей — перетягуванням мишею: кинули панель до іншого розділу — вона туди й переїхала. Розділи переставляються так само: потягніть смугу розділу («СТАДО КОРІВ») вище чи нижче — разом із нею переїдуть усі її панелі, і сховані теж; у бічному переліку порядок той самий. Подвійний клік по смузі розділу — перейменувати його просто на місці (Enter — зберегти, Esc — як було); нова назва переходить на всі панелі розділу. Панелі без розділу стоять під смугою «Без розділу» — щоб поставити таку в розділ, киньте її на будь-яку панель того розділу. Панель — це назва і формула добору тією самою мовою, що в «Роботі зі стадом» (FILTER(rc=6)); рахуються тварини в стаді. ✎ налаштовує, ✕ прибирає; на сенсорному екрані ✎ і ✕ стоять на плитці завжди, окремим рядком унизу. Натиснули панель — відкрилися самі тварини у «Роботі зі стадом», а під рядком видно «Панель назва». Виправили формулу і натиснули Enter — збережеться назад у ТУ САМУ панель; у вікні збереження перемикач «Список / Панель» каже, куди саме. Наведіть мишу на панель — під нею зʼявиться її формула тими самими кольорами, що в рядку формули. Складена панель — із маленьких, просто на «Огляді». Праворуч на «Огляді» стоїть перелік показників із їхніми числами — той самий, що збоку в «Роботі зі стадом»; складених панелей у ньому немає, вони стоять плитками. Клік по заголовку «Показники» згортає цей перелік (тоді вся ширина дістається плиткам) і розгортає назад — як лишили, так і буде наступного разу. Як зібрати панель. Натисніть «+» у шапці переліку — зʼявиться порожня панель, уже взята в роботу (обведена). Далі просто натискайте показники в переліку: вони одразу стають числами в цій панелі, а повторний клік їх забирає. На кожному показнику в панелі є ↓ (зробити другорядним — стане дрібним під основними; ↑ повертає; хоча б один показник лишається основним) і ✕ (прибрати). Назва правиться просто на плитці — у полі вгорі. Скінчили — «Готово» або Esc (де б не стояв курсор); робота закінчується й тоді, коли переходите на іншу вкладку чи ховаєте цю панель оком. Порожню панель, яку завели «+» і так нічим не наповнили, «Готово» прибирає само. Згорнутий перелік показників на час роботи розгортається сам. У переліку погашено те, що в панель не покласти: саму її, порожні й інші складені панелі. Щоб змінити зібрану панель пізніше, натисніть на ній ✎ — вона знову береться в роботу. Усе зберігається одразу, окремої кнопки збереження немає; кліки поспіль зберігаються по черзі, жоден не губиться. Складену панель Enter у «Роботі зі стадом» не перезаписує — її правлять тут, на плитці; набрану там формулу «+» збереже окремою панеллю. Якщо показник зник. Прибрали чи перейменували панель, з якої складена інша, — у складеній на її місці «—» з назвою й червоним рядком причини, а решта чисел лишаються. Візьміть панель ✎ і приберіть биту частину ✕. Перед прибиранням панелі застосунок сам каже, які панелі й списки на неї посилаються. На плитці показники стоять поруч — кожен зі своїм числом і підписом («215 ФУРАЖНІ · 190 ДІЙНІ»); плитка при цьому широка рівно настільки, скільки треба її вмісту. Кожен показник складеної — посилання: клік по ньому (і по другорядному теж) відкриває його тварин у «Роботі зі стадом»; клік по назві чи вільному місцю плитки — тварин першого показника. Назва складеної панелі стоїть угорі жирним — вона ж про всю плитку. У звичайної панелі з одним показником назва лишилась як була — під числом, дрібним. Розмір стоїть просто на панелі, поки вона в роботі: три літери А · А · А — звичайна, велика, ще більша (у вікні ✎ поряд із панеллю — ті самі). Росте все разом — і плитка, і числа, і підписи. Поки панель у роботі, вона не звужується між кліками — сусідні плитки не перескакують із ряду в ряд; свою ширину вона поверне після «Готово». На вузькому екрані перелік показників на цей час стоїть унизу вікна й не їде, коли плитки над ним ростуть. Око біля кожного показника каже, чи стоїть він на «Огляді»: світиться — стоїть, перекреслене — ні. Так маленькі показники ховають з очей, лишаючи на «Огляді» самі складені панелі. Складену панель сховати не можна — вона або є, або її немає (✕); якщо сховати геть усе, «Огляд» це прямо скаже й дасть кнопку «Показати всі» — вона повертає всі панелі, крім складових (тих, що вже стоять усередині складених): їх повертають оком, якщо треба окремо. У темній темі свій колір шрифту панелі лише підфарбовує світлий текст — інакше темне число на темному тлі не читалось би. Кілька показників в одній панелі. Частка «A / B» рахує ОБИДВА числа — скільки їх і яку частку вони становлять, — тож у налаштуваннях панелі є «Показувати»: відсоток (як доти), кількість або кількість і відсоток — тоді на панелі стоїть «141» великим і «65,6 %» дрібним під ним. Якщо показників треба більше, пишіть їх через «;»: [Дійні] ; [Сухостій] ; FILTER(lact=0) — на плитці вони стають поруч, кожен зі своїм числом і підписом. Другорядні пишуться після риски «|»: [Фуражні] | [Дійні] ; [Сухостій] ; [avg DIM] — те, що праворуч від риски, стоїть дрібнішим рядком під основними. Панель, зібрана кліками, пише цю формулу сама: ↓/↑ на показнику переносить його через риску. Показник-посилання підписує себе назвою того звіту («Сухостій 14»), щоб три числа поспіль не читались загадкою, і показується так, як налаштована ТА панель — знаки після коми, пробіл між тисячами й «Показувати». Тобто «Сервіс період», налаштований цілим числом, і в складеній панелі стоїть «118», а не «117,5»: налаштували показник раз — він скрізь такий, на плитці, у бічному переліку й під рядком формули. Так само й колір шрифту: у складеній кожен показник — кольором своєї панелі, а колір самої складеної — для її назви й показників без свого кольору. Змінити колір показника можна просто в складеній, поки вона в роботі: квадратик поруч із ↓ ✕ (зміниться й сама панель-показник). Власне «Число» складеної панелі діє лише на її власні, набрані формулою показники. У частці «кількість і відсоток» кількість голів завжди ціла, а знаки після коми — для відсотка. У «Роботі зі стадом» таблиця показує тварин ПЕРШОГО показника, а під рядком формули видно всі: «Панель: 141 · 65,6 % (у стаді)». Панель може показувати не кількість, а показник: додайте до формули VIEW(avg параметр) — середнє, sum — сума, min/max — найменше/найбільше серед відібраних. Приклади: середній надій дійних — FILTER(lact>=1 rc<6) VIEW(avg milk/lkd); середні дні лактації — … VIEW(avg dim); найдовший сервіс-період — FILTER(lact>=1) VIEW(max servPeriod). Порожні й «—» у розрахунок не йдуть. Формат числа задають у налаштуваннях панелі (✎): «Число» — скільки знаків після коми (як є · ціле · 0,0 · 0,00 · 0,000; «як є» — ціле для кількості й один знак для середнього) і галочка «1 000» — пробіл між тисячами. Частка — дві формули через «/»: FILTER(lact>0 rc>=5) / FILTER(lact>0) — частка тільних серед фуражних. Кількість на кількість показується у відсотках (63,2 %), інакше — простим діленням (сума надою / кількість дійних = 28,71). У «Роботі зі стадом» таблиця показує тварин першої формули, а над нею — сама частка («Частка 63,2 % — 316 із 500»); рахуються, як і на панелі, тварини в стаді. Знаменник нуль — «—».
  • Стрілки у шапці: «‹» повертає на сторінку, де ви щойно були, і одразу перечитує її свіжими даними; «›» — уперед; «⟳» оновлює поточну. На телефоні «вперед» ховається, щоб не тіснити заголовок.
  • Рядок формули параметра (Конструктор → Параметри → тип «Обчислюване» — рядок стоїть одразу під «Типом обчислення») — обчислення пишеться одним рядком, як в Excel (з 2.13.2 це єдиний спосіб: конструктор із випадайок прибрано). Підказки: у порожньому рядку — заготовки («Днів від дати», «Якщо … то … інакше», «Скільки подій», «Дата останньої події»…): обрали — лишається вписати параметр; усередині функції над переліком видно, які аргументи вона чекає, поточний — жирним (DAYS(пізніша дата, рання дата)), а перелік пропонує доречне: дати — де чекають дату, події — у COUNT/LAST/FIRST, період — другим. Функція вставляється одразу з дужками, курсор — між ними; знак «=» на початку можна не писати. Поки набираєте, недописана формула підсвічується сірим, червоним — лише коли курсор пішов. Під рядком — що формула дає трьом тваринам для прикладу; у полі «на тварині» впишіть номер — і першою стане саме вона (номер памʼятається). DAM(…) — те саме, але в картці матері: будь-який параметр чи вираз. DAM(importRem) — звідки надійшла мати (так знаходять телят корів, куплених у «Променя»), DAM(importDate) — коли, DAM(sir) — її останній бик, DAM(father) — батько матері, DAM(LABEL(rc)) — її статус словами, DAM(DAM(importRem)) — бабуся. Батька окремою функцією немає: бики — записи довідника «Бики-плідники», а не тварини стада; батько тварини — параметр father. CALVES(…) — навпаки, телята останнього отелу (з реєстру: мати — ця тварина, народжені в день отелу): CALVES() — скільки голів, CALVES(tag) — номери через кому, CALVES(IF(STILLBORN(), "мертве", tag + " " + IF(gndr="F", "теличка", "бичок"))) — «5652 теличка, мертве». Мертвонароджених видно теж: заведених у реєстр (загинуло в день народження з причиною «мертвонароджене») і записаних лише в самому отелі (давні отели з ОРСЕКу — без статі: там вона не справжня). STILLBORN() — 1 для мертвонародженого теляти. Живе теля, не заведене в реєстр, не видно. Поле «…або обовʼязковий, якщо» підказує так само: параметри, а після «=» — значення зі списку з назвами. Приклад: =IF(lact > 0, DAYS(TODAY(), last_calving), ""). Посилання — коротка назва параметра або [Назва з пробілами]; дата − дата = днів, дата ± число = дата. Пробіли розставляти не треба: щойно курсор покидає рядок формули, застосунок сам приводить запис до охайного вигляду — знаки впритул, як у «Роботі зі стадом», пробіл після коми: if(rc < 6 ,0,x) стає IF(rc<6, 0, x); назви функцій — великими, and/or — малими, текст у лапках не змінюється. Так само формула записується й при збереженні. Кілька умов в IF — словами and (усі) і or (хоч одна) між ними: IF(lact>0 and rc=5, 1, 0), IF(rc=4 or rc=5, "так", "ні"); and сильніший за or (a or b and c = a or (b and c)), інакше — дужки: IF((rc=4 or rc=5) and lact>1, …). Те саме функціями: IF(AND(lact > 0, rc = 5), …), OR(…). Функції: TODAY, DAYS, MONTHS, ADDDAYS, IF, AND, OR, NOT, IN, ISEMPTY, COALESCE, MIN, MAX, ROUND (за правилами), ROUNDUP (вгору, від нуля), ROUNDDOWN (вниз, до нуля) — усі з кількістю знаків другим аргументом, ABS, INT, LABEL(код), COUNT / LAST / FIRST(подія[, період]) — скільки подій / дата останньої / першої; подія — її назвою для формул (Конструктор → Події, поле «ƒx»): COUNT(calving). Період: без нього — усе життя; lactation — поточна лактація (від останнього отелу); prevlactation — попередня; число — лактація № N (COUNT(insem, 2), COUNT(insem, lact - 1); 0 — до першого отелу); дата — з неї до сьогодні, дві дати — від і до. Якщо такої лактації в історії не записано (тварину завели вже дорослою), результат «—», а не 0. VAL(параметр, позиція[, період]) — значення параметра з його історії записів: 1 — перший (VAL(live_weight, 1) — вага при народженні), 2 — другий, −1 — останній, −2 — передостанній; період — як у COUNT (VAL(live_weight, 1, lactation) — перше зважування в цій лактації). VALDATE — дата того самого запису. Записи — це події, що вносять параметр (Народження, Зважування…); значення, змінене прямо в картці, іде останнім записом. Параметри «з історії» тепер теж показуються такою формулою. AVGVAL(параметр[, період]) — середнє записів за період: AVGVAL([milk/lkd], lactation) — середній контрольний надій у лактації, AVGVAL(scc, lactation) — середні соматичні клітини. TOTAL(параметр[, період]) — надій за період методом контрольних доїнь (як у DC-305 і ICAR): від отелу до першого контролю — за першим значенням, між контролями — середнє двох сусідніх, від останнього контролю — до запуску (подія «Запуск») або до сьогодні. TOTAL([milk/lkd], lactation) — надій за поточну лактацію, TOTAL([milk/lkd], prevlactation) — за попередню. MILKING() — 1, якщо тварина стоїть у дійній секції, 0 — якщо ні; яка секція дійна, задає галочка «дійна» в Конструкторі → Секції (MILKING(group) — те саме для вказаної секції). Готовий приклад — параметр «Дійна секція» = MILKING(). WITHDRAWAL(milk) / WITHDRAWAL(meat) — до якої дати діє каренція молока / мʼяса: від кожного лікування береться дата + днів каренції препарату, і найпізніша дата стає відповіддю; коли вона минула — порожньо (тварина чиста). Препарат вибирається в події параметром типу «Довідник» → «Препарати аптеки»: цей довідник сам наповнюється зі складу аптеки, а строки каренції (молоко, мʼясо, днів) задаються в картці препарату в аптеці. Під час набору вискакують підказки: функції з описом, короткі назви параметрів, а в COUNT/LAST/FIRST — назви подій; ↑↓ — вибрати, Tab або Enter — вставити, Esc — закрити. Рядок підсвічується кольорами: функції — фіолетовим, параметри — синім, події — зеленим, числа — бірюзовим, текст у лапках — бурштиновим; невідома назва (одруківка) — червоним із хвилястим підкресленням, щоб було видно ще до перевірки. Тими самими кольорами показано приклади в підказках і в «Як писати», а також формули у вкладці «Списки» (назва з «/» на кшталт milk/lkd — цілим параметром). Під рядком одразу видно помилку словами або приклад значення на корові, телиці й бичку; неправильна формула не зберігається. Обчислюваний може посилатись на інший обчислюваний. Писати формули можуть адміністратори й ті, кого адміністратор відмітив у «хто пише формули»; решта бачить формулу лише для читання (перейменувати, змінити секцію чи вимкнути параметр можуть і далі). З 2.13.0 усі обчислювані параметри записані рядком формули — і вбудовані (DIM, днів тільності, очікуваний отел, сервіс-період), і зібрані з випадайок: у списку параметрів видно «формула: …», а у вікні параметра рядок відкритий одразу. Перехід зроблено лише для тих, де рядок на тваринах стада дає рівно ті самі значення, що старий розрахунок; старі формули збережено для відкату. Нові функції: POS(group) — яким за рахунком значення йде у своєму списку (№ секції), GESTATION() — строк тільності з налаштувань календаря. «З історії» лишається окремим видом.
  • Кількість подій — операція обчислюваного параметра (Конструктор → Параметри → тип «Обчислюване» → Розширені): оберіть подію і за що рахувати — за все життя чи у цій лактації (від останнього отелу). Кількість отелів за життя — це і є номер лактації; осіменінь у цій лактації — індекс осіменіння. Параметр працює як звичайний: колонка, фільтр, групування, друк.
  • Усі слова стада — з Конструктора: назви параметрів, варіанти списків (статус, стать, результат перевірки) і назви подій. Перейменування в Конструкторі одразу видно в реєстрі, картці (родовід, фільтр лактацій), формі події, груповому вводі, календарі й на колі відтворення.
  • Колір назви події в картці тварини (Конструктор → Події, кнопка «A» праворуч від назви): синій, зелений, фіолетовий, бурштиновий, бірюзовий, сірий або свій відтінок — у «Історії подій» картки назва цієї події стоїть цим кольором. «Як категорія» — колір категорії події (як було). У темній темі колір трохи світліший, щоб читався.
  • Назва події для формул (Конструктор → Події, поле «ƒx» праворуч від назви): латиницею, без пробілів — calving, cull, dryoff. Нею подію пишуть у формулах: EVENT(calving) у «Русі поголівʼя», COUNT(calving) у параметрах. Спершу там стоїть внутрішній ключ події; змінити можна будь-коли — формули, що кличуть подію старою назвою, перепишуться самі (так само й після зміни української назви). Назва одна на ферму: не може збігатися з іншою подією, параметром чи словом мови формул (IF, COUNT, first…).
  • Правила «Якщо» вміють порівняння (Конструктор → Події → Розширено → дія «Якщо»): між параметром і значенням тепер є вибір способу — = ≠ > ≥ < ≤. Числові порівняння доступні для чисел, дат і обчислюваних параметрів; для списків і тексту лишаються «=» і «≠». В умові можна взяти й обчислюваний параметр («Днів тільності»), і рахується він на дату події, а не на сьогодні — аборт, внесений через тиждень, дасть те саме число, що й у день аборту.
    Приклад із ферми — подія «Аборт»: якщо Днів тільності > 200 → ставить Новотільна (2) (пізній аборт — це фактично отел), інакше → Не тільна (3), і корова одразу потрапляє в список на осіменіння. Доти аборт на будь-якому строку ставив «Новотільну».
  • 💰 Продаж худоби накладною (меню стада → Продаж худоби, /herd/sale) — зроблено так само, як прихід в аптеці: вкладки «Продаж» і «Історія», кілька накладних можна набирати одночасно («+ Накладна»), кожна проводиться окремо, картки згортаються, а недопроведене лишається чернеткою після закриття сторінки. У шапці картки — лише реквізити: покупець, номер накладної (дається сам: ПХ-0001, ПХ-0002…), дата накладної, факт продажу (саме нею датуються події вибуття, як «дата приходу» в аптеці) і спосіб вибуття — продаж, вимушений забій (доріз), вибракування на мʼясо, передано в інше господарство. Спосіб береться з довідника «Спосіб вибуття» і підставляється «Продаж»; саме він потрапляє в подію картки тварини, тож від нього залежить, як вона вибула. Усе інше — на кожну тварину окремо, як у приході: жива вага · ціна без ПДВ · сума без ПДВ · ціна з ПДВ · сума з ПДВ · причина вибуття. Ставка ПДВ — одна на всю накладну (внизу документа), по кожній тварині її не вводять. Гроші живуть у накладній, а не в картці тварини: у картці вони видно рядком історії події «Вибуття» (Продаж · 520,0 кг · Мʼясокомбінат · 62,50 ₴/кг · 32 500,00 ₴ без ПДВ · 39 000,00 ₴ з ПДВ), а окремих полів із цінами й сумами там немає — інакше те саме число стояло б у двох місцях. Заповнюйте будь-яке з полів — решта порахується (ввели суму — вийде ціна за кг, змінили ПДВ — перерахується ціна з ПДВ). Новий рядок підхоплює ціну, ПДВ і причину з попереднього, тож на партію вводиться лише вага. Згорнута картка підписана «Покупець · № … · дата».
    Історія — з тими самими фільтрами, що в аптеці: Останні · Сьогодні · Тиждень · Місяць · Минулий місяць · Період, плюс пошук за номером, твариною чи покупцем. Угорі рядок «Всього»: накладних, голів, кілограмів, суми без ПДВ і з ПДВ та сам ПДВ. Клік по накладній розгортає її рядки; кошик скасовує накладну — тварини повертаються в стадо.
    Проведену накладну можна виправити — олівець ✎ у її шапці. Вона відкривається тією самою формою, якою її й набирали: ті самі поля, той самий перерахунок цін, та сама смужка «на всіх» (вага · ціна · ПДВ · причина), той самий спосіб додати тварину номером і прибрати її ✕. Угорі картки написано, що ви правите проведену накладну, а кнопка внизу каже «Зберегти зміни». Можна міняти все: реквізити, спосіб вибуття, ціни, ПДВ, причини і навіть склад накладної — додана тварина вибуде, прибрана повернеться в стадо. Виправлення доходить і в картку тварини: подію «Вибуття» переписано тими самими числами, а сама правка лишає слід в «Історії» на головній. Нижче — рядки: тварину обирають так само, як у формі події — почали вводити номер, зі списку видно номер · кличку · секцію, стрілками ↑↓ або Enter береться підсвічений варіант (уже додані в накладну в списку не показуються). У рядку під номером видно реєстраційний номер (UA…), кличку, групу й номер лактації. Далі вписуєте вагу, і одразу видно суму по кожній тварині без ПДВ і з ПДВ. Ставка ПДВ у накладній одна — вона стоїть у смужці «Разом на всіх» під рядками (у самих рядках її немає). На кожен рядок можна поставити свою ціну за кг і свою причину вибуття (порожня причина — береться та, що в шапці): одна пішла за віком, інша за кінцівками — усе в одній накладній.

    Партію можна внести гуртом. Під рядками є смужка «Разом на всіх» — ті самі колонки, що й у рядках: вага, ціна за кг без ПДВ, сума без ПДВ, ПДВ %, ціна за кг з ПДВ, сума з ПДВ і причина вибуття. Там завжди видно поточний підсумок накладної, і туди ж можна вписати своє число з документа комбінату: вписали загальну вагу — вона розкладеться по тваринах накладної (порівну; якщо частину тварин ви вже зважили поодинці, їхня вага лишається, а рештою документа ділиться решта тварин; якщо зважені всі — усі ваги перераховуються в тих самих частках); вписали ціну за кг (з ПДВ чи без) — вона стане ціною кожної тварини, а суми порахуються від їхньої ваги; вписали суму (з ПДВ чи без) — вона розійдеться за вагою, кожній тварині своя сума й своя ціна за кг. вписали ставку ПДВ — вона стане ставкою всіх тварин (нуль теж можна). У полях цін видно середню ціну по накладній (сума ÷ вага), у полі ПДВ — спільну ставку, а якщо вони різні, то фактичну з підсумків. Так само причина вибуття: обрали в смужці — стала в усіх тварин; коли в рядках причини різні, у смужці написано «— різні —», і рядки лишаються недоторканими, доки ви щось не оберете. Копійки округлення забирає остання зважена тварина, тож підсумок збігається з введеним точно. Після розкладки будь-який рядок можна поправити руками — підсумок перерахується. Щоб сума розійшлася, спершу має бути вага; тварина без ваги грошей не отримує, але свою ціну зберігає — внесете вагу, і сума порахується. ПДВ у накладній рахується так, щоб ставка × сума без ПДВ сходилась із сумою з ПДВ у кожному рядку, тож у підвалі ПДВ не «пливе».
    Унизу — «Разом»: голів, кілограмів, сума без ПДВ, сума з ПДВ і сам ПДВ. Кнопка «Провести накладну» робить кожній тварині подію «Вибуття» з її вагою й сумами — картки й історія лишаються чесними, а сам документ потрапляє в «Останні накладні» внизу сторінки (клік розгортає рядки). Значок 🖨 є і в шапці накладної, яку ви набираєте (надрукувати можна ще до проведення — на аркуші тоді стоїть примітка, що накладна не проведена), і в шапці кожної проведеної накладної в «Історії». Він відкриває друковану форму на A4: шапка господарства, покупець, номер і дати, далі перелік тварин — номер, реєстраційний номер (UA…), кличка, група, № лактації, причина вибуття й жива вага (цін і сум по кожній тварині на папері немає), а нижче окремий підсумок: жива вага, ціна за 1 кг без ПДВ і з ПДВ, сума без ПДВ, ПДВ зі ставкою і сума з ПДВ; наприкінці — «Здав / Прийняв». Друк відкривається сам. «Скасувати» прибирає події й повертає тварин у стадо. Недопроведена накладна зберігається чернеткою — можна закрити сторінку й повернутись.
  • Вибуття: загибель, доріз, вибракування — перше питання події — Спосіб вибуття (обовʼязково) з довідника «Способи вибуття»: Загибель · Вимушений забій (доріз) · Вибракування на мʼясо · Передано в інше господарство. Продажу в цьому списку немає — продаж вноситься накладною на сторінці «Продаж худоби» (і поодинці, і на всю партію), щоб гроші й документ жили в одному місці. Давні записи, зроблені як «Продаж», нікуди не зникли: у картці й історії слово лишилось, просто обрати його в новій події вже не можна. Довідник поповнюється (Конструктор → Довідники). Системний Статус тварини (продано / вибракувано / загинула) програма ставить сама за цим вибором — його в формі більше немає. Далі — причина з довідника і жива вага. Покупця, ціни й ПДВ у події немає взагалі — гроші живуть у накладній продажу; у події лишились лише спосіб, причина й вага, тож загибель чи доріз проводяться в один рух (і поодинці, і на групу). Покупці — свій довідник (Конструктор → Довідники → «Покупці»), поповнюється. Гроші працюють як у приході: вводьте будь-яке з полів — жива вага, ціна за кг без ПДВ, сума без ПДВ, ставка ПДВ, ціна за кг з ПДВ, сума з ПДВ — і решта перерахується сама. Ввели суму з накладної — програма дасть ціну за кг; ввели ціну — дасть суми. Поле, в якому стоїть курсор, ніколи не затирається. В історії: «Продаж · Низька продуктивність · 545,0 кг · Мʼясокомбінат · 72,50 ₴/кг · 39 512,50 ₴ без ПДВ · 47 415,00 ₴ з ПДВ» або просто «Загинула · Травма».
    Поле з умовою можна зробити будь-де: у налаштуванні поля є рядок «Тільки якщо» — і воно показується лише тоді, коли умова справджується. Працює і на сторінці однієї тварини, і в груповому вводі.
  • Колір картки поля — обирається просто в конструкторі події (крок «Поля»): ліворуч від назви поля стоїть кружечок, клік по ньому відкриває палітру — без кольору · синій · зелений · фіолетовий · бурштиновий · бірюзовий · сірий · свій колір… (піпетка). Одразу видно, які кольори вже задані сусіднім полям, і легко підібрати гаму. У формі події таке поле отримує кольоровий кант і легкий фон — групи видно оком (гроші одним кольором, відтворення іншим).
    Колір — властивість параметра, тож він однаковий у всіх подіях. Задається він ЛИШЕ тут, у конструкторі події: там поле й видно, там і колір видно поруч із сусідніми.
  • Звʼязані гроші у формі вибуття: поля жива вага, ціна за кг без ПДВ, ставка ПДВ, ціна з ПДВ, сума без ПДВ і сума з ПДВ звʼязані між собою — як у приході: вводять будь-яке, решта рахується (ціна = сума ÷ кількість, ціна з ПДВ = ціна × ставка). Ціни тримаються з точністю 4 знаки, суми — 2. Звʼязок виставляється сам, налаштовувати його не треба.
  • Формула рахується просто у формі: заведіть параметр із формулою (напр. =ROUND(live_weight * 62.5, 2) — «кілограми × ціна»), додайте його в подію і поставте галочку — і поки оператор вводить вагу й ціну, сума рахується на очах. У браузері рахується звичайна арифметика: + − * / ^, порівняння, and/or, IF, ISEMPTY, COALESCE, MIN, MAX, ROUND, ROUNDUP, ROUNDDOWN, ABS, INT, DAYS, MONTHS, TODAY, ADDDAYS. Формули, що читають історію тварини (COUNT, VAL, AVGVAL, TOTAL, WITHDRAWAL…), рахує сервер — у формі стоїть значення з картки. Порожнє значення робить порожнім увесь вираз (вага без ціни — не нуль, а порожньо), ділення на нуль теж дає порожньо.
  • Дія «Показати (не змінює)»: параметр виводиться у формі події як довідка — значення видно, змінити не можна. Це єдиний спосіб показати оператору обчислюваний параметр («Каренція молоко до», «Днів тільності», «Ціна за кг з ПДВ»): подія його не змінює, бо він рахується формулою. У конструкторі такі параметри тепер теж є у виборі й додаються одразу в режимі «Показати». Значення береться з картки тварини, а для грошей вибуття оновлюється просто під час вводу.
  • Подія може проводити супутню подію (Конструктор → Події → Розширені → «Також проводить подію … тільки якщо …»): після основної програма сама проводить другу, тим самим днем. Умова рахується до змін основної події, тож спирається на стан тварини, який був у той момент.
    Так налаштовано пізній аборт: якщо Днів тільності > 200, подія «Аборт» тягне за собою «Отел» — в історії стоять обидві події, дата отелу оновлюється, № лактації зростає (кожен отел додає одиницю до того числа, з яким тварину завели), лічильник осіменінь обнуляється, DIM іде від дня аборту. Ранній аборт (до 200 днів) нічого цього не робить: корова стає Не тільна (3) і йде в список на осіменіння. Скасування прибирає обидві події.
  • Дія події може мати умову (крок «Поля» → клік по назві → рядок «Тільки якщо»): дія виконується, лише коли умова справджується, інакше пропускається — і в історії її теж не буде. Без умови дія працює завжди, як раніше.
  • COUNT рахує не лише події, а й записи параметра: COUNT(fdat) — скільки разів записано дату отелу (згодиться, коли дату проставляє не тільки подія «Отел»).
  • Причина вибуття — зі списку, не текстом: подія «Вибуття» питає причину з довідника «Причини вибуття» (Конструктор → Довідники): відтворення, мастит/вимʼя, кінцівки, низька продуктивність, вік, травма, інша хвороба, надлишок, мертвонароджене, інша причина. Список поповнюється — додайте свою причину в довіднику, і вона зʼявиться у виборі. Те, що вже внесене вільним текстом, перенесено в довідник автоматично, тож старі картки читаються як були. Підпис у довіднику — до 40 символів: подробиці пишуться в примітці позиції, а не в назві. Тепер видно, що саме ріже стадо: причини рахуються.
  • Ліміт символів для текстового параметра: у параметрі типу «текст» поле «до» означає максимум символів. Поставили 60 — у формі події далі не набереться, а спроба записати довше поверне зрозумілу відмову. Порожнє «до» — ліміту немає, як було.
  • Переведення в секцію — окрема подія (категорія «Рух»): секція обовʼязкова, поруч необовʼязкова причина (за фізіологією, за надоєм, у лікувальну, у сухостійну, у передотельну, після відлучення, за місткістю). Одну тварину переводять у формі події або просто зміною «Групи» в картці; гуртом — на сторінці ⚡ Події в режимі «👥 Група» (вибрати тварин фільтром за секцією і провести подію для всіх). Секція тепер має історію: кожне переведення лишає датований запис, навіть коли секцію змінили в картці, в модалі тварини або імпортом файлу. Звідси працюють «станом на дату» в картці, параметр «Днів у секції» і поголівʼя секції на день. Перше призначення секції (заведення тварини, «заповнити порожні») переведенням не вважається — зайвих записів не буде. Скасування події повертає тварину в попередню секцію.
  • Авто-рух між секціями: у налаштуваннях події додайте дію «переводить у секцію…» — і подія (Отел, Запуск…) сама переводитиме тварину. Такий перевід лишається в історії самої події (Отел), окремого запису про переведення не створюється. Поточний місяць сітки поголівʼя звіряється з реєстром тварин автоматично (для груп, де реєстр ведеться).
  • Розширені налаштування — і в параметрі, і в конструкторі подій: рідковживане (градація, формула, «з історії», «Джерело»; у подіях — «Вноситься зі станів») зібране у згортну панель «Розширені». Вона завжди згорнута при відкритті, а праворуч показує зведення — «формула · системний», «вноситься зі станів: 4». Підказки до полів прибрано з-під них: наведіть на поле — і побачите пояснення.
  • Вбудовані формули видно й можна змінити: у системних параметрів (DIM, Вік, Сервіс-період, Очікуваний отел) під описом обчислення є посилання «Налаштувати формулу вручну» — воно розбирає формулу на операцію й операнди в конструкторі (напр. DIM = Сьогодні − Дата останнього отелу), далі міняйте що завгодно. Додано операцію «Різниця дат у місяцях» — нею рахується вік.
  • Параметр «З історії іншого параметра» (Конструктор → Параметри → «Тип обчислення»): третій варіант поруч із «Фіксоване» і «Обчислюване». Задаються три речі: який параметр читати, який запис (−1 останнє внесене, −2 передостаннє, −3 і глибше) і що показувати — значення чи дату, коли його внесли. Так робляться поля «Передостанній контрольний надій», «Дата попереднього отелу», «Попередня нотатка про мастит» — для будь-якого параметра: чисел, дат, кодів, тексту. Сам параметр-джерело не змінюється: «Останній контр. надій» і далі показує останнє. Значення беруться з історії подій тварини (що подія записала — відповідь оператора, дата події або стале значення), у картці поруч із назвою видно дату того запису.
  • Історія за лактаціями й категоріями: над списком подій у картці два фільтри. Перший — лактації («телиця · лакт. 1 · лакт. 2 … · усі»), відкривається завжди на останній; межі визначаються отелами, нічого позначати не треба, а вибір водночас підсвічує цю лактацію на кривій. Другий — категорії (Відтворення, Здоровʼя, Рух, Продуктивність) у кольорах самих категорій, поруч із назвою — скільки таких подій у вибраному періоді. Сама історія показується двома колонками, як дві сторінки на аркуші. Такий самий фільтр категорій є у стрічці «Останні події» на сторінці внесення. Між подіями дрібним сірим стоїть кількість днів від попередньої — одразу видно розриви: скільки минуло від отелу до першого осіменіння, від осіменіння до перевірки, між контрольними надоями.
  • Показники біля події (кнопка ⚙ Деталі у шапці історії): оберіть, що бачити на момент кожної події — № лактації, днів лактації (DIM), днів тільності, вік, а також будь-який параметр (жива вага, репрокод, останній надій…) у тому значенні, яке було чинним на ту дату. Усе рахується з самих подій, тож збігається з тим, що бачив оператор. Угорі меню — випадайка: «усі події» задає загальний набір, а обравши конкретну подію (Отел, Осіменіння, Контрольний надій…), можна дати їй свій — напр. біля осіменіння показувати DIM, а біля зважування лише вік. Події зі своїм набором позначені крапкою, «як у всіх» повертає їх до загального. Зверху меню перемикач телиця / корова / бичок: до першого отелу свої показники (вік, вага), після нього свої (№ лактації, DIM), у бичків — свої. Меню відкривається на групі самої тварини; налаштувати можна й іншу — набір діятиме на відповідних тваринах. Вибір спільний для всіх тварин і запамʼятовується.
  • Картка тварини — панель «Синхронізація»: у шапці картки, під основними параметрами тварини. Поки корова в протоколі (syncDay не порожній), панель зелена; протокол завершено — сіра, з історією. У ній «Синхронізація · назва протоколу», а під нею — усі протоколи корови рядками, від давнього до поточного: дата постановки (коли корову внесли в протокол), назва, старт, скільки кроків проведено і чим скінчився (поточний — «зараз · syncDay»). Пройдені згорнуті, поточний унизу розкритий; клік по рядку розкриває чи згортає його кроки. У розкритому поточному — що далі, а під ним — усі кроки одним рядом; кроки одного тижня протоколу (від старту) обʼєднує дужка зверху «Тиждень 1 · 10.10–16.10», у кожного тижня свій колір (дужка й тло карток), поточний — «зараз», тиждень без кроків — «без кроків»; у кожного кроку — день, дата, час і препарат: зелене з галочкою — проведено (дата й препарат із дозою — ті, що внесли), «сьогодні о …», «завтра» / «через N дн.», червоним — пропущено, пунктиром — внесено наперед. Крок, внесений наперед (старт на суботу), стоїть і в «Історії подій» — з позначкою «наперед». Прибрати протокол, внесений помилково, — ✕ у кінці його рядка на панелі: зникають усі кроки й стоп цього протоколу (осіменіння лишається), стан корови перераховується, повідомлення в Telegram оновлюється. Кнопка ✕ протоколу й ✕ біля кроків синхронізації в історії — в адміністратора й того, хто керує гілкою «Управління стада»; решту подій, як і доти, видаляє лише адміністратор. Чим скінчився пройдений протокол — «осіменена 20.10 · тільна / не тільна / чекає УЗД», «стоп · причина» або «не завершено» (ті самі правила, що в «Результатах протоколів» на «Здоров’ї»); у його кроках після стопу чи осіменіння — «стоп» / «осіменена». Корова зараз не в протоколі, але була — лише рядки пройдених і «Зараз корова не в протоколі». «Стоп протоколу» до дня старту (поставили наперед) скасовує саму постановку — події наперед прибираються, у повідомленні «постановку скасовано».
  • Картка тварини — сторінками: секції (Основне · Відтворення · Родовід · Здоровʼя · Продуктивність) перемикаються кнопками над параметрами, обрана сторінка запамʼятовується. На «Продуктивності» — крива лактації з подій «Контрольний надій»: по горизонталі — дні лактації від отелу, по вертикалі — кг. Кольором — лактація, обрана у фільтрі історії (звичайно поточна), сірим — попередні; хто є хто, каже легенда над графіком. Пунктир — між замірами минуло понад 45 днів, тобто даних там немає. Наведіть курсор на точку (на телефоні — торкніться): підказка покаже дату, день лактації, жир, білок і соматику того заміру. Число, якому біля точки не знайшлося місця, теж видно в підказці. Смуга тлом — стадо: тонка лінія — медіана надою корів ферми на той самий день лактації, смуга — середні 50 % корів (окремо 1-ша лактація і 2-га та далі), тож одразу видно, вище корова за стадо чи нижче. Над графіком — підсумок: останній замір і зміна до попереднього, пік, різниця зі стадом на день останнього заміру і скільки днів без заміру; пунктирна вертикаль «сьогодні» — де корова зараз (доки її не запустили). У перші дні після отелу зі стадом не порівнюємо — там надій росте щодня.
  • Родовід — схемою або таблицею (перемикач у шапці плитки, вибір запамʼятовується). Показуємо чотири покоління: батьки · діди · прадіди · прапрадіди. Код предка читається зліва направо: перша літера каже, хто це сам, наступні — чий він. М — мати, Б — батько, отже ММ — мати матері, БМ — батько матері, МБ — мати батька, ББ — батько батька, БММ — батько матері матері. Наведення на код показує це словами. Гілка ведеться від своєї статі: під матірʼю першою йде її мати, під батьком — його батько, тож лінія походження (вона батьківська) читається суцільно. Добірка ліній у шапці показує, які лінії є в цьому родоводі: обрана лишається яскравою, решта приглушується.
  • Що подія пише в «Деталі» (Конструктор → Події → крок «Поля» → Розширені → рядок «У деталях історії»): це шаблон, де свій текст поєднується з підстановками у фігурних дужках. Клік по чипу «вставити» додає потрібну підстановку в позицію курсора. Пишуться короткими назвами параметрів (тими, що в колонці «Скорочено»), як показано на чипах; наведення на чип показує повну назву. Крім полів події доступні факти — приплід (бирки), к-сть, приплід+ (кожне теля: номер · стать · живе/мертве), мертві — і стан на момент події: DIM, лакт., тільн., вік. Слово «до» після назви дає значення перед подією: [{Група до} → ]{Група} покаже в історії переведення «Група-5 → Мастит» (з якої секції в яку). «До» береться з самої події, інакше з попередньої події тварини, а з історії значень — лише не давніше року; невідоме — порожньо, тож пишіть його в квадратних дужках, щоб разом із ним зникла й стрілка. Поле, яке сама подія питає, показується рівно таким, яким його внесли цього разу: не заповнили — у деталях порожньо (шматок у квадратних дужках зникає), чуже значення не підставляється. Решта параметрів береться тим значенням, яке було чинним на дату події; параметр-формула ({cntInsem} = COUNT(insem, lactation), {dslh} — днів від осіменіння) рахується на дату події: друге осіменіння в лактації — «2», перевірка через 35 днів — «35». Плідника можна писати і словом {бик}.
    Приклади: {надій} кг · DIM {DIM}, {easyCalving;тяжкість;"бал 1–5"} · {приплід+} · лакт. {лакт.}. Приплід своїм форматом: {приплід:"{№}-{бирка} {стан}"} — усередині доступні {№}, {бирка}, {стать}, {стан}, {кличка}, {uin} і будь-який параметр теляти (вага при народженні) — вони є окремими чипами й вставляються всередину лапок. Зміна шаблону одразу перемальовує всю історію, зокрема записи, зроблені раніше. Необовʼязковий шматок береться в квадратні дужки: [, {Вага при народженні} кг] — він зникає цілком, якщо значення немає, разом із комою й одиницею. Приклад: {easyCalving;easy;"бал отелу 1-4"} · {приплід:"{№}-{бирка} {стан}[, {Вага при народженні} кг]"} → «easy 2 · 1-9101 живе, 39 кг · 2 мертве».
    Підстановку можна розширити до {Параметр;підпис;"підказка"}: перше — який параметр брати, друге — як він зветься в рядку, третє — спливаюча підказка для того, хто читає. Напр. {Легкість отелу;easy;"бал отелу: 1 легкий … 5 кесарів"} дасть «easy 3» із пунктирним підкресленням, а наведення показує пояснення. Під полем одразу видно, як це виглядатиме. Порожній шаблон — показується все, що подія записала. Зміна шаблону одразу перемальовує всю історію.
  • Важкі блоки конструктора згортаються: «Як це побачить оператор», «Коло відтворення» і «Перевірка алгоритму» мають стрілку біля заголовка. Стан кожного памʼятається, а згорнутий блок не перемальовується — сторінка легша.
  • Захист від помилок (Конструктор → Події → крок «Поля», блок унизу): позначте стани, з яких подію можна вносити — тільну корову не осіменити, нетільну не розтелити, неtільну не запустити. Форма попереджає одразу після вибору тварини (червоний напис) і не дає зберегти; сервер перевіряє те саме — обійти неможливо, зокрема й у груповому вводі. Стандартні події вже налаштовані: Осіменіння — лише Телиця/Новотільна/Осіменена/не тільна; Запуск — лише Тільна; Отел — Тільна/Сухостій; Перевірка тільності — Осіменена. Нічого не позначено — стан не перевіряється (Зважування, Лікування…). Тварина без репродуктивного коду не блокується.
  • Подія заднім числом лягає в історію на свою дату, але не відкочує поточні значення, які вже змінила пізніша подія: давнє зважування не підмінить нинішню вагу, старе осіменіння — дату останнього. Після збереження застосунок пише, які параметри лишились без змін. Формули, що читають історію (VAL, картка «станом на лактацію»), таку подію бачать.
  • Порядок переходу по Enter/Tab: номер біля поля показує, куди стрибне фокус (№1 — завжди поле «Тварина»). Змінити порядок — права кнопка миші на рядку параметра в кроці «Поля» або на полі в макеті «Як це побачить оператор»: вписати номер чи «↑ Раніше / ↓ Пізніше». Там само — обовʼязковість, хто вносить, значення за замовчуванням, вимкнення й прибирання з події.
  • Сітка форми — просто в макеті. Поле можна перетягнути мишею на інше місце — порядок питань зміниться і в макеті, і в таблиці «Поля» (це одне й те саме). Ширину задає ручка на лівому краї поля: тягніть її або натисніть двічі, щоб пройти простими частками ряду — на всю ширину, половина, третина, чверть. Так два-три коротких питання стають в один рядок, а довге займає весь. Схема одна на ферму й зберігається сама.
  • Значення за замовчуванням (Конструктор → Події → крок «Поля»): у колонці «Що робить» кожне поле оператора показує, що в ньому стоятиме («без значення за замовчуванням» / «за замовчуванням: …»). Клік по цьому напису відкриває редактор — значення обирається тим самим контролом, що й у формі (список, число з межами, дата). Форма підставить його одразу, оператору лишиться підтвердити або змінити.
  • Межі й градація числового параметра (вкладка «Параметри», поля Від · До · Крок у вікні параметра). «Від 1 · До 4 · Крок 1» перетворює поле на вибір 1 · 2 · 3 · 4; «Від 3 · До 4 · Крок 0,25» — на 3.00 · 3.25 · 3.50 · 3.75 · 4.00. Оператор обирає готове значення замість вільного вводу, тож описок немає. Якщо крок не задано — ввід лишається вільним, але значення поза межами не збережеться (форма скаже, скільки можна). Підказка під полями одразу показує, який список побачить оператор. У типу Ціле крок теж цілий — для дробових балів (0,25) оберіть тип Дробове.
  • Кілька чисел (1, 4) — тип для параметрів, де значень одразу декілька: уражені долі вимені при маститі, кінцівки при кульгавості. Межі — у «Розширених» (від 1 до 4). Запис складається під час набору: натиснули «4», потім «1» — у полі одразу «1, 4» (числа за зростанням, коми ставити не треба). Цифра поза межами (5, 0) і повтор (друга «1») просто не вводяться — поле коротко блимає червоним. Якщо межі більші за 9 (напр. 1–12), числа розділяють пробілом чи комою; число, більше за межу, так само не набирається. Шукати тварин у «Роботі зі стадом»: FILTER(udder contains 4) — у кого уражена четверта доля.
  • Довідники (вкладка в Конструкторі) — спільні списки значень: бики-плідники, причини вибуття, препарати. Щоб таким списком користувалися у формі, заведіть параметр із типом Довідник і вкажіть, який саме. Значення можна зробити неактивним — воно перестає пропонуватися в нових подіях, але вже внесене в картках тварин лишається. Довідник, на який посилається параметр, не видаляється — спершу треба змінити тип параметра.
    Код значення, яким уже записані тварини (накладні, правила подій), змінити не можна: у тварині зберігається саме код, і з новим кодом вона читалась би як інший пункт. Назву й порядок міняйте вільно, а для нового значення заведіть новий пункт.
    Пошук у довіднику (рядок над таблицею значень) фільтрує рядки за кодом, назвою і приміткою й показує «знайдено N із M» — щоб перед додаванням переконатися, що такого запису ще немає. Якщо набрана назва вже є, поле стає червоним і під ним зʼявляється попередження з кодом наявного запису; «+ Додати» спершу підсвітить його в таблиці й перепитає. Окремо сказано, коли запис є, але вимкнений — тоді правильно увімкнути наявний, а не заводити другий такий самий. Однакові значення, що вже лежать у довіднику, підсвічені червоним. Активні значення стоять угорі, вимкнені — під смужкою «вимкнені · N» унизу, щоб не шукати їх по всьому списку. Рядок переходить униз не в мить зняття галочки, а коли довідник відкриється наступного разу — інакше він тікав би з-під руки.
    Кнопка «+ Довідник» питає, що в ньому буде — вибір лише з двох: Власні значення (бики-плідники, причини вибуття — набираються прямо в довіднику) або Люди зі списку «Ветеринари» — тоді довідник збирається галочками зі спільного переліку. Другий шлях для того, щоб одна людина могла бути в кількох довідниках (осіменителі, розчистка копит, мастит), а прізвище правилося в одному місці — і мінялося скрізь. Тип можна змінити й пізніше — рядком «Що в довіднику» всередині нього. Довідник із довідника не збирається: джерело людей одне.
  • Ветеринари (вкладка в Конструкторі) — один список людей ферми: код, прізвище, примітка (посада, телефон) і позначка Працює. Колонка «Де задіяний» показує, у які довідники людина вже входить, щоб було видно, кого можна прибирати.
  • Конструктор (пункт меню «Конструктор») — одна сторінка на всі налаштування стада, вкладки: Параметри (поля картки тварини: дати, коди, числа, обчислювані величини), Події, Довідники і Секції (групи утримання, їхні періоди та звʼязок із групами Profeed; за ними йде роздача кормів і рахується поголівʼя). Закрита секція — вимкнена або всі її періоди вже скінчились — сама дістає «X» перед назвою («X Нетелі»), як вибула тварина: у переведенні її не пропонують, а в картках і таблицях видно, що тварин звідти пора перевести. Щоб з якоїсь дати годувати групу окремо, старій секції ставлять дату «по», а нову заводять із тією самою назвою й датою «з» та своєю групою Profeed; знову відкрили період — «X» знімається. У звітах годівлі «X Нетелі» і «Нетелі» — один рядок. Код новій секції дається наступний вільний. Секція — де стоять тварини; її періоди — яка роздача Profeed її годує з якої дати. Змінилась годівля (напр. нетелів з 03.10 годують окремо) — у тій самій секції додають рядок «з 03.10 → роздача Нетелі», нову секцію не заводять і тварин не переводять. У Конструкторі → Секції натисніть ▸ біля секції: під нею її рядки годівлі — «з … по … годує [роздача Profeed]», категорія й підкатегорія для звітів. Якщо ту саму роздачу в ті самі дати їсть ще якась секція, під рядком видно, з ким вона ділиться, і вибір «Як ділити корм»: за головами (щодня — скільки тварин у кожній секції в Бовіо; до появи стада в Бовіо — за відсотками) або за відсотками (жорстко вписані, разом 100 %). Секцію, з якою ділити, додають кнопкою «+ ділить з секцією…» просто з рядка — у тієї секції сам зʼявиться такий самий рядок (та сама роздача й дати, решта відсотка до 100), а її власні рядки на ці дні обріжуться. Спільний рядок — один на всіх: змінили «з» чи «по» в одній секції — дати зміняться й у тих, хто ділив ті самі дні (і їхній сусідній рядок зсунеться за межею). Рядки стоять у колонках «Період · Роздача Profeed · Категорія · Підкатегорія»; рядок, що ділить роздачу, має під собою один рядок «разом з … · за головами / за % · відсотки». Рядки, що вже скінчились, згорнуті в «Історію налаштувань» (▸ розгортає, стан памʼятається); у шапці згорнутої секції — лише діюча годівля. Кнопка ⇄ у рядку — «ця роздача годує ще й іншу секцію». Якщо в секції стоять і корови, і молодняк (напр. у сухостої — сухостійні корови й нетелі), у колонці «Категорія» оберіть «За тваринами» і дві підкатегорії — для корів і для молодняку: корм секції щодня ділиться за реєстром Бовіо (корови — лактація > 0, молодняк — нетелі й телиці). У шапці секції видно «52 гол. 37 кор. · 15 мол.». Голови для «₴/гол» у «Русі годівлі» беруться з реєстру Бовіо (з дня, коли в Бовіо зʼявилось стадо); раніше — голови роздачі Profeed. Якщо в Profeed є роздача, яка в останні дні не годує жодної секції (її корм іде в «Без секції»), над секціями зʼявляється попередження з кнопкою «Привʼязати до секції…» — вона закриває старий рядок напередодні й додає новий із цією роздачею з першого її дня. У «Русі годівлі» панель «Голови: Profeed ↔ Бовіо» показує, скільки голів годує кожна роздача і скільки стоїть у її секціях — розбіжність червоним (▸ — по днях). Порядок роботи: спершу заводиться параметр, потім подія, яка його змінює. Подію створюють кнопкою «+ нова подія», видаляють — «🗑 Видалити подію» праворуч у рядку з назвою. Категорію для події можна завести свою: «+ категорія» біля поля «Категорія» (вбудовані пʼять — Відтворення, Здоровʼя, Рух, Продуктивність, Інше — не видаляються; при видаленні власної її події переходять в «Інше»). У вкладці «Події» зверху — коло відтворення (яка подія який код ставить; розірваний крок — червоним, клік по назві відкриває подію) і кнопка «Перевірити цикл», що проганяє тестову тварину по всьому колу на тимчасовій копії бази. Нижче — усі події картками; клік по картці відкриває конструктор у три кроки:
    ① Доступ — хто з працівників може вносити цю подію (нікого не обрано = може кожен, хто працює зі стадом; перевірка стоїть на сервері);
    ② Поля — таблиця питань до оператора: параметр із довідника «Параметри тварин», обовʼязкове, розміщення (швидкий блок чи розширені), увімкнено, порядок перетягуванням і значення за замовчуванням; «+ Додати параметр» шукає по довіднику з фільтром за секцією;
    ③ Перегляд — що подія змінює сама, що питає обовʼязково і що підставляє за замовчуванням. Автоматичні дії та правила «Якщо» редагуються за посиланням «Розширено».
  • Внесення події (⚡ Події): угорі сторінки — перемикач «⚡ Одна тварина · 👥 Група», за ним подія (випадайка) і дата, праворуч кнопка «Зберегти подію». Обидва способи внесення живуть на ОДНІЙ сторінці: перемикач міняє лише те, кому вносимо, а обрані подія й дата переносяться за вами. Режим, у якому працювали востаннє, відкривається наступного разу сам. Ліворуч обирається тварина: після вибору зʼявляється її картка (№, кличка, секція, лактація, статус), нижче — швидкий блок полів, а рідковживані ховаються під «Розширені поля · N». Поля з * обовʼязкові — без них подія не проведеться. Дробові числа — завжди з комою: набрана крапка сама стає комою (28.8 → 28,8), так само в картці, групі й продажу худоби; у Excel такі числа йдуть числами, а не датами. Праворуч — історія тварини, унизу — стрічка останніх подій із пошуком, виправленням дати/нотатки і видаленням.
    Групове внесення стоїть у стрічці ОДНИМ рядком — як накладна в аптеці: дата, подія, позначка «групова · N гол.» і те, що спільне для всіх тварин пакета (секція, деталі, нотатка — якщо в усіх вони однакові). Номерів і кличок у згорнутому рядку немає навмисно: клік по рядку розкриває перелік усіх тварин — власною таблицею всередині, з рівними стовпцями: номер у пакеті, номер тварини, кличка, секція, далі деталі події по частинах (плідник, номер осіменіння, технік, спосіб) і нотатка. Стовпці деталей будуються з самої події, тож у всіх тварин пакета вони стоять рівно один під одним. Кожну тварину можна виправити чи прибрати окремо. А ✎ на самому рядку пакета міняє дату всьому внесенню одразу: помилилися датою на сотні голів — виправляєте однією дією (у вікні правки видно номер пакета), ✕ прибирає весь пакет. Пакет упізнається за тим, що групове внесення пише всі свої події однією секундою з тією самою подією й датою, тож так видно й давню історію.
    У стрічці дві дати: «Дата події» (коли це сталося на фермі) і «Внесено» (коли запис зробили) — вони часто різні. Колонка «Вид» позначає, одинична це подія чи групова (і скільки голів у пакеті). Над таблицею — відбір: подія, дата події від–до, дата внесення від–до, вид; «скинути» повертає все. Дати й подію відбирає сервер, тож шукається по всій історії, а не лише в останній сотні; якщо знайдене вперлося в межу читання, поруч із кількістю стоїть «+». Ширину стовпців тягнете за межу заголовка — вибір памʼятається, як і в інших таблицях застосунку. Номер тварини в стрічці — посилання на її картку. Кнопка «⚙ Колонки» вмикає й вимикає колонки: дата, подія, № тварини, кличка, група, деталі, нотатка, хто вніс, коли внесено (вибір памʼятається). Скасування події повертає тварині саме той стан, який був до неї: змінюються лише поля цієї події (для осіменіння — стан, дата, бик, технік, кількість осіменінь), а секція, вага, лактація та інше, внесене окремо, лишаються як були. Якщо після скасованої події вже були інші на ті самі поля, ці поля перераховуються за стрічкою. Після збереження подія й дата лишаються — можна одразу вносити наступну тварину.
  • 👥 Група — другий режим тієї самої сторінки «Події» (кнопка «👥 Група» у шапці; та сама подія й дата, кнопка стає «Зберегти для вибраних»): ліворуч таблиця тварин, праворуч — поля події. Стрічки останніх подій у цьому режимі немає — вона в режимі однієї тварини.
    Відбір — фільтри збираєте самі. Кнопка «+ фільтр» додає будь-який параметр тварини (пошук за назвою, згруповано за розділами конструктора, обчислювані теж можна); ✕ у комірці фільтра його прибирає. Умова залежить від типу: для списків і довідників — галочки кількох значень (є й «не вказано»), для чисел і дат — від / до, для тексту — «містить». Новий фільтр одразу додає свою колонку в таблицю — видно значення, за яким відібрано; активний фільтр підсвічено. «⚙ Колонки» окремо вирішує, що показувати в таблиці: кличку й будь-який параметр (з пошуком, за розділами). Колонки не залежать від фільтрів — прибрали фільтр, а колонка лишилась, або показуєте параметр без фільтра. Набір фільтрів і їхні умови свої в кожного користувача й зберігаються на сервері: відкрили сторінку наступного разу — відбір той самий. Для початку стоять Група, Стать, Репродуктивний код і Днів лактації. Приклад «на перевірку тільності»: Репродуктивний код = Осіменена, Днів з осіменіння від 35. Позначка «вже» біля номера означає, що цю подію тварині вже внесено обраною датою.
    Ввід за номером: поле «№ тварини → Enter» стоїть у фокусі одразу після відкриття. Поки набираєте номер, знайдена тварина виділяється в таблиці першим рядком під шапкою (виділяється лише однозначний збіг). Enter ставить їй галочку, поле очищається, курсор лишається в ньому — можна вводити наступний. Сторінка стоїть трьома колонками: ліворуч стадо, посередині «Зафіксовані», праворуч поля події. У середній колонці тварини стоять стовпчиком і за номером, тож потрібну голову знаходиш оком, а на сотні голів список гортається, а не розповзається. Щойно набрана позначена рудою рамкою і список підкручується до неї — видно, що номер зайшов. Кнопка «⇅ за номером / за вводом» у шапці панелі перемикає порядок: за номером тварини або в тому, як набирали (тоді остання згори); вибір памʼятається. Клік по рядку знімає тварину з вибору. Під списком — «лише вибрані» (показати їх у таблиці з колонками) і «зняти вибір». Набрали номер удруге — програма скаже «вже у списку» і підсвітить рядок, а не додасть його ще раз. На вузькому екрані колонки стають одна під одною в тому ж порядку: стадо, зафіксовані, подія. Якщо тварина не входить у поточний добір фільтрів, під полем так і сказано. Підходить бирка, UIN чи транспондер (досить унікального «хвоста» номера), а якщо такого номера немає — кличка. Успіх нічим не підписується — видно галочку й лічильник вибору. Якщо під номером кілька тварин, його немає або тварина вибула — поле червоніє з поясненням, а номер виділяється для перенабору. Повторний номер вибір не знімає. Клік по рядку таблиці теж повертає курсор у поле номера.
    Вибір: рядок над таблицею показує, скільки вибрано і скільки з них поза поточним добором (їх не видно, але вони будуть записані); кнопки «лише вибрані» й «зняти вибір» поруч. Тварина, що вибула зі стада, не вибирається.
    Спільне й поштучне: поле, заповнене в панелі «Подія для вибраних», вноситься одне для всіх. Поле, лишене порожнім, застосунок після «Зберегти» запитує по кожній тварині окремо — покроково: «Тварина 3 з 12 · 1119 Оксана», під нею лише незаповнені поля, нижче — що вже задано для всіх. Приклад: технік один на всіх (обираєте в панелі), а бика й спосіб осіменіння залишаєте порожніми — і вводите для кожної корови свої. Усе з клавіатури: на полі Enter відкриває список, стрілки (або перші літери назви) обирають, Enter фіксує й переводить на наступне питання; після останнього питання — наступна тварина. «← Назад» — попередня, обовʼязкове поле порожнім далі не пустить. Закріплений бик тварини підставляється в «Бик» і підписаний під полем; обрали іншого — під полем червоне «Закріплено …, обрано …», і перехід далі треба підтвердити ще одним Enter. Закрили вікно випадково — натисніть «Зберегти» ще раз: уже введене на місці (поки не змінили подію).
    Спосіб внесення «Списком» або «По одній»: перемикач угорі панелі «Подія для вибраних». «Списком» — як описано вище: відмічаєте тварин, а порожні поля застосунок питає після «Зберегти». «По одній» — набрали номер і Enter, і одразу відкривається вікно з порожніми полями для цієї тварини; Enter — тварина додана, курсор знову в полі номера. Приклад — контрольне доїння: жир, білок і соматику вписуєте в панелі один раз, надій лишаєте порожнім, і він питається для кожної корови, щойно ви її набрали. Введене видно в «Зафіксованих» поруч із номером («1043 · 28,6»). Номер, набраний удруге, відкриває вікно, щоб виправити значення; Esc — тварину не додано (або для вже доданої — лишилось як було). Enter на порожньому значенні вікно не закриває. Тварини, відмічені в таблиці галочкою «усі» чи прийшли формулою, питаються після «Зберегти», як і раніше. Спосіб памʼятається окремо для кожної події.
    Отел у груповому вводі: у тому самому вікні по кожній корові — приплід: стать, кличка (щойно обрали стать, підставляється вільна кличка на літеру клички матері, у двійні — різні; у матері без клички — вписуєте самі), ідентифікаційний номер і номер тварини (підставляються самі з нумерації приплоду, Конструктор → «Реєстр»; наступне теля в цьому ж вводі отримує наступний номер), поля події «Народження» (жива вага тощо) і галочка «мертве» (мертвонароджене теж заводиться твариною, без номера ідентифікації). Двійня — «+ теля». У «Зафіксованих» видно «1043 теличка 15654». Після запису підказка каже, скільки телят заведено. Видалили отел — разом із ним прибираються й заведені ним телята (і їхні номери звільняються), якщо теляті ще нічого не внесли; інакше теля лишається, і про це сказано в повідомленні.
    Запис: перед проведенням застосунок питає підтвердження зі зведенням (подія, дата, значення полів) — масовий запис не скасовується однією дією. Після запису видно підсумок: скільки записано і кому не записалось із причиною (наприклад, тільній не вносять осіменіння); такі тварини лишаються позначеними, щоб з ними розібратися. Індивідуальні значення (№ теляти, вага) у груповому режимі не вносяться — для отелів відкривайте подію на сторінці «Події».
9а Персонал

Гілку Персонал (працівники, ролі, процеси, Telegram-ввід змін і доїння/годівлі) винесено на окремий сервер. Керування персоналом і Telegram-бот тепер там; у локальному застосунку цієї гілки більше немає.

10 Терміни придатності

Показує партії, у яких термін спливає найближчим часом, щоб вчасно використати або списати. На головній є лічильник таких позицій.

11 Звіти та Power BI

«Звіти» — залишки, рух за період і видача по блоках. Кожен звіт можна надрукувати (значок принтера) або завантажити в Excel (зелений значок Excel) за той самий період. Також є Excel-бланк заявки та інвентаризаційний акт. У бланку колонки блоків згруповані: зверху назва групи (Корови · Молодняк · Свині), під нею її блоки й колонка «<група> разом»; «Всього» — сума підсумків груп. Для аналітики експортуються CSV (склад, надходження, видача) у форматі для Power BI (роздільник «;», десяткові через кому).

Коли ферма ведеться на сервері, CSV для Power BI складає сервер (База даних → «Аналітика (Power BI)») і кожні ~20 хв сам заливає їх у теку OneDrive, з якої читає Power BI (напр. powerBI/apteka). Компʼютер-копія ферми CSV не вивантажує — цієї панелі на ньому немає.

12 Довідники
  • Блоки згруповані у Корови та Молодняк. У кожній групі свій список (зелений «+» додає, червоний «−» прибирає). Назви в різних групах можуть повторюватись.
  • Отримувачі та Постачальники ведуться так само.
  • Одиниці виміру — формат кількості: для кожної одиниці задається, як вводиться кількість — вагові з комою (кг → 0 000,00), штучні цілим числом (шт, дози → 0 000). Формат діє на сторінці приходу: у полі «К-сть» для цілочисельних одиниць кома не приймається.
  • Угорі — перемикач довідників (Каталог · Одиниці виміру · Блоки · Отримувачі · Постачальники) з кількістю записів; під ним — обраний. Вибір памʼятається на компʼютері. Новий запис — поле вгорі й синій +; прибрати — кошик, що зʼявляється при наведенні на рядок. У Каталозі штрихкод можна згенерувати значком у самому полі, імпорт і Excel — праворуч від пошуку.
13а Bovio-сервер: браузер і локальний ПК

Ферма стартує у браузері (хмара — господар даних). Якщо хочете вести облік на ПК без залежності від інтернету:

  1. У браузерній фермі: Налаштування → «Локальна робота (застосунок на ПК)» — натисніть «Показати / створити токен».
  2. Завантажте застосунок за посиланням із тієї ж панелі й встановіть на ПК.
  3. На сторінці першого запуску оберіть «Вже маєте ферму в Bovio?», вставте адресу й токен і натисніть «⬇ Забрати мою ферму з Bovio». Відтепер облік ведеться на ПК, а серверна ферма — дзеркало: показує все, редагувати не дає. (На вже налаштованій установці те саме робиться в Налаштуваннях → «Bovio-сервер».)
  • ПК сам надсилає знімки бази (типово кожні 10 хв) — дзеркало завжди свіже, у шапці видно час останнього оновлення.
  • Повернути ведення в браузер: на серверній фермі кнопка «↩ Повернути ведення в браузер» (спершу вимкніть надсилання на ПК).
  • Господар завжди один — тому конфліктів не буває.
13б Супутниковий режим (працюй будь-де)

Коли облік ферми ведеться у браузері (хмара — господар), застосунок на будь-якому ПК можна перевести в супутниковий режим: Налаштування → «Bovio-сервер» → «🛰 Супутниковий режим».

  • Застосунок тримає повну копію бази і працює без інтернету.
  • Резервних копій бази такий компʼютер не робить — основна база на сервері, там і копії. При оновленні копії з сервера лишається один файл pre_refresh.db (стан до останнього оновлення), він щоразу переписується. Скільки копій лежить на кожному ПК — видно на сервері: «Як налаштовано» → «Компʼютери ферми» → «Копії бази на ПК».
  • Видача/списання, прихід, коригування залишку і нові товари проводяться локально і стають у чергу — щойно зʼявляється звʼязок, вони самі летять на серверну ферму (повтори неможливі — кожна операція застосовується один раз).
  • Інші дії (довідники, налаштування, редагування) — на серверній фермі у браузері.
  • Реєстр обміну: на ПК — у панелі «Bovio-сервер» (що поїхало на сервер, коли прийшла свіжа копія, які були помилки), а в браузері на серверній фермі — окрема панель «Реєстр обміну з ПК» у Налаштуваннях. Там КОЖЕН обмін окремим рядком у вигляді «звідки → куди · що»: час, компʼютер за іменем, хто саме вносив, напрямок і зміст (видача/прихід/коригування, копія бази, знімок, записи з Telegram-бота). Зберігаються останні 300 подій — приблизно доба роботи двох компʼютерів; скільки показувати, обирається над списком.
  • Панель «Синхронізація з сервером аналітики» на супутнику прихована: туди вивантажує сама серверна ферма, інакше в одну схему писали б два джерела.
  • Свіжа копія з сервера підтягується сама кожні 10 хв, коли черга порожня (несинхронізовані операції не пропадуть); «⟳ Оновити дані з сервера» — щоб не чекати.
  • Збій адреси сервера не зупиняє обмін. Якщо провайдер чи роутер ферми віддає неправильну адресу сервера (так було 19.09: «[WinError 10061] … actively refused»), застосунок сам бере правильну напряму в Cloudflare/Google, а коли й там неправильна — останню адресу, з якою обмін працював; у крайньому разі — запасний домен ферми на bovio.app (burty.bovio.pro → burty.bovio.app). Справжність сервера й далі перевіряється сертифікатом, тож підмінити його так не вийде.
14 Доступ з телефона

З телефона, планшета чи іншого компʼютера відкривайте адресу ферми в хмарі — ту саму, що й у браузері (напр. burty.bovio.pro). Там діють камера-сканер і «Додати на головний екран», сертифікат ставити не треба.

Застосунок, встановлений на ПК, відкривається лише на самому цьому ПК (http://127.0.0.1:5050): доступ до нього з інших пристроїв мережі прибрано у 2.40.56.

15 Користувачі та ролі (адмін)

Розділ «Користувачі»: додавання співробітників, скидання паролів, ролі. Журнал дій показує, хто й що робив у програмі.

Кілька обʼєктів одного господарства (лише на сервері Bovio). Якщо у вас ще одна ферма — зі своїми тваринами, складами й годівлею, — адміністратор додає її в «Налаштування» → «Обʼєкти господарства»: назва → «+ Обʼєкт». За кілька хвилин зʼявиться окремий сайт (напр. burty-2.bovio.pro) з тими самими налаштуваннями стада, блоками й постачальниками і з тими самими адміністраторами (той самий логін і пароль). Тварини, залишки, годівля, молоко, працівники, Telegram і привʼязки ПК не переносяться — у нового обʼєкта вони свої. Перелік обʼєктів з посиланнями — там само.

Перехід між обʼєктами. Коли обʼєктів кілька, угорі поруч із годинником стоїть назва обʼєкта, у якому ви зараз; клік — перелік ваших обʼєктів, вибір — перехід без повторного входу.

Хто на яких обʼєктах. «Користувачі» → панель «Хто на яких обʼєктах»: галочка — людина працює в цьому обʼєкті з тим самим логіном і паролем (керівника можна поставити на всі). Права на гілки в кожному обʼєкті задаються там. Пароль, імʼя й двофакторний вхід, змінені в одному обʼєкті, підхоплюють усі її обʼєкти. Зняли галочку — там вона більше не увійде, записи лишаються.

Копіювати налаштування в інші обʼєкти. «Налаштування» → «Обʼєкти господарства» → «Копіювати налаштування звідси в інші обʼєкти»: позначте, що саме (параметри, події, довідники, списки й панелі, календар, таблиці руху, схеми вакцинації й протоколи, числа ферми, блоки й постачальники), і куди. Однакове за назвою в тому обʼєкті оновиться, нове додасться, нічого не видаляється — власні списки обʼєкта й коди в його записах лишаються. Перед копіюванням обʼєкт робить копію своєї бази. Секції (групи), тварини, склади й права людей не копіюються.

16 Ліцензія

Програма прив'язується до комп'ютера ліцензійним кодом. У розділі «Ліцензія» видно стан і код прив'язки (QR або копіювання). Якщо ліцензія спливає — з'явиться попередження; оновіть через адміністратора.

Ферма на сервері — один ключ. Коли ферма ведеться на сервері, ліцензія одна — на сервері (адміністратор активує її там, на сторінці «Ліцензія»); коду активації ПК там немає — ключ належить фермі, а не компʼютеру. Компʼютер-копія бере цей самий ключ разом з обміном даних, свого ключа йому не треба й активувати на ньому нічого не можна. Стан ліцензії видно кожному в меню під кружком з ініціалами (крапка: зелена — діє, жовта — пільговий чи ознайомлювальний період або лишилось ≤30 днів, червона — лише перегляд) і в «Як налаштовано».

Власний сервер ферми. Якщо ферма тримає Bovio на своєму сервері, ключ привʼязується до цього сервера: на сторінці «Ліцензія» є «Код активації цього сервера» — надішліть його власнику Bovio, ключ видадуть саме під нього. Ключ без коду або під інший сервер там не діє (лише перегляд), ознайомлювального періоду немає.

17 Оновлення застосунку

Оновлення завантажуються автоматично з захищеного джерела та перевіряються цифровим підписом — підмінити код неможливо. Коли доступна нова версія, у розділі «База даних» з'являється позначка, а в куті сторінки — сповіщення з відліком: за три хвилини застосунок оновиться сам (кнопки «Оновити зараз» і «Відкласти на 30 хв» — поруч). Поки ви заповнюєте поле або тримаєте відкрите вікно, оновлення чекає. Дані зберігаються. Компʼютер, підключений до сервера ферми, бере оновлення з сервера ферми за ключем ферми — стороннім пакет недоступний.

Версія застосунку: 2.40.548. Якщо чогось не знайшли — зверніться до адміністратора.

18 Виробництво молока + Telegram-звіти

Облік молока (нове). Гілка «Виробництво молока» → 📝 Облік молока: список днів; розкрийте потрібну дату — усередині Зміна 1 і Зміна 2 з полями вашої форми (літри, кілограми, молоко поза лічильником, мастит, випойка бикам/теличкам…). Кнопки «Зберегти» немає — усе зберігається саме, щойно ви виходите з клітинки (Enter, Tab або клік деінде); праворуч у рядку блимає «✓», а якщо запис не пройшов — червоне «✗ не збережено». Enter переводить у наступну клітинку праворуч (у кінці рядка — на початок наступної зміни), Shift+Enter — назад; числа показуються у форматі 1 234 567, а коли станете в клітинку — без пробілів, зручно правити. Під змінами — рядок «Всього за день»: числові колонки додаються, а колонки-формули рахуються від цих сум (щоб відсотки й співвідношення не додавались, а рахувались за день). Поруч із датою видно, які зміни вже внесені, і підсумки тих колонок, які ви самі позначили у ⚙ Колонки галочкою «у шапці» (можна відзначити кілька — напр. товарне молоко й усього з маститом). Для кожної колонки у ⚙ Колонки обирається, як рахувати підсумок: «сума» (додати те, що видно у рядках — за замовчуванням), «формула колонки» (порахувати її власний вираз від денних сум) або «своя формула» — окремий вираз саме для рядка «Всього за день». Останнє потрібне для середніх: напр. середній жир за день = [Жир кг] / [Продано кг] — рахується від денних сум, а не додаванням відсотків. Колонці можна задати значення за замовчуванням (поле «за замовч.») — воно підставляється в порожню клітинку, напр. назва молзаводу «Кагма». Це лише підказка при вводі: у базу записується значення конкретного рядка, тому коли значення за замовчуванням зміните або приберете, раніше внесена історія лишиться такою, якою була. Для колонок на кшталт жиру чи білка є авто-кома: у налаштуваннях колонки оберіть «кома після 1» — і замість «3,55» достатньо набрати 355, кома стане сама після першої цифри (зайві цифри не приймаються). «Кома після 2» підійде для ціни: 1750 → 17,50. Для кожної колонки у ⚙ Колонки задається кількість знаків після коми (як є / 0 / 0,0 / 0,00 / 0,000) — це впливає лише на показ у таблиці, підсумку й шапці; у базі зберігається повне число. Ширину стовпців можна тягнути за межу заголовка — вона запамʼятовується для кожної колонки окремо у базі — тож тримається після перезавантаження, перейменування колонки, зміни порядку, а також на іншому компʼютері чи в іншому браузері. Дані живуть у базі паралельно з Excel — наявний імпорт не змінюється.

Продаж молока. Під таблицею змін у кожному дні є блок «Продаж молока»: перший рядок готовий одразу, а біля його номера є «+» (додати ще одне відвантаження — їх може бути скільки завгодно за день, різні покупці й ціни) і «−» (прибрати рядок разом із даними). Порожні рядки в базу не пишуться — відвантаження зберігається, щойно ви щось у нього внесли. Колонки продажу налаштовуються там само, у ⚙ Колонки — вікно поділене на два розділи: «Зміни (надій)» і «Продаж молока», у кожного своя кнопка «+ колонка». Працюють ті самі формули (напр. [Кг] * [Ціна]), формат числа й рядок «Всього». Дані живуть у базі паралельно з Excel — сторінка «Продаж молока» та звіти поки читають Excel, як і раніше.

Запис бота в книгу Excel виконує ОДНЕ місце — воно вибирається в Налаштуваннях молока («Запис у книгу Excel виконує», призначає лише адміністратор; типово — серверна ферма: сервер пише в книгу в OneDrive і одразу віддає її назад у хмару). Де саме налаштовано — видно на сторінці «🧭 Як налаштовано». Дані бота пишуться лише в порожні клітинки, людські записи ніколи не перезаписуються.

Ввід через Telegram. Бот живе на сервері й лише питає значення. Які саме колонки він питає — вирішуєте ви: галочка «Telegram» у ⚙ Колонки (формули не питаються ніколи). Застосунок сам надсилає серверу перелік таких колонок і сам забирає внесене ботом — раз на три хвилини, вихідним зʼєднанням, тож білий IP не потрібен. Значення передаються за номером колонки, тому перейменування нічого не ламає. Налаштування — «Виробництво молока» → Налаштування → «Ввід через Telegram»: адреса сервера, токен, кнопка «Обмін зараз», а поруч видно стан: набір колонок, час останнього обміну, курсор черги, скільки записів застосовано і скільки значень пропущено (це колонки, які ви прибрали вже після питання бота). Помилка «сервер не прийняв токен» показується окремо від «немає звʼязку» — щоб не шукати проблему не там. Повторний обмін безпечний: запис із тим самим номером не задвоюється, а повторний ввід тієї самої зміни вважається виправленням і перекриває попередній.

Формули рахує застосунок. Обчислювані колонки заповнюються при збереженні рядка — і коли ви вводите руками, і коли значення приходять із Telegram. Тому в базі завжди лежать повні дані, а не лише те, що ввела людина.

Налаштування колонок. Кнопка ⚙ Колонки у шапці сторінки: додати або прибрати поле, змінити назву, тип (Число, Текст, Час, Дата, Фото, Так/Ні, Зміна, Тривалість-авто, Формула-авто), одиницю; порядок — перетягуванням за «⠿». Галочка «показувати» вмикає чи вимикає колонку в таблиці: прихована колонка не видаляється — її значення лишаються в базі й далі беруть участь у формулах і підсумках, просто не займають місця на екрані. Назви колонок мають бути різні — за назвою їх шукають формули; повтор підсвічується червоним і зберегти не дасть. Дані з бази ніколи не видаляються самі. Якщо у вікні вгорі зʼявилось жовте попередження «є дані під назвами, яких у формі вже немає» — навпроти кожної старої назви оберіть колонку і натисніть «Перенести»; значення переїдуть у неї. Кнопка «Прибрати все» видаляє їх назавжди — лише якщо вони не потрібні. Перейменування колонки дані не втрачає — застосунок упізнає колонку за внутрішнім номером, тож усе раніше внесене переїжджає під нову назву. А от значення колонки, яку ви прибрали, стають непотрібними: при збереженні вони видаляються, а вгорі вікна показується попередження, скільки їх знайдено. Якщо колонка бере участь у формулах — після перейменування поправте вирази, бо вони шукають колонку за назвою.

Формула на колонці. Тип «Формула (авто)» рахує значення з інших колонок тієї самої зміни — як в Excel. Назва колонки береться у квадратні дужки, напр. ([Кілограми] − [Мастит]) / [Літри] * 100. Поле формули — окремим рядком під колонкою, на всю ширину вікна: довгий вираз видно повністю, його можна розбити на кілька рядків і потягнути за нижній край, щоб зробити вище. Кнопка «+ поле» підставляє назву, щоб не набирати вручну. Дозволені дії: + − * / ^, відсоток %, дужки будь-якої глибини, порівняння = <> < > <= >= і функції SUM, AVG, MIN, MAX, ROUND, ROUNDUP, ROUNDDOWN, ABS, INT, SQRT, IF (аргументи через кому або крапку з комою), напр. ROUND([Кілограми]/[Літри]; 3) або IF([Мастит] > 0; [Кілограми] − [Мастит]; [Кілограми]). Формула може посилатись на іншу формулу. У таблиці така клітинка зелена і лише читається — перераховується сама, щойно змінюєте будь-яке число в рядку, і зберігається разом зі зміною. Якщо вираз неправильний — поле підсвічується червоним і поруч видно причину («немає колонки…», «не закрито дужку…»), а клітинка лишається порожньою.

Джерело даних. Гілка «Виробництво молока» бере дані з Excel-файлу і фіксує надій та продаж у базу. Далі всі сторінки, звіти (зокрема «Огляд годівлі») і сервер читають з бази — Excel потрібен лише як джерело імпорту. У розділі «Налаштування» вказують шлях до файлу, аркуші та колонки для надоїв і продажу; клацніть поле колонки — випаде підказка зі списком колонок аркуша.

Коли база оновлюється з Excel. Автоматично — при відкритті сторінок Надої/Продаж та «Огляд годівлі», а також при збереженні відповідності колонок. Сервер (burty.bovio.pro) забирає книгу з OneDrive сам раз на 10 хвилин. Щоб не чекати — кнопка «⟳ Оновити з Excel» праворуч угорі на сторінках Надої й Продаж (і «⟳ Оновити молоко з Excel у базу» в Налаштуваннях молока): сервер одразу забирає книгу з OneDrive, перераховує її формули і фіксує надій і продаж — це займає 10–30 секунд, потім сторінка оновлюється. Поруч видно, коли книгу збережено. Зміни з Excel потрапляють в OneDrive лише після збереження книги (з автозбереженням — самі за кілька секунд).

Надої / Продаж. Дві сторінки з таблицями за періодами (день/тиждень/місяць/квартал/рік). Якість (жир, білок) рахується оберненим перерахунком через кілограми. Ціна молока переноситься вперед: діє від своєї дати до наступної зміни; Сума = кг × ціна.

Службові колонки (починаються з підкреслення). Їх немає у вашому Excel — застосунок рахує їх сам для кожного рядка продажу. Вписуйте їх у поле «Колонки Excel» так само, як звичайні назви:

КолонкаЩо це
_priceціна, діюча на дату рядка (з перенесенням вперед)
_amountкг × ціна — сума в тому вигляді, як у таблиці цін
_price_nv / _amount_nv без ПДВ — це дохід, саме він іде в економіку ферми
_price_v / _amount_v з ПДВ — гроші від молокозаводу
_vatсума ПДВ = з ПДВ − без ПДВ, це податкове зобовʼязання

Який множник застосувати, застосунок бере з блоку «ПДВ на продажу молока»: ставка і галочка «Ціна вже містить ПДВ». Якщо галочка стоїть, дохід рахується як ціна ÷ (1 + ставка/100); якщо знята — навпаки, до ціни додається податок. Кілограми для сум беруться з поля «Стовпець кг (для суми)» — там можна вказати як власну вагу, так і вагу молокозаводу.

Telegram-звіти (адмін). Один бот на всі гілки: токен, chat_id і час — у загальних Налаштуваннях; що саме слати — на сторінці «📣 Telegram-звіти» кожної гілки. Такі самі сторінки є в Аптеці та Матеріалах (низькі залишки, терміни, підсумок за день). Кнопка «Перевірити бота» в Налаштуваннях надсилає тестове повідомлення.

  • Щодня о годині із загальних Налаштувань — звіт за вчорашній день із порівнянням із позавчорашнім (↑/↓ і %).
  • По понеділках додається підсумок за минулий тиждень проти попереднього.
  • 1-го числа додається підсумок за минулий місяць проти позаминулого.
  • Які показники слати — обираєте галочками (надій кг/л, надій×коеф, продаж кг, сума, жир %, білок % тощо). Кнопки «Попередній перегляд» і «Надіслати тест» показують результат до ввімкнення розсилки.

Ввід молока з телефона через Telegram (кнопками). Працівник вносить надій і продаж прямо в чаті з ботом — без відкриття застосунку. Використовується той самий бот/токен, що й для звітів.

  • Увімкнення (адмін): Налаштування → «Вхідні дані через Telegram» → поставити галочку та додати Telegram ID дозволених працівників (через кому).
  • Як дізнатись свій ID: написати боту /start — він відповість числом. Це число адмін додає у список дозволених.
  • Внесення: у чаті бот показує кнопки 🥛 Надій / 💰 Продаж → дата (Сьогодні/Вчора/інша) → фото лічильника 📷 (бот розпізнає число) → підтвердити «✅ Так» або «✏️ Виправити» → (для продажу ще ціна за кг) → «✅ Зберегти». Можна одразу написати число без фото.
  • Розпізнавання числа з фото (опційно): Налаштування → «Вхідні дані через Telegram» → галочка «Розпізнавати число з фото» + безкоштовний ключ Gemini (aistudio.google.com → «Get API key»). Бот читає показник табло, а ви лише підтверджуєте або виправляєте — тож помилка розпізнавання не страшна.
  • Фото зберігається біля дня на сторінках Надої/Продаж (значок 📷) — для звірки показника.
  • Ручні записи захищені: імпорт з Excel їх не перезаписує.
19 Годівля: результат годівлі

Гілка Годівля → «📈 Результат годівлі» — зведення за обраний період (7/30 днів, квартал, усе або довільні дати).

  • Залишок кормів на складі — кг і ₴ без ПДВ на зараз.
  • Спожито за період — кг і ₴ (завантажено мінус віддані залишки плюс отримані перенесення).
  • Залишки ЗМР — зібрано з кормових столів (кг), скільки перенесено іншим групам (кг та ±₴). Залишок секції за день — з колонки «Залишки, кг» звіту Profeed: з 02.09.2026 — перше знайдене значення секції (Profeed API ставить той самий залишок у кожну роздачу секції, тож сума його подвоювала); за раніші дні — сума залишків усіх роздач секції. У панелі «Залишки ЗМР по групах» зберігаються лише змінені рядки; 0 (або порожнє поле замість числа) означає «залишку не було» і перекриває звіт. Внесене вручну число лишається, доки у звіті не зміниться саме залишок цієї секції — щогодинне перезавантаження звіту його не скидає.
  • Утилізація — викинуті залишки (кг і ₴ збитку); плитка зʼявляється, лише коли утилізація була. ⚠️ Залишок, який зібрано, але не розподілено (панель «Залишки ЗМР по групах» → «2. Розподіл залишків»), вважається утилізацією — тобто збитком. Щоб цього не траплялось, на сторінці 📅 Рух годівлі є перемикач «Розподіл залишків як учора»: якщо за день залишки є, а розподіл не внесено, застосунок повторює напрямок попереднього дня в тих самих частках і позначає це підказкою під панеллю. Внесений вручну розподіл автоматика ніколи не змінює. Автоматика бере той самий залишок, що й таблиці (з урахуванням ручних чисел), а коли залишку більше немає — прибирає свій розподіл. Залишок, який не розподілили зовсім чи частково, рахується утилізацією (і в кілограмах, і в гривнях); у плитці «Утилізація» видно, скільки з неї не розподілено.
  • Конверсія корму — кг молока на кг спожитої сухої речовини по дійному поголівʼю; поруч — СР/гол на день.

Таблиця нижче — ті самі показники по категоріях і підкатегоріях стада або по секціях «Управління стада» (перемикач угорі таблиці). «Перенос ₴»: зелений «+» — отримано із залишків інших груп, червоний «−» — віддано в залишки; у «Разом» ще «♻» — скільки з відданого пішло в утилізацію (віддано = отримано + утилізація).

20 Фінанси: звіт власника

Гілка Фінанси та аналітика → «📑 Звіт власника» — управлінський звіт за місяць, усі суми без ПДВ. Місяць обирається стрілками ‹ › або полем дати; за замовчуванням — останній повний місяць. Кнопка «Друк / PDF» друкує звіт на A4 (у вікні друку оберіть «Зберегти як PDF»).

Звіт відкривається одразу. Його, як і «Огляд» фінансів, рахує окремий фоновий процес застосунку, тож сторінка показує останні пораховані числа, не чекаючи. Змінились дані (новий день, накладна, оновлення програми) — угорі видно «Оновлюю числа…»: показано попереднє, свіже рахується фоном і з'явиться само, сторінку оновлювати не треба. Найперше відкриття місяця — «Рахую звіт…» (до хвилини). Важкий підрахунок більше не гальмує інших людей на фермі.

  • Головне за місяць — виручка, EBITDA, собівартість 1 кг молока, надій на дійну корову, дійні корови, дохід мінус корм на корову за день. Під кожним числом — зміна до попереднього місяця й до того самого місяця торік (зелене — краще, червоне — гірше).
  • Звіт про прибутки (P&L) — доходи (молоко, продаж худоби), змінні витрати (корм корів і молодняку, втрати корму, ветпрепарати, матеріали, статті з «Витрат»), маржинальний дохід, постійні витрати, EBITDA. Колонки: місяць, попередній, зміна, торік, з початку року, грн на кг молока і на фуражну голову за день.
  • Собівартість 1 кг молока — усі витрати, що припадають на фуражних корів, ÷ вироблене молоко (залік); з чого складається і як змінювалась за 12 місяців поруч із ціною продажу.
  • Корм, Молодняк, Стадо в цифрах — корм на 1 кг молока й у виручці, втрати корму; вартість вирощування молодняку на голову; отели, приплід, продаж і вибуття.
  • Останні 12 місяців і Висновок — тренд виручки, витрат і EBITDA; що покращилось, що погіршилось і куди дивитись.

Звідки цифри: молоко — продаж по днях; корм — собівартість спожитого за цінами приходів (FIFO); ветпрепарати й матеріали — видача зі складу на блоки (Корови / Молодняк); праця, енергія та інше — статті розділу «Витрати». Статті з назвою «Постійні», «Оренда», «Амортизація», «Адміністративні», «Страхування» йдуть у постійні витрати. Витрати без поділу на корів і молодняк розподіляються за голово-днями. Місяць, у якому є молоко, але немає обліку корму, показано блідим і з витратами не порівнюється.