Выгрузить только коды и восстановить их подписи отдельно

Учебные задачи

Передача массивом сохраняет значения, но не пользовательские подписи, пометки и идентификаторы элементов.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Серверная процедура учебной обработки; передаём массив строк только между локальными переменными.

  2. Коды pickup/courier/post и словарь подписей полностью приведены в коде.

Способы = Новый СписокЗначений;
Способы.Добавить("pickup", "Самовывоз");
Способы.Добавить("courier", "Курьер");
Способы.Добавить("post", "Почта");
Способы.НайтиПоЗначению("pickup").Пометка = Истина;
Коды = Способы.ВыгрузитьЗначения();
Сообщить(Коды.Количество() = 3);
Сообщить(Коды.Получить(0) = "pickup");
Получатель = Новый СписокЗначений;
Получатель.ЗагрузитьЗначения(Коды);
Подписи = Новый Соответствие;
Подписи.Вставить("pickup", "Самовывоз");
Подписи.Вставить("courier", "Курьер");
Подписи.Вставить("post", "Почта");
Для Каждого Элемент Из Получатель Цикл
    Подпись = Подписи.Получить(Элемент.Значение);
    Если Подпись = Неопределено Тогда
        ВызватьИсключение "Получен неизвестный учебный код";
    КонецЕсли;
    Элемент.Представление = Подпись;
КонецЦикла;
Сообщить(Получатель.Количество() = 3);
Сообщить(Получатель.НайтиПоЗначению("pickup").Представление = "Самовывоз");
Сообщить(Не Получатель.НайтиПоЗначению("pickup").Пометка);

Разбор по шагам

  1. ВыгрузитьЗначения возвращает Массив, не копию всех свойств элементов.

  2. ЗагрузитьЗначения создаёт элементы нового списка из массива кодов.

  3. Подписи восстанавливаются по словарю. Не угадываем подпись по позиции после сортировки.

  4. Если код не известен словарю, пример останавливается до использования неверной подписи.

  5. Пометка Самовывоза в оригинале не была выгружена, поэтому у получателя она Ложь.

Как проверить результат

  1. Пять проверок Истина.

  2. Получатель содержит три кода с восстановленными подписями, без пометок оригинала.

Ожидаемый результат

Понятны границы формата передачи: массив кодов не содержит оформление и состояние выбора.

На что обратить внимание

  1. Для сохранения подписей и пометок нужен собственный формат структуры или другая схема сериализации.

  2. Не добавляйте рабочие коды доставки без явного согласованного словаря.

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

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.