Имя: Пароль:
1C
1С v8
Odata, достать реквизиты вместе с объектами
0 alex115
 
21.09.20
10:48
Добрый день.

Делаю следующую задачу:
1. внешняя система создает в 1с СчетаПокупателям (тут все ок)
2. внешняя система периодически загружает СчетаПокупателям обратно и выставляет статус оплаты в "Оплачено" когда в 1с счет отмечают как оплачено.

Проблема возникла со второй  частью.
Я ожидал увидеть поле "статус оплаты" в обьектах по апи /odata/standard.odata/Document_СчетНаОплатуПокупателю , однако там ничего подобного нет.
Как я понял - они хранятся в /odata/standard.odata/InformationRegister_СтатусыДокументов

Однако из InformationRegister_СтатусыДокументов нельзя выгрузить статусы оплаты счетов за последнюю неделю например. надо загружать все.

В итоге единственное решение которое я вижу - делать кучу запросов, доставая по "СчетНаОплатуПокупателю.id" обьекты из "СтатусыДокументов". но это сотни запросов попусту.

Подскажите, может есть красивый способ просто получить список последних счетов во статусами их оплаты?
1 acht
 
21.09.20
10:51
Сделай свой web/http сервис и не имей людям мозг.
2 nicxxx
 
21.09.20
11:28
В "InformationRegister_СтатусыДокументов" надо добавить ресурс "Дата изменения статуса" и отбирать по нему записи. Ну и само собой, добавить программный код, который этот ресурс будет менять.
3 Cthulhu
 
21.09.20
13:11
(1) накуа если есть одата, которой "снаружи" можно записать-вытянуть что надо без изменений в конфигурации и с использованием ее функциональности?
(2) ну или в рс добавить реквизит "ДатаИзмененияСтатусаДокумента" - тогда только код проведения поправить гораздо меньше, чем прочий программный код в документе для варианта с реквизитом..
4 acht
 
21.09.20
14:49
(3)
> надо без изменений в конфигурации
...
> в рс добавить реквизит "ДатаИзмененияСтатусаДокумента"

Я в восхищении.
5 alex115
 
22.09.20
13:31
Я надеялся что можно сделать хитрый запрос просто (добавить expand или filter по связанным терез такую странную связь) обьектам.
И в итоге обойтись тем же обычным запросом через odata к InformationRegister_СтатусыДокументов или Document_СчетНаОплатуПокупателю.

Неужели там нет такой возможности? odata же и создавался чтобы не писать код для типового общения с 1с.

П.С. У нас нет человека который разбирается в 1с, поэтому мы и не совсем понимаем как там модели эти править, и слышали что все что там написал - надо поддерживать. Поэтому хотели обойтись стандартными средствами. Вообще не ожидали что поле которое явно относится к обьекту будет тяжело достать стандартными средствами.
6 nicxxx
 
22.09.20
17:50
(5) Дело не в 1С. В любой другой системе "поле которое явно относится к обьекту" может храниться отдельно от объекта. Решение в (0) вы видите правильное. Если в целевой таблице нет поля LogMoment, другого решения и не будет, 1С это или webApp Django/Php.
7 alex115
 
24.09.20
18:02
Да, поле относящееся к таблице не обязательно в ней хранится, но для полей которые явно хранятся существует метод expand.

Здесь я так понимаю эта связь реализована как "generic Foreign Key" который может ссылаться на объекты разных типов.
И expand в этой ситуации либо не работает, либо я не понял просто как его применить...