Функция 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 добавил Данные в ДополнительныеПараметры, и измененные их туда уже не вставит
ДополнительныеПараметры.Вставить("Данные", Данные);
КонецЦикла;
Возврат Результат;
КонецФункции
Функция Post и подобные модифицирует свой входной параметр ДополнительныеПараметры, используя его для своих внутренних целей, и эти изменения протекают в код, вызывающий эту функцию. Это мешает использовать значение ДополнительныеПараметры повторно. Например, в коде ниже второй запрос возвращает неожиданный результат, потому что при первом вызове КоннекторHTTP.Post добавил значение Данные в ДополнительныеПараметры. При втором вызове КоннекторHTTP.Post, получив те же самые ДополнительныеПараметры, но другие Данные, отправит на хост неверные устаревшие Данные, потому что возьмет предыдущее значение, сохраненное в ДополнительныеПараметры. Это неожиданное поведение функции, не видел чтобы где-то было предупреждение, что ДополнительныеПараметры нельзя переиспользовать.