что возвращается при ПоискеПоНаименованию

1. Chester_forever@mail.ru 31.03.23 19:09 Сейчас в теме
из процедуры вызываю функцию поиска по наименованию, для того, что бы убедиться что в базе есть вся номенклатура которая есть в файле, но в этой функции выполняется только второе условие ( ответ всегда получаю "222222 найдено " и даже если не найдено, то всеравно выполняется только второе условие, просто без наименования "НайденнаяНоменклатура" )

Из СП: Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка. Но я так понимаю возвращается неизвестно что? Или тут в другом проблема ?
&НаСервере
процедура ЗагрузкаИзФайла()
.....
ТБ = Объект.ТаблицаФайла.Добавить();
ТБ.НоменклатураИзФайла = Выборка.Fields(1).Value;
ТБ.НоменклатураВ1С=ПроверитьСуществованиеНоменклатуры(Тб.НоменклатураИзФайла,ТБ.номерСтроки);
....

КонецПроцедуры

&НаСервере
Функция ПроверитьСуществованиеНоменклатуры(номенклатура,номерСтроки);
НайденнаяНоменклатура = Справочники.Номенклатура.ПустаяСсылка();
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура,объект.ТочностьПоискаНаименования);
Если НайденнаяНоменклатура = справочники.Номенклатура.ПустаяСсылка() 
                           Тогда 		
		                                Сообщение = Новый СообщениеПользователю;
						Сообщение.Текст = "11111111 НЕНАЙДЕНО "+НайденнаяНоменклатура+". Строка Номер "+ НомерСтроки;
						Сообщение.Сообщить();
		            иначе		
						Сообщение = Новый СообщениеПользователю;
						Сообщение.Текст = "222222 НАЙДЕНО " +НайденнаяНоменклатура+". Строка Номер "+ НомерСтроки;
						Сообщение.Сообщить();
                          КонецЕсли;
возврат НайденнаяНоменклатура.ссылка;
КонецФункции
Показать


Причем если это условие написать в процедуре то все работает нормально.
Вознаграждение за ответ
Показать полностью
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 31.03.23 19:35 Сейчас в теме
(1) что отладчик показывает?
7. spacecraft 31.03.23 21:02 Сейчас в теме
(1)
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура,объект.ТочностьПоискаНаименования);

Короче, если в Номенклатура будет пустая строка и объект.ТочностьПоискаНаименовани равен Ложь, тогда будет найден первый попавшийся элемент. Соответственно условие Если НайденнаяНоменклатура = справочники.Номенклатура.ПустаяСсылка() никогда не будет выполнено.
8. Chester_forever@mail.ru 31.03.23 23:27 Сейчас в теме
(7) логично! Но "Номенклатура" всегда есть, всегда не пустая строка, ее берем из файла и она ТОЧНО не нулевая. в объект.ТаблицаФайла она появляется, а мы пытаемся найти в нашей базе 1с точно такую же (что бы сопоставить)

Повторюсь, если это условие написать в самой процедуре, после
ТБ.НоменклатураВ1С=ПроверитьСуществованиеНоменклатуры(Тб.НоменклатураИзФайла,ТБ.номерСтроки);

то все отрабатывает как надо.


(2) все действия на сервере происходят, на нем отключен отладчик и к сожалению включить не получится, поэтому и спрашиваю здесь..
14. spacecraft 01.04.23 14:21 Сейчас в теме
(8) попробуйте переименовать переменную Номенклатура.
11. spacecraft 01.04.23 02:13 Сейчас в теме
(8)
Но "Номенклатура" всегда есть, всегда не пустая строка

(1)
и даже если не найдено, то всеравно выполняется только второе условие, просто без наименования "НайденнаяНоменклатура" )

"просто без наименования" говорит о том, что нет значения. Как раз вариант с пустой строкой.
А есть вариант когда найдено и заполненное наименование "НайденнаяНоменклатура"?
18. dehro 5 02.04.23 11:10 Сейчас в теме
НайденнаяНоменклатура = Справочники.Номенклатура.ПустаяСсылка();
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура,объект.ТочностьПоискаНаименования);


Смысл первой строки кода неясен. Зачем что-то присваивать, если следующей командой всё равно переопределится значение?

(1)
...Причем если это условие написать в процедуре то все работает нормально


На форме нет реквизита "Номенклатура"? Или глобальной переменной в модуле?
3. Chester_forever@mail.ru 31.03.23 19:56 Сейчас в теме
в случае поиска по не полному соответствию все тоже самое..
в случае если условие "неопределено", то ответ всегда получаю 111111 НеНайдено на любуюу ( даже на найденную номенклатуру)

Хорошо, в каком случае будет возвращена пустая ссылка ?

я так понимаю "Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию," - это когда НайтиПоНаименованию ("",истина");
4. spacecraft 31.03.23 20:05 Сейчас в теме
(3)
я так понимаю "Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию," - это когда НайтиПоНаименованию ("",истина");

Нет. Это когда у самого справочника отключено Наименование.

Что показывает отладчик в момент выполнения условия? Что содержится в НайденнаяНоменклатура?
6. karamazoff 94 31.03.23 20:44 Сейчас в теме
(4)это в какой такой конфе у справочника Номенклатура отключено Наименование? Думаете он знает что такое отладчик?
10. Chester_forever@mail.ru 01.04.23 00:16 Сейчас в теме
(6) знаю.
по существу вопроса сможете ответить ?
в (8) я ответил по поводу отладчика. в (9) причину, и да, я не программист 1с.
13. karamazoff 94 01.04.23 10:02 Сейчас в теме
(10)по существу - через консоль запросов сделайте запрос по номенклатуре
5. user1826630 31.03.23 20:09 Сейчас в теме
Ну так ищи по СокрЛП(Номенклатура)... И не тупи.
9. Chester_forever@mail.ru 31.03.23 23:48 Сейчас в теме
(5) наименования номенклатуры, которая приходит, примерно такого содержания

"Акваоптик многофункц. р-р для ухода за конт. линзами фл. 60 мл (с контейнером д/"

все это идет из другой программы, не 1с.. а замечаем уже в 1с, что пробелы ставят и между слов, и точки, и буквы лишние, и иногда это с новым артикулом от поставщика, а иногда с тем же самым, но с другой ед.изм. поэтому нужна подобная проверка, поэтому СокрЛП не прокатит, поскольку НО - доходы минус расходы..
16. user1826630 01.04.23 18:47 Сейчас в теме
(9)
все это идет из другой программы, не 1с
Вах. И что ты в итоге пытаешься найти "по наименованию", если знаешь, что наименование может не совпадать?
12. МимохожийОднако 140 01.04.23 08:39 Сейчас в теме
Из СП:
Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>, Неопределено.
Ссылка на найденный элемент справочника.
Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка.
Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию, то будет возвращено Неопределено.
15. mkalimulin 962 01.04.23 17:57 Сейчас в теме
Может написать:

Если НайденнаяНоменклатура.Пустая()
17. karamazoff 94 01.04.23 19:25 Сейчас в теме
(15)еще раз - отбери всю номенклатуру запросом в таблицу и там по произвольному алгоритму твори с ней что хочешь, и не предлагай такое убогое вознаграждение в 7 рублей, я бомжам в переходе больше даю, здесь помогут бесплатно
19. user1553737 03.04.23 17:44 Сейчас в теме
Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>, Неопределено.
Ссылка на найденный элемент справочника.
Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка.
Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию, то будет возвращено Неопределено
20. пользователь 03.04.23 17:56
Сообщение было скрыто модератором.
...
Оставьте свое сообщение
Вакансии
Программист 1С
Кемерово
зарплата от 200 000 руб.
Полный день

Программист 1С
Киров (Кировская обл.)
зарплата от 100 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Архитектор 1С
Москва
зарплата от 250 000 руб.
Полный день

1С-Программист (интегратор Битрикс24)
Санкт-Петербург
зарплата от 150 000 руб. до 250 000 руб.
Полный день