Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Odata, достать реквизиты вместе с объектами

Odata, достать реквизиты вместе с объектами
Я
   alex115
 
21.09.20 - 10:48
Добрый день.

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

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

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

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

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

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

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

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.