Прочитав твоє ТЗ цілком · серпень 2026

Ми будували одне й те саме з різних кінців

Таблиця не зберігає минуле.
Вона його щоразу перераховує.

Твоє ТЗ — 26 сторінок, 38 правок, три ітерації. Прочитав усе, і воно того варте. Далі: де ми зійшлися, три місця, де таблиця впирається не в тебе, а в себе, три питання, на які я не знайшов відповіді в тексті, — і те саме про мою систему, де застряг я.

26 сторінок 38 правок 727 пацієнтів 264 позиції прайсу 3 ітерації
Зайти в систему і потикати ↓

Де ми зійшлися

/ 08

Ти йшов до цього з боку клініки, я — з боку бухгалтерії. Вийшов той самий перелік. До нього зазвичай доходять після першої втрати даних, а не до неї.

Окремо зніму капелюха за Правку 27, п. 5. Ти назвав дублікат картки пацієнта контролем фінансової коректності, а не гігієною даних — бо дубль із різною базою пацієнта дає неправильний бонус. Так думають не всі, хто пише облікові системи за гроші.

Три межі

/ 03

Це не про помилки в роботі. Це про стелю платформи — місця, куди таблиця не пройде, скільки її не допилюй.

П.28П.29П.30

Минуле не зберігається — воно перераховується

Як у тебе

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

Де межа

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

Що на цьому місці робить база

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

Правка 28 — це не випадок, а клас. Формули стояли до 4-го рядка, і 4-й чек мовчки не порахувався б: без помилки, без попередження. Ти знайшов це руками, під час аудиту. Небезпечна не помилка, а тиша.
П.32П.18

Перевіряється лише те, на що хтось написав формулу

Як у тебе

Аркуш «Перевірки»: шість звірок зі світлофором — баланс сходиться, оплати без чека, пацієнти без бази, від'ємні залишки, старі борги, дублі. Плюс окремо підсвічування «ставку не знайдено», щоб дохід тихо не відійшов клініці. Це найтонше місце всього ТЗ.

Де межа

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

Що на цьому місці робить база

Частина перевірок перестає бути перевірками і стає неможливістю. Проводка не записується, якщо дебет не дорівнює кредиту. Гроші не виходять із каси, в якій їх нема. Це не звіряється потім — це просто не відбувається.

Решта — таки правила, які треба писати руками, тут ілюзій нема. Різниця в тому, що вони живуть в одному місці, падають на тесті при зміні системи й не можуть мовчки зникнути разом із клітинкою.
П.12П.13ризик 3

Доступ прив'язаний до файлу, а не до людини

Як у тебе

Два файли: «Клініка (робоча)» на спільному акаунті для адміністратора й медсестри, «Облік_клініки» — на твоєму особистому й на акаунті бухгалтера. Сирі дані переїжджають між ними через IMPORTRANGE. Це найкраще, що Google Таблиці дозволяють — межа платформи, не твоя.

Де межа

Розмежування куплене дублюванням даних. І та сама IMPORTRANGE названа у твоєму ж ТЗ найбільшою неперевіреною невідомою в архітектурі: на реальних даних вона жодного разу не працювала. Тобто модель доступу і головний архітектурний ризик — один і той самий механізм. З'явиться четверта роль — потрібен третій файл.

Що на цьому місці робить база

Дані одні. Доступ — властивість людини, а не файлу: адміністратор бачить свої екрани, бухгалтер свої, лікар не заходить взагалі. Копій не існує, отже нема чому розходитись і нема чого синхронізувати.

Три питання, яких я не знайшов у тексті

/ 03

Може, відповіді є поза документом — ТЗ описує облік, а не договори. Але кожне з трьох коштує грошей саме тоді, коли відповіді нема.

ПРРО
не згадано жодного разу

Чим фіскалізується готівка й термінал

У тебе готівка й картка від фізичних осіб. На 26 сторінках слова «РРО» немає. Або програмний РРО живе окремо від таблиці — і тоді питання, чи хтось звіряє його з нею, — або це відкрита позиція перед податковою.

П.4
рахується без податків

Зарплата персоналу — це не «години × ставка»

Табель рахує звичайні години, овертайм подвійною ставкою і кладе суму у витрати. ЄСВ, ПДФО і військовий збір не згадані ніде. Якщо адміністратор, медсестра й прибиральниця оформлені найманими — за кожною зарплатою стоїть ще ~22% зверху й 23% утримань, плюс квартальна звітність, якої таблиця не бачить у принципі.

П.2П.6
найдорожче питання

Уся сума чека проходить через твій ФОП

За моделлю ТЗ пацієнт платить клініці 100%, лікар отримує свою частку окремою виплатою. На спрощеній системі доходом за загальним правилом вважається все, що надійшло. Виняток — договір доручення, комісії або агентський: тоді доходом визнається лише винагорода.

