|
Помогите зациклить запрос | ☑ | ||
---|---|---|---|---|
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
|
))) "гвозди бы делать из этих людей..."
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |