Имя: Пароль:
1C
 
ТаблЗнач.НайтиЗначение всегда возвращает 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 и не изменяется
Основная теорема систематики: Новые системы плодят новые проблемы.