Initial import NDC_1C

This commit is contained in:
2026-03-26 10:38:25 +03:00
commit a162d77ef7
2943 changed files with 3615871 additions and 0 deletions
+326
View File
@@ -0,0 +1,326 @@
Да, теперь картина понятная.
У тебя сейчас:
* **1С:Предприятие 8.3.27**
* **Бухгалтерия предприятия, редакция 2.0**
* база в режиме **файловая**
* клиент **толстый**
* каталог базы: `x:\1C\База бухгалтерии`
Это значит: **быстрее всего вам идти через публикацию базы на веб-сервере и включение стандартного OData/REST**, а потом уже поверх этого делать свой backend. Платформа 1С умеет автоматически формировать REST-интерфейс после публикации решения на веб-сервере; через него можно получать списки документов, справочников, записей регистров, в том числе с фильтрами, а также читать/создавать/изменять объекты. 1С прямо называет автоматически генерируемый REST/OData основным инструментом интеграции со сторонними системами. ([v8.1c.ru][1])
## Что делать дальше
### План на 2 этапа
**Этап А — быстро получить доступ к данным без ручных выгрузок**
Поднимаете **OData/REST**.
**Этап Б — сделать нормальный боевой коннектор**
Поверх OData делаете **свой Node-сервис**, который:
* тянет данные по расписанию,
* хранит слепки и дельты,
* нормализует 1С-структуру,
* отдаёт уже удобное API вашему ассистенту.
А когда станет ясно, какие именно бухгалтерские сценарии нужны, добавляете в 1С **HTTP-сервисы** для кастомных запросов. 1С поддерживает создание собственных HTTP-сервисов; они удобны как лёгкие RPC/REST-эндпоинты, где вы сами формируете ответ встроенным языком. ([v8.1c.ru][2])
---
# Практический пошаговый план
## Шаг 1. Зафиксировать цель интеграции
Сразу не делать “полный двусторонний API”.
На старте нужен режим:
**read-only + синхронизация в вашу систему**
То есть:
* ничего в 1С не пишем;
* только читаем;
* строим внешний аналитический/операционный слой.
Это резко снижает риск.
---
## Шаг 2. Проверить, есть ли доступ к Конфигуратору
Вот это критично.
Без Конфигуратора или 1С-разработчика, который умеет:
* публиковать базу на веб-сервере,
* настраивать доступ,
* включать OData,
* при необходимости добавлять HTTP-сервисы,
вы не поедете.
### Что нужно спросить у 1С-ника
Одной фразой:
> Нужно опубликовать файловую базу 1С на локальном веб-сервере и включить стандартный интерфейс OData на чтение.
Это уже предметная задача.
---
## Шаг 3. Поднять веб-публикацию базы
REST/OData в 1С работает **после публикации прикладного решения на веб-сервере**. Это прямо официальный базовый принцип. ([v8.1c.ru][1])
### Что это значит practically
Ваш 1С-ник должен:
* открыть **Конфигуратор**;
* опубликовать базу на **IIS** или **Apache**;
* включить публикацию стандартного интерфейса OData;
* выдать вам URL.
Обычно итог выглядит концептуально так:
* база была локальной файловой;
* стала доступна по HTTP внутри сети, например:
* `http://<server>/<base>/odata/...`
* или похожий путь, который сформирует публикация.
Я сейчас не даю точный шаблон URL, потому что он зависит от имени публикации и настроек веб-сервера.
---
## Шаг 4. Включить OData только для чтения и только для нужных сущностей
В Библиотеке стандартных подсистем у 1С есть отдельный механизм настройки доступа к данным через стандартный интерфейс OData. ([v8.1c.ru][3])
### Что открывать наружу на старте
Не всё подряд. Только:
* документы покупателей
* документы поставщиков
* банковские выписки / платежные документы
* кассовые документы
* журнал проводок / регистр бухгалтерии, если доступен через публикацию
* контрагенты
* договоры контрагентов
* номенклатура
* статьи затрат
* статьи ДДС
* прочие доходы и расходы
То есть тот минимум, который у тебя уже руками выгружался.
---
## Шаг 5. Проверить OData простым тестом
После публикации проверяете не “сложный сценарий”, а очень простой:
1. Открывается ли metadata/корень сервиса.
2. Возвращается ли список, например, контрагентов или документов.
3. Работают ли фильтры по дате.
Официально REST/OData в 1С рассчитан как раз на получение списков документов, справочников и записей регистров с фильтрами. ([v8.1c.ru][1])
---
## Шаг 6. Между 1С и ассистентом ставите свой backend
Вот это обязательно.
### Архитектура
**1С (OData) → ваш sync-service → Postgres / storage → ассистент / UI**
### Почему так
Потому что нельзя строить продукт так:
* UI каждый раз бьёт прямо в 1С;
* ассистент напрямую лезет в 1С;
* куча запросов летит в боевую бухгалтерскую базу.
Это будет и хрупко, и больно.
### Что делает sync-service
* хранит `last_sync_at`
* тянет данные пачками
* складывает сырые JSON/таблицы
* нормализует в свои сущности
* считает дельты
* строит витрины:
* документы
* движения
* контрагенты
* объяснение суммы
* хвосты
* изменения за день
---
## Шаг 7. Не делать realtime на старте
Это важно.
На старте не нужен “живой поток каждую секунду”.
Нужен режим:
* раз в 5 минут,
* или раз в 15 минут,
* или по кнопке “обновить”.
У 1С всё есть для интеграции и синхронизации по расписанию, и БСП отдельно поддерживает синхронизацию по требованию и в автоматическом режиме по расписанию. ([v8.1c.ru][3])
Для бухгалтерии этого обычно достаточно.
---
## Шаг 8. После OData — добавить HTTP-сервисы под умные сценарии
Когда базовый доступ заработает, вы быстро упрётесь в то, что OData даёт “сырые объекты”, а вам нужны бизнес-запросы:
* дай документы, изменённые после последней синхронизации;
* дай расхождения по контрагентам;
* дай хвосты перед закрытием;
* дай цепочку, из чего сложилась сумма;
* дай нетипичные ручные операции.
Вот под это уже делаются **HTTP-сервисы внутри 1С**, потому что 1С позволяет создавать произвольные HTTP-сервисы и самим формировать тело ответа. ([v8.1c.ru][2])
---
# Что конкретно делать тебе сейчас
Вот совсем без воды.
## Прямо сейчас
Составь и передай 1С-разработчику такой список задач:
### ТЗ-минимум
1. **Опубликовать файловую базу 1С на локальном веб-сервере**.
2. **Включить стандартный REST/OData-интерфейс**.
3. **Настроить отдельного пользователя только на чтение** для интеграции.
4. **Ограничить опубликованные сущности** стартовым списком:
* контрагенты
* договоры контрагентов
* номенклатура
* статьи затрат
* статьи ДДС
* документы покупателей
* документы поставщиков
* банковские документы
* кассовые документы
* проводки / регистры бухучёта, если доступны через публикацию
5. **Отдать тестовый URL и учётку** для проверки из внешней системы.
### ТЗ-второй очереди
6. Добавить **HTTP-сервисы** под кастомные выборки:
* изменения за период,
* дельта после последней синхронизации,
* список незакрытых хвостов,
* проводки, повлиявшие на сумму,
* документы закрытия месяца.
---
# Что будете делать вы в Node.DC
## Первая версия коннектора
Делаете сервис с 4 методами:
* `syncReferenceData()`
тянет справочники
* `syncDocuments(from, to)`
тянет документы по периоду
* `syncAccountingMovements(from, to)`
тянет движения/проводки
* `getDelta(since)`
тянет только изменения с момента последней синхронизации
### В хранилище
Минимум такие таблицы:
* `onec_counterparties`
* `onec_contracts`
* `onec_items`
* `onec_cashflow_articles`
* `onec_cost_articles`
* `onec_documents_raw`
* `onec_postings_raw`
* `onec_sync_log`
---
# Какой результат должен быть через 1–2 дня работы
Не “полный AI для бухгалтерии”.
А вот такой checkpoint:
### Должно заработать
* автоматически читаем из 1С контрагентов;
* автоматически читаем документы за день/месяц;
* автоматически читаем проводки/движения;
* без ручных Excel;
* данные падают в ваше хранилище;
* можно сделать первый экран:
* “что изменилось с последнего sync”
* “какие документы/движения добавились”
* “какие контрагенты/суммы затронуты”
Если этого нет — дальше думать про ассистента рано.
---
# Самая короткая стратегия
## Что не делать
* не строить ассистента поверх ручных выгрузок;
* не лезть сразу в онтологию и сложные смыслы;
* не пытаться “читать SQL-таблицы 1С в лоб”.
## Что делать
* публикация базы,
* OData,
* read-only пользователь,
* sync-service,
* своё хранилище,
* потом HTTP-сервисы под умные кейсы.
---
# Твой следующий практический ход
Открой у себя и проверь, есть ли вообще **Конфигуратор 1С** для этой базы.
Если есть — это следующий рабочий шаг.
Если его нет, значит нужен человек с доступом к конфигуратору/администрированию.
Если хочешь, я следующим сообщением соберу тебе **готовое короткое ТЗ для 1С-разработчика** — буквально списком, что именно ему нужно сделать, без лишней теории.
[1]: https://v8.1c.ru/platforma/rest-interfeys/ "REST интерфейс | Интеграция - платформа 1С:Предприятие"
[2]: https://v8.1c.ru/platforma/http-servisy/ "HTTP-сервисы | Интеграция - платформа 1С:Предприятие"
[3]: https://v8.1c.ru/tekhnologii/standartnye-biblioteki/1s-biblioteka-standartnykh-podsistem/integratsiya-s-drugimi-prilozheniyami-i-podsistemami/ "Интеграция с другими приложениями и подсистемами | 1С:Библиотека стандартных подсистем"