![]() |
![]() |
![]() |
|
ТаблЗнач.НайтиЗначение всегда возвращает 0! | ☑ | ||
---|---|---|---|---|
0
jbond
20.10.04
✎
13:57
|
Обход справочника с целью обработки дублирующихся наименований.
Используется ТЗНАЧ Наименование=спрУслуги.Наименование; ... НомерСтр=ПолучитьПустоеЗначение(Число); Рез=тзнУслуги.НайтиЗначение(Наименование,НомерСтр,"Наименование"); если Рез = 0 Тогда - Всегда ноль! .... В первый раз не находит правильно (т.к. ТЗНАЧ пустой). Добавили с этим наименованием В отладчике - ТЗН спозиционирован на первой строке(которую добавили)с наименованием |
|||
1
AlexMan
20.10.04
✎
13:59
|
(0) может в ТЗ не Наименование заносиш а ТекущийЭлемент()?
|
|||
2
SKrin
20.10.04
✎
14:00
|
Рез=тзнУслуги.НайтиЗначение(СокрЛП(Наименование),НомерСтр,"Наименование");
вопрос: а как ты заплнял тзнУслуги, приведи код |
|||
3
jbond
20.10.04
✎
14:02
|
У ТЗнач Наименование типа Строка длины как у справочника.
Может дело в НомерСтр? Вроде обнулил |
|||
4
jbond
20.10.04
✎
14:06
|
НоваяКолонка("Наименование","Строка",100)
Вообще я в первый раз реализую что-то типа подчиненных Таблиц значений. Справочник услуг с ценами и дублирующимися наименованиями -> ТабЗначУслуг(Наимен,Цены) |
|||
5
Diter
20.10.04
✎
14:08
|
НайтиЗначение находит первое включение строки поиска. Т.е. для поиска дублей не подходит. Используй служебную колонку, заполняй единицами, сворачивай по всем колонка, кроме служебной. Потом ищи в служебной колонке цифру, отличную от "1"
|
|||
6
SKrin
20.10.04
✎
14:09
|
(4) Приведи код запонения тзнУслуги
|
|||
7
Рупор абсурда
20.10.04
✎
14:10
|
(5) Как относятся Ваши умные слова к случаю, когда НайтиЗначение возвращает 0?
|
|||
8
jbond
20.10.04
✎
14:12
|
Стоп! Я ведь юзаю порядок наименование. Можно просто сравнивать текущее с предыдущим.
|
|||
9
AlexMan
20.10.04
✎
14:15
|
(8) я бы всетаки попробывал как в (2) написано...
|
|||
10
SKrin
20.10.04
✎
14:15
|
(8) И че получится?
|
|||
11
Diter
20.10.04
✎
14:20
|
(7) Мои слова относятся к "В отладчике - ТЗН спозиционирован на первой строке(которую добавили)с наименованием". В случае, если по совпадению то что ищем встречается первый раз именно в первой строке.
|
|||
12
jbond
20.10.04
✎
14:21
|
Вот так работает.
Т.е. наименования одинаковы. А с поиском не знаю. |
|||
13
Diter
20.10.04
✎
14:22
|
(+11) а также к "Обход справочника с целью обработки ДУБЛИРУЮЩИХСЯ наименований"
|
|||
14
jbond
20.10.04
✎
14:22
|
(9) - Конечно и так пробовал!
|
|||
15
jbond
20.10.04
✎
14:24
|
Как всегда простое, работающее и быстрое решение приходит не сразу
|
|||
16
Den
20.10.04
✎
14:24
|
(12) А и не надо с поиском. Diter в (5) предложил самый оптимальный способ, могу добавить только - после свертки отсортируй по убыванию по служебной колонке и в цикле можно просмотреть ТЗ до тех пор, пока значение служебной колонки не станет <= 1. Тогда просто вываливаешься из цикла и все.
|
|||
17
Den
20.10.04
✎
14:25
|
Хочешь код?
|
|||
18
jbond
20.10.04
✎
14:30
|
Да, если Сортировка таблицы значений быстрее ПорядокНаименований() для справочника.
В принципе я уже обошелся без поиска - (12), (15) |
|||
19
Den
20.10.04
✎
14:31
|
Ну тогда ладно
|
|||
20
jbond
20.10.04
✎
14:33
|
Вопрос в общем закрыт. Тут и без поиска проблем хватает.
|
|||
21
Warlock
20.10.04
✎
14:35
|
2 jbond:
"строка1" <> "строка1 " Ты это учитывал? |
|||
22
jbond
20.10.04
✎
15:39
|
Конечно учитываю. У меня СокрЛП стоит.
А при загрузке справочника для надежности надо 2 пробела на один заменять. Кажись в цикле. Это для надежности |
|||
23
big
20.10.04
✎
16:22
|
Были такие грабли. Проблема решилась форматированием ИСКОМОЙ строки (т.е. Наименование) до длины соотв. колонки ТЗ: Формат(Наименование,"С"+ДлинаСтрокиКолнкиТЗ). Чессно слово.
|
|||
24
Шапокляк
20.10.04
✎
17:10
|
(0)НомерСтр=ПолучитьПустоеЗначение(Число);
а переменная Число какого типа? Если попробовать НомерСтр=0 должно заработать... |
|||
25
Warlock
20.10.04
✎
17:20
|
(22)Это в переборе стоит. А при НайтиЗначение(), возможно, понадобится делать как (23).
|
|||
26
jbond
22.10.04
✎
10:04
|
Хорошо что для справочников и документов поиск работает
|
|||
27
Rovan
гуру
22.10.04
✎
10:08
|
ВМЕСТО
НоваяКолонка("Наименование","Строка",100) ДЕЛАЙ НоваяКолонка("Наименование") // СТРОКА неопреденной длины потом ищи СокрЛП( Наименование ) |
|||
28
AlexP
22.10.04
✎
10:50
|
(0) НомерСтр=ПолучитьПустоеЗначение(Число);
Рез=0 у тебя будет всегда, т.к. НомерСтр=0 и не изменяется |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |