что возвращается при ПоискеПоНаименованию
из процедуры вызываю функцию поиска по наименованию, для того, что бы убедиться что в базе есть вся номенклатура которая есть в файле, но в этой функции выполняется только второе условие ( ответ всегда получаю "222222 найдено " и даже если не найдено, то всеравно выполняется только второе условие, просто без наименования "НайденнаяНоменклатура" )
Из СП: Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка. Но я так понимаю возвращается неизвестно что? Или тут в другом проблема ?
Причем если это условие написать в процедуре то все работает нормально.
Из СП: Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка. Но я так понимаю возвращается неизвестно что? Или тут в другом проблема ?
&НаСервере
процедура ЗагрузкаИзФайла()
.....
ТБ = Объект.ТаблицаФайла.Добавить();
ТБ.НоменклатураИзФайла = Выборка.Fields(1).Value;
ТБ.НоменклатураВ1С=ПроверитьСуществованиеНоменклатуры(Тб.НоменклатураИзФайла,ТБ.номерСтроки);
....
КонецПроцедуры
&НаСервере
Функция ПроверитьСуществованиеНоменклатуры(номенклатура,номерСтроки);
НайденнаяНоменклатура = Справочники.Номенклатура.ПустаяСсылка();
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура,объект.ТочностьПоискаНаименования);
Если НайденнаяНоменклатура = справочники.Номенклатура.ПустаяСсылка()
Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "11111111 НЕНАЙДЕНО "+НайденнаяНоменклатура+". Строка Номер "+ НомерСтроки;
Сообщение.Сообщить();
иначе
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "222222 НАЙДЕНО " +НайденнаяНоменклатура+". Строка Номер "+ НомерСтроки;
Сообщение.Сообщить();
КонецЕсли;
возврат НайденнаяНоменклатура.ссылка;
КонецФункции
ПоказатьПричем если это условие написать в процедуре то все работает нормально.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Короче, если в Номенклатура будет пустая строка и объект.ТочностьПоискаНаименовани равен Ложь, тогда будет найден первый попавшийся элемент. Соответственно условие Если НайденнаяНоменклатура = справочники.Номенклатура.ПустаяСсылка() никогда не будет выполнено.
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура,объект.ТочностьПоискаНаименования);
Короче, если в Номенклатура будет пустая строка и объект.ТочностьПоискаНаименовани равен Ложь, тогда будет найден первый попавшийся элемент. Соответственно условие Если НайденнаяНоменклатура = справочники.Номенклатура.ПустаяСсылка() никогда не будет выполнено.
(7) логично! Но "Номенклатура" всегда есть, всегда не пустая строка, ее берем из файла и она ТОЧНО не нулевая. в объект.ТаблицаФайла она появляется, а мы пытаемся найти в нашей базе 1с точно такую же (что бы сопоставить)
Повторюсь, если это условие написать в самой процедуре, после
то все отрабатывает как надо.
(2) все действия на сервере происходят, на нем отключен отладчик и к сожалению включить не получится, поэтому и спрашиваю здесь..
Повторюсь, если это условие написать в самой процедуре, после
ТБ.НоменклатураВ1С=ПроверитьСуществованиеНоменклатуры(Тб.НоменклатураИзФайла,ТБ.номерСтроки);
то все отрабатывает как надо.
(2) все действия на сервере происходят, на нем отключен отладчик и к сожалению включить не получится, поэтому и спрашиваю здесь..
(8)
(1)
"просто без наименования" говорит о том, что нет значения. Как раз вариант с пустой строкой.
А есть вариант когда найдено и заполненное наименование "НайденнаяНоменклатура"?
Но "Номенклатура" всегда есть, всегда не пустая строка
(1)
и даже если не найдено, то всеравно выполняется только второе условие, просто без наименования "НайденнаяНоменклатура" )
"просто без наименования" говорит о том, что нет значения. Как раз вариант с пустой строкой.
А есть вариант когда найдено и заполненное наименование "НайденнаяНоменклатура"?
НайденнаяНоменклатура = Справочники.Номенклатура.ПустаяСсылка();
НайденнаяНоменклатура = Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура,объект.ТочностьПоискаНаименования);
Смысл первой строки кода неясен. Зачем что-то присваивать, если следующей командой всё равно переопределится значение?
(1)
...Причем если это условие написать в процедуре то все работает нормально
На форме нет реквизита "Номенклатура"? Или глобальной переменной в модуле?
в случае поиска по не полному соответствию все тоже самое..
в случае если условие "неопределено", то ответ всегда получаю 111111 НеНайдено на любуюу ( даже на найденную номенклатуру)
Хорошо, в каком случае будет возвращена пустая ссылка ?
я так понимаю "Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию," - это когда НайтиПоНаименованию ("",истина");
в случае если условие "неопределено", то ответ всегда получаю 111111 НеНайдено на любуюу ( даже на найденную номенклатуру)
Хорошо, в каком случае будет возвращена пустая ссылка ?
я так понимаю "Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию," - это когда НайтиПоНаименованию ("",истина");
(3)
Нет. Это когда у самого справочника отключено Наименование.
Что показывает отладчик в момент выполнения условия? Что содержится в НайденнаяНоменклатура?
я так понимаю "Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию," - это когда НайтиПоНаименованию ("",истина");
Нет. Это когда у самого справочника отключено Наименование.
Что показывает отладчик в момент выполнения условия? Что содержится в НайденнаяНоменклатура?
(5) наименования номенклатуры, которая приходит, примерно такого содержания
"Акваоптик многофункц. р-р для ухода за конт. линзами фл. 60 мл (с контейнером д/"
все это идет из другой программы, не 1с.. а замечаем уже в 1с, что пробелы ставят и между слов, и точки, и буквы лишние, и иногда это с новым артикулом от поставщика, а иногда с тем же самым, но с другой ед.изм. поэтому нужна подобная проверка, поэтому СокрЛП не прокатит, поскольку НО - доходы минус расходы..
"Акваоптик многофункц. р-р для ухода за конт. линзами фл. 60 мл (с контейнером д/"
все это идет из другой программы, не 1с.. а замечаем уже в 1с, что пробелы ставят и между слов, и точки, и буквы лишние, и иногда это с новым артикулом от поставщика, а иногда с тем же самым, но с другой ед.изм. поэтому нужна подобная проверка, поэтому СокрЛП не прокатит, поскольку НО - доходы минус расходы..
Из СП:
Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>, Неопределено.
Ссылка на найденный элемент справочника.
Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка.
Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию, то будет возвращено Неопределено.
Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>, Неопределено.
Ссылка на найденный элемент справочника.
Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка.
Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию, то будет возвращено Неопределено.
Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>, Неопределено.
Ссылка на найденный элемент справочника.
Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка.
Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию, то будет возвращено Неопределено
Тип: СправочникСсылка.<Имя справочника>, Неопределено.
Ссылка на найденный элемент справочника.
Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка.
Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию, то будет возвращено Неопределено
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот