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

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 7 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 118 31.03.23 20:44 Сейчас в теме
(4)это в какой такой конфе у справочника Номенклатура отключено Наименование? Думаете он знает что такое отладчик?
10. Chester_forever@mail.ru 01.04.23 00:16 Сейчас в теме
(6) знаю.
по существу вопроса сможете ответить ?
в (8) я ответил по поводу отладчика. в (9) причину, и да, я не программист 1с.
13. karamazoff 118 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. МимохожийОднако 142 01.04.23 08:39 Сейчас в теме
Из СП:
Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>, Неопределено.
Ссылка на найденный элемент справочника.
Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка.
Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию, то будет возвращено Неопределено.
15. mkalimulin 1231 01.04.23 17:57 Сейчас в теме
Может написать:

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот