1с метод найти по коду
Справочник
Метод НайтиПоКоду()
Ищет элемент справочника по коду \ полному коду
Синтаксис
Метод НайтиПоКоду() имеет следующий синтаксис:
А также альтернативный англоязычный синтаксис:
Параметры
Описание параметров метода НайтиПоКоду() :
Имя параметра | Тип | Описание | ||||||
---|---|---|---|---|---|---|---|---|
Код | Строка,Число | числовой или строковый код справочника (выполняется попытка неявного преобразования к нужному типу) | ||||||
Режим | Число | режим поиска
| ||||||
Жирным шрифтом выделены обязательные параметры |
Возвращаемое значение
1 | — элемент справочника найден |
0 | — в противном случае |
Описание
Метод НайтиПоКоду() выполняет поиск элемента справочника по его коду. Поскольку, данный метод является позиционирующим (см. описание метода Выбран()), его можно использовать только для объектов, созданных функцией СоздатьОбъект(). При подборе значений фактических параметров метода следует руководствоваться настройками, указанными для справочника в конфигурации:
Пример использования
Пример кода с использованием метода НайтиПоКоду() :
Получение элемента справочника по коду
Большинство значений субконто при формировании проводок заполняются значениями элементов справочников (контрагентов, материалов и т. д.) Обычно значения элементов справочников выбираются при вводе документа, однако в некоторых случаях возникает необходимость использовать в алгоритмах формирования проводок конкретные элементы справочников, то есть элементы, имеющие определенный код.
В качестве примера рассмотрим алгоритм формирования проводок документом «Списание материалов», создание которого приводится в книге «Введение в конфигурирование 1С Бухгалтерии 7.7»
В этом документе, оформляющем отпуск материалов для вспомогательного производства, формируются проводки по счету 23, на котором ведется аналитический учет в разрезе затрат вспомогательного производства Список затрат вспомогательного производства представляет собой справочник «Затраты»
Приведем фрагмент алгоритма проведения:
В выделенной шрифтом строке алгоритма субконто дебета формируемой проводки заполняется значением реквизита «Затраты» документа «Списание материалов»
Однако может возникнуть ситуация, когда в алгоритме потребуется вместо значения реквизита документа использовать значение заданного элемента справочника. Например, пусть вместо реквизита «Затраты» документа мы всегда будем использовать элемент справочника «Затраты» с кодом «2» То есть в справочнике «Затраты» мы должны найти элемент с кодом «2», получить его значение и присвоить это значение субконто дебета формируемой проводки.
При решении поставленной задачи мы рассмотрим отдельные приемы работы со справочниками, которые используются в алгоритмах документов, а также отчетов и обработок
Для выполнения действий со справочником нам потребуется специальная переменная, мы создадим ее с помощью функции «СоздатьОбъект»
Эта строка должна располагаться выше строк формирования проводок:
Создав объект, имеющий тип обрабатываемого справочника, мы можем приступить к поиску требуемого элемента справочника
Метод «НайтиПоКоду» осуществляет только поиск объекта с указанным кодом. Для получения значения найденного элемента справочника после метода «НайтиПоКоду» обязательно нужно вызвать метод «ТекущийЭлемент».
Полученное значение справочника мы присваиваем субконто дебета проводки
Итак, мы показали, как значению субконто проводки присвоить значение элемента справочника с заданным кодом.
Однако хотелось бы также обратить ваше внимание на то, что не всегда в обрабатываемом справочнике может оказаться элемент с указанным кодом, в этом случае при формировании значения субконто проводки может возникнуть ошибка. Покажем, как эту ситуацию следует корректно обработать.
Спр=СоздатьОбъект(«Справочник.Затраты»); Если Спр.НайтиПоКоду(«2»)=1 Тогда Операция.НоваяПроводка(); Операция.Дебет.Счет=СчетПоКоду(«23»); Операция.Дебет.Затраты=Спр.ТекущийЭлемент(); Операция.Кредит.Счет=СчетПоКоду(«10.1»); Операция.Кредит.Материалы=Материалы; Операция.Кредит.МестаХранения=МестаХранения; Операция.Количество=Количество; Операция.Сумма=Сумма; Иначе Сообщить(«Искомый элемент не найден!»); КонецЕсли;
Поиск номенклатуры по коду
Розница 2.2 серверная
Делаю внешнюю обработку.
При программном заполнении Отчета о розничных продажах товар не находится по Коду номенклатуры.
НО документ заполняется в Файловом варианте базы.
В серверной базе отладчиком не получается остановиться.
Подскажите, пожалуйста, в чем может быть причина?
(8)сделал вывод «Номенклатура \ Код номенклатуры»
в самом документе в ТЧ если вручную вбить код, то выводится для выбора только одна номенклатура
есть файлик, в котором есть коды номенклатуры, например, 12345.
но в базе код номенклатуры 12 345 с пробелом
в другой части кода при чтении файлика:
Код преобразуется так:
Код = Строка(Число(Спис[7]));
в файловой базе так все нормально заполняется, а в серверной нет.
прикрепил всю обработку.
(13)сообщил «12 345:Строка»
т.е. заполнено 6 символов из 11. бывает другое количество?
(19)вынес поиск номенклатуры в отдельную функцию на Сервере:
получаю код как строку: Код = Строка(Число(Спис[7])); и передаю в функцию.
сначала ищу как получилось с символом Триад.
потом символ Триад меняю на пробел у тех позиций, у которых номер не понятно как заводили.
В серверном варианте необходимо включить отладку на сервере, чтобы отладчик работал.
-debug в строке запуска сервера 1С
У вас нет четкого понимания, какие процедуры можно выполнять на клиенте, а какие только на сервере.
желательно у каждой процедуры иметь четкое указание, где она будет выполняться, тогда вам же будет проще видеть что не так.
работать со справочниками можно только на сервере.
У вас поиск идет как раз в справочнике, а процедура пытается выполниться на клиенте.
что как-то тут все запутано =)
из всех возможных проблем с поиском кодов Справочники.Номенклатура.НайтиПоКоду(Товар.Код) можно перечислить :
1. пробелы между символами кода лечится функцией СтрЗаменить() или Формат()
2. разная длина кодов как писал starjevschik добавь нули =) Прав(«00000000″+ КОД, ДлинаКода)
З.Ы, отладка в помощь
1. нужно создать функцию на сервере которая будет искать элемент по коду и возвращать ссылку
2.На клиенте обратиться к ней и дальше уже ваши послед дейтсвия
не все выражения срабатывают в упр формах так в лоб как в обычном приложении. в правке посмотрите где можно использовать данную функцию :
сервер, толстый клиент.
СправочникМенеджер. (CatalogManager. )
НайтиПоКоду (FindByCode)
Синтаксис:
Тип: Число; Строка.
Искомый код.
Строка или число в зависимости от настроек справочника в конфигураторе.
(необязательный)
Тип: СправочникСсылка.
Родитель, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике.
(необязательный)
Тип: СправочникСсылка.
Владелец, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике.
Возвращаемое значение:
Тип: СправочникСсылка. ; Неопределено.
Если не существует ни одного элемента с требуемым кодом, то будет возвращена пустая ссылка.
Если для справочника код не задан (длина = 0), то будет возвращено Неопределено.
Описание:
Осуществляет поиск элемента по его коду.
Сервер, толстый клиент, внешнее соединение.
Программная работа со справочниками
Справочники в 1С — это объекты конфигурации, предназначенные для хранения данных, имеющих одинаковую структуру и носящие списочный характер. Например, в справочниках может храниться: перечень номенклатуры, контрагентов, сотрудников, банковских счетов и т.д. В статье рассматриваются базовые принципы работы с этим объектом метаданных.
Создание элемента справочника
Создание новой группы:
Создание нового элемента:
Поиск элементов справочника
Для поиска элементов справочников в языке программирования 1С предусмотрено несколько методов:
Во всех методах если поиск успешный, то будет возвращена ссылка на найденный элемент.
Изменение элементов справочника
Для изменения реквизитов справочника необходимо выполнить следующие действия:
Программное изменение справочника возможно только на стороне сервера.
Например, на форму обработки выведен реквизит Номенклатура типа СправочникСсылка.Номенклатура. Вот пример кода, изменяющего наименование выбранной пользователем номенклатуры:
Удаление элементов справочника
Элементы справочника могут быть помечены на удаление и удалены из базы непосредственно.
Пометку на удаление можно установить/снять двумя разными способами:
Пример непосредственного удаления элемента справочника:
Обход элементов справочника
Для обхода элементов справочника в языке программирования 1С предусмотрено два метода:
Методы отличаются порядком следования отобранных элементов: при иерархической выборке для каждого элемента сначала выбираются элементы, для которых он является родителем, а затем уже выбираются элементы следующего уровня.
Рассмотрим примеры обхода элементов справочника:
Выбор элементов справочника запросом
Простой пример поиска и вывода товаров со стоимостью больше 1000:
Открытие форм справочника
Для открытия любых форм справочников рекомендуется использовать метод
Для открытия формы элемента или группы справочника также возможно использовать более простой метод
Кроме методов ОткрытьФорму () и ПоказатьЗначение () есть и другие (ОткрытьФормуМодально, ОткрытьЗначение, ПолучитьФорму), но их использование не рекомендуется, т.к. часть этих методов использует режим модального открытия, часть противоречит свежим рекомендациям фирмы 1С.
Приведем примеры программного открытия форм справочника:
Внимание!
Следует понимать, что интерактивная работа (в том числе открытие форм) в 1С возможна только на стороне клиента. В то же время поиск и изменение данных возможны только на стороне сервера.
Остались вопросы?
Спросите в комментариях к статье.
Программная работа со справочниками в 1С 8.3
Программно можно создавать новые элементы, изменять существующие, удалять, искать элементы по коду, наименованию, реквизитам и т.п. Но нельзя программно добавить новый справочник в конфигурацию. Это выполняется только интерактивно в дереве метаданных.
СправочникиМенеджер
Объект СправочникиМенеджер предназначен для управления всеми справочниками конфигурации. Через цикл можно получить доступ к менеджеру каждого справочника:
Также можно обратиться к менеджеру справочника через точку или через квадратные скобки:
Также через СправочникиМенеджер можно проверить является ли ссылка справочником:
Программное создание элемента справочника
Для программного создания элементов есть метод СоздатьЭлемент. Для программного создания групп — метод СоздатьГруппу:
Программное изменение элементов справочника
Для того чтобы изменить реквизиты уже существующего элемента справочника нужно через ссылку получить объект методом ПолучитьОбъект, через объект изменить значения реквизитов и записать измененный объект в базу данных:
Программное копирование элемента справочника
Методом Скопировать можно создать копию элемента справочника. Данный метод можно вызывать как у ссылки, так и у объекта:
Программное удаление элемента справочника
Для удаления применяются два метода: УстановитьПометкуУдаления и Удалить. Метод УстановитьПометкуУдаления только установит пометку на удаление, сам элемент не будет удален из базы данных. Метод Удалить удалит элемент из базы данных без проверки ссылочной целостности. То есть, если на этот элемент были ссылки в других местах, то теперь вместо ссылки будет надпись «Объект не найден». Не рекомендуется пользоваться методом Удалить. Важно отметить, что вызов метода УстановитьПометкуУдаления вызывает запись объекта. Дополнительно записывать объект не нужно.