Ошибка «Метод объекта не обнаружен» при обработке табличной части

1. user1427827 02.03.21 15:46 Сейчас в теме
Помогите пожалуйста новичку
Есть Справочник в котором есть табличная часть(ТабличнаяЧасть1) состоящая из реквизит1; реквизит2; реквизит3;
Задача нужно перед сохранение проверить есть ли в какой либо строке «реквизит2» со значением «основной продукт» если нет то отказ в записи.
вот что своял:
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ТЗ = Объект.ТабличнаяЧасть1();
	Потеряшка = ТЗ.Найти ("основной продукт","Реквизит2");
	Если Потеряшка = Неопределено тогда
		Сообщить("НЕТ ОСНОВНОЙ ПОЗИЦИИ!");
\\Отказ = истина; 
		КонецЕсли;
КонецПроцедуры
Показать


В итоге получаю ошибку
{Справочник.Наборы.Форма.ФормаЭлемента.Форма(50)}: Метод объекта не обнаружен (Найти)
Потеряшка = ТЗ.Найти ("основной продукт","Реквизит2");
По теме из базы знаний
Найденные решения
6. spacecraft 02.03.21 16:55 Сейчас в теме
(1)
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ТЧ = Объект.ТабличнаяЧасть1;
    Потеряшки = ТЧ.НайтиСтроки (Новый Структура("Реквизит2","основной продукт"));
    Если Потеряшки.Количество() = 0 тогда
        Сообщить("НЕТ ОСНОВНОЙ ПОЗИЦИИ!");
        КонецЕсли;
КонецПроцедуры
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Nubsdale 02.03.21 15:54 Сейчас в теме
(1) А если табличную часть обойти через "Для каждого" ?
6. spacecraft 02.03.21 16:55 Сейчас в теме
(1)
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ТЧ = Объект.ТабличнаяЧасть1;
    Потеряшки = ТЧ.НайтиСтроки (Новый Структура("Реквизит2","основной продукт"));
    Если Потеряшки.Количество() = 0 тогда
        Сообщить("НЕТ ОСНОВНОЙ ПОЗИЦИИ!");
        КонецЕсли;
КонецПроцедуры
2. Климов Сергей 02.03.21 15:53 Сейчас в теме
&НаСервере выполняйте проверку
4. user1427827 02.03.21 16:28 Сейчас в теме
(2)т.е. нужно создать Функцию &НаСервере
5. KVIKS 400 02.03.21 16:51 Сейчас в теме
(4)Да, ТЗ отрабатывает только на сервере, точнее то что в ТЗ = табличная часть, Функция табличной части отрабатывается только на сервере. Для каждой функции и метода в синтаксис помощнике написано внизу где она может срабатывать (клиент, сервер, сом-соединение и тд).
7. 17808849 58 03.03.21 07:10 Сейчас в теме
(4) не надо создавать новые процедуры, когда есть стандартные.
В тонком клиенте обработать табличную часть можно только на сервере.
Вызывать сервер с клиента, это затратно в плане ресурсов.
Для данной проверке можно использовать стандартную процедуру "ПередЗаписьюНаСервере".

По поводу перебора циклом:
Время на обход цикла "для каждого" в разы больше метода табличной части "НайтиСтроки"
8. SlavaKron 03.03.21 09:28 Сейчас в теме
(7)
Время на обход цикла "для каждого" в разы больше метода табличной части "НайтиСтроки"
Это если на сервере.
9. 17808849 58 03.03.21 11:02 Сейчас в теме
(8)
я на обход цикла "для каждого" в разы бо

Разницы нет на сервере или клиенте, если взять за данность, что мощности и загруженности одинаковые. (ну или сервер и клиент один и тот же компьютер)
10. SlavaKron 03.03.21 11:28 Сейчас в теме
(9) Я про то, что НайтиСтроки на клиенте делает серверный вызов.
11. 17808849 58 03.03.21 11:31 Сейчас в теме
(10)
НайтиСтроки

Найти строки не доступен на клиенте в принципе
12. SlavaKron 03.03.21 11:34 Сейчас в теме
(11) Ошибаетесь. В общем-то ответ, помеченный правильным, как раз использует этот метод на клиенте.
Прикрепленные файлы:
13. 17808849 58 03.03.21 11:35 Сейчас в теме
(12) Табличная часть (Tabular section)
НайтиСтроки (FindRows)

Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
14. SlavaKron 03.03.21 11:38 Сейчас в теме
(13) Понятно, мы о разных объектах ведем речь.
Оставьте свое сообщение

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