1C 8.1 + ISS Как это работает?
Здравствуйте! В моём распоряжении есть разработка, которую надо поправить. Сама разработка представляет из себя сайт, с помощью которого агенты создают заказы. Сайт имеет подключение к нашей базе 1С:
Все работает с помощью пост запросов:
В эту функцию приходит outXml и возвращается ответ, который потом разбирается.
Всё вроде просто, но есть один нюанс, автор этого творения не захотел в комментарии и я благодаря этому вогнал себя в ступор, а именно:
где window.sessionStorage.spy - это айди авторизованного агента; day2 - текущая дата (введена мною), ну а что такое параметр "a=\"8_2014\" я могу только догадываться, предполагаю, что эта конкретная таблица в базе. В этом и есть суть вопроса, что это за параметр и куда глядеть, залез в скуль и ничего толком не увидел для себя.
Ответ на такой запрос будет:
Где "а" - номер заявки, "b" - дата заявки, "с" - наименование клиента и выбранный договор, "d" - сумма накладной, "e" - признак проведения, "f" - скорее всего ссылка на данный документ, а "g" - признак отгрузки, а мне очень нужен адрес куда отгружают.
Из-за того, что я не понимаю, что такое "a=\"8_2014\", я не понимаю, почему возвращается именно такой набор данных и где собственно адрес искать непонятно. Пытался вслепую менять этот параметр, но получал чаще всего пустой ответ.
Буду весьма благодарен любым мыслям по моему вопросу. Спасибо.
<add name="1c_81" path="1cws" verb="*" modules="IsapiModule" scriptProcessor="C:\Program Files (x86)\1cv81\bin\wsisapi.dll" resourceType="Unspecified" preCondition="bitness32" />
Все работает с помощью пост запросов:
function srvXml(outXml) {
webAppUrl = "a909.aspx?1";
req = new XMLHttpRequest();
try {
req.open("POST", webAppUrl, false);
req.send(outXml);
if (req.status == 200) {
xd = req.responseXML;
}
}
catch (e) {
xd = null;
alert("Не удалось получить ответ от сервера !" + "\n" + e.Message);
}
return xd;
}
ПоказатьВ эту функцию приходит outXml и возвращается ответ, который потом разбирается.
Всё вроде просто, но есть один нюанс, автор этого творения не захотел в комментарии и я благодаря этому вогнал себя в ступор, а именно:
outXml = "<r a=\"8_2014\" b=\"" + window.sessionStorage.spy + "\" c=\"" + day2 + "\" d=\"" + day2 + "\" />";
где window.sessionStorage.spy - это айди авторизованного агента; day2 - текущая дата (введена мною), ну а что такое параметр "a=\"8_2014\" я могу только догадываться, предполагаю, что эта конкретная таблица в базе. В этом и есть суть вопроса, что это за параметр и куда глядеть, залез в скуль и ничего толком не увидел для себя.
Ответ на такой запрос будет:
<localhost>
<?xml version="1.0"?>
<r>
<d a="Д0116229" b="23.01.2017" c="ООО Рога и Копыта/Основной договор" d="5385,48" e="0" f="15d83bb2-e136-11e6-bb77-00259088b2af" g=""/>
</r>
Где "а" - номер заявки, "b" - дата заявки, "с" - наименование клиента и выбранный договор, "d" - сумма накладной, "e" - признак проведения, "f" - скорее всего ссылка на данный документ, а "g" - признак отгрузки, а мне очень нужен адрес куда отгружают.
Из-за того, что я не понимаю, что такое "a=\"8_2014\", я не понимаю, почему возвращается именно такой набор данных и где собственно адрес искать непонятно. Пытался вслепую менять этот параметр, но получал чаще всего пустой ответ.
Буду весьма благодарен любым мыслям по моему вопросу. Спасибо.
По теме из базы знаний
Найденные решения
Остальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(4)Эта вся ерундовина написана на ASP.NET и очень весело, на сервере аж три проекта крутятся, 2 из которых работают, чтобы a909.aspx?1" отдала правильную ссылку. Собственно даже точка останова для отладки этого не надо, спасибо вам, в конфе нашёл вот такую красотулю:
Радости полные штаны, большое спасибо!) Не знаю почему я сразу об этом не додумался, глупый видимо ещё)
function f8_2014(xdIn) export // документы агента
agent = catalogs.Проекты.findByCode(xdIn.documentElement.getAttribute("b"));
d1 = begOfDay(date(xdIn.documentElement.getAttribute("c")));
d2 = endOfDay(date(xdIn.documentElement.getAttribute("d")));
qrText = "ВЫБРАТЬ
| doc.Номер,
| doc.Дата КАК Дата,
| doc.Контрагент.Наименование,
| doc.ДоговорКонтрагента.Наименование,
| doc.СуммаДокумента,
| doc.Ссылка,
| ВЫБОР
| КОГДА doc.Проведен
| ТОГДА ""1""
| ИНАЧЕ ""0""
| КОНЕЦ КАК Проведен,
| ВЫБОР
| КОГДА ВложенныйЗапрос.ПризнакОтгрузки = Неопределено
| ТОГДА ""0""
| ИНАЧЕ ВложенныйЗапрос.ПризнакОтгрузки
| КОНЕЦ КАК Отгружен
|ИЗ
| Документ.ЗаказПокупателя КАК doc
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ЗаказыРеализации.Заказ.Ссылка КАК ЗаказСсылка,
| ""1"" КАК ПризнакОтгрузки
| ИЗ
| РегистрСведений.ЗаказыРеализации КАК ЗаказыРеализации
| ГДЕ
| ЗаказыРеализации.ВРеализации
| И ЗаказыРеализации.Реализация.Проведен) КАК ВложенныйЗапрос
| ПО doc.Ссылка = ВложенныйЗапрос.ЗаказСсылка.Ссылка
|ГДЕ
| doc.Проект = &agent
| И doc.Дата МЕЖДУ &d1 И &d2
|
|УПОРЯДОЧИТЬ ПО
| Дата УБЫВ";
qr = new Query(qrText);
qr.setParameter("agent", agent);
qr.setParameter("d1", d1);
qr.setParameter("d2", d2);
qs = qr.execute();
sel = qs.choose();
xd = new DOMDocument;
root = xd.createElement("r");
xd.appendChild(root);
//// непроведённые наверх:
//
//vtUnPosted = unPosted(agent);
//
//for each vtLine in vtUnPosted do
// el = xd.createElement("d");
// el.setAttribute("a", trimall(vtLine[0]));
// el.setAttribute("b", trimall(format(vtLine[1],"DF=dd.MM.yyyy")));
// el.setAttribute("c", trimall(vtLine[2])+"/"+trimall(vtLine[3]));
// el.setAttribute("d", trimall(format(vtLine[4], "NG=")));
// st = trimall(vtLine[5]);
// el.setAttribute("e", ?(st = "", "0", st));
// el.setAttribute("f", trimall(vtLine[6].UUID()));
// root.appendChild(el);
//endDo;
//
// теперь поведённые:
while sel.next() do
el = xd.createElement("d");
el.setAttribute("a", trimall(sel[0])); //номер накладной
el.setAttribute("b", trimall(format(sel[1],"DF=dd.MM.yyyy"))); //дата накладной
el.setAttribute("c", trimall(sel[2])+"/"+trimall(sel[3])); //адрес доставки и клиент
el.setAttribute("d", trimall(format(sel[4], "NG="))); //сумма накладной
el.setAttribute("e", trimall(sel[6])); //признак проведения
el.setAttribute("f", trimall(sel[5].UUID())); //идентификатор накладной
el.setAttribute("g", trimall(sel[7])); //признак отгрузки
root.appendChild(el);
enddo;
return XMLDOMtoString(xd);
endFunction
ПоказатьРадости полные штаны, большое спасибо!) Не знаю почему я сразу об этом не додумался, глупый видимо ещё)
(1) этот запрос содержит сведения для 1С и для прокси, который должен понять, какой сервис 1с вызвать
значить непонятный реквизит - это некий релиз контракта с 1с от августа 2014 года
outXml = "<r a=\"8_2014\" b=\"" + window.sessionStorage.spy + "\" c=\"" + day2 + "\" d=\"" + day2 + "\" />";
значить непонятный реквизит - это некий релиз контракта с 1с от августа 2014 года
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)