1C 8.1 + ISS Как это работает?

1. aezdakov 5 23.01.17 11:05 Сейчас в теме
Здравствуйте! В моём распоряжении есть разработка, которую надо поправить. Сама разработка представляет из себя сайт, с помощью которого агенты создают заказы. Сайт имеет подключение к нашей базе 1С:
<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\", я не понимаю, почему возвращается именно такой набор данных и где собственно адрес искать непонятно. Пытался вслепую менять этот параметр, но получал чаще всего пустой ответ.
Буду весьма благодарен любым мыслям по моему вопросу. Спасибо.
По теме из базы знаний
Найденные решения
2. ture 606 23.01.17 11:11 Сейчас в теме
(1) это веб-сервис, у него есть процедура в модуле 1С. В чем проблема остановиться в ней отладчиком?
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. ture 606 23.01.17 11:11 Сейчас в теме
(1) это веб-сервис, у него есть процедура в модуле 1С. В чем проблема остановиться в ней отладчиком?
3. aezdakov 5 23.01.17 11:15 Сейчас в теме
(2)Наверное в том, что я об этом не знал, что такая процедура есть. Сейчас я это увы сделать не могу, так как если включить отладку на сервере, то меня полюбят как минимум агенты. А это уже повод в рабочее время так не делать)
4. ture 606 23.01.17 11:21 Сейчас в теме
(3) a909.aspx?1 - эта штука вернет урл и, судя по всему, это еще не 1с-ный.
8. aezdakov 5 23.01.17 11:28 Сейчас в теме
(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
Показать

Радости полные штаны, большое спасибо!) Не знаю почему я сразу об этом не додумался, глупый видимо ещё)
5. ture 606 23.01.17 11:23 Сейчас в теме
(1) здесь отправляется хмлка
req.send(outXml);
в некий прокси, который переделает запрос в понятный 1с
6. ture 606 23.01.17 11:25 Сейчас в теме
(1) этот запрос содержит сведения для 1С и для прокси, который должен понять, какой сервис 1с вызвать
outXml = "<r a=\"8_2014\" b=\"" + window.sessionStorage.spy + "\" c=\"" + day2 + "\" d=\"" + day2 + "\" />";


значить непонятный реквизит - это некий релиз контракта с 1с от августа 2014 года
7. ture 606 23.01.17 11:27 Сейчас в теме
(1) чтоб поменять контракт придется менять код или настройки этой прокси, урл ее возвращает a909.aspx?1
9. tailer2 23.01.17 11:43 Сейчас в теме
тру-программер пейсал
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)