BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 20 июн 2025, 02:33

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: [6.0] Подскажите по custom API
СообщениеДобавлено: 19 мар 2014, 22:35 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Снова добрался до стыковки биллинга с внешними системами (в частности 1С).
Расковырял PaymentManager.class для тестов.
Слепил вот такую поделку

Код:
package api.ru.ellcom.bgbilling.service.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.jws.WebService;

import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.kernel.container.service.server.AbstractService;
import bitel.billing.server.contract.bean.Payment;

@WebService(targetNamespace="ellcom")
public class ContractServiceImpl
    extends AbstractService
{
   public List<Payment> getPaymentList(int contractId)
          throws BGException
        {
         List result = new ArrayList();

          StringBuilder query = new StringBuilder("SELECT * FROM contract_payment WHERE cid=? ORDER BY dt");
          try{
          PreparedStatement ps = getConnection().prepareStatement(query.toString());
          ps.setInt(1, contractId);
          ResultSet rs = ps.executeQuery();
          while (rs.next())
          {
            result.add(getPaymentFromRs(rs));
          }
          rs.close();
          ps.close();
          }
          catch (SQLException e)
          {
            throw new BGException(e);
          }
          return result;
        }

   private Payment getPaymentFromRs(ResultSet rs)
          throws SQLException
        {
         Payment payment = new Payment();

          payment.setId(rs.getInt("id"));
          payment.setContractId(rs.getInt("cid"));
          payment.setComment(rs.getString("comment"));
          payment.setDate(rs.getDate("dt"));
          payment.setTypeId(rs.getInt("pt"));
          payment.setSum(rs.getBigDecimal("summa"));
          payment.setUserId(rs.getInt("uid"));
          payment.setTimeChange(rs.getString("lm"));

          return payment;
        }
}


Пытаюсь получить данные из вебсервиса.
Все светится
Изображение

Прикручиваю к 1Су и засада.
Код:
{Форма.Форма.Форма(8)}: Ошибка при вызове конструктора (WSОпределения)
   Определение = Новый WSОпределения(ВыбПутьПубликацииСервиса);
по причине:
Ошибка проверки модели XDTO: xdto-objectType-3.1.2   тип: payment   пакет: ellcom
Дублирование имени свойства 'contractId'


1C не видит разницы между contractID и contractId.
Можно ли как-то повлиять на это?
Не отдавать устаревшие методы или еще как-то? Подскажите нубу :oops:

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Подскажите по custom API
СообщениеДобавлено: 20 мар 2014, 00:27 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
как вариант создать свой bean (например MyPayment) и туда перекладывать данные из Payment


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Подскажите по custom API
СообщениеДобавлено: 20 мар 2014, 17:25 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Решил пойти от обратного (тем более не всегда будут возвращаться сущности биллинга. Может какие то списки или т.п.)

Сократил до

Код:
@WebService(targetNamespace="ellcom")
public class ContractServiceImpl
    extends AbstractService
{
   public List<HashMap<String, String>> getPaymentList(int contractId)
          throws BGException
        {
         List<HashMap<String, String>> result = new ArrayList<HashMap<String, String>>();
         HashMap<String, String> map = new HashMap<String, String>();
         map.put("start","1");
         map.put("text","yes");
         result.add(map);
         map = new HashMap<String, String>();
         map.put("start","2");
         map.put("text","no");
         result.add(map);
          return result;
        }
}


Теперь вообще ничего не возвращается.

Вот что возвращалось из примера в первом сообщении
Код:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns2:getPaymentListResponse xmlns:ns2="ellcom">
         <return>
            <comment/>
            <contractID>4</contractID>
            <contractId>4</contractId>
            <date>2014-02-19T00:00:00+04:00</date>
            <ID>3</ID>
            <id>3</id>
            <paymentDate>2014-02-19T00:00:00+04:00</paymentDate>
            <paymentTypeID>1</paymentTypeID>
            <sum>20.00</sum>
            <summa>20.00</summa>
            <timeChange>2014-02-19 16:34:15.0</timeChange>
            <typeId>1</typeId>
            <typeTitle/>
            <userID>2</userID>
            <userId>2</userId>
         </return>
      </ns2:getPaymentListResponse>
   </S:Body>
</S:Envelope>


А вот что возвращается теперь
Код:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns2:getPaymentListResponse xmlns:ns2="ellcom">
         <return/>
         <return/>
      </ns2:getPaymentListResponse>
   </S:Body>
</S:Envelope>



Не подскажете в чем трабл? Данные вроде простейшие.

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Подскажите по custom API
СообщениеДобавлено: 20 мар 2014, 17:28 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
В тоже время для допустим вот такого вот
Код:
   public List getPaymentList(int contractId)
          throws BGException
        {
         List result = new ArrayList();
         result.add("blablabla");
         result.add("blablabla");
         result.add("blablabla");
          return result;
        }

приходит
Код:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
   <S:Body>
      <ns2:getPaymentListResponse xmlns:ns2="ellcom">
         <return xsi:type="xs:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">blablabla</return>
         <return xsi:type="xs:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">blablabla</return>
         <return xsi:type="xs:string" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema">blablabla</return>
      </ns2:getPaymentListResponse>
   </S:Body>
</S:Envelope>

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Подскажите по custom API
СообщениеДобавлено: 21 мар 2014, 01:10 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
мапы лучше не использовать, они не дружат с веб-сервисами
самое безопасное возвращать строку или массив строк
в массив строк можно закодировать мап (нечетные элементы массива ключи, четные - значения), типа ["key1", "value1", "key2", "value2", ... ]
или возвращать json-строку


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Подскажите по custom API
СообщениеДобавлено: 21 мар 2014, 01:23 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
А можно пару примеров если это возможно?

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Подскажите по custom API
СообщениеДобавлено: 21 мар 2014, 01:26 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Phricker писал(а):
А можно пару примеров если это возможно?


примеров чего?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Подскажите по custom API
СообщениеДобавлено: 21 мар 2014, 10:41 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Готового кода конечно же `(*∩_∩*)′
Для JSON строк

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: [6.0] Подскажите по custom API
СообщениеДобавлено: 21 мар 2014, 11:12 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Phricker писал(а):
Готового кода конечно же `(*∩_∩*)′
Для JSON строк


вы сначала выясните сможете ли json на 1с раскодировать
а примеры json - http://www.json.org/java/index.html


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.041s | 34 Queries | GZIP : On ]