Тобто вся різниця між «оподатковується 1000» і «оподатковується 600» тримається не на обліку, а на тому, як оформлені відносини з лікарями — про це в ТЗ немає жодного рядка.

Це питання до бухгалтера, не мій висновок. Я не ставлю його як факт і наслідків не рахую. Але якщо відповідь «ніяк не оформлені» — це найбільша цифра в усій системі, і жодна таблиця її не підсвітить.

Повна звірка

напрям за напрямом

Червоним — те, чого немає в мене. Показати лише сильні місця було б тим самим, що зелений світлофор над порожнім діапазоном.

Напрям У тебе У мене
Борг пацієнта, часткові оплати Формули по журналу «Оплати» Стандартні розрахунки з контрагентом; борг рахується з документів
Виписка лікарю Окремий аркуш під друк П.33 Акт звірки — типовий документ, є для будь-якого контрагента
Баланс з лабораторією та анестезіологами Окремий аркуш розрахунків П.17 Те саме, що з будь-яким контрагентом — окремий аркуш не потрібен
Залишок каси Надійшло − виплачено − витрати П.31 Рахується з документів; збереженої цифри залишку не існує — щоб не було чому розійтися
Фактичний перерахунок готівки Поле факту + автоматичне розходження Треба доробити — документ інвентаризації каси
Склад: залишки й вартість Прихід − списано; ціна останньої закупівлі Партійний облік за FIFO + автоматична звірка двох незалежних джерел кількості
Інвентаризація складу Розрахунок / факт / розходження П.15 Є, тією ж логікою
Зарплата персоналу Години × ставка → у витрати П.4 Повний розрахунок: ЄСВ, ПДФО, військовий збір, платіжна відомість, розрахунковий листок, квартальна звітність
Фіскалізація чека Немає Програмний РРО через Checkbox, вбудований у продаж
Закриття періоду Дата + заливка + захищений діапазон П.29 Перевіряється у 26 місцях запису; перевідкриття лишає слід — частину ще доробляю
Виправлення помилки Колонка «Скасовано» + причина П.30.3 Сторно-документ; проведене не змінюється навіть технічно — заборона на рівні бази
Зіставлення за ID Переробляється з ПІБ на ID П.30.1 Зв'язки за ключем із першого дня; однофамільці неможливі за побудовою
Розподіл доходу лікар / клініка Серце системи; формули зі ставками й історією Немає. Це окремий модуль, який треба написати
Реферальні бонуси, база пацієнта Зроблено й перевірено П.24 Немає
ФОП, єдиний податок Податків не рахує взагалі — управлінський облік Немає. Ядро сьогодні під ТОВ на загальній системі з ПДВ
Інтеграція з ClinicCards Скрипт написаний, чекає переїзду П.27 Немає — але це той самий клас, що вже зроблені інтеграції

Де застряг я

/ 04

Ти показав свої межі в розділі «Свідомо НЕ зроблено». Симетрично.

  1. Режим ФОП і єдиний податок не побудовані. Ядро писалося під ТОВ на загальній системі з ПДВ. Для твоєї клініки це не галочка в налаштуваннях, а окремий блок роботи — і поки він не зроблений, система цього обліку не веде.
  2. Розподіл доходу між клінікою і лікарями — модуль, якого нема. А це якраз серце твого ТЗ. Розрахунки з лікарем як із контрагентом уже працюють; сама формула зі ставками, історією та визнанням пропорційно кожній оплаті — ні.
  3. Розмежування доступу спроєктоване, але не написане. Модель ролей опрацьована й зафіксована, коду поки нема.
  4. І головне: усе, що працює, доведене на тестових даних, а не на живій роботі. У цьому сенсі твоя система попереду моєї — вона крутиться на реальних чеках реальних пацієнтів. Тому мені й було цікаво прочитати ТЗ людини, у якої воно вже працює.

Заходь і тикай

без запису й без показу

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

Три речі, щоб не було сюрпризом

  • 01Дані там тестові, база робоча. Проводь, скасовуй, ламай — нічого цінного всередині немає, і зіпсувати ти не можеш.
  • 02Інтерфейс сьогодні під ТОВ із ПДВ. Побачиш податкові накладні й декларацію — до клініки вони не стосуються. Дивись на механіку, не на форми: як заводиться документ, як він проводиться, чому його потім не змінити.
  • 03Що зламається — скажи. Це не ввічливість: система ще не бачила живої роботи, і кожне «а тут воно повелося дивно» вартує мені більше, ніж тиждень власних тестів.
Відкрити Pencil
логінpencil@erp.com
парольadmin123

Якщо десь виб'є на екран входу — просто залогінься ще раз, це не ти.