Имя: Пароль:
1C
1С v8
Помогите зациклить запрос
,
0 dred999
 
13.03.15
11:59
Всем привет. В бухгалтерии 8.2 нужно перебрать справочник контрагентов и найти контрагентов с определенным названием.
Делаю обработку, с реквизитом ЧтоУдалить.
в ней запрос:
        
Спр = Справочники.Контрагенты.Выбрать();
   Пока Спр.Следующий() Цикл
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Организация", "%"  + ЧтоУдалить + "%");
Запрос.Текст =
"ВЫБРАТЬ
|    Контрагенты.Наименование
|ИЗ
|    Справочник.Контрагенты КАК Контрагенты
|ГДЕ
|    Контрагенты.Наименование ПОДОБНО &Организация";
  РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
      Если  Выборка.Следующий() Тогда
Сообщить(Выборка.Наименование);
     КонецЕсли;
    КонецЦикла;

Он находит то что мне нужно, и одну и туже организацию просто прогоняет по кругу... а дальше искать не идет...
Чтов цикле не правильно?
1 mikecool
 
13.03.15
12:00
не пользуйся циклом, выбери все одним запросом
2 kosts
 
13.03.15
12:02
(0) > Помогите зациклить запрос
Уже зациклено без нас
3 Повелитель
 
13.03.15
12:04
(0)

Этого достаточно:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Организация", "%"  + ЧтоУдалить + "%");
Запрос.Текст =
"ВЫБРАТЬ
|    Контрагенты.Наименование
|ИЗ
|    Справочник.Контрагенты КАК Контрагенты
|ГДЕ
|    Контрагенты.Наименование ПОДОБНО &Организация";
  РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
      Если  Выборка.Следующий() Тогда
Сообщить(Выборка.Наименование);
     КонецЕсли;


А верхний цикл не понятно зачем
4 dred999
 
13.03.15
12:04
Одним запросом?
5 Повелитель
 
13.03.15
12:05
(4) Почитай что такое "Запрос". Зачем его используют, какие данные он возвращает.
6 dred999
 
13.03.15
12:07
Попробывал (0), без цикла одним запросом. он останавливается на первом найденно и дальше искать не идет.
7 Drac0
 
13.03.15
12:07
(0) Грех на душу взять просишь?
8 pavelul73
 
13.03.15
12:08
так напиши вместо
Если Выборка.Следующий()
Пока Выборка.Следующий() Цикл
КонецЦикла;
9 dred999
 
13.03.15
12:08
Нет не грех, а только подсказать. где я тупл...ю
10 Drac0
 
13.03.15
12:09
(0) Надо не "Если  Выборка.Следующий() Тогда ...", а "Пока Выборка.Следующий() Цикл ..."
11 Drac0
 
13.03.15
12:09
+(10) и эту хрень убери:

Спр = Справочники.Контрагенты.Выбрать();
   Пока Спр.Следующий() Цикл
12 dred999
 
13.03.15
12:11
Drac0  - Правильно!
13 dred999
 
13.03.15
12:11
Сработало!
14 vde69
 
13.03.15
12:11
Спр = Справочники.Контрагенты.Выбрать();
   Пока Спр.Следующий() Цикл
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Организация", "%"  + ЧтоУдалить + "%");
Запрос.Текст =
"ВЫБРАТЬ
|    Контрагенты.Ссылка
|ИЗ
|    Справочник.Контрагенты КАК Контрагенты
|ГДЕ
|    Контрагенты.Наименование ПОДОБНО &Организация";
  РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
      Если  Выборка.Следующий() Тогда
Сообщить(Выборка.Ссылка.Наименование);
     КонецЕсли;
    КонецЦикла;
15 cw014
 
13.03.15
12:13
Демоны, отойдите от 1С
16 dred999
 
13.03.15
12:13
Вот теперь мне нужно в найденных конрагентах в наименовании (если я ищу все организации с названием ООО ".....") удалить ООО. Каким это оператором делается? :(
17 Chameleon1980
 
13.03.15
12:15
(16) уау. Счас начнется.
18 dred999
 
13.03.15
12:15
))
19 pavelul73
 
13.03.15
12:17
СтрЗаменить(Твоеназвание, "ООО","");
20 vde69
 
13.03.15
12:18
Результат = УдалитьООО(Выборка);
21 rifat
 
13.03.15
12:19
(19) + не забыть записать элемент
22 dred999
 
13.03.15
12:28
vde69 Ставлю
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока  Выборка.Следующий() Цикл
    Сообщить(Выборка.Наименование);
Результат = Удалить.ЧтоУдалить(Выборка);

Выбивает ошибку - Переменная не определена "Удалить"
23 salvator
 
13.03.15
12:32
(22) Обнови конфигурацию до последней, метод просто новый.
24 pavelul73
 
13.03.15
12:32
(22) )))))
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока  Выборка.Следующий() Цикл
    Сообщить(Выборка.Наименование);
НовоеНаименование = СтрЗаменить(Выборка.Наименование,"ООО","");
Сообщить(НовоеНаименование);
25 salvator
 
13.03.15
12:32
И платформу тоже.
26 pavelul73
 
13.03.15
12:33
(23) зачем же так жестко. Человек изучает 1с, все мы когда-то с таких вот мелочей начинали
27 dred999
 
13.03.15
12:34
Дааа! Я только изучаю (((((
28 salvator
 
13.03.15
12:36
(26) Дык пятнично же!
(27) В переборе выборки получай объект, меняй наименование через СтрЗаменить, и записывай объект.
Тебе же надо именно в элементах справочника изменить наименования? Или просто выводить скорректированные наименования?
29 dred999
 
13.03.15
12:39
Просто поменять наименование (Допустим убрать ИП, или ООО, или ЗАО а оставить только название без этих ИП ЗАО ООО
)
30 kosts
 
13.03.15
12:41
(28) > В переборе выборки получай объект
Не все так просто. Если выборка идет в порядке наименований, то возможно будут обработаны не все элементы.

Надо установить в порядке кодов.
31 rifat
 
13.03.15
12:41
(24) +

ДокОбъект = Выборка.Ссылка.ПролучитьОбъект();
ДокОбъект.Наименование = НовоеНаименование ;
ДокОбъект .Записать()
32 dred999
 
13.03.15
12:41
Вот делаю вот так вот, вроде все пробегается, захожу в справочник а все контрики все равно стоят с ИП ООО ЗАО



РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока  Выборка.Следующий() Цикл
   Сообщить(Выборка.Наименование);
    НовоеНаименование = СтрЗаменить(Выборка.Наименование, ЧтоУдалить,"");
КонецЦикла;
33 salvator
 
13.03.15
12:42
(29) Учти, что СтрЗаменить поменяет одно на другое без разбору. Если у тебя будет ЗАО "Заоблачный мир", то получишь в итоге "блачный мир".
34 LastSoldier
 
13.03.15
12:42
(32) а почему не записал ДокОбъект .Записать()? ничего меняться и не будет без записи
35 rifat
 
13.03.15
12:44
(32) см. в (31)
36 LastSoldier
 
13.03.15
12:44
(33) так нам надо просто удалить первые три или первые два символа, не надо последовательность символов удалять, тогда он и будет прогонять всю строку и будет так как Вы описали
37 salvator
 
13.03.15
12:44
+(33) Если регистр конечно совпадет. Мало ли, но теоретически можно попортить.
38 salvator
 
13.03.15
12:46
(36) Тогда уж искать позицию первого пробела и выделять часть справа от него.
39 dred999
 
13.03.15
12:47
(33)  Нужно удалить только первые буквы в названии (ООО или ЗАО или ИП) Это я куазываю в элементе обработки "ЧтоУдалить"
40 LastSoldier
 
13.03.15
12:48
(38)согласен или так
41 dred999
 
13.03.15
12:50
(33)  Если ты прав то это будет капец..
42 LastSoldier
 
13.03.15
12:51
(41) тогда лучше используй (36) или (38)
43 salvator
 
13.03.15
12:53
(39)
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока  Выборка.Следующий() Цикл
   СпрОбъект = Выборка.Ссылка.ПолучитьОбъект();  
   Наименование = СокрЛП(СпрОбъект.Наименование);
   ПозицияПробела = Найти(Наименование," ");
   Длина = СтрДлина(Наименование);
   НовоеНаименование = Сред(Наименование,ПозицияПробела+1,Длина-ПозицияПробела);
   СпрОбъект.Наименование = НовоеНаименование;
   СпрОбъект.Записать();
КонецЦикла;
44 dred999
 
13.03.15
12:55
Пробую вот так вот


РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока  Выборка.Следующий() Цикл
    Сообщить(Выборка.Наименование);
НовоеНаименование = СтрЗаменить(Выборка.Наименование, ЧтоУдалить,"");
ДокОбъект = Выборка.Ссылка.ПролучитьОбъект();
   ДокОбъект.Наименование = НовоеНаименование ;
                         ДокОбъект .Записать();                 
                КонецЦикла;



Выбивает ошибку:
{Обработка.РедактированиеКонтрагентов.Форма.Форма.Форма(44)}: Поле объекта не обнаружено (Ссылка)
                                    ДокОбъект = Выборка.Ссылка.ПролучитьОбъект();
45 salvator
 
13.03.15
12:56
(44) Ты в запросе выбираешь ссылку? Как в тексте запроса в (14)
46 D_E_S_131
 
13.03.15
13:14
(45) Ща будет вопрос "Зачем в запросе выбирать ссылку, если нужно изменить только наименование?" и вы все повеситесь. :))
47 dred999
 
13.03.15
15:48
Не такого вопроса не будет
48 anatoly
 
13.03.15
15:57
(25) и самое главное - прокладку. между стулом и клавиатурой.
(26) человек не то что программировать вообще не умеет, у него с логикой элементарной явные проблемы.
49 dred999
 
13.03.15
16:32
Вот весь код. Но все равно ошибка

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Организация", ЧтоУдалить + "%");
Запрос.Текст =
"ВЫБРАТЬ
|    Контрагенты.Ссылка
|ИЗ
|    Справочник.Контрагенты КАК Контрагенты
|ГДЕ
|    Контрагенты.Наименование ПОДОБНО &Организация";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока  Выборка.Следующий() Цикл
Сообщить(Выборка.Ссылка);
НовоеНаименование = СтрЗаменить(Выборка.Ссылка, ЧтоУдалить,"");
ДокОбъект = Выборка.Ссылка.ПролучитьОбъект();
ДокОбъект.Наименование = НовоеНаименование;  
ДокОбъект.Записать();          
КонецЦикла;

Ошибка
{Обработка.РедактированиеКонтрагентов.Форма.Форма.Форма(22)}: Метод объекта не обнаружен (ПролучитьОбъект)
                                   ДокОбъект = Выборка.Ссылка.ПролучитьОбъект();
50 anatoly
 
13.03.15
16:33
(49) как ты пишешь/читаешь???
Метод объекта не обнаружен (ПролучитьОбъект)!!!
что это за метод???
51 Shrek_yar
 
13.03.15
16:38
(49)
надо писать

ЗахватитьОбъект();
52 dred999
 
13.03.15
16:38
(31)  Так мне посоветовал
53 dred999
 
13.03.15
16:40
ЗахватитьОбъект();   Та же самая ошибка - Метод объекта не обнаружен
54 vicof
 
13.03.15
16:41
(53) Пролучить? Рентгентом?
55 dred999
 
13.03.15
16:43
))))) ААААААА
56 salvator
 
13.03.15
16:44
(52) В наше время никому верить нельзя.
Доверься синтакс-помощнику, и да прибудет с тобой Сила!
57 dred999
 
13.03.15
16:45
вот я позорищееее!! ааа.а.а.а.а..а.а.)))) Спаибо всем Ребят!!!
58 Бледно Золотистый
 
13.03.15
16:45
Вот она, пятничная ветка!!!
59 dred999
 
13.03.15
16:46
Да да! Сегодня надо нахрюкаться )) капеццц.. вот она невнимательность... а ха хаахах
60 Shrek_yar
 
13.03.15
16:47
п..ц парень нашел повод, смотри не промахнить и в этом.
61 Shrek_yar
 
13.03.15
16:47
Чистова смоти лучше иил еще другие уроки
62 dred999
 
13.03.15
16:48
Да. Чистова смотрю!.
63 anatoly
 
13.03.15
16:49
(56) я вообще просто через каждые 2 буквы при написании кода жму ctrl+space
64 Бледно Золотистый
 
13.03.15
16:51
(63) Я тоже, но с Выборка.Ссылка не сработает ((
65 dred999
 
13.03.15
16:54
Сработала! Он ищет и удаляет
66 Крошка Ру
 
13.03.15
16:55
(63)Ну слава Богу! Теперь ждем следующей ветки "Как восстановить ошибочно удаленную информацию"
67 dred999
 
13.03.15
16:59
)))) Я сделал БЭКАПППП!!!!))))
68 D_E_S_131
 
13.03.15
17:28
(67) Вале-ера, да ты просто мегачел!
69 ssh2006
 
13.03.15
17:47
(67) человечище
70 Крошка Ру
 
13.03.15
18:52
))) "гвозди бы делать из этих людей..."
Закон Брукера: Даже маленькая практика стоит большой теории.