Имя: Пароль:
1C
1C 7.7
v7: Не попадают значения в запрос
,
0 Кейси райбек
 
18.02.12
18:11
Здравствуйте. Столкнулся с такой проблемой. Есть баз 1с 7.7 sql 2000.
При выборке справочника запросом некоторые элементы справочника не попадают в запрос,если выбран родитель элемента. Перебираю ту же группу справочника методом ПокаПолучитьЭлемент() все значения попадают. Код запроса приводить не буду т.к. дело не в коде, а с базой что-то.
Что я попытался сделать - тестирование и исправление не помогло.
Веду копию БД. Восстановил оттуда только справочник товары (проблемный справочник), через экспорт таблиц в ms sql - помогло. Но через не которое время опять проблема повторилась. Теперь я знаю, как это лечится, но не могу понять из-за чего это происходит. Пока сетую на такие вещи: большой справочник товары (порядка 40 тыс. записей) и для написания отчетов, обработок юзаю опенконф. Кто-что думает?
1 Tatitutu
 
18.02.12
18:20
или пить бросай или чаще закусывай.
2 KRV
 
18.02.12
18:21
"...Код запроса приводить не буду т.к. дело не в коде.." в коде, батенька, в коде.. в коде ДНК...
3 Кейси райбек
 
18.02.12
18:39
Нет проблем.
Перебираем методом ПолучитьЭлемент()

//*******************************************
Процедура Сформировать()
   СПр = СоздатьОбъект("Справочник.Товары");
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица");
   Спр.ИспользоватьРодителя(ВыбТовары);
   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент() = 1 Цикл
       Таб.ВЫвестиСекцию("Товар");
   КОнецЦикла;    
   Таб.Показать("таблица");
КонецПроцедуры

Перебираем с помощью запроса

Процедура Сформировать()
   Перем Запрос, ТекстЗапроса, Таб;
   //Создание объекта типа Запрос
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Товары = Справочник.Товары.ТекущийЭлемент;
   |Группировка Товары без групп;
   |Условие(Товары в ВыбТовары);
   |"//}}ЗАПРОС
   ;
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   Пока Запрос.Группировка(1) = 1 Цикл
       Таб.ВывестиСекцию("Товары");
   КонецЦикла;
   Таб.Показать("Сформировать", "");
КонецПроцедуры

Перебираем все, помеченные на удаление тоже. Кол-во записей которые выводят эти процедуры не одинаково, хотя ВыбТовары одна и та же группа.
4 andrewks
 
18.02.12
18:42
а если перед Выполнить() сделать
Запрос.ВключитьSQL(0);
то чё?

и не попадают именно элементы, или группы?
5 Кейси райбек
 
18.02.12
18:50
Если запрос строю без выбора родителя то все ок. Как только ставлю родителя вот такая борода.

Запрос.ВключитьSQL(0);

Тупо все висит.
6 KRV
 
18.02.12
19:01
Пока Спр.ПолучитьЭлемент() = 1 Цикл
   Если Спр.ЭтоГруппа() = 0 Тогда
       Таб.ВЫвестиСекцию("Товар");
   КонецЕсли;
КОнецЦикла;
В переборе вот так попробуй.. ;)
7 Кейси райбек
 
18.02.12
19:07
"В переборе вот так попробуй.. ;)"

Вот народ... Если я восстановлю таблицу этого справочника из копии через скуль менеджер у меня обе процедуры одинаковое значение показывают. Так, что дело не в коде ребята.
8 KRV
 
18.02.12
19:10
Тогда на вопрос "Кто что думает" отвечу - жеппа.
9 andrewks
 
18.02.12
19:10
предлагаешь гадать нам на кофейной гуще? на 2-й вопрос из (4) ответь.

и попробуй уже ближе проанализировать элементы, которые входят в один результат, но не входят во второй. так сказать, ищи 5 отличий
10 Кейси райбек
 
18.02.12
19:15
"предлагаешь гадать нам на кофейной гуще? на 2-й вопрос из (4) ответь."

Не попадают только элементы. Попробую выгрузить базу через конфу и залить обратно
11 ЧеловекДуши
 
18.02.12
19:24
А с чего ты взял, что твой запрос перебирает помеченные на удаления?
12 ЧеловекДуши
 
18.02.12
19:25
(7)Поверь... ДНК, не твой конец ;)
13 ЧеловекДуши
 
18.02.12
19:25
+ конец -> конёк :)
14 Кейси райбек
 
18.02.12
19:40
"А с чего ты взял, что твой запрос перебирает помеченные на удаления?"
А почему бы нет?
15 Cthulhu
 
18.02.12
19:41
"Условие(Товары в ВыбТовары);" - вот тут собака порылась.
в СКЛ в списках фильтра следует использовать только элементы (НЕ группы).
16 Cthulhu
 
18.02.12
19:41
(15)+: и в "черных", и в бух.запросах.
17 Кейси райбек
 
18.02.12
20:07
ВыбТовары в моем случае не список, а диалог формы типа справочник
18 Злой Бобр
 
19.02.12
13:54
(0) Мысль о том что справочник большой неправильная. 40 тыс это как семечки на базаре.
Мысль о том что код правильный также ошибочна. Правильно группировку укажи и все попадет. Это конечно если в диалоге выбрано правильно условие (что-то терзают меня смутные сомнения).
Если база скульная то юзайте прямые запросы.
В данном конкретнолм случае метод прямого перебора будет более правильный, т.к. обращение только к справочнику.
Учите матчасть.
Закон Брукера: Даже маленькая практика стоит большой теории.