Initial import NDC_1C
This commit is contained in:
@@ -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С:Библиотека стандартных подсистем"
|
||||
Reference in New Issue
Block a user