Перейти к основному содержимому

О2.ЗагрузитьРешение

Восстанавливает объект решения из сериализованных данных. Позволяет получить результат вычислений, выполненных вне текущего процесса 1С: в другом сеансе, на другом сервере или консольной утилитой решателя.

Синтаксис

О2.ЗагрузитьРешение(Источник, Параметры)

Параметры

  • Источник — источник данных решения. Допустимые типы:
    • Строка — полный путь к файлу, содержащему решение;
    • ДвоичныеДанные — двоичные данные решения;
    • Поток, ФайловыйПоток, ПотокВПамяти — входной поток с данными решения.
  • ПараметрыСтруктура, Неопределено — Аргумент зарезервирован для будущих расширений. В текущей версии не используется.

Возвращаемое значение

  • ОбработкаОбъект — объект решения. Тип определяется автоматически по содержимому источника:
    • ОбработкаОбъект.О2_CP_SAT_Решение — решение модели ограничений;
    • ОбработкаОбъект.О2_MP_Решение — решение линейной модели (LP / IP / MIP);
    • ОбработкаОбъект.О2_Knapsack_Решение — решение задачи о рюкзаке;
    • ОбработкаОбъект.О2_MaxFlow_Решение — решение задачи поиска максимального потока;
    • ОбработкаОбъект.О2_MinCostFlow_Решение — решение задачи поиска потока минимальной стоимости;
    • ОбработкаОбъект.О2_Routing_Решение — решение модели маршрутизации.

Описание

Метод используется в связке с методом О2.ЗаписатьМодель для реализации асинхронных сценариев вычислений. Типовой сценарий:

  1. В 1С модель строится и сохраняется в файл методом ЗаписатьМодель.
  2. Файл модели передаётся на сервер решателя (сетевой диск, HTTP, очередь и т. п.).
  3. На сервере решателя консольная утилита получает решение и сохраняет его в виде файла.
  4. Файл решения возвращается в 1С и загружается методом ЗагрузитьРешение.

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

Рекомендация

Используйте расширение .o2s для файлов решения — оно согласовано с консольной утилитой и упрощает различение файлов модели и решения в файловой системе.

Пример

Загрузка из файла:

Решение = О2.ЗагрузитьРешение("C:\tmp\solution.o2s");

Если Решение.РешениеНайдено() Тогда
// обработка найденных значений
КонецЕсли;

Загрузка из потока:

Поток = ФайловыеПотоки.ОткрытьДляЧтения("C:\tmp\solution.o2s");
Попытка
Решение = О2.ЗагрузитьРешение(Поток);
Исключение
Поток.Закрыть();
ВызватьИсключение;
КонецПопытки;
Поток.Закрыть();

См. также