Имя: Пароль:
1C
1С v8
Вывести максимальное количество строк в одной из двух ТЧ, где их больше
0 Вопросы Задающий
 
28.02.12
14:55
есть 2 табчасти в документе. нужно вывести в результате запроса количество строк, равное максимальному количеству строк в этих таб частях. как это сделать?
1 Wobland
 
28.02.12
14:56
запросить у запроса
2 zak555
 
28.02.12
14:56
Макс ( ТЧ1.Размер() , ТЧ2.Размер() )
3 salvator
 
28.02.12
14:56
(0) Переформулируй. Ничо не понял.
4 Kashemir
 
28.02.12
14:57
ВЫБРАТЬ
   МАКСИМУМ(ТЧ1.Ссылка) КАК КоличествоСтрок
ИЗ
   Документ.АвансовыйОтчет.ВыданныеАвансы КАК ТЧ1
ГДЕ
   ТЧ1.Ссылка = &Ссылка

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   КОЛИЧЕСТВО(ТЧ2.Ссылка)
ИЗ
   Документ.АвансовыйОтчет.ОплатаПоставщикам КАК ТЧ2
ГДЕ
   ТЧ2.Ссылка = &Ссылка
5 Вопросы Задающий
 
28.02.12
14:58
ну а серьезно? какую таблицу взять за основную, если я не знаю, в какой из них больше строк?

например, Таблица Товары, там 3 товара с ценами
и таблица Услуги там 5 товаров с ценами

но далеко не всегда больше услуг , чем товаров...
6 Kashemir
 
28.02.12
14:58
+(4) Ошибся ... так

ВЫБРАТЬ
   МАКСИМУМ(ВложенныйЗапрос.КоличествоСтрок) КАК КоличествоСтрок
ИЗ
   (ВЫБРАТЬ
       КОЛИЧЕСТВО(ТЧ1.Ссылка) КАК КоличествоСтрок
   ИЗ
       Документ.АвансовыйОтчет.ВыданныеАвансы КАК ТЧ1
   ГДЕ
       ТЧ1.Ссылка = &Ссылка
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       КОЛИЧЕСТВО(ТЧ2.Ссылка)
   ИЗ
       Документ.АвансовыйОтчет.ОплатаПоставщикам КАК ТЧ2
   ГДЕ
       ТЧ2.Ссылка = &Ссылка) КАК ВложенныйЗапрос
7 zak555
 
28.02.12
14:59
её :

Макс ( ТЧ1.Количество() , ТЧ2.Количество() )
8 Вопросы Задающий
 
28.02.12
15:07
Мне надо так

Хлеб1 20 рублей  Доставка1 30 рублей
Хлеб2 20 рублей  Доставка2 30 рублей
Хлеб3 20 рублей  Доставка3 30 рублей
ПУСТО           Доставка4  30 рублей
ПУСТО           Доставка5  30 рублей

Это если услуг больше, либо наоборот, если товаров больше
9 Reset
 
28.02.12
15:09
(8) Лол
10 Irbis
 
28.02.12
15:10
Полное соединение по номеру строки не поможет?
11 Reset
 
28.02.12
15:10
(8) Полное соединение по номеру строки, например
12 Вопросы Задающий
 
28.02.12
15:10
(10) буду пробовать...
13 Вопросы Задающий
 
28.02.12
15:23
ВЫБРАТЬ
   Товары.Контрагент,
   Услуги.Контрагент Как Поставщик,
   Товары.Сумма,
   Услуги.Сумма КАК СуммаУслуг
ИЗ
   Документ.Заказ.Товары КАК Товары
       Полное соединение Документ.Заказ.Услуги Как Услуги
       По Товары.НомерСтроки = Услуги.НомерСтроки
ГДЕ
   Товары.Ссылка = &Ссылка
   И УСЛУГИ.Ссылка = &Ссылка
14 Вопросы Задающий
 
28.02.12
15:23
если 5 услуг и 3 товара, выдает 3 строки все равно...
15 FIXXXL
 
28.02.12
15:35
(13) можешь извратится с динамическим текстом запроса, меняя в нем название ТЧ, на то, у которой больше :)
16 Reset
 
28.02.12
15:38
(13) Так попробуй
isNull(Товары.Ссылка,&Ссылка)=&Ссылка
И isNull(Услуги.Ссылка,&Ссылка)=&Ссылка
17 Вопросы Задающий
 
28.02.12
15:39
(15) но по идее полное соединение должно же давать  все номера строк? а их 5 а не 3!
18 Reset
 
28.02.12
15:40
(17) у тебя условие в ГДЕ зарубает стороки, т.к. там NULL, а не ссылка
19 Вопросы Задающий
 
28.02.12
15:40
(18) да, ты прав, но твой код не помог...
20 Вопросы Задающий
 
28.02.12
15:42
ошибка где-то в ГДЕ
это однозначно, но как мне отбирать по документу...
21 PVV65
 
28.02.12
15:45
(20) Ошибка в соединении - с каким номером будут соединятся четвертая и пятая строка?
22 Вопросы Задающий
 
28.02.12
15:46
(21) а как же соединять ?
23 Вопросы Задающий
 
28.02.12
15:47
о, получилось вроде
соединил и по номеру строки, и по ссылке!
24 Вопросы Задающий
 
28.02.12
15:49
(16) и (21) - спасибо! и всем спасибо !
25 PVV65
 
28.02.12
15:49
(22) Какая то задача кривая. Неужели требуется именно такая результирующая таблица? Предположу, что это промежуточный результат для еще более кривой задачи.

Но даже такую задачу можно решить. Щас подумаю.
26 PVV65
 
28.02.12
15:50
(23) Странно...
27 Вопросы Задающий
 
28.02.12
15:51
(26) задача - сделать отчет, выводящий все строки документа, с суммами
в документе 2 таб части, поэтому должны выводится все строки, неважно , где их больше а где меньше
28 Reset
 
28.02.12
15:53
(27) Он имеет в виду, что обычно в таких случаях таблицы располагают последовательно (одну под другой) или вместе, но в одну колонку (объединение).
29 PVV65
 
28.02.12
15:55
(23) >о, получилось вроде
соединил и по номеру строки, и по ссылке!

Что получилось?
30 salvator
 
28.02.12
15:58
(28) +100
Иначе получится не отчет, а фигня собачья.
31 Вопросы Задающий
 
28.02.12
16:00
заказали именно такой. тестирую, посмотрю...
32 Паланик
 
28.02.12
16:01
Я как-то так делал, только у меня три таблицы в горизонтали было. Может можно было и по-другому, но так зато понятней и без заморочек, имхо:

Макс = Макс(ТаблицаОтгрузок.Количество(), ТаблицаZ.Количество(), ТаблицаРасходников.Количество());
   
   К = 1;
   Пока К <> Макс Цикл
       
       Если ТО.Количество()-1 >= К Тогда            
           Стр.Параметры.Док = "ККМ №" + ТО[К].Ссылка.Номер + " от " + Формат(ТО[К].Ссылка.Дата, "ДФ=dd.MM.yyyy");
           Стр.Параметры.Сумма = ТО[К].Сумма;                
           
       Иначе
           Стр.Параметры.Док = "";
           Стр.Параметры.Сумма = "";
       КонецЕсли;
       
       Если ТZ.Количество()-1 >= К Тогда            
           Стр.Параметры.Док2 = "ПКО №" + ТZ[К].Ссылка.Номер + " от " + Формат(ТZ[К].Ссылка.Дата, "ДФ=dd.MM.yyyy");
           Стр.Параметры.Сумма2 = ТZ[К].Сумма;
       Иначе
           Стр.Параметры.Док2 = "";
           Стр.Параметры.Сумма2 = "";
       КонецЕсли;
       
       Если ТР.Количество()-1 >= К Тогда
           Стр.Параметры.Док3 = "РКО №" + ТР[К].Ссылка.Номер + " от " + Формат(ТР[К].Ссылка.Дата, "ДФ=dd.MM.yyyy");
           Стр.Параметры.Сумма3 = ТР[К].Сумма;
       Иначе
           Стр.Параметры.Док3 = "";
           Стр.Параметры.Сумма3 = "";
       КонецЕсли;
       
       ТабДок.Вывести(Стр);
       К = К + 1;
   КонецЦикла;
33 PVV65
 
28.02.12
16:07
ВЫБРАТЬ
   Итог.НомерСтроки,
   СУММА(Итог.СуммаТовара) КАК СуммаТовара,
   СУММА(Итог.СуммаУслуг) КАК СуммаУслуг
ИЗ
   (ВЫБРАТЬ
       Товары.НомерСтроки КАК НомерСтроки,
       Товары.Сумма КАК СуммаТовара,
       0 КАК СуммаУслуг
   ИЗ
       Документ.ЗаказПокупателя.Товары КАК Товары
   ГДЕ
       Товары.Ссылка = &Ссылка
   
   ОБЪЕДИНИТЬ
   
   ВЫБРАТЬ
       Услуги.НомерСтроки,
       0,
       Услуги.Сумма
   ИЗ
       Документ.ЗаказПокупателя.Услуги КАК Услуги
   ГДЕ
       Услуги.Ссылка = &Ссылка) КАК Итог

СГРУППИРОВАТЬ ПО
   Итог.НомерСтроки
34 Вопросы Задающий
 
28.02.12
23:32
(33) да, тут все ок, но если сделать точно также с реквизитом Поставщик и Покупатель, чтобы было так

Поставщик1 ПУСТО         Хлеб1 20 рублей  ПУСТО
Поставщик1 ПУСТО         Хлеб2 20 рублей  ПУСТО  
Поставщик1 Покупатель1   Хлеб3 20 рублей  Доставка3 30 рублей
Поставщик1 Покупатель1   Хлеб4 20 рублей   Доставка4  30 рублей
ПУСТО      Покупатель1   ПУСТО             Доставка5  30 рублей, то не получается, а получается строчек больше, и всегда в одной из них либо поставщик либо покупатель пустой...
35 Вопросы Задающий
 
28.02.12
23:33
Шапка таблицы, чтобы было понятно

Поставщик Покупатель Товар Цена Услуга Цена

Предположим что покупатель у нас берет только услуги
36 PVV65
 
29.02.12
10:34
(34) Поставщик реквизит ТЧ Товары, Покупатель реквизит ТЧ Услуги?
37 PVV65
 
29.02.12
10:35
+(36) Или это два реквизита документа?