|
v7: Что-то не то с запросом, туплю на простом Ø (Злопчинский 25.02.2015 19:48) | ☑ | ||
---|---|---|---|---|
0
katerinaUniv
25.02.15
✎
12:58
|
Доброго времени суток! Помогите с запросом: пытаюсь выбрать всю номенклатуру, которая в папке ФФФ (в эту переменную передаю ссылку на нужную группу)
ТекстЗапроса = " |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент; |Изм = Справочник.Номенклатура.ИзмФереро; |Условие(Номенклатура в ФФФ); |Условие(Изм = 1); |Группировка Номенклатура без групп; |" ; |
|||
1
Classic
25.02.15
✎
13:00
|
Функцию какую-нибудь сделай
|
|||
2
Explorer1c
25.02.15
✎
13:03
|
(0) а почему именно в запросе? А если сделать обычным методом?
|
|||
3
katerinaUniv
25.02.15
✎
13:11
|
(2)так не быстрее? имеете в виду ВыбратьЭлементы()?
|
|||
4
katerinaUniv
25.02.15
✎
13:11
|
(2)база очень большая. ужас, 7.7 вообще не помню(((
|
|||
5
Ёпрст
25.02.15
✎
13:12
|
(0) ну и ?
Что не работает то ? |
|||
6
katerinaUniv
25.02.15
✎
13:15
|
(5) в итоге никаких строк нет, при обходе по запросу в цикл не заходит
|
|||
7
katerinaUniv
25.02.15
✎
13:15
|
(5)как будто результат - 0 строк
|
|||
8
welwel
25.02.15
✎
13:18
|
убрать условия по одному, тем самым проверить какое из них не работает "как надо"
|
|||
9
1Сергей
25.02.15
✎
13:19
|
мало кода
|
|||
10
Ёпрст
25.02.15
✎
13:23
|
(7)
1. передаешь не группу, а не известно что 2. нет элементов в этой группе с реквизитом ИзмФереро=1 |
|||
11
katerinaUniv
25.02.15
✎
13:25
|
(10) измФереро - это признак изменения реквизита (чтобы грузить только то, что было отредактировано пользователем), а ФФФ чуть выше я задаю как группу.
|
|||
12
katerinaUniv
25.02.15
✎
13:26
|
(10) НачатьТранзакцию();
Поиск = СоздатьОбъект("Справочник.Номенклатура"); Если поиск.НайтиПоНаименованию("ФЕРРЕРО", 0, 1) = 1 Тогда ферреро = поиск.ТекущийЭлемент(); Иначе ферреро = ""; КонецЕсли; ТекстЗапроса = " |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент; // |Изм = Справочник.Номенклатура.ИзмФереро; // |Условие(Номенклатура в " + ФЕРРЕРО + "); // |Условие(изм = 1); |Группировка Номенклатура без групп; |" ; |
|||
13
Ёпрст
25.02.15
✎
13:27
|
// |Условие(Номенклатура в " + ФЕРРЕРО + ");
зачет, ага |
|||
14
Ёпрст
25.02.15
✎
13:27
|
ковычки с плюсами там выкини и расскоменти, и больше так не пиши никогда.
|
|||
15
katerinaUniv
25.02.15
✎
13:34
|
(14) и без них не работает
|
|||
16
Cap_1977
25.02.15
✎
13:35
|
Сообщить("" + ферреро");
Чо напишет ? |
|||
17
1Сергей
25.02.15
✎
13:36
|
(16) напишет Синтаксис еррор
|
|||
18
Ёпрст
25.02.15
✎
13:37
|
Та ну ?
//НачатьТранзакцию(); Это еще накуа ?? Поиск = СоздатьОбъект("Справочник.Номенклатура"); Если поиск.НайтиПоНаименованию("ФЕРРЕРО", 0, 1) = 1 Тогда Если поиск.ЭтоГруппа()=1 Тогда ферреро = поиск.ТекущийЭлемент(); Иначе Предупреждение("Пнх, Альфредо, нашли какую-то х..ню! Это не группа."); Возврат; КонецЕсли; Иначе ферреро = ""; КонецЕсли; ТекстЗапроса = " |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент; |Изм = Справочник.Номенклатура.ИзмФереро; |Условие(Номенклатура в ферреро); |Условие(изм = 1); |Группировка Номенклатура без групп; |" ; Запрос.Выполнить(ТекстЗапроса); Запрос.Выгрузить(ферреро); ферреро.ВыбратьСтроку(); |
|||
19
Builder
25.02.15
✎
13:39
|
Сделай на форме реквизит ВыГруппа и по нему сделай отбор.
Сильно удивишься. |
|||
20
katerinaUniv
25.02.15
✎
13:39
|
(16) пишет "ферреро" - имя группы
|
|||
21
Builder
25.02.15
✎
13:40
|
(19) Даже проще - сделай на форме реквизит "ферреро" с нужным типом и оставь все как есть.
|
|||
22
katerinaUniv
25.02.15
✎
13:41
|
(18) задача стоит в выгрузке всей измененной номенклатуры из конкретной папки. если хотя бы в одной номенклатуре из списка не проставлен код по системе поставщика (реквизит), то выгрузка останавливается, файл удаляется. в процессе обработки строк запроса для каждой номенклатуры признак измененности снимается.
так вот, если есть ошибка, я отменяю транзакцию, и все позиции все так же помечены измененными. |
|||
23
katerinaUniv
25.02.15
✎
13:41
|
(19) мне нужно без формы
|
|||
24
Builder
25.02.15
✎
13:42
|
(23) А ты попробуй. Заполнить то его можно и как у тебя есть. Можешь даже скрыть его.
|
|||
25
Cap_1977
25.02.15
✎
13:45
|
МОжет все просче:
Условие(Номенклатура в ферреро); И Условие(изм = 1); Дают пустую выборку ? |
|||
26
Ёпрст
25.02.15
✎
13:45
|
(22)
да уж.. т.е ты в не закрытой транзакции делаешь всем элементам ИзмФереро=1, потом там же лепишь запрос с условием ИзмФереро=1 и пытаешь что-то получить ? Так что ле ? |
|||
27
katerinaUniv
25.02.15
✎
13:47
|
(25) так в группе есть 2 элемента с изм = 1
|
|||
28
Ёпрст
25.02.15
✎
13:48
|
(27) больше кода
|
|||
29
Builder
25.02.15
✎
13:48
|
Это один из глюков 1С - условие в запросе нормально работает только с элементами на форме. Сталкивался не раз.
|
|||
30
Ёпрст
25.02.15
✎
13:48
|
запрос в (0) - рабочий, если делать как в (18)
|
|||
31
Ёпрст
25.02.15
✎
13:48
|
(29) херню несешь
|
|||
32
Builder
25.02.15
✎
13:49
|
(31) Ну ну...
|
|||
33
katerinaUniv
25.02.15
✎
13:50
|
(26) не совсем. там как-то так:
начатьТранзакцию() делаю запрос прохожу по результату запроса и 1)пишу в файл нужную информацию 2)для позиции номенклатуры ставлю изм = 0 если не было ошибок, завершаю тразакцию, если ошибки были - отменяю. дело в том, что на выгрузку может быть 10000 позиций. если у одной не заполнен код поставщика, то все 10000 надо выгружать повторно. если ошибка была на 100й позиции, то пометка изм уйдет у первых 99 |
|||
34
Ёпрст
25.02.15
✎
13:50
|
(32) чего ну-ну ?
Ну сделай воспроизводимый пример, где условие не сработает, если ЭТО не реквизит формы. |
|||
35
Builder
25.02.15
✎
13:51
|
(34) Ну если у ТС с реквизитом формы заработает, то это он и есть.
|
|||
36
Ёпрст
25.02.15
✎
13:51
|
(33) что показывает (18) ?
|
|||
37
Ёпрст
25.02.15
✎
13:52
|
(35) см. (31)
|
|||
38
1Сергей
25.02.15
✎
13:52
|
(33) Транзакция здесь не нужна вообще
|
|||
39
1Сергей
25.02.15
✎
13:55
|
||||
40
katerinaUniv
25.02.15
✎
13:58
|
(36) ничего, даже если полностью как в (18) сделать
|
|||
41
katerinaUniv
25.02.15
✎
13:59
|
(38) как тогда откатить сброс реквизита изм?
|
|||
42
katerinaUniv
25.02.15
✎
13:59
|
или два цикла?
|
|||
43
Builder
25.02.15
✎
14:00
|
(40) На форму пробовала реквизит вещать?
|
|||
44
1Сергей
25.02.15
✎
14:00
|
(41) так вы изменяете элементы справочника при выгрузке? ну, тогда надо, да
|
|||
45
katerinaUniv
25.02.15
✎
14:01
|
(43) думаю причина в том, что внутри папки Фереро есть другие папки. а вот уже в них и есть позиции номенклатуры. в моем примере Фереро -> Киндер -> Киндер Сюрприз
|
|||
46
katerinaUniv
25.02.15
✎
14:01
|
что-то наподобие в иерархии, наверное, буду сейчас искать
|
|||
47
PuhUfa
25.02.15
✎
14:01
|
На всякий случай:
Справочник.Номенклатура.ИзмФереро - тип? |
|||
48
1Сергей
25.02.15
✎
14:02
|
(45) Конструкция Условие(.. в ...) это понимает прекрасно
|
|||
49
katerinaUniv
25.02.15
✎
14:02
|
(47) число
|
|||
50
Ёпрст
25.02.15
✎
14:03
|
(41)
Ладно, давай тест на вшивость: Процедура Сформировать() Перем ТЗ; Поиск = СоздатьОбъект("Справочник.Номенклатура"); Если поиск.НайтиПоНаименованию("ФЕРРЕРО", 0, 1) = 1 Тогда Если поиск.ЭтоГруппа()=1 Тогда ферреро = поиск.ТекущийЭлемент(); Иначе Предупреждение("Пнх, Альфредо, нашли какую-то х..ню! Это не группа."); Возврат; КонецЕсли; Иначе Предупреждение("Пнх, Альфредо, вообще нихрена нет!"); Возврат; КонецЕсли; ТекстЗапроса = " |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент; |Изм = Справочник.Номенклатура.ИзмФереро; |Условие(Номенклатура в ферреро); |Условие(изм = 1); |Группировка Номенклатура без групп; |" ; Запрос.Выполнить(ТекстЗапроса); Запрос.Выгрузить(ТЗ,0,0); ТЗ.ВыбратьСтроку();//Тут есть че ? Поиск.ИспользоватьРодителя(ферреро); Поиск.ВыбратьЭлементы(); Пока Поиск.ПолучитьЭлемент() = 1 Цикл Если Поиск.ЭтоГруппа()=1 Тогда Продолжить; КонецЕсли; Если Поиск.ИзмФереро<>1 Тогда Продолжить; КонецЕсли; Сообщить(Поиск.ТекущийЭлемент(),"i");//тут есть че ? КонецЦикла; КонецПроцедуры |
|||
51
katerinaUniv
25.02.15
✎
14:03
|
(47)если убираю условие по папке, то условие с изм нормально работает
|
|||
52
Ёпрст
25.02.15
✎
14:04
|
запускай, сообщай, че видишь, че пишет..
|
|||
53
katerinaUniv
25.02.15
✎
14:07
|
(50) (52) пустую тз
|
|||
54
Ёпрст
25.02.15
✎
14:07
|
(53) и ? И ничего потом не сообщает, верно ?
|
|||
55
katerinaUniv
25.02.15
✎
14:07
|
(54)да
|
|||
56
Ёпрст
25.02.15
✎
14:08
|
Вывод тебе подсказать, или еще подумаешь ?
|
|||
57
Ёпрст
25.02.15
✎
14:09
|
(55) У тебя нет Элементов в группе с наименованием Ферерро , у которых в реквизите ИзмФереро торчит число единица.
|
|||
58
Ёпрст
25.02.15
✎
14:09
|
и во всех вложенных тоже, если че.
|
|||
59
Ёпрст
25.02.15
✎
14:11
|
в этом, можешь убедиться, так, например:
//******************************************* Процедура Сформировать() Перем ТЗ; Поиск = СоздатьОбъект("Справочник.Номенклатура"); Если поиск.НайтиПоНаименованию("ФЕРРЕРО", 0, 1) = 1 Тогда Если поиск.ЭтоГруппа()=1 Тогда ферреро = поиск.ТекущийЭлемент(); Иначе Предупреждение("Пнх, Альфредо, нашли какую-то х..ню! Это не группа."); Возврат; КонецЕсли; Иначе Предупреждение("Пнх, Альфредо, вообще нихрена нет!"); Возврат; КонецЕсли; ТекстЗапроса = " |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент; |Изм = Справочник.Номенклатура.ИзмФереро; |Условие(Номенклатура в ферреро); //|Условие(изм = 1); |Группировка Номенклатура без групп; |" ; Запрос.Выполнить(ТекстЗапроса); Запрос.Выгрузить(ТЗ,1,0); ТЗ.ВыбратьСтроку();//Тут есть че ? Поиск.ИспользоватьРодителя(ферреро); Поиск.ВыбратьЭлементы(); Пока Поиск.ПолучитьЭлемент() = 1 Цикл Если Поиск.ЭтоГруппа()=1 Тогда Продолжить; КонецЕсли; Если Поиск.ИзмФереро<>1 Тогда //Продолжить; КонецЕсли; Сообщить(""+Поиск.ТекущийЭлемент()+" реквизит ИзмФереро="+Поиск.ИзмФереро,"i");//тут есть че ? КонецЦикла; КонецПроцедуры |
|||
60
Злопчинский
25.02.15
✎
14:14
|
Я просто поражаюсь терпению Епрста
|
|||
61
D_E_S_131
25.02.15
✎
14:16
|
(59) СЗОТ, а кто такой Альфредо? Что-то не припоминаю его на этом форуме.
|
|||
62
1Сергей
25.02.15
✎
14:18
|
Сообщить("Ферреро группа? = " + ферреро.ЭтоГруппа());
|
|||
63
D_E_S_131
25.02.15
✎
14:18
|
(60) Видать "семерошник" ностальгирует.
|
|||
64
Злопчинский
25.02.15
✎
14:19
|
Может девочку не мучить кодом
А пусть тупо угиверсальной обработкой подбора Или универсальной печатью справочников Получит список по условию изм равно один |
|||
65
Злопчинский
25.02.15
✎
14:20
|
(63) если Епрст вникнет в снеговика (а оно ему надо?)
То 95% восьмерочников умоются слезами |
|||
66
D_E_S_131
25.02.15
✎
14:20
|
(64) Это называется "давайте не будем мучать девочку, а хотя бы перевернем ее".
|
|||
67
katerinaUniv
25.02.15
✎
14:26
|
(59) но самое интересное, что внутри этой группы есть еще одна группу, в которой есть как минимум одна позиция, у которой реквизит = 1
|
|||
68
Ёпрст
25.02.15
✎
14:26
|
(67) нету.
|
|||
69
Ёпрст
25.02.15
✎
14:26
|
код в (59) запустила ?
Ты там ЭТО видишь ? |
|||
70
D_E_S_131
25.02.15
✎
14:27
|
(69) Хочешь что бы она полностью выполняла то, что ты говоришь? Женись! :)
|
|||
71
Ёпрст
25.02.15
✎
14:27
|
Не забывай, что мы смотрим ТОЛЬКО элементы справочника (а не группы)
|
|||
72
Злопчинский
25.02.15
✎
14:28
|
Давайте блин быстрей решайте
А то у меня метро скорокончается а я без симки в планшете |
|||
73
katerinaUniv
25.02.15
✎
14:29
|
сделала поиск по коду - заработало
|
|||
74
Злопчинский
25.02.15
✎
14:29
|
Девочка катя
Дай уже Епрсту ид и пароль на тимвьювер Не могу больше на это непотребство смотреть Прямо какойто немецкий дас ист фантастиш |
|||
75
Злопчинский
25.02.15
✎
14:30
|
(73) а теперь склпипасть наименование группы и сравни с наименованием фереро по буквам
|
|||
76
Cap_1977
25.02.15
✎
14:30
|
А я еще в (25) говорил ...
|
|||
77
D_E_S_131
25.02.15
✎
14:31
|
(76) Нельзя слепо верить всему, что пишут в интернете.
|
|||
78
Злопчинский
25.02.15
✎
14:31
|
(73) эту группу вынеси или в константы или в реквизит на форме
Чтобы не извращаться поиском Завтра перенумеруют справочник и получишь очередную (__о__) |
|||
79
D_E_S_131
25.02.15
✎
14:34
|
(78) А что, завтра форум уже не будет работать или сегодня у Ёпрст-а последний день на этой грешной земле?
|
|||
80
ДенисЧ
25.02.15
✎
14:36
|
(79) А там он женится на Кате и помогать будет приватно ))
|
|||
81
Злопчинский
25.02.15
✎
14:40
|
Да в этой ветке кто уже на кате не женился
|
|||
82
D_E_S_131
25.02.15
✎
14:41
|
(81) Вертихвостка! А "Ферреро" это намек, не иначе!
|
|||
83
katerinaUniv
25.02.15
✎
14:42
|
О.о злые вы все. просто сплю по 3,5 часа в сутки, вот и торможу
|
|||
84
D_E_S_131
25.02.15
✎
14:45
|
(83) Может тогда тебе вздремнуть, а в 18:15 (по Мск) скажешь, что выдает код из (59)?
|
|||
85
ДенисЧ
25.02.15
✎
14:47
|
(81) я, например...
|
|||
86
katerinaUniv
25.02.15
✎
15:14
|
спасибо за помощь и поддержку)
|
|||
87
katerinaUniv
25.02.15
✎
15:15
|
у меня все получилось
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |