Имя: Пароль:
1C
1C 7.7
v7: Запрос к таб части документа
0 1С-ница
 
04.06.13
17:07
Помогите разобраться: нужно чтобы в запросе выбирались услуги из документа.

   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ДатаНач по ДатаКон;
   |Остаток = Регистр.ОстатокНаСчете.Сумма;
   |Клиент = Регистр.ОстатокНаСчете.Клиент;
   |Док = Регистр.ОстатокНаСчете.Документ;
   |ТекДок = Регистр.ОстатокНаСчете.ТекущийДокумент;
   |Функция Нач  = НачОст(Остаток);
   |Функция Прих = Приход(Остаток);
   |Функция Расх = Расход(Остаток);
   |Функция Кон  = КонОст(Остаток);";
   Если флПоДокументам=0 Тогда
       ТекстЗапроса = ТекстЗапроса + "
       |Группировка Клиент;
       |Группировка ТекДок;";
   Иначе
       ТекстЗапроса = ТекстЗапроса + "
       |Группировка Клиент;
       |Группировка Док;
       //|Группировка ТекДок;";
       //Ольга
       |Группировка ТекДок;
       |Группировка Услуга;";
   КонецЕсли;
   Если флПополнения=0 Тогда
       ТекстЗапроса = ТекстЗапроса + "
       |Условие(((ТекДок.Вид()<>""ПриходныйОрдер"") и (ТекДок.Вид()<>""ПоступлениеДенег"") и (ПредставлениеДокумента(ТекДок)<>""Чек на продажу"")) или (Док.Выбран()=0));";
   КонецЕсли;
   Если флОплатаКредита=0 Тогда
       ТекстЗапроса = ТекстЗапроса + "
       |Условие(((ТекДок.Вид()<>""ПриходныйОрдер"") и (ТекДок.Вид()<>""ПоступлениеДенег"") и (ПредставлениеДокумента(ТекДок)<>""Чек на продажу"")) или (Док.Выбран()=1));";
   КонецЕсли;
   Если флСнятия=0 Тогда
       ТекстЗапроса = ТекстЗапроса + "
       |Условие((ТекДок.Вид()<>""РасходныйОрдер"") и (ПредставлениеДокумента(ТекДок)<>""Чек на возврат""));";
   КонецЕсли;
   Если флПродажи=0 Тогда
       ТекстЗапроса = ТекстЗапроса + "
       |Условие((ТекДок.Вид()<>""ОказаниеУслуг"") и (ТекДок.Вид()<>""ПродажаМатериалов"") и (ТекДок.Вид()<>""РасходМатериалов"") и (ТекДок.Вид()<>""ВыдачаКарты""));";
   КонецЕсли;
   Если флВозвраты=0 Тогда
       ТекстЗапроса = ТекстЗапроса + "
       |Условие((ТекДок.Вид()<>""ВозвратУслуг"") и (ТекДок.Вид()<>""ВозвратОтПокупателя""));";
   КонецЕсли;
   ТекстЗапроса = ТекстЗапроса + "
   |Условие(Клиент в ВыбКлиент);
   |"//}}ЗАПРОС
   ;
1 Ёпрст
 
04.06.13
17:10
(0) как бэ записи регистров к строкам документа имеют весьма посредственное отношение.
2 Ёпрст
 
04.06.13
17:11
Ты уж определись, что тебе надо - обращение к регистру, или к документам и его строкам.
3 1С-ница
 
04.06.13
17:11
И вместе с услугой (с отбором по виду услуги) мастер (тоже есть в таб части документа)
4 1С-ница
 
04.06.13
17:11
Запрос не я писала, допилить его надо
5 Ёпрст
 
04.06.13
17:12
Ну и совсем не комильфо - пихать условие на вид документа движения регистра при вычислении НачОст и КонОст.
6 Ёпрст
 
04.06.13
17:13
(4) его надо не допилить, ему место в топке.
7 1С-ница
 
04.06.13
17:14
(6) Если знаете как сделать более оптимальный запрос со всеми условиями - я все внимание
8 1С-ница
 
04.06.13
17:15
Я даже не могу открыть этот запрос конструктором, ругается видимо на то что запрос рваный..
9 1С-ница
 
04.06.13
17:16
Функция Кон  = КонОст(Остаток); <<?>> ";
Запрос[10] : Неизвестая ошибка '";
'
Ошибок - 1, Предупреждений - 0.
10 Ёпрст
 
04.06.13
17:17
А зачем его открывать конструктором ?
:)
11 1С-ница
 
04.06.13
17:18
Я в 7.7 ни разу запросы не делала, не понимаю как они устроены..
12 1С-ница
 
04.06.13
17:21
хотя зайти в конструктор все-таки получилось)
13 1С-ница
 
04.06.13
17:24
Может проще организовать выборку по документу и не париться с запросом...
14 Ёпрст
 
04.06.13
17:24
Короче, не знаю, зачем тебе строки документа в этом запросе, но если нужны в нём НачОст и КонОст, то своими условиями на вид документа..ты их теряешь напрочь.
Ну и тормозня тоже дикая из-за этих условия, особенно там, где на Выбран() у тя еще проверяется.
15 1С-ница
 
04.06.13
17:26
(14) строки документа нужны чтобы получить услуги и мастера
16 Ёпрст
 
04.06.13
17:27
(15) возьми эти данные с нужного регистра.
17 Ёпрст
 
04.06.13
17:27
или делай запрос к документам и его табличной части.
18 Ёпрст
 
04.06.13
17:28
Цель твоя не ясна, судя по запросу - это получение долгов клиентоса в разрезе КредДокументов..
Какое отношение он имеет к табличной части дока - не ясно.
19 1С-ница
 
04.06.13
17:34
(18) В отчете есть информация по клиенту: начальный остаток, приход,  расход, конечный остаток. Сейчас это сделано в разрезе документов (Оказание услуг), нужно чтобы была аналитика по услугам по каждому Оказанию услуг.
20 1С-ница
 
04.06.13
17:35
переделывать запрос не хочется, хочется добавить группировку по Услугам и выводить ее..
21 Ёпрст
 
04.06.13
17:35
(19) Ну скажем так, нет у тебя НачОст и КонОст, если хоть 1 фильтр будет включен
22 Ёпрст
 
04.06.13
17:36
(20) её нет и не будет в этом запросе, ибо в регистре нет никакой инфы об этом, а строки документа не имеют никакого отношения к записям этого регистра.
23 Ёпрст
 
04.06.13
17:44
Подсказка: останки по долгам бери с этого регистра, всё остальное - с другово, подходящего.
Закон Брукера: Даже маленькая практика стоит большой теории.