Имя: Пароль:
1C
1С v8
Запрос по всем документам за период
,
0 Dmitrith
 
26.07.12
11:54
Нужно составить запрос по всем документам в определенном диапазоне дат с условием по свойству документа. Мой запрос выдает что слишком много полей. Как запрос поумнее сделать?

   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    ЗначенияСвойствОбъектов.Объект,
                  |    ЗначенияСвойствОбъектов.Свойство,
                  |    ЗначенияСвойствОбъектов.Значение,
                  |    ЗначенияСвойствОбъектов.Объект.Дата
                  |ИЗ
                  |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                  |ГДЕ
                  |    ЗначенияСвойствОбъектов.Свойство = &ПризнакЗагрузки
                  |    И ЗначенияСвойствОбъектов.Значение = &ИД
                  |    И ЗначенияСвойствОбъектов.Объект.Дата МЕЖДУ &НачДата И &КонДата";
   
   Запрос.УстановитьПараметр("ПризнакЗагрузки",ПризнакЗагрузки );
   Запрос.УстановитьПараметр("ИД",Истина);
   Запрос.УстановитьПараметр("НачДата",НачПериода);
   Запрос.УстановитьПараметр("КонДата",КонПериода);
1 Господин ПЖ
 
26.07.12
11:55
разрешаю ограничить Объект по ССЫЛКА
2 Господин ПЖ
 
26.07.12
11:56
>Мой запрос выдает что слишком много полей

я бы тоже охренел
3 ukolabrother
 
26.07.12
11:57
|    И ЗначенияСвойствОбъектов.Значение = &ИД
Запрос.УстановитьПараметр("ИД",Истина);
отлично написано
4 Dmitrith
 
26.07.12
11:58
(1)(3) Эх.. любите вы поиздеваться над нубами )
5 Bolik1979
 
26.07.12
12:02
(3) А что не так то?
6 Господин ПЖ
 
26.07.12
12:59
(4) лучше так, чем работодатель потом ногой под сраку...
7 Dmitrith
 
26.07.12
13:05
(6) чем лучше?
8 Dmitrith
 
26.07.12
13:06
Народ я правильно понял что я не могу в запросе выбрать все документы без указания вида документа, и что мне вместо одного запроса надо в цикле формировать кучу запросов для такой банальной операции как снять/поставить пометку удаления к примеру
9 PCcomCat
 
26.07.12
13:15
Просто многие не поняли вопрос. А чего хочется-то?
10 Dmitrith
 
26.07.12
13:17
(9) Получить список всех документов (независимо от вида документа) в заданном диапазоне дат и с условием по свойству документа. потом уже обработать этот список документов
11 PCcomCat
 
26.07.12
13:20
ПризнакЗагрузки = ? - значение там какое?
12 hhhh
 
26.07.12
13:22
(8) а есть разница? Что так у тебя 256 запросов формируется, что ты в цикле сформируешь?
13 PCcomCat
 
26.07.12
13:23
Думаю, это поможет:

       Запрос = Новый Запрос;
       Запрос.Текст =
       "ВЫБРАТЬ
       |    ЗначенияСвойствОбъектов.Свойство.Наименование,
       |    ЗначенияСвойствОбъектов.Свойство,
       |    ЗначенияСвойствОбъектов.Объект,
       |    ЗначенияСвойствОбъектов.Значение
       |ИЗ
       |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
       |ГДЕ
       |    ЗначенияСвойствОбъектов.Свойство.Наименование = &ДопРеквизит
       |    И ЗначенияСвойствОбъектов.Объект = &ДокОбъект";
       
       Запрос.УстановитьПараметр("ДопРеквизит","Запрет изменения");
       Запрос.УстановитьПараметр("ДокОбъект",Ссылка);
14 Dmitrith
 
26.07.12
13:24
(12) Ну, к примеру, для проведения документов разница есть - провести сначала все документы ПоступлениеТоваров за месяц а потом начать проводить РасходТоваров
15 PCcomCat
 
26.07.12
13:24
"Мой запрос выдает что слишком много полей" - наверное это равно фразе "Мой запрос выдает что слишком много строк в результате".
16 Dmitrith
 
26.07.12
13:27
(13) не поможет. Ссылка - это ссылка на документ, так ведь?
17 Dmitrith
 
26.07.12
13:28
Чтобы понятнее было, вот весь текст процедуры. Пока натравленный на проведение/распроведение документов

   ПризнакЗагрузки = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Признак загрузки");
   
       
       Запрос = Новый Запрос;
       Запрос.Текст = "ВЫБРАТЬ
                      |    ЗначенияСвойствОбъектов.Объект,
                      |    ЗначенияСвойствОбъектов.Свойство,
                      |    ЗначенияСвойствОбъектов.Значение,
                      |    ЗначенияСвойствОбъектов.Объект.Дата
                      |ИЗ
                      |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                      |ГДЕ
                      |    ЗначенияСвойствОбъектов.Свойство = &ПризнакЗагрузки
                      |    И ЗначенияСвойствОбъектов.Значение = &ИД
                      |    И ЗначенияСвойствОбъектов.Объект.Дата МЕЖДУ &НачДата И &КонДата";
       
       Запрос.УстановитьПараметр("ПризнакЗагрузки",ПризнакЗагрузки );
       Запрос.УстановитьПараметр("ИД",Истина)
       Запрос.УстановитьПараметр("НачДата",НачПериода);
       Запрос.УстановитьПараметр("КонДата",КонПериода);
       
       Результат = Запрос.Выполнить();
       Выборка = Результат.Выбрать();
       Пока Выборка.Следующий() Цикл
           ТекЗн = Выборка.Значение;
           Док = Выборка.Объект;
           Если флПроводить Тогда
               Док.Записать(РежимЗаписиДокумента.Проведение);
           Иначе
               Если Док.Проведен Тогда
                   Док.Записать(РежимЗаписиДокумента.ОтменаПроведения);
               КонецЕсли;
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
18 Dmitrith
 
26.07.12
13:29
Ошибка выполнения запроса
по причине:
Построенный запрос к СУБД использует слишком много таблиц. Допустимо не более 256.
19 PCcomCat
 
26.07.12
13:31
(18) Так, а отбор-то проводится по определенному дополнительному реквизиту???
20 hhhh
 
26.07.12
13:32
(14) ну в запросе из (0) твоем в этом смысле вообще полный бред, потому что там в регистре объекты в полном беспорядке не только повидам но и по годам.
21 PCcomCat
 
26.07.12
13:33
А если так:    

|    ЗначенияСвойствОбъектов.Свойство.Наименование = &ДопРеквизит


и

  Запрос.УстановитьПараметр("ДопРеквизит","Признак загрузки");

Что в результате?
22 ErrorEd88
 
26.07.12
13:34
Групповая обработка справочников и документов чем не подходит?
23 Dmitrith
 
26.07.12
13:35
(19) по свойству документа. Свойства документов лежат в регистре сведений
(20) Почему бред? В запросе документы можно упорядочить как тебе захочется.
(22) Групповая обработка умеет отбирать по свойству документа?
24 hhhh
 
26.07.12
13:38
(23) так и в (12) пишешь в конце запроса УПОРЯДОЧИТЬ ПО Дата и у тебя будет по датам. С чего ты решил, что там по поступлениям?
25 Dmitrith
 
26.07.12
13:39
(24) если я в цикле буду делать запрос по видам документов то сначала сработает запрос по Авансовым отчетам и т.д.
26 PCcomCat
 
26.07.12
13:43
Я одна туплю? Чего же всё-таки нужно? Задача какая?
27 Dmitrith
 
26.07.12
13:46
(26) в (17) полный код процедуры. Последний "КонецЦикла" только лишний. Если убрать условия по периоду все работает.
28 PCcomCat
 
26.07.12
13:49
()Что работает? Что должно работать?
29 Dmitrith
 
26.07.12
13:56
Должна получаться выборка документов со свойством документа "ПризнакЗагрузки" = Истина. Но т.к. документов в конфигурации >256 ограничить условием по дате эту выборку не получается
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс