S-WEBS24

Битрикс24

CRM, процессы и приложения для вашей компании

Вернуться к списку Вернуться к статьям
Статьи

Как добавить новый раздел в конфигуратор и провести его через корзину и письма

Новый раздел конфигуратора нужно проводить через всю цепочку данных: выбор, сводку, корзину и письмо. Добавленного пункта на экране недостаточно. У раздела должны быть устойчивый ключ, правила выбора и единое представление выбранного состава. Сворачивание длинного списка меняет видимость, но не должно удалять выбранные значения или исключать их из отправляемого снимка.

Один выбор проходит через все представления
Учебная цепочка нового программного раздела, без реальных лицензий и коммерческих условий.
Новый раздел проходит через весь снимок Учебный сетевой модуль A добавляется в новый раздел конфигуратора. Выбранный ключ сохраняется в сводке, корзине и письме.

Исходное требование относится к новому программному разделу и его отображению в нескольких местах. Оно не подтверждает конкретные лицензии, цены или готовый механизм совместимости. Ниже разобран учебный раздел с условными пунктами А/Б. Реальные продукты, коммерческие условия и клиентские конфигурации не используются.

Начать с данных раздела

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

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

Для программного раздела отдельно уточните, что входит в понятие выбранного пункта. Это может быть вариант продукта, срок или другой параметр, но статья не должна придумывать их за каталог. Сохраняйте только согласованные структурированные данные. Не выводите пользователю случайный внутренний код вместо понятной подписи, даже если он удобен разработчику.

ДанныеДля чего нужны
Ключ разделаУстойчивая связь во всех представлениях
Ключ пунктаВосстановление выбранного значения
Короткое названиеКомпактная сводка
Полное названиеПодробный просмотр и письмо
Количество и параметрыТочный состав по правилам раздела

Определить правила выбора

Запишите, обязателен ли раздел и допустим ли пустой выбор. Если пользователь может отказаться от всех пунктов, отсутствие значения должно быть корректным состоянием. Если выбор обязателен, интерфейс и сервер должны одинаково проверять условие. Нельзя скрывать ошибку в письме после того, как корзина уже приняла неполную конфигурацию.

Совместимость с другими разделами проверяется отдельно. Новый программный пункт может быть допустим только для определённой модели, но это правило должно происходить из требований каталога. Не закладывайте догадку в клиентский фильтр без серверной проверки. Посетитель способен восстановить старый черновик или отправить запрос, минуя текущую видимую форму.

Проверьте изменение зависимого выбора. Если смена модели делает пункт недоступным, нужно решить, сбрасывается ли он с объяснением или блокируется переход до исправления. Молчаливое удаление из итогового письма опасно: человек видел выбор, а получатель увидит другой состав. Переход состояния должен быть заметным и согласованным.

Включить раздел в общую модель конфигурации

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

Проверьте существующие универсальные преобразования. Они могут перечислять разрешённые разделы жёстко и игнорировать неизвестный ключ. Тогда добавление данных в одно место не поможет. Найдите все границы передачи: состояние интерфейса, запрос, серверная проверка, запись корзины и шаблон документа. Это законченный пользовательский сценарий, а не набор независимых визуальных правок.

Не копируйте код соседнего раздела без разбора семантики. У него могут быть особые ограничения количества или иной способ хранения. Повторное использование полезно там, где совпадает поведение. Если новый раздел отличается, выразите разницу явно. Скрытое условие по названию продукта быстро станет ломким после редакторского переименования.

Сводка должна показывать тот же выбор

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

Проверьте состояние после изменения количества и удаления. Сводка должна обновляться из текущих данных, а не дописывать новую строку поверх старой. Повторное нажатие на выбранный пункт не должно создавать дубликат, если модель предполагает единственный выбор. Если несколько экземпляров допустимы, они должны отображаться через согласованное количество.

Порядок разделов тоже задаётся явно. Новый блок не должен случайно оказаться после технических служебных данных только потому, что был добавлен последним в объект. Согласуйте порядок в выборе и сводке, а затем проверьте корзину и письмо. Разный порядок допустим по назначению, но он не должен затруднять сверку состава.

Корзина принимает структуру, а не только подпись

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

Проверьте повторное открытие корзины и возврат в конфигуратор. Новый раздел должен восстановиться в той же модели, которая его создала. Если корзина хранит только старый набор разделов, пункт исчезнет при первом редактировании. Учебная последовательность «выбрать → добавить → открыть → изменить → сохранить» показывает эту проблему лучше одиночного добавления.

Определите поведение при изменении каталога. Сохранённый пункт может стать недоступным. Не подменяйте его похожим автоматически без уведомления. Покажите ограничение и разрешённый способ обновить состав. Это отдельный случай от пустого выбора и должен быть проверен, особенно если конфигурации живут дольше одного визита.

Письмо строить из проверенного снимка

Письмо должно получать тот состав, который принят сервером, а не читать заново случайное состояние браузера. Новый раздел включается в общий снимок с понятным названием и параметрами. Если шаблон письма перечисляет только старые ключи, данные будут сохранены в корзине, но не попадут адресату. Проверьте фактический сформированный документ.

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

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

Для учебной проверки достаточно локального HTML письма или разрешённого тестового канала. Не отправляйте реальные сообщения клиентам ради иллюстрации. Сравните выбранный пункт, количество, полное название и порядок. Если письмо имеет текстовую и HTML-версию, проверьте обе: добавление в один шаблон не гарантирует наличие в другом.

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

Свернуть длинный список без потери состояния

Сворачивание относится к видимости списка, а выбор хранится отдельно. Нельзя удалять выбранные элементы из состояния при скрытии нижней части. После раскрытия человек должен увидеть те же отметки. Если список пересоздаётся, проверьте связь контролов с текущими данными и доступность подписей. Порядок элементов не должен менять идентичность выбора.

Нативный details может служить одним из вариантов раскрытия дополнительного содержания; его поведение описано на MDN. Но это не обязательная реализация для любого конфигуратора. Выбирайте компонент по структуре интерфейса и требованиям доступности. Важно, чтобы кнопка раскрытия сообщала состояние и управлялась клавиатурой, а не была просто кликабельным текстом без роли.

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

Сохранить старые конфигурации

Ранее сохранённые данные не содержат нового раздела. Определите, означает ли его отсутствие пустой выбор или необходимость обновления. Не присваивайте всем старым конфигурациям первый пункт автоматически. Это изменит состав без действия пользователя. Совместимость старого формата должна быть явной частью перехода.

Проверьте восстановление старого снимка на новом интерфейсе и повторное сохранение без изменения остальных разделов. Новый ключ не должен очищать соседние значения или менять их порядок. Если требуется миграция, описывайте её как отдельное действие с проверкой, а не скрывайте в функции отображения. В публичной статье используется синтетический старый снимок.

Пустой новый раздел в письме можно скрыть или показать по согласованному правилу. Важно не оставлять пустые заголовки и не создавать ложную строку «не выбрано», если это воспринимается как ошибка. Текст должен отражать реальный статус: добровольное отсутствие, недоступность или незавершённый обязательный выбор.

Проверить весь путь на нескольких наборах

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

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

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

Передать карту изменений

В технической заметке перечислите модель нового раздела и все точки преобразования: интерфейс, сводка, запрос, серверная проверка, корзина и письмо. Для каждой укажите проверенный сценарий. Это позволяет следующему разработчику добавить похожий раздел без поиска скрытого списка разрешённых ключей по всему проекту.

Выберите учебный пункт нового раздела и сравните его ключ, количество и название в четырёх представлениях: выборе, сводке, корзине и сформированном письме. Затем повторите путь с пунктом из скрытой части списка. Сворачивание не должно менять состав передаваемого снимка. При отказе формирования письма выбор сохраняется для исправления; успешная корзина не подтверждает содержимое ещё не проверенного документа.

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

Связанный разбор: Разработка интернет-магазина с конфигуратором товара.

Документация и источники

  • MDN: HTML details: Пример доступного раскрытия дополнительного содержания; не обязательная реализация исходного проекта