Skip to content

Параметры операции

Anna Sakoyan edited this page Nov 27, 2018 · 11 revisions

Режимы

Скрипт может запускаться в двух режимах:

  • Демо;
  • Обычный.

Демо - демонстрационный режим. Он нужен для того, чтобы пользователь мог ознакомиться с интерфейсом и посмотреть структуру выгружаемых файлов, не заполняя файл с параметрами запроса. При включенном демо-режиме скрипт использует свои собственные параметры запроса, заданные по умолчанию.

Обычный режим использует пользовательские параметры запроса. Эти параметры передаются в виде файла CSV, заполненного в соответствии с шаблоном.

Задачи

Скрипт может выполнять задачи трех типов:

  • Извлекать информацию о запросе
  • Выгружать данные по контрактам
  • Выгружать данные по продуктам

Информация о запросе показывает, сколько контрактов находится по тому или иному запросу (или указывает, что отвечающих запросу контрактов нет). Также информационное сообщение сигнализирует, если запрос в его текущем виде не может обойти технические ограничения на выдачу.

Выгрузка по контрактам представляет собой таблицу, где одна строка соответствует одному контракту.

Выгрузка по продуктам представляет собой таблицу, где одна строка соответствует одному продукту контракта.

Различение этих двух типов имеет значение только для выгрузки в табличных форматах. В формате JSON выгружаются данные о контрактах целиком, так как этот формат позволяет сохранить структуру данных. [Подробнее о форматах ниже]

Дело в том, что в контракте часто бывает больше одного продукта (а может быть и больше сотни). Из-за этого представить контракт в двухмерной таблице в развернутом виде (с детализацией по всем продуктам) невозможно.

Иногда это и не нужно – например, когда интересуют только цены контрактов за определенный период по какому-нибудь региону или у какого-нибудь заказчика. Для таких случаев сделана выгрузка по контрактам.

Выгрузка по продуктам нужна для тех случаев, когда интересуют закупавшиеся продукты. Тогда выгружаются данные по каждому продукту: его цена, описание, номер контракта, к которому он относится, и т.д. Поэтому даже при ограничении выгрузки до 5 000 контрактов в таблицах, выгруженных в режиме по продуктам может быть значительно больше 5 000 строк.

Вот примеры выгрузки по контрактам и по продуктам для одного и того же запроса:

  • productsearch: электроэнерг
  • customerregion: 77
  • daterange: 01.01.2018-31.01.2018
  • fz: 44

Расшифровки выгружаемых полей в табличных форматах:

Форматы выгрузки

Скрипт может выгружать данные в следующих форматах:

  • CSV
  • XLSX
  • JSON

При выгрузке в табличных форматах (CSV и XLSX) извлекаются не все данные о контрактах, а только данные некоторых полей.

При выгрузке в формате JSON данные о контрактах извлекаются полностью. Пример выгрузки данных в JSON.

Возможность установить длину подпериода

При полнотекстовом поиске по названиям или коду продуктов у API "Госзатрат" действует искусственное ограничение на выдачу - не более 500 контрактов. При запросах, предполагающих полнотекстовый поиск, скрипт пытается обойти это ограничение, разбивая заданный временной диапазон на подпериоды по 30 дней. Но для некоторых таких подпериодов число контрактов в выдаче все равно превышает лимит. В таком случае пользователь может указать более короткий подпериод дробления по временному диапазону.

Подпериод указывается целым числом и обозначает количество дней.

Пример:

Параметры операции:
Режим: Обычный
Задача: Вывести информацию о запросе

Параметры запроса:
productsearch: электроэнерг
customerregion: 77
daterange: 01.01.2018-31.01.2018
fz: 44
Найдено контрактов по запросу: 500
Ожидаемое время выгрузки: около 0 минут(ы)
        По этому запросу установлено искусственное ограничение на выдачу -
не более 500 контрактов. Мы попытались раздробить запрос на части,
разбив заданный временной диапазон на периоды по 30 дней.
Но для некоторых периодов число контрактов в выдаче все равно достигало 500.
Чтобы обогнуть ограничение, вы можете указать более короткий период дробления
по временному дипапзону или использовать дополнительные параметры фильтрации
(например, по региону заказчика или по ценовому диапазону).

Тот же запрос, но с указанием подпериода в 15 дней:

Параметры операции:
Режим: Обычный
Задача: Вывести информацию о запросе
Длина подпериодов (в днях): 15

Параметры запроса:
productsearch: электроэнерг
customerregion: 77
daterange: 01.01.2018-31.01.2018
fz: 44
Найдено контрактов по запросу: 965
Ожидаемое время выгрузки: около 1 минут(ы)

Сокращение длины подпериодов замедляет работу скрипта. Кроме того, в некоторых случаях может не помогать даже дробление по одному дню (когда число выдаваемых контрактов по запросу даже за один день превышает лимит). В таких случаях имеет смысл подумать об использовании дополнительных параметров фильтрации (например, по региону, заказчику, ценовому диапазону).