СправочникМенеджер.<Имя справочника>.НайтиПоКоду

Методы · FindByCode

Осуществляет поиск элемента по его коду.

Синтаксис

НайтиПоКоду(<Код>, <ПоискПоПолномуКоду>, <Родитель>, <Владелец>)

Примеры платформы

СтрокаКода = "840";
Валюты = Справочники.Валюты;
НайденнаяСсылка = Валюты.НайтиПоКоду(СтрокаКода);
Если НайденнаяСсылка = Валюты.ПустаяСсылка() Тогда
    Сообщить("Валюты """ + СтрокаКода + """ еще нет");
КонецЕсли;
Полное описание, параметры и ограничения

СправочникМенеджер.<Имя справочника>.НайтиПоКоду (CatalogManager.<Catalog name>.FindByCode)

СправочникМенеджер.<Имя справочника> (CatalogManager.<Catalog name>)

НайтиПоКоду (FindByCode)

Доступен, начиная с версии 8.0.

Синтаксис:
НайтиПоКоду(<Код>, <ПоискПоПолномуКоду>, <Родитель>, <Владелец>)
Параметры:

<Код> (обязательный)
Тип: Число, Строка.
Искомый код.
Строка или число в зависимости от настроек справочника в конфигураторе.

<ПоискПоПолномуКоду> (необязательный)
Тип: Булево.
Определяет режим поиска по полному коду. Истина - искомый код следует задавать в виде строки, состоящей из последовательности кодов по уровням справочника, разделенных символом "/".
Значение по умолчанию: Ложь.

<Родитель> (необязательный)
Тип: СправочникСсылка.<Имя справочника>.
Родитель, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике.

<Владелец> (необязательный)
Тип: СправочникСсылка.<Имя справочника>.
Владелец, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике.
Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>, Неопределено.
Если не существует ни одного элемента с требуемым кодом, то будет возвращена пустая ссылка.
Если для справочника код не задан (длина = 0), то будет возвращено Неопределено.
Описание:

Осуществляет поиск элемента по его коду.

Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Пример:

СтрокаКода = "840";
Валюты = Справочники.Валюты;
НайденнаяСсылка = Валюты.НайтиПоКоду(СтрокаКода);
Если НайденнаяСсылка = Валюты.ПустаяСсылка() Тогда
Сообщить("Валюты """ + СтрокаКода + """ еще нет");
КонецЕсли;

Использование в версии:

Доступен, начиная с версии 8.0.

Методическая информация

Практические примеры

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

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

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

Полный модуль собственной ОБЫЧНОЙ формы обработки, толстый клиент с обычным приложением 8.5.1.1343. Только свой вручную подготовленный FORM-85 и именованная обычная форма; здесь не запускался.

Подготовка

  1. Создайте НОВУЮ пустую файловую учебную базу, не копию рабочего каталога. В Конфигураторе задайте корню имя Учебная85. Не добавляйте эти объекты в рабочую УТ/КА2/УНФ/БП.

  2. Справочники → Добавить: имя УчебныеТовары. Длина кода 10, тип кода Строка, автонумерация и контроль уникальности включены, длина наименования 100.

  3. Для УчебныеТовары включите иерархию групп и элементов. Добавьте реквизиты Артикул (Строка, длина 20) и Цена (Число, 12 цифр, 2 дробных, неотрицательное). Проверка заполнения для этих учебных реквизитов не устанавливается.

  4. Добавьте табличную часть Штрихкоды: Штрихкод (Строка, длина 20) и Основной (Булево). Обновите конфигурацию базы данных. Модули объектов оставьте пустыми.

  5. Для этого блока УчебныеТовары не подчинён владельцу, не имеет предопределённых элементов и дополнительных обработчиков. Модули объекта/менеджера пусты, подписок и расширений нет. Иерархия групп и элементов допускает два уровня ниже корня.

  6. Точную платформу 8.5.1.1343 проверяет код. Ссылки и объекты создаются самим уроком; UUID не подменяется знакомым кодом из УТ/КА2/УНФ/БП.

  7. Свойства ссылки readonly, свойства полученного объекта могут быть записываемыми. Ссылка.Скопировать возвращает новый объект, но сам метод не записывает его в базу.

  8. Непустой UUID/ссылка не подтверждает наличие записи. Для плановой ссылки проверяется ПолучитьОбъект=Неопределено, а данные отсутствующей записи не читаются.

  9. ВерсияДанных — непрозрачная строка платформы, не число, дата, версия конфигурации или номер обновления. Урок не декодирует и не назначает её вручную.

  10. Здесь в 1С примеры не запускались. Проверены исходники и установленная справка; записи/формы в ваших базах этим заполнением не создавались.

  11. Этот отдельный урок выполняется в толстом клиенте с обычным приложением. В своём УчебныеТовары создайте ОБЫЧНУЮ форму элемента УчебныйРедакторСсылки с обычными полями кода/наименования. Её модуль пустой; не выбирайте управляемую форму.

  12. В своём справочнике вручную создайте один элемент, не группу: Код=FORM-85, Наименование=Учебная книга формы. Ничего из рабочих справочников не используйте. Этот урок его только находит и открывает, не создаёт/удаляет.

  13. У отдельной собственной обработки создайте обычную форму с командой ПоказатьУчебнуюФорму и вставьте весь модуль этого урока в модуль этой формы. Это не серверный общий модуль; ЭтаФорма — реальный владелец окна.

  14. В режиме обычного приложения запускайте именно толстый клиент. В тонкий/веб-клиент и управляемые формы этот контракт не переносится.

  15. Новый UUID окна обеспечивает новый ключ уникальности. Закрывайте открытое окно вручную без записи изменений; не сочетайте открытие интерактивной формы с удержанием транзакции предыдущих упражнений.

Процедура ПоказатьУчебнуюФорму(Команда)
    
    Если Метаданные.Справочники.Найти("УчебныеТовары") = Неопределено Тогда
        ВызватьИсключение "Сначала создайте учебный справочник по подготовке";
    КонецЕсли;
    СсылкаТовара = Справочники.УчебныеТовары.НайтиПоКоду("FORM-85");
    Если СсылкаТовара.Пустая() Тогда
        ВызватьИсключение "Сначала вручную создайте свой FORM-85 по подготовке обычной формы";
    КонецЕсли;
    Если СсылкаТовара.Наименование <> "Учебная книга формы"
        Или СсылкаТовара.ЭтоГруппа
        Или СсылкаТовара.ПометкаУдаления Тогда
        ВызватьИсключение "Найденный объект не совпал с собственным подготовленным товаром";
    КонецЕсли;
    КлючОкна = Новый УникальныйИдентификатор;
    ПолученнаяФорма = СсылкаТовара.ПолучитьФорму("УчебныйРедакторСсылки", ЭтаФорма, КлючОкна);
    Если ПолученнаяФорма = Неопределено Тогда
        Сообщить("Форма не создана: отказ не является успешным открытием");
        Возврат;
    КонецЕсли;
    ПолученнаяФорма.Открыть();
    Сообщить("Открыта обычная форма только своего подготовленного товара. Код сам ничего не записал.");
КонецПроцедуры

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

  1. Проверить точную платформу и собственный учебный справочник в модуле обычной формы.

  2. Найти только заранее вручную подготовленный FORM-85, затем проверить имя, отсутствие группы и пометки удаления.

  3. Получить именно именованную обычную форму с реальным владельцем ЭтаФорма и новым ключом уникальности.

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

  5. Открыть только полученную форму; код не записывает и не удаляет справочник и не удерживает транзакцию.

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

  1. Открыта обычная УчебныйРедакторСсылки собственного элемента FORM-85.

  2. Отсутствующий/неподходящий товар останавливает открытие; Неопределено не объявляется готовой формой.

  3. Не вызываются Записать/Удалить и не открывается форма случайной первой записи.

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

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

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

  1. Это отдельный толстоклиентский контракт обычной формы, не управляемый ОткрытьФорму.

  2. ПолучитьФорму сам по себе ещё не Открыть; сначала проверяется результат.

  3. Именованная форма и реальный товар подготовлены заранее; код не выдумывает отсутствующие метаданные.

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

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

Найти товар по коду и правильно проверить пустую ссылку

Менеджер справочника возвращает ссылку. При отсутствии товара это пустая ссылка, а не Неопределено.

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

Модуль управляемой формы внешней обработки в учебной копии УТ 11 FAVORIT, КА2 Progress или УНФ. Проверена структура XML; запуск в 1С не проверялся.

Подготовка

  1. Используйте копию УТ 11 FAVORIT, КА2 Progress или УНФ. В их выгрузках проверен иерархический справочник Номенклатура: длина кода 11, наименования 100.

  2. Проверенные XML: C:\claude\UT_11\FAVORIT\XLM_UT_11\Catalogs\Номенклатура.xml; C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS\Catalogs\Номенклатура.xml; C:\claude\UNF\UNF_XML\Catalogs\Номенклатура.xml.

  3. Создайте внешнюю обработку с управляемой формой; добавьте указанную команду, кнопку и клиентский обработчик.

  4. Клиентскую процедуру и серверную функцию вставьте отдельно на уровне модуля формы. Доступ к справочнику должен быть разрешён правами пользователя.

  5. Команда формы НайтиТовар. Замените строку 00000000001 на точный код товара из вашей учебной копии.

&НаКлиенте
Процедура НайтиТовар(Команда)
    Код = "00000000001";
    Сообщить(НайтиТоварНаСервере(Код));
КонецПроцедуры

&НаСервереБезКонтекста
Функция НайтиТоварНаСервере(Код)
    Ссылка = Справочники.Номенклатура.НайтиПоКоду(Код);
    Если Ссылка.Пустая() Тогда
        Возврат "Товар с таким кодом не найден";
    КонецЕсли;
    Возврат Строка(Ссылка);
КонецФункции

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

  1. Передаём строковый код на сервер, не преобразуя его в число и сохраняя ведущие нули.

  2. Справочники.Номенклатура — менеджер конкретного справочника; НайтиПоКоду возвращает ссылку.

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

  4. Возвращаем представление найденного товара, не получая и не записывая его объект.

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

  1. Для существующего кода возвращается представление товара.

  2. Для заведомо отсутствующего кода возвращается Товар с таким кодом не найден.

  3. После выполнения состав и данные справочника остаются прежними.

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

Представление найденного товара либо понятное сообщение, что код отсутствует.

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

  1. Не проверяйте результат НайтиПоКоду сравнением с Неопределено.

  2. В справочниках с неуникальными кодами поиск требует учёта владельца и других условий.

  3. Ссылка и объект различаются: ПолучитьОбъект нужен для работы с объектом, но не для этого чтения.

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

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

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

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

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