Вставить и найти результат по ключу, не по подписи

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

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

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

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

Подготовка

  1. Используйте отдельную учебную базу. В серверном общем модуле УчебныеЗадачи создайте процедуру ВыполнитьПример() Экспорт и вставьте в неё код одного урока. Вызовите её из серверного обработчика собственной учебной обработки.

  2. Каждый урок создаёт новую коллекцию в памяти. Код не загружает и не сохраняет избранное пользователя, не заменяет план ГлобальныйПоиск, не запускает поиск, не открывает ссылку и не читает рабочие документы.

  3. Для трёх уроков избранного создайте в собственной учебной конфигурации два пустых справочника УчебныеКниги и УчебныеАвторы. Учебные ссылки относятся к спискам этих объектов; записи справочников для упражнения не нужны. Право СохранениеДанныхПользователя требуется для использования избранного по справке платформы.

Результаты = Новый РезультатГлобальногоПоиска;
Результаты.Добавить("guide-pen", "Ручка", Новый Картинка, "УчебныеКниги", "Количество 1");
Результаты.Вставить(0, "guide-book", "Книга", Новый Картинка, "УчебныеКниги", "Количество 3");
Найдено = Результаты.Найти("guide-book");
Если Найдено = Неопределено Тогда
    ВызватьИсключение "Учебная книга не найдена";
КонецЕсли;
Сообщить(Результаты.Индекс(Найдено) = 0);
Сообщить(Результаты.Количество() = 2);
Сообщить(Результаты.Получить(1).Значение = "guide-pen");
Найдено.Описание = "Учебная книга: остаток 3, цена не задана";
Сообщить(Результаты.Получить(0).Описание = "Учебная книга: остаток 3, цена не задана");
Сообщить(Результаты.Найти("Книга") = Неопределено);
Сообщить(Результаты.Найти("guide-missing") = Неопределено);

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

  1. Используем вариант Добавить/Вставить по параметрам, не конструктор отдельной карточки. Вставка в 0 сохраняет Ручку и сдвигает её в 1.

  2. Найти ищет Значение, поэтому guide-book находится, а представление Книга — нет. После Неопределено нельзя читать свойства найденного объекта.

  3. Индекс и Получить применяются к уже проверенной собственной коллекции. Сохранённый ключ устойчивее числовой позиции при перестановках.

  4. Изменяем описание найденной карточки; повторное получение показывает новое описание этой карточки в коллекции. Не изменяем справочник или цену реального товара.

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

  1. Шесть контрольных Истина, включая два отрицательных поиска.

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

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

Разобран поиск по собственному ключу, вставка и изменение объекта результата в памяти.

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

  1. Не используйте читаемую подпись как гарантированно уникальный ключ.

  2. Отсутствие результата — нормальное Неопределено, а не повод подставить первый попавшийся элемент.

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

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

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

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

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