Имя: Пароль:
1C
1С v8
Глюк. у кого - не знаю. :-(
0 Shalun
 
23.07.20
14:36
Ребят, всем привет! Может кто сталкивался с такой херней!
Для полного понимания приведу код:

Функция ПолучитьЭлемент(Значение)
     Код = "00-"+Значение;
     Элемент = Справочники.номенклатура.найтиПоКоду(КОД, Истина);
     Если ЗначениеЗаполнено(Элемент) Тогда
          Возврат Элемент;
     Иначе
          Элемент = Справочники.Номенклатура.СоздатьОбъект();
          Элемент.Код = Код;
          Элемент.Записать();
     КонецЕсли;
     Возврат Элемент.Ссылка;
КонецФункции

Как видно, функция проверяет наличии в справочнике "Номенклатура" элемента с Каким либо кодом и возвращает ссылку на объект. Если элемент с данным кодом не задан, то создается новый элемент с требуемым кодом.
Вроде все просто и понятно но вот беда...  Выборка не находит элемента, а когда записываем новый элемент - ругается что такой элемент уже есть. :-(Значение Код идентично и по типу, и по длине и по значению. собственно это видно из кода.
Вот и не пойму, я че то накосячил - или программа глючит? Платформа 8.3.17.1549
1 trad
 
23.07.20
14:48
(0) ошибка тут -> , Истина);
2 trad
 
23.07.20
14:51
Ты ищешь по полному коду 00-1234 и не находишь
А новый создать не можешь потому, что где то есть элемент с полным кодом 000001/000002/00-1234
3 Fragster
 
гуру
23.07.20
14:52
СправочникМенеджер.<Имя справочника> (CatalogManager.<Catalog name>)
НайтиПоКоду (FindByCode)
Синтаксис:
НайтиПоКоду(<Код>, <ПоискПоПолномуКоду>, <Родитель>, <Владелец>)
Параметры:
<Код> (обязательный)
Тип: Число, Строка.
Искомый код.
Строка или число в зависимости от настроек справочника в конфигураторе.
<ПоискПоПолномуКоду> (необязательный)
Тип: Булево.
Определяет режим поиска по полному коду. Истина - искомый код следует задавать в виде строки, состоящей из последовательности кодов по уровням справочника, разделенных символом "/".
Значение по умолчанию: Ложь.
<Родитель> (необязательный)
Тип: СправочникСсылка.<Имя справочника>.
Родитель, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике.
<Владелец> (необязательный)
Тип: СправочникСсылка.<Имя справочника>.
Владелец, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике.
Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>, Неопределено.
Если не существует ни одного элемента с требуемым кодом, то будет возвращена пустая ссылка.
Если для справочника код не задан (длина = 0), то будет возвращено Неопределено.
Описание:
Осуществляет поиск элемента по его коду.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер).
Пример:
СтрокаКода = "840";
Валюты = Справочники.Валюты;
НайденнаяСсылка = Валюты.НайтиПоКоду(СтрокаКода);
Если НайденнаяСсылка = Валюты.ПустаяСсылка() Тогда
    Сообщить("Валюты """ + СтрокаКода + """ еще нет");
КонецЕсли;
Использование в версии:
Доступен, начиная с версии 8.0.
     Методическая информация
4 Fragster
 
гуру
23.07.20
14:53
Определяет режим поиска по полному коду. Истина - искомый код следует задавать в виде строки, состоящей из последовательности кодов по уровням справочника, разделенных символом "/".
5 Shalun
 
23.07.20
15:02
Да, мне нужно по точному совпадению искать, по этому Истина. Т.к может быть 00-123456 а может быть 01-123456.
Тип значения строка, 9 символов.
Вот только не понял на счет полного кода... Т.е. если элемент с кодом 00-123456 является подчиненным элементу 02-123456 то код нужно писать как 02-123456/00-123456? И так по всей иерархии?
6 lodger
 
23.07.20
15:15
(5) так это не ПоискПоНаименованию. это ПоискПоКоду. у них разные смыслы для флажка.
7 Shalun
 
23.07.20
15:53
Ясно. Спасибо, просветили!