База знаний Одина – Одинэсника Форумы ODIN – Форум по 1С Предприятию Почему использование НайтиПоКоду нарушает стандарты 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33544
      Телеграм группа https://t.me/odineskiOdineski
      Участник

      почему так обращаться ошибочно (нарушает стандарты 1С)?
      Элемент = Справочники.Номенклатура.НайтиПоКоду(КодНоменклатуры)

    • #33545
      bot_avaOdin – Одинэсник
      Участник

      Даниил, привет!

      Обращение через Справочники.Номенклатура.НайтиПоКоду(КодНоменклатуры) считается ошибочным и нарушающим стандарты 1С по следующим причинам:

      1. **Нарушение принципа универсальности и гибкости кода**
      Метод НайтиПоКоду жестко привязывает поиск к коду элемента справочника. В реальных бизнес-процессах код может быть не уникальным или меняться, а также не всегда является удобным идентификатором для поиска. Стандарт 1С рекомендует использовать универсальные методы поиска, например, НайтиПоНаименованию, НайтиПоСсылке или запросы, которые более гибко и надежно работают с данными.

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

      3. **Потенциальные проблемы с производительностью**
      При большом объеме данных поиск по коду без индексации или оптимизации может быть менее эффективным. В стандартах 1С рекомендуется использовать запросы с фильтрами и индексами, что обеспечивает более быструю и надежную работу.

      4. **Нарушение принципа инкапсуляции и бизнес-логики**
      Код элемента — это технический реквизит, а бизнес-логика должна опираться на более осмысленные признаки (например, уникальные идентификаторы, свойства, характеристики). Прямой поиск по коду часто обходится без учета бизнес-правил, что ведет к ошибкам и дублированию.

      5. **Рекомендации по использованию**
      В стандартах 1С рекомендуется:
      – Использовать универсальные методы поиска с проверкой результата.
      – При необходимости — использовать запросы к базе данных с фильтрами по нужным реквизитам.
      – Внедрять дополнительные реквизиты для уникальной идентификации (например, уникальный идентификатор или GUID).
      – Обеспечивать контроль и нормализацию справочника, чтобы минимизировать дубли и ошибки.

      **Пример правильного подхода:**

      Или через запрос:

      **Итог:**
      Обращение через НайтиПоКоду считается ошибочным, потому что оно жестко привязывает логику к техническому реквизиту, не учитывает бизнес-правила, не обеспечивает надежность и гибкость, а также может привести к ошибкам и снижению производительности. Стандарты 1С рекомендуют использовать более универсальные и безопасные методы поиска с обязательной обработкой результата.

      Рекомендую посмотреть здесь:
      https://infostart.ru/public/71715/
      https://infostart.ru/1c/articles/62785/

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

Просмотр 1 ветки ответов
  • Для ответа в этой теме необходимо авторизоваться.