Имя: Пароль:
1C
1С v8
НайтиСтроки()
,
0 Tata001
 
20.01.12
14:16
Не срабатывает метод найтиСтроки(). Подскажите алгоритм,пожалуйста.
Вот упрощённый вариант,того что я делаю
============
МассивПФР=Новый Массив;
МассивПФР.Добавить("3350071 79");

    ФильтрОтбора_ПоПФР=Новый Структура ;
    ФильтрОтбора_ПоПФР.Вставить("НомерПФР",МассивПФР);
   
тз=Новый ТаблицаЗначений;
тз.Колонки.Добавить("НомерПФР");
новаястрока=тз.Добавить();
новаястрока.номерПФР="3350071 79";
   
СтрокиФайла=тз.НайтиСтроки(ФильтрОтбора_ПоПФР);
==============
строки не находит.
1 Рэйв
 
20.01.12
14:18
ты странный.
Заносишь строку, а ищешь массив
2 Рэйв
 
20.01.12
14:19
ФильтрОтбора_ПоПФР.Вставить("НомерПФР","3350071 79");

Так найдет
3 Tata001
 
20.01.12
14:27
(1) в массиве же  строка??
4 Рэйв
 
20.01.12
14:28
(3)Ну и что.Искать то будет массив, а не то что в нем
5 Tata001
 
20.01.12
14:34
(4) в дальнейшем будет вместо строки массив, т.е. список строк
6 Рэйв
 
20.01.12
14:38
ну вот как будет вдальнейшем массив в значении так и начнет находить
7 Tata001
 
20.01.12
14:39
(6) не поняла
8 Рэйв
 
20.01.12
14:41
Если будет
новаястрока.номерПФР=МассивПФР;

Тогда найдет при
ФильтрОтбора_ПоПФР.Вставить("НомерПФР",МассивПФР);

Если будет Если будет
новаястрока.номерПФР="3350071 79";

тогда надо делать
ФильтрОтбора_ПоПФР.Вставить("НомерПФР","3350071 79");
чтобы нашло
9 Buster007
 
20.01.12
14:42
для поиска с использованием В (список значений неважно каких) лучше использовать Запрос.
10 vmv
 
20.01.12
14:42
массив в запрос и порядок, легкие пути искать негоже
11 Tata001
 
20.01.12
14:46
(9) нет возможности использовать запрос....
12 Fish
 
20.01.12
14:47
(11) Почему?
13 Tata001
 
20.01.12
14:48
(12) потому что в таблице,в которой веду поиск,она заполнена из екселя
14 Defender aka LINN
 
20.01.12
14:49
(12) Опасается, что после смерти попадет в адЪ за такое.
15 Tata001
 
20.01.12
14:49
(12) потому что в таблице значений,в которой веду поиск,она заполнена из екселя.
16 Defender aka LINN
 
20.01.12
14:49
(13) Весомая причина, ага...
17 Tata001
 
20.01.12
14:49
(14) а что к таблице значений есть возможность выстроить запрос?
18 Tata001
 
20.01.12
14:53
(2) так ругается
19 Рэйв
 
20.01.12
14:53
(17)

ТЗ=Новый ТаблицаЗначений;
ТЗ.Коллонки.Добавить("номерПФР",Новый ОписаниеТипов("Строка",50));

//-----------тут заполняем из эксель

Запрос=Новый Запрос;
Запрос.Текст="
Выбрать ТЗ.номерПФР
Из &ТЗ КАК ТЗ
ГДЕ ТЗ.номерПФР В (&МассивЗначений)";
Запрос.УстановитьПараметр("ТЗ",ТЗ);
Запрос.УстановитьПараметр("МассивЗначений",МассивПФР);
тРез=Запрос.Выполнить().Выгрузить();
Для Каждого Стр из тРез Цикл
  Сообщить("Найдено "+Стр.номерПФР);
КонецЦикла;
20 Fish
 
20.01.12
14:56
(19) Не так. Смотри: http://help1c.com/faq82/view/815.html
21 Fish
 
20.01.12
14:58
+(20) Хотя не пробовал :)))
22 Рэйв
 
20.01.12
15:01
(20)Все так:-)..Сто раз так делал.
23 Alex S D
 
20.01.12
15:04
(19) обычно на такое пишет "Содержимое объекта данных может быть выбрано только во временную таблицу". Странно что у тебя не так..
24 Рэйв
 
20.01.12
15:05
(23)Да, точно:-)...Я для временных таблиц такое делал:-) Ну значит надо Поместить и потом из нее выбрать:-)
25 Tata001
 
20.01.12
15:40
А объединение 2-х таблиц значений можно ?
26 Рэйв
 
20.01.12
15:42
(25)Можно.
27 Tata001
 
20.01.12
15:45
(26)      "ВЫБРАТЬ
   |    ТЗН1.НомерПФР КАК НомерПФР,
   |    ТЗН1.ПФР_НСЧ КАК ПФР_НСЧ,
   |    ТЗН1.ПФР_УСЧ КАК ПФР_УСЧ,
   |    ТЗН1.ИДПФР_ННЧ КАК ПФР_ННЧ,
   |    ТЗН1.ПФР_УНЧ КАК ПФР_УНЧ,
   |    ТЗН1.ПФР_Разница_СЧ КАК ПФР_Разница_СЧ,
   |    ТЗН1.ПФР_Разница_НЧ КАК ПФР_Разница_НЧ,
   |    ТЗН2.ФизЛицо КАК ФизЛицо,
   |    ТЗН2.НачисленоСтраховая КАК НачисленоСтраховая,
   |    ТЗН2.УплаченоСтраховая КАК УплаченоСтраховая,
   |    ТЗН2.НачисленоНакопительная КАК НачисленоНакопительная,
   |    ТЗН2.УплаченоНакопительная КАК УплаченоНакопительная
   |ИЗ
   |    &ТЗН1 КАК ТЗН1
   |   ВНУТРЕННЕЕ СОЕДИНЕНИЕ &ТЗН2 КАК ТЗН2
   |   ПО ТЗН1.НомерПФР = ТЗН2.НомерПФР";

так ?
28 Buster007
 
20.01.12
15:46
сначала все ТЗ надо поместить во временные таблицы, А потом уже делать с ними всё что угодно.
29 Fish
 
20.01.12
15:47
(27) Посмотри уже (20) Там всё написано :))
30 Рэйв
 
20.01.12
15:47
Выбрать
 Т1.Чтото Чтото1
Поместить ВТ1
ИЗ &Т1 КАК Т1
;
Выбрать
 Т2.Чтото Чтото2
Поместить ВТ2
ИЗ &Т2 КАК Т2
;
Выбрать
ВТ1.Что-то1
Из ВТ1
Внутреннее Соеденение ВТ2
По ВТ1.Чтото1=ВТ2.Чтото2
31 Tata001
 
20.01.12
15:49
не ругайте,просто такое вижу в первый раз....
32 Sabbath
 
20.01.12
15:51
Помещай таблицу запросом во временную и все будет ок. Вообще почаще вспоминай про временные таблицы в запросах
33 Tata001
 
20.01.12
15:57
проверьте ..правильно написала ?
Запрос = Новый Запрос;
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
         
   МассивПФР=Новый Массив;
   
   Для Каждого Строка_ТЗ_ф из Список_ФЛ цикл
       НомерПФР=ПреобразоватьНомерПФРДляПоиска(Строка_ТЗ_ф.Значение.СтраховойНомерПФР);
       МассивПФР.Добавить(НомерПФР);
   КонецЦикла;
   
   //1-ая таблица
Запрос.Текст = "ВЫБРАТЬ *
                 |    
                 |ПОМЕСТИТЬ ТаблицаИзФайла
                 |ИЗ
                 |    &ДанныеФайла КАК Таб
                 |где таб.номерПРФ в (&МассивПФР)";
                 
Запрос.УстановитьПараметр("ДанныеФайла",ТЗ_ФАйл);
Запрос.УстановитьПараметр("МассивПФР",МассивПФР);

Результат = Запрос.Выполнить();  

// 2-ая таблица

Запрос.Текст = "ВЫБРАТЬ *
                 |    
                 |ПОМЕСТИТЬ ТаблицаРасчета
                 |ИЗ
                 |    &ДанныеТаблицыРасчета КАК ТаблицаРасчета";
                 
Запрос.УстановитьПараметр("ДанныеТаблицыРасчета",ТаблицаРасчет);

Результат = Запрос.Выполнить();  

//3-яя таблица. Объединение 2-х таблиц

  Запрос.Текст =
       "ВЫБРАТЬ *
   |ИЗ
   |    ТаблицаИзФайла КАК ТаблицаИзФайла
   |   ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаРасчета КАК ТаблицаРасчета
   |   ПО ТаблицаИзФайла.НомерПФР = ТаблицаРасчета.НомерПФР";
ТЗ_Общая = Запрос.Выполнить().Выгрузить();
34 Tata001
 
20.01.12
16:04
//1-ая таблица
Запрос.Текст = "ВЫБРАТЬ
                 | таб.номерПРФ  
                 |ПОМЕСТИТЬ ТаблицаИзФайла
                 |ИЗ
                 |    &ДанныеФайла КАК Таб
                 |где таб.номерПРФ в (&МассивПФР)";
                 
Запрос.УстановитьПараметр("ДанныеФайла",ТЗ_ФАйл);
Запрос.УстановитьПараметр("МассивПФР",МассивПФР);
==============
выдаёт ошибку
Поле не найдено "таб.номерПРФ"
где таб.<<?>>номерПРФ в (&МассивПФР)
35 Tata001
 
20.01.12
16:05
вижу ощибку
36 Sabbath
 
20.01.12
16:10
пРф - опечатка
37 Sabbath
 
20.01.12
16:12
вообще правильно остальное, но можно одним запросом, к примеру так:

ВЫБРАТЬ
   Таб.номерПФР
ПОМЕСТИТЬ ТаблицаИзФайла
ИЗ
   &ДанныеФайла КАК Таб
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТаблицаРасчета.НомерПФР
ПОМЕСТИТЬ ТаблицаРасчета
ИЗ
   &ДанныеТаблицыРасчета КАК ТаблицаРасчета
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТаблицаИзФайла.номерПФР,
   ТаблицаРасчета.НомерПФР КАК НомерПФР1
ИЗ
   ТаблицаИзФайла КАК ТаблицаИзФайла
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТаблицаРасчета КАК ТаблицаРасчета
       ПО ТаблицаИзФайла.номерПФР = ТаблицаРасчета.НомерПФР
38 Sabbath
 
20.01.12
16:13
ну и тут можно вот так:

Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
39 Tata001
 
20.01.12
16:39
Запрос.Текст = "ВЫБРАТЬ
                 | ФизЛицо.НомерПФР
                 |ПОМЕСТИТЬ ТаблицаРасчета
                 |ИЗ
                 |    &ДанныеТаблицыРасчета КАК ТаблицаРасчета";
==
А можно ли достать реквизит значения из ТЗ ???