You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Функция Post и подобные модифицирует свой входной параметр ДополнительныеПараметры, используя его для своих внутренних целей, и эти изменения протекают в код, вызывающий эту функцию. Это мешает использовать значение ДополнительныеПараметры повторно.
Например, в коде ниже второй запрос возвращает неожиданный результат, потому что при первом вызове КоннекторHTTP.Post добавил значение Данные в ДополнительныеПараметры. При втором вызове КоннекторHTTP.Post, получив те же самые ДополнительныеПараметры, но другие Данные, отправит на хост неверные устаревшие Данные, потому что возьмет предыдущее значение, сохраненное в ДополнительныеПараметры. Это неожиданное поведение функции, не видел чтобы где-то было предупреждение, что ДополнительныеПараметры нельзя переиспользовать.
Функция СписокИзменений(ИдентификаторСессии)
Перем Адрес;
Перем Заголовки;
Перем ДополнительныеПараметры;
Перем Данные;
Адрес = "https://online.sbis.ru/service/?srv=1";
Заголовки = Новый Соответствие();
Заголовки.Вставить("X-SBISSessionID", ИдентификаторСессии);
Заголовки.Вставить("Content-Type", "application/json-rpc;charset=utf-8");
Заголовки.Вставить("User-Agent", "hello");
ДополнительныеПараметры = Новый Структура();
ДополнительныеПараметры.Вставить("МаксимальноеКоличествоПовторов", 5);
ДополнительныеПараметры.Вставить("Заголовки", Заголовки);
Результат = "";
Данные =
"{
| ""jsonrpc"": ""2.0"",
| ""method"": ""СБИС.СписокИзменений"",
| ""params"": {
| ""Фильтр"": {
| ""ДатаВремяС"": ""18.08.2023 00.00.00"",
| ""Навигация"": {
| ""РазмерСтраницы"": 50
| },
| ""ПолныйСертификатЭП"": ""Нет""
| }
| },
| ""id"": 0
|}";
Пока Истина Цикл
Ответ = КоннекторHTTP.Post(Адрес, Данные, ДополнительныеПараметры);
Результат = Результат + КоннекторHTTP.КакТекст(Ответ);
JsonОтвет = КоннекторHTTP.КакJson(Ответ);
Если Не JsonОтвет["result"]["Навигация"]["ЕстьЕще"] Тогда
Прервать;
КонецЕсли;
Данные = СтрШаблон(
"{
| ""jsonrpc"": ""2.0"",
| ""method"": ""СБИС.СписокИзменений"",
| ""params"": {
| ""Фильтр"": {
| ""ИдентификаторСобытия"": ""%1"",
| ""ИдентификаторДокумента"": ""%2"",
| ""Навигация"": {
| ""РазмерСтраницы"": 50
| },
| ""ПолныйСертификатЭП"": ""Нет""
| }
| },
| ""id"": 0
|}",
ПоследнийЭлемент(ПоследнийЭлемент(JsonОтвет["result"]["Документ"])["Событие"])["Идентификатор"],
ПоследнийЭлемент(JsonОтвет["result"]["Документ"])["Идентификатор"]);
//без следующей строки запрос возвращает те же самые данные вместо следующей порции
//все потому КоннекторHTTP.Post добавил Данные в ДополнительныеПараметры, и измененные их туда уже не вставит
ДополнительныеПараметры.Вставить("Данные", Данные);
КонецЦикла;
Возврат Результат;
КонецФункции
The text was updated successfully, but these errors were encountered:
Функция Post и подобные модифицирует свой входной параметр ДополнительныеПараметры, используя его для своих внутренних целей, и эти изменения протекают в код, вызывающий эту функцию. Это мешает использовать значение ДополнительныеПараметры повторно.
Например, в коде ниже второй запрос возвращает неожиданный результат, потому что при первом вызове КоннекторHTTP.Post добавил значение Данные в ДополнительныеПараметры. При втором вызове КоннекторHTTP.Post, получив те же самые ДополнительныеПараметры, но другие Данные, отправит на хост неверные устаревшие Данные, потому что возьмет предыдущее значение, сохраненное в ДополнительныеПараметры. Это неожиданное поведение функции, не видел чтобы где-то было предупреждение, что ДополнительныеПараметры нельзя переиспользовать.
The text was updated successfully, but these errors were encountered: