Добрый день. Необходимо найти данные в табличной части документа с помощью метода Найти() по стандартному реквизиту "Номер строки".
В синтаксис-помощнике об этом методе написано следующее:
Синтаксис: Найти(<Значение>, <Колонки>.
Возвращаемое значение: Тип: Строка табличной части; Неопределено.
Строка, которая содержит искомое значение. Если значение не найдено, то возвращается значение Неопределено.
Описание: Осуществляет поиск значения в указанных колонках табличной части.
При выполнении следующего кода, когда переменная Сч принимает значение 0, то метод возвращает ссылку на первую строку табличной части документа, хотя во всех остальных случаях отрабатывает согласно документации:
Для Сч = -1 По 3 Цикл
Строка = ТабличнаяЧастьДокумента.Найти(Сч, "НомерСтроки");
Если Строка = Неопределено Тогда
Сообщить("При Сч = " + Сч + ", строка не найдена");
Иначе
Сообщить("При Сч = " + Сч + ", найдена строка " + Строка.НомерСтроки);
КонецЕсли;
КонецЦикла;
Показать
Подскажите, пожалуйста, по каким именно правилам идет поиск в данной ситуации? Почему метод не возвращает "Неопределено", как заявлено в синтаксис помощнике?
(1) сумел повторить ошибку. Это явно ошибка в платформе. Можно отправить тикет.
При 0 ищет не только по колонке НомерСтроки, а и по всем колонкам.
Попробуйте заполнить первую строку полностью, вернет уже не первую строку, а вторую.
Точнее даже так: если не нашла в указанной колонке (любое число), продолжает искать в других.
(2) Если честно, никогда раньше не писал туда. И попробовав этот поиск на разных релизах платформы убедился, что он тянется ещё как минимум с 8.2, поэтому посчитал, что это я чего-то не знаю.
(5)Если вам понадобился поиск по номеру строки, есть мнение, что вы что-то делаете не так))
Потому что он действительно никому не нужен.
Возможно поэтому данному багу (если это баг) куча лет.
Да и в вашем случае - нет смысла искать по номеру строки, если номер строки не заполнен.
Можно для обхода проблемы, добавить такое условие.
(7)Для информации:
При обращении на линию консультаций фирмы "1С" Вам потребуется следующая информация:
1) Регистрационный номер программы (для партнеров - код партнера, а также регистрационный номер NFR-версии, содержащей конфигурацию, по которой задается вопрос, либо регистрационный номер программы пользователя, для которого партнер получает информацию)
2) Название организации
3) Версия программного продукта, название конфигурации
4) ИНН
(8) Да без проблем, но почитав https://infostart.ru/public/299145/ понял, что отвечают они крайне долго и не охотно.
Буду завтра на testplatform@1c.ru писать, подготовлю мат. часть только вряд ли им будет достаточно ссылки на сайт.
(1) сумел повторить ошибку. Это явно ошибка в платформе. Можно отправить тикет.
При 0 ищет не только по колонке НомерСтроки, а и по всем колонкам.
Попробуйте заполнить первую строку полностью, вернет уже не первую строку, а вторую.
Точнее даже так: если не нашла в указанной колонке (любое число), продолжает искать в других.
(10) Спасибо, что предлагаете различные подходы. Однако, хочу заметить, что я не описывал проблему именно со стороны организации поиска. Задача стоит так: понять, отрабатывает ли метод Найти() с ошибкой или нет? Если нет, то почему?