|
метод Найти() | ☑ | ||
---|---|---|---|---|
0
Kyrtizanka
28.12.11
✎
11:56
|
Поскажите пожалуйста! Мне нужно в табличной части при добавлении нового элемента , сделать проверку, а может был уже добавлен этот элемент . Форма у меня управляемая, хочу воспользоваться методом Найти(), но не пойму как им воспользоваться.
Например пользовалась методом НайтиСтроки, сработало след образом ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Товар",ВыбранноеЗначение); НСтрока = Объект.Товар.НайтиСтроки(ПараметрыОтбора); Но если пишу Объект.Товар.Найти(ВыбранноеЗначение,"Товар"); программа ругается метод -Найти не обнаружен |
|||
1
aleks-id
28.12.11
✎
12:03
|
Доступность:
Сервер, толстый клиент, внешнее соединение |
|||
2
VasjaIvanov
28.12.11
✎
12:03
|
&наКлиенте делаешь?
|
|||
3
Kyrtizanka
28.12.11
✎
12:05
|
да, на клиенте
|
|||
4
Kyrtizanka
28.12.11
✎
12:05
|
&насервере тоже делала
|
|||
5
VasjaIvanov
28.12.11
✎
12:07
|
товар - табличная часть?
|
|||
6
Kyrtizanka
28.12.11
✎
12:07
|
просто я видимо его неправильно вызываю
Объект.Товар |
|||
7
andrewks
28.12.11
✎
12:07
|
откуда на сервере клиентский контекст?
проверять надо именно по текущей (возможно, незаписанной) ТЧ, или по записанной? |
|||
8
Kyrtizanka
28.12.11
✎
12:07
|
да табличная чатсь-Товар
|
|||
9
NcSteel
28.12.11
✎
12:09
|
Табличная часть.Найти (Tabular section.Find)
Табличная часть (Tabular section) Найти (Find) Синтаксис: Найти(<Значение>, <Колонки>) Параметры: <Значение> (обязательный) Тип: Произвольный. Искомое значение. <Колонки> (необязательный) Тип: Строка. Список имен колонок, в которых будет осуществляться поиск, разделенных запятыми. Если параметр не указан, поиск осуществляется по всей табличной части. Значение по умолчанию: Пустая строка Возвращаемое значение: Тип: Строка табличной части, Неопределено. Строка, которая содержит искомое значение. Если значение не найдено, то возвращается значение Неопределено. Описание: Осуществляет поиск значения в указанных колонках табличной части. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Метод эффективно использовать для поиска уникальных значений. Пример: НайденнаяСтрока = Состав.Найти(ТекТовар, "Номенклатура"); Если НайденнаяСтрока = Неопределено Тогда Текст = "ru = ""Товар не найден!"";" + " en = ""Article not found!"""; Предупреждение(НСтр(Текст)); Иначе Количество = НайденнаяСтрока.Количество; КонецЕсли; Обращаю внимание на: Сервер, толстый клиент, внешнее соединение. |
|||
10
Kyrtizanka
28.12.11
✎
12:14
|
да я все так и делаю, просто если просто написать Состав.Найти(ТекТовар, "Номенклатура");
то программаругается Переменная не определена (Состав) |
|||
11
Mort
28.12.11
✎
12:16
|
В какой момент собираешься проверять?
|
|||
12
Kyrtizanka
28.12.11
✎
12:18
|
при подборе нового элемента из справочника делаю Процедуру -ОбработкаВыбора, это стандартная процедура
|
|||
13
Kyrtizanka
28.12.11
✎
12:18
|
неужели никто не делал такого в управляемой форме
|
|||
14
Kyrtizanka
28.12.11
✎
12:19
|
метод -НайтиСтроки(ПараметрыОтбора);
работает, но это не то, я хочу воспользоваться именно стандартным методом Найти |
|||
15
VasjaIvanov
28.12.11
✎
12:20
|
да я все так и делаю, просто если просто написать Товар.Найти(ТекТовар, "Номенклатура");
|
|||
16
VasjaIvanov
28.12.11
✎
12:20
|
не состав а товар
|
|||
17
NcSteel
28.12.11
✎
12:21
|
(14) нет на сервере такого метода. Почему СП не веришь ?
|
|||
18
Kyrtizanka
28.12.11
✎
12:22
|
товарищи, мне нужно сделать проверку в Табличной части , и все равно как называется Табличная часть
|
|||
19
NcSteel
28.12.11
✎
12:22
|
(17) точнее нет на клиенте такого метода .
|
|||
20
Kyrtizanka
28.12.11
✎
12:23
|
как воспользоваться методом Найти
|
|||
21
VasjaIvanov
28.12.11
✎
12:23
|
у тебя то она называется товар?
|
|||
22
NcSteel
28.12.11
✎
12:23
|
(20) прыгнуть на сервер и там найти.
|
|||
23
Kyrtizanka
28.12.11
✎
12:23
|
у меня этот метод не работает Ни на сервере, на на клиенте
|
|||
24
NcSteel
28.12.11
✎
12:24
|
на сервере посмотреть ТипЗНЧ(Объект[ИмяТабличнойЧасти])
|
|||
25
Kyrtizanka
28.12.11
✎
12:25
|
может мне нужно Табличную Часть в виде ТЗ передать с клиента на сервер, я просто уже рахнве варианты перебираю, пока только методом перебора в управляемом режиме
|
|||
26
Mort
28.12.11
✎
12:26
|
А не проще проверить дубли в обработке проверки заполнения?
|
|||
27
NcSteel
28.12.11
✎
12:26
|
(25) Ответить на вопрос сложно ?
|
|||
28
VasjaIvanov
28.12.11
✎
12:32
|
(25)надо
|
|||
29
Kyrtizanka
28.12.11
✎
12:34
|
)) что-то не понимаю ваши ответы или это вопросы)), неужели никто не делал такого, чтобы напримере показать что да как
|
|||
30
VasjaIvanov
28.12.11
✎
12:36
|
(29) а в конце ты что хочешь сообщение что товар уже такой есть?
|
|||
31
Kyrtizanka
28.12.11
✎
12:36
|
да, именно так, сообщение об ошибке
|
|||
32
Mort
28.12.11
✎
12:37
|
(29) Потому что есть мало причин запрещать вводить строки с одинаковыми позициями в ТЧ. Вот никто и не заморачивается.
|
|||
33
VasjaIvanov
28.12.11
✎
12:38
|
жди тогда надо смоделировать твою ситацию))
|
|||
34
Kyrtizanka
28.12.11
✎
12:40
|
я очень жду)) реально обидно, что из-за такое кажущейся ерунды, застопорилось все
|
|||
35
Mort
28.12.11
✎
12:41
|
Если очень надо, пока лезете на сервер за методом найти, можно 10 раз пробежаться по ТЧ на клиенте туда и обратно.
|
|||
36
Mort
28.12.11
✎
12:45
|
А чем НайтиСтроки так не нравится? Это вопросы религии?
|
|||
37
NcSteel
28.12.11
✎
12:48
|
(36) даже в отладчик лень ей заходить , так что ...
|
|||
38
Kyrtizanka
28.12.11
✎
12:51
|
нет, просто возвращается массив, просто есть и тот и другой метод
|
|||
39
NcSteel
28.12.11
✎
12:52
|
на сервере посмотреть ТипЗНЧ(Объект[ИмяТабличнойЧасти])
Что выдает ? |
|||
40
Kyrtizanka
28.12.11
✎
12:52
|
мне в отладчик заходить не лень, я всегда через отладчик проверку делаю, не надо умничать, перед тем как задать вопрос, я поискала в инете вопросы, синтаксис почитала, если такой умный, напиши что-нить умное
|
|||
41
Mort
28.12.11
✎
12:54
|
(38) Ну раз есть, значит используй.
- Товарищ, майор, мясо положено! - Ну раз положено, значит ешь! - Так ведь не положено! - Ну не положено - не ешь... (40) Ну тогда посмотри в отладчике какой тип у Объект.Товары и его смотри в СП, а не табличную часть. |
|||
42
Kyrtizanka
28.12.11
✎
13:39
|
короче я сделала так
&НаКлиенте Процедура1() НСтрока = Поиск(ВыбранноеЗначение); ТекущаяСтрока = Элементы.Субдистрибьютор.ТекущаяСтрока; Если НСтрока = 0 Тогда ТекущаяСтрока.Товар = ВыбранноеЗначение; иначе Сообщить("Товар: "+ ВыбранноеЗначение+ " уже есть в строке "+НСтрока, СтатусСообщения.Важное); СтандартнаяОбработка = Ложь; КонецЕсли; КонецПроцедуры &НаСервере Функция Поиск(Значение) ТЗ = Объект.Товар.Выгрузить(); Строка = ТЗ.Найти(Значение,"Товар"); Если Строка <> Неопределено тогда Повтор = Строка.НомерСтроки; иначе Повтор = 0; КонецЕсли; возврат Повтор; КонецФункции так работает, хотя некрасивый кусок Если Строка <> Неопределено тогда Повтор = Строка.НомерСтроки; иначе Повтор = 0; КонецЕсли; т.к ошибка возникала при передаче с сервера на клиент, но я думаю, что можно было написать Повтор = Объект.Товар.НайтиПоИдентификатору(Строка.НомерСтроки); так же можно было на клиенте сразу написать ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("Товар",ВыбранноеЗначение); НСтрока = Объект.Товар.НайтиСтроки(ПараметрыОтбора); |
|||
43
Kyrtizanka
28.12.11
✎
13:40
|
ТекущаяСтрока = Элементы.Субдистрибьютор.ТекущаяСтрока;
опечатка) ТекущаяСтрока = Элементы.Товар.ТекущаяСтрока; |
|||
44
NcSteel
28.12.11
✎
13:42
|
(42) А кто то грил что "Найти" не работает. Эх эти женщины.
|
|||
45
Kyrtizanka
28.12.11
✎
13:44
|
так посмотрите где я найти использую, я специально выгрузку в таблицу делаю
|
|||
46
Kyrtizanka
28.12.11
✎
13:48
|
сейчас проверила
Повтор = Объект.Субдистрибьютор.НайтиПоИдентификатору(Строка.НомерСтроки); при возврате такого значения из функции, которая на сервере в процедуру на клиенте, программа ругается, что типы при передаче не те, короче при варианте Если Строка <> Неопределено тогда Повтор = Строка.НомерСтроки; иначе Повтор = 0; КонецЕсли; останусь |
|||
47
NcSteel
28.12.11
✎
13:51
|
(45) А надо было так:
ДокОбъект = ДанныеФормыВЗначение("Объект" , Тип("ДокументОбъект.МойДокументик")); Работаем с ТЧ возвращаем его только если что то изменили. |
|||
48
NcSteel
28.12.11
✎
13:53
|
Так же важно что номер строки на УФ может отличаться от номера строки в ТЧ !!!
например: Номер строки ТЧ = 1 Номер строки ТП = 2. Такое возможно если было удаление строки , то новый идентификатор добавляется с +1 . Либо было перемещение строк. |
|||
49
NcSteel
28.12.11
✎
13:54
|
(46) Согласно (48) ваш код БРЕД, в общем и моя ремарка в (47) не поможет .
|
|||
50
vmv
28.12.11
✎
14:00
|
чтобы воспользоваться методами поиска в ТабличнойЧасти объекта на клиенте необходимо из клиентской процедуры вызвать
серверную, Например Нашли(), где 1. ТЧЗначение = РеквизитФормыВЗначение(...) 2. ТЧЗначение.Найти(...) 3. Возврат Нашли; |
|||
51
Kyrtizanka
28.12.11
✎
14:03
|
ТЧЗначение = РеквизитФормыВЗначение(...)
2. ТЧЗначение.Найти(...) 3. Возврат Нашли; спасибо, сейчас и такой вариант попробую |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |