Всем хорошего дня.
В ТЧ документа (колонка "Номенклатура"), есть товар, который нужно найти. Как к нему правильно обратиться, если у него тип "СправочникСсылка.Номенклатура"? В модуле объекта документа я пишу:
Выходит ошибка: "Значение не является значением объектного типа (товар)". Как я понимаю, надо в параметрах поиска указать Найти (СправочинкСсылка....)?
В ТЧ документа (колонка "Номенклатура"), есть товар, который нужно найти. Как к нему правильно обратиться, если у него тип "СправочникСсылка.Номенклатура"? В модуле объекта документа я пишу:
НЗ = Товары.Найти("Стул", "Товар");
Если НЗ.Товар = "Стул" Тогда
Сообщить("Верно");
Иначе
Сообщить("НЕ Найдено");
КонецЕсли;
Выходит ошибка: "Значение не является значением объектного типа (товар)". Как я понимаю, надо в параметрах поиска указать Найти (СправочинкСсылка....)?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Не срабатывает ваш вариант. Пишу код так:
В итоге "сообщить" выводит "-", отладчик тоже не видит значение "ТекТовар". И всегда срабатывает "иначе", независимо какое значение в колонке - стул, стол и т.д., даже если просто пустое, то срабатывает "иначе".
ТекТовар = Справочники.Товары.НайтиПоНаименованию("Стул");
Если ТекТовар = Неопределено Тогда
Сообщить("Не Верно");
Иначе
Сообщить("Найдено");
КонецЕсли;
сообщить(ТекТовар);
ПоказатьВ итоге "сообщить" выводит "-", отладчик тоже не видит значение "ТекТовар". И всегда срабатывает "иначе", независимо какое значение в колонке - стул, стол и т.д., даже если просто пустое, то срабатывает "иначе".
(5)
Не работает это условие. В отладчике "ТекТовар" графа "Наименование" имеет значение - "". Это значит, что не видит строку и что в ней находится. Что бы не вводил в строку - всегда срабатывает "тогда". Если пишу такой код:
Пишет ошибку: значение не является значением объектного типа (товар)
ТекТовар = Справочники.Товары.НайтиПоНаименованию("Стул");
НЗ = Товары.Найти(ТекТовар, "Товар");
Если НЗ = Неопределено Тогда
Сообщить("Не Верно");
Иначе
Сообщить("Найдено");
КонецЕсли;
сообщить(ТекТовар);
ПоказатьНе работает это условие. В отладчике "ТекТовар" графа "Наименование" имеет значение - "". Это значит, что не видит строку и что в ней находится. Что бы не вводил в строку - всегда срабатывает "тогда". Если пишу такой код:
ТекТовар = Справочники.Товары.НайтиПоНаименованию("Стул");
НЗ = Товары.Найти(ТекТовар, "Товар");
Если НЗ.Товар = Неопределено Тогда
Сообщить("Не Верно");
Иначе
Сообщить("Найдено");
КонецЕсли;
сообщить(ТекТовар);
ПоказатьПишет ошибку: значение не является значением объектного типа (товар)
(7) давайте по порядку:
первая строка ищет номенклатуру в справочнике Номенклатура (ваш справочник так называется ? или товары ?) если всё верно то проверьте наименование, а еще лучше скопируйте прямо из предприятия слово "стул" в код.
Вторая - ищем в Табличной части(!) с именем Товары наш тектовар, в колонке с именем "товар" (как вы сказали с типом СправочникСсылка.Номенклатура)
далее идёт проверка на неопределено т.к. метод возвращает или найденную строку табличной части или Неопределено если не нашел ничего. Скопируйте этот код и под отадчиком проходите по шагам и проверяйте что не так.
ТекТовар = Справочники.Номенклатура.НайтиПоНаименованию("Стул");
НЗ = Товары.Найти(ТекТовар, "Товар");
Если НЗ = Неопределено Тогда
Сообщить("НЕ Найдено");
Иначе
Сообщить("Верно");
КонецЕсли;
первая строка ищет номенклатуру в справочнике Номенклатура (ваш справочник так называется ? или товары ?) если всё верно то проверьте наименование, а еще лучше скопируйте прямо из предприятия слово "стул" в код.
Вторая - ищем в Табличной части(!) с именем Товары наш тектовар, в колонке с именем "товар" (как вы сказали с типом СправочникСсылка.Номенклатура)
далее идёт проверка на неопределено т.к. метод возвращает или найденную строку табличной части или Неопределено если не нашел ничего. Скопируйте этот код и под отадчиком проходите по шагам и проверяйте что не так.
(8)В сообщение выше, я правильно указал название справочника - "Товары".
Ничего не изменилось. В отладчике "ТекТовар" вообще никак не реагирует. Пробую "вычислить значение" (ТекТовар) пишет в Наименование значение - "". Значит нет значения. Сейчас всегда срабатывает "тогда". "НЗ" также ничего не показывает в отладчике
Ничего не изменилось. В отладчике "ТекТовар" вообще никак не реагирует. Пробую "вычислить значение" (ТекТовар) пишет в Наименование значение - "". Значит нет значения. Сейчас всегда срабатывает "тогда". "НЗ" также ничего не показывает в отладчике
(10) Приношу свои извинения за свою невнимательность. У меня тип значения была "строка". Это я хотел попробовать найти значение, если оно будет "СправочникСсылка.ИмяСправочника", но не поменял "тип значения", хотя справочник "товары" добавил. Сейчас всё изменил и этот код работает:
Спасибо всем большое. Я начинающий, да ещё плюс не совершенные качества (не внимательность), но стараюсь развиваться в программировании, мне это интересно. Надеюсь на понимание... Всего доброго!
ТекТовар = Справочники.Товары.НайтиПоНаименованию("Стул");
НЗ = Товары.Найти(ТекТовар, "Товар");
Если НЗ = Неопределено Тогда
Сообщить("НЕ Найдено");
Иначе
Сообщить("Верно");
КонецЕсли;
Спасибо всем большое. Я начинающий, да ещё плюс не совершенные качества (не внимательность), но стараюсь развиваться в программировании, мне это интересно. Надеюсь на понимание... Всего доброго!
(1)
Я использую метод НайтиСтроки(). Найти() вернёт только одну из строк, если их несколько. НайтиСтроки() вернёт массив, содержащий все найденные строки (можно их посчитать, обработать... Кроме того, НайтиСтроки() может искать по сочетанию нескольких колонок табличной части:
Здесь я вывожу реквизит Количество для каждой строки, у которой номенклатура - "Стул"
Я использую метод НайтиСтроки(). Найти() вернёт только одну из строк, если их несколько. НайтиСтроки() вернёт массив, содержащий все найденные строки (можно их посчитать, обработать... Кроме того, НайтиСтроки() может искать по сочетанию нескольких колонок табличной части:
ИскомыйТовар = Справочники.Номенклатура.НайтиПоНаименованию("Стул");
НайденныеСтрокиДокумента = МойДокумент.ТабличнаяЧасть.НайтиСтроки(Новый Структура("Номенклатура",ИскомыйТовар));
Если НайденныеСтрокиДокумента.Количество()=0 Тогда
Сообщить("Не найдено стульев");
Иначе
Для Каждого НайденнаяСтрока Из НайденныеСтрокиДокумента Цикл
Сообщить(Строка(НайденнаяСтрока.Количество));
КонецЦикла;
КонецЕсли;
ПоказатьЗдесь я вывожу реквизит Количество для каждой строки, у которой номенклатура - "Стул"
(1) почитал обсуждение, захватывающе. Все участники говорят каждый о своем.
Обратиться к нему правильно и единственно можно и нужно только так:
и от типа колонки это обращение не зависит.
В ТЧ документа (колонка "Номенклатура"), есть товар, который нужно найти. Как к нему правильно обратиться, если у него тип "СправочникСсылка.Номенклатура"?
Обратиться к нему правильно и единственно можно и нужно только так:
СтрокаТабличнойЧасти.Номенклатура
и от типа колонки это обращение не зависит.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот