Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
Дюха
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 35
#1

ЗАПРОС

02.07.2012, 16:22. Просмотров 2632. Ответов 13
Метки нет (Все метки)

Добрый день неподскажете как можно вывести данные двух запросов по разным док. в 1 область макета все колонки области общие кроме суммы. Вобще такое возможно?(как только не пробывал последннее затирает 1-е)
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |   ПриходныйОрдер.Номер,
        |   ПриходныйОрдер.Дата,
        |   ПриходныйОрдер.ПринятоОт,
        |   ПриходныйОрдер.КоррСчет.Код,
        |   ПриходныйОрдер.Сумма
        |ИЗ
        |   Документ.ПриходныйОрдер КАК ПриходныйОрдер
        |ГДЕ
        |   ПриходныйОрдер.Дата < &ДатаЛиста
        |   И ПриходныйОрдер.Дата > &ДатаЛиста1";
    Запрос.УстановитьПараметр("ДатаЛиста", ДатаЛиста+86399);
    Запрос.УстановитьПараметр("ДатаЛиста1", ДатаЛиста1);
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    Запрос1 = Новый Запрос;
    Запрос1.Текст = 
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |   РасходныйОрдер.Номер,
        |   РасходныйОрдер.Дата,
        |   РасходныйОрдер.Выдать КАК ПринятоОт,
        |   РасходныйОрдер.КоррСчет.Код,
        |   РасходныйОрдер.Сумма КАК Сумма1
        |ИЗ
        |   Документ.РасходныйОрдер КАК РасходныйОрдер
        |ГДЕ
        |   РасходныйОрдер.Дата < &ДатаЛиста
        |   И РасходныйОрдер.Дата > &ДатаЛиста1";
    Запрос1.УстановитьПараметр("ДатаЛиста", ДатаЛиста+86399);
    Запрос1.УстановитьПараметр("ДатаЛиста1", ДатаЛиста1);
    Результат = Запрос1.Выполнить();
    ВыборкаДетальныеЗаписи1 = Результат.Выбрать();
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

??????????????????????????????????????????????
1C
1
2
3
4
5
    Пока (ВыборкаДетальныеЗаписи1.Следующий()) или (ВыборкаДетальныеЗаписи.Следующий())Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(????????????????????????????????);
        
        ТабДок.Вывести(ОбластьДетальныхЗаписей);
    КонецЦикла;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2012, 16:22
Ответы с готовыми решениями:

7.7 Запрос или бухгалтерский запрос?
Добрый день. Задача такова: необходимо сформировать отчет о доходах и расходах...

Запрос
Подскажите пожалуйста. Только начинаю работать с 1с. Нужно создать запрос, где...

запрос 7.7
Сей запрос В группировке по счету дает адекватные данные токо по...

запрос...
доброго времени суток! скажу сразу в 1с очень плохо разбираюсь но возникла...

Запрос 1С 7.7
Здравствуйте. Подскажите пожалуйста. Каким образом можно подсчитать сумму...

13
Fenomen
898 / 875 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
02.07.2012, 18:14 #2
Сделать один запрос вместо двух.
0
duk337
2948 / 1760 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
02.07.2012, 20:20 #3
По идее, д.б. регистр накопления, в котором вся байда по кассе компилится . Тогда не только один запрос, а один запрос по одному объекту. Документы прилагаются в качестве регистраторов
0
ilyay
3 / 3 / 0
Регистрация: 02.07.2012
Сообщений: 5
02.07.2012, 21:41 #4
После анализа кода можно дать следующие рекомендации:
1. Присоединяюсь к двум предыдущим комментариям: Запрос должен быть в данном случае один и документы должны делать движения по одному регистру накопления, тогда информацию по документам можно будет получить через Регистратор, а суммы брать непосредственно с регистра. Впрочем, для задачи по выводу (не по учету), можно и так, как Вы делаете.
2. Прибавление к дате числа 86399 не очень информативно и не оправданно.
Для таких вещей есть функции НачалоДня() и КонецДня()
Число 86399 представляет собой 86400 - число секунд в сутках минус 1 секунда.
По-видимому, предполагается получение документов в течение периода от ДатаЛиста1до ДатаЛиста_последняяСекундаДня

3. Строгое неравенство предполагает, что документы первой и последней секунд в выборку попадать не должны. Немного странно. Кроме того, значение ДатаЛиста должно быть всегда началом дня.
4. "Выбрать различные" вряд ли сыграет роль, так как Вы выбираете сами документы, а не ссылки на них из какого-либо регистра, когда вам может встретиться две ссылки на один документ.
5. В области детальных записей данные обязательно будут затираться, так как Вы из обоих выборок
устанавливаете значения параметров одной области.
6. Обязательно необходимо упорядочение, так как запрос может вернуть документы вразнобой.

Решение Вашей задачи, при условии, что нужно выбирать данные от начала дня ДатаЛиста1 до конца дня ДатаЛиста, включая все документы всех секунд - и самой первой и самой последней. После объединения в запросе, документы будут упорядочены.


1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|   ПриходныйОрдер.Номер,
|   ПриходныйОрдер.Дата,
|   ПриходныйОрдер.ПринятоОт,
|   ПриходныйОрдер.КоррСчет.Код Как КоррСчетКод,
|   ПриходныйОрдер.Сумма,
|   0 КАК Сумма1,
|   ПриходныйОрдер.МоментВремени КАК МоментВремени
|ИЗ
|   Документ.ПриходныйОрдер КАК ПриходныйОрдер
|ГДЕ
|   ПриходныйОрдер.Дата < &ДатаЛиста
|   И ПриходныйОрдер.Дата >= &ДатаЛиста1
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
|   РасходныйОрдер.Номер,
|   РасходныйОрдер.Дата,
|   РасходныйОрдер.Выдать,
|   РасходныйОрдер.КоррСчет.Код,
|   0,
|   РасходныйОрдер.Сумма,
|   РасходныйОрдер.МоментВремени
|ИЗ
|   Документ.РасходныйОрдер КАК РасходныйОрдер
|ГДЕ
|   РасходныйОрдер.Дата < &ДатаЛиста
|   И РасходныйОрдер.Дата >= &ДатаЛиста1
|
|УПОРЯДОЧИТЬ ПО
|   МоментВремени";
Запрос.УстановитьПараметр("ДатаЛиста", КонецДня(ДатаЛиста)+1);
Запрос.УстановитьПараметр("ДатаЛиста1", НачалоДня(ДатаЛиста1));
Результат = Запрос.Выполнить();
Если не Результат.Пустой() Тогда
    Выборка = Результат.Выбрать();
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    Пока Выборка.Следующий() Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(Выборка);
        ТабДок.Вывести(ОбластьДетальныхЗаписей);
    КонецЦикла; 
КонецЕсли;
0
Дюха
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 35
03.07.2012, 11:52  [ТС] #5
ilyay, Большое спасибо ilyay за полноценный ответ
0
fimbulwinter
307 / 307 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
03.07.2012, 17:24 #6
Цитата Сообщение от ilyay Посмотреть сообщение


1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|...
|...
|ГДЕ
|   ПриходныйОрдер.Дата < &ДатаЛиста
|   И ПриходныйОрдер.Дата >= &ДатаЛиста1
|
|ОБЪЕДИНИТЬ ВСЕ
|
|...
|...
|ГДЕ
|   РасходныйОрдер.Дата < &ДатаЛиста
|   И РасходныйОрдер.Дата >= &ДатаЛиста1
|
|УПОРЯДОЧИТЬ ПО
|   МоментВремени";
Запрос.УстановитьПараметр("ДатаЛиста", КонецДня(ДатаЛиста)+1);
Запрос.УстановитьПараметр("ДатаЛиста1", НачалоДня(ДатаЛиста1));
...
...
1C
1
Запрос.УстановитьПараметр("ДатаЛиста", КонецДня(ДатаЛиста)+1); // --------->>>>> Это уже следующий день
1C
1
2
3
4
|ПриходныйОрдер.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
 
Запрос.УстановитьПараметр("ДатаНачала ", НачалоДня(ДатаЛиста));
Запрос.УстановитьПараметр("ДатаОкончания", Новый Граница(КонецДня(ДатаЛиста), ВидГраницы.Включая));
0
ilyay
3 / 3 / 0
Регистрация: 02.07.2012
Сообщений: 5
03.07.2012, 22:28 #7
По поводу ДатаЛиста1 и ДатаЛиста можно только догадываться, что это даты одного дня.
А может, это данные за неделю? Я не стал менять, предполагая, что автор сам поправит.
Учитывая, что автор новичок, границу добавлять посчитал сложным для его понимания.
Поэтому взял начало следующего дня и поставил знак меньше.
1
Дюха
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 35
04.07.2012, 08:11  [ТС] #8
ДатаЛиста1 и ДатаЛиста это параметры выбираемые пользователем мгут быть как за день так и за неделю
0
fimbulwinter
307 / 307 / 1
Регистрация: 16.01.2011
Сообщений: 1,073
04.07.2012, 08:34 #9
Цитата Сообщение от ilyay Посмотреть сообщение
По поводу ДатаЛиста1 и ДатаЛиста можно только догадываться, что это даты одного дня.
А может, это данные за неделю? Я не стал менять, предполагая, что автор сам поправит.
Учитывая, что автор новичок, границу добавлять посчитал сложным для его понимания.
Поэтому взял начало следующего дня и поставил знак меньше.
Здесь не нужно догадываться. Сам сделает как нужно. Добавить границу это не сложно, зато корректно.
Но если по вашему мнению КонецДня(ДатаЛиста)+1 тоже верно, то топикстартеру лучше так всё и оставить.
0
Дюха
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 35
20.09.2012, 14:45  [ТС] #10
fimbulwinter, добрый день не подскажете я пробывал вашь вариант по всякому но он ругается
{Отчет.КассоваяКнигаПериод.Форма.Форма1.Форма(136)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(12, 27)}: Не задано значение параметра "ДатаНачала"
ПриходныйОрдер.Дата МЕЖДУ <<?>>&ДатаНачала И &ДатаОкончания
текст запроса
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПриходныйОрдер.Номер,
| ПриходныйОрдер.Дата,
| ПриходныйОрдер.ПринятоОт,
| ПриходныйОрдер.КоррСчет.Код Как КоррСчетКод,
| ПриходныйОрдер.Сумма,
| 0 КАК Сумма1,
| ПриходныйОрдер.МоментВремени КАК МоментВремени
|ИЗ
| Документ.ПриходныйОрдер КАК ПриходныйОрдер
|ГДЕ
|ПриходныйОрдер.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
// | ПриходныйОрдер.Дата < &ДатаЛиста
// | И ПриходныйОрдер.Дата >= &ДатаЛиста1
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| РасходныйОрдер.Номер,
| РасходныйОрдер.Дата,
| РасходныйОрдер.Выдать,
| РасходныйОрдер.КоррСчет.Код,
| 0,
| РасходныйОрдер.Сумма,
| РасходныйОрдер.МоментВремени
|ИЗ
| Документ.РасходныйОрдер КАК РасходныйОрдер
|ГДЕ
|РасходныйОрдер.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
// | РасходныйОрдер.Дата < &ДатаЛиста
// | И РасходныйОрдер.Дата >= &ДатаЛиста1
|
|УПОРЯДОЧИТЬ ПО
| МоментВремени";
Запрос.УстановитьПараметр("ДатаНачала ", НачалоДня(ДатаЛиста1));
Запрос.УстановитьПараметр("ДатаОкончания", Новый Граница(КонецДня(ДатаЛиста), ВидГраницы.Включая));

Результат = Запрос.Выполнить();
Если не Результат.Пустой() Тогда
Выборка = Результат.Выбрать();
ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
Пока Выборка.Следующий() Цикл
ОбластьДетальныхЗаписей.Параметры.Заполнить(Выборка);
ТабДок.Вывести(ОбластьДетальныхЗаписей);
КонецЦикла;
КонецЕсли;
0
Fenomen
898 / 875 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
20.09.2012, 15:06 #11
Цитата Сообщение от Дюха Посмотреть сообщение
Запрос.УстановитьПараметр("ДатаНачала "
Пробел уберите.
1
Дюха
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 35
20.09.2012, 15:59  [ТС] #12
Цитата Сообщение от Fenomen Посмотреть сообщение
Пробел уберите.
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |   РасходныйОрдер.Номер,
        |   РасходныйОрдер.Дата,
        |   РасходныйОрдер.Выдать КАК ПринятоОт,
        |   РасходныйОрдер.КоррСчет.Код,
        |   РасходныйОрдер.Сумма КАК Сумма1
        |ИЗ
        |   Документ.РасходныйОрдер КАК РасходныйОрдер
        |ГДЕ
        |   РасходныйОрдер.Дата < &ДатаЛиста
        |   И РасходныйОрдер.Дата > &ДатаЛиста1";
    Запрос.УстановитьПараметр("ДатаЛиста", ДатаЛиста+86399);
    Запрос.УстановитьПараметр("ДатаЛиста1", ДатаЛиста1);
    Сообщить (ДатаЛиста+86399);
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи1 = Результат.Выбрать();
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    Пока ВыборкаДетальныеЗаписи1.Следующий() Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи1);
        ТабДок.Вывести(ОбластьДетальныхЗаписей);
    КонецЦикла;
ИначеЕсли   ((ЭлементыФормы.Ф.Значение=Ложь) и (ЭлементыФормы.Ф1.Значение=Ложь)) ИЛИ ((ЭлементыФормы.Ф.Значение=Истина) и (ЭлементыФормы.Ф1.Значение=Истина))тогда
    Запрос = Новый Запрос;
    Запрос.Текст = 
    "ВЫБРАТЬ
    |   ПриходныйОрдер.Номер,
    |   ПриходныйОрдер.Дата,
    |   ПриходныйОрдер.ПринятоОт,
    |   ПриходныйОрдер.КоррСчет.Код Как КоррСчетКод,
    |   ПриходныйОрдер.Сумма,
    |   0 КАК Сумма1,
    |   ПриходныйОрдер.МоментВремени КАК МоментВремени
    |ИЗ
    |   Документ.ПриходныйОрдер КАК ПриходныйОрдер
    |ГДЕ
    |ПриходныйОрдер.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
//  |   ПриходныйОрдер.Дата < &ДатаЛиста
//  |   И ПриходныйОрдер.Дата >= &ДатаЛиста1
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |   РасходныйОрдер.Номер,
    |   РасходныйОрдер.Дата,
    |   РасходныйОрдер.Выдать,
    |   РасходныйОрдер.КоррСчет.Код,
    |   0,
    |   РасходныйОрдер.Сумма,
    |   РасходныйОрдер.МоментВремени
    |ИЗ
    |   Документ.РасходныйОрдер КАК РасходныйОрдер
    |ГДЕ
    |РасходныйОрдер.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
//  |   РасходныйОрдер.Дата < &ДатаЛиста
//  |   И РасходныйОрдер.Дата >= &ДатаЛиста1
    |
    |УПОРЯДОЧИТЬ ПО
    |   МоментВремени";
    //Запрос.УстановитьПараметр("ДатаЛиста", КонецДня(ДатаЛиста)+1);
    //Запрос.УстановитьПараметр("ДатаЛиста1", НачалоДня(ДатаЛиста1));
Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ДатаЛиста1));
Запрос.УстановитьПараметр("ДатаОкончания", Новый Граница(КонецДня(ДатаЛиста), ВидГраницы.Включая));
    
    Результат = Запрос.Выполнить();
    Если не Результат.Пустой() Тогда
        Выборка = Результат.Выбрать();
        ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
        Пока Выборка.Следующий() Цикл
            ОбластьДетальныхЗаписей.Параметры.Заполнить(Выборка);
            ТабДок.Вывести(ОбластьДетальныхЗаписей);
        КонецЦикла; 
    КонецЕсли;
  КонецЕсли;
   ТабДок.Показать();
    СохранитьЗначение("Ф",Ф);
    СохранитьЗначение("Ф1",Ф1);
    СохранитьЗначение("ДатаЛиста1",ДатаЛиста1);
    СохранитьЗначение("ДатаЛиста",ДатаЛиста);
    СохранитьЗначение("Филиал",Филиал);
    СохранитьЗначение("Касса",Касса);
КонецПроцедуры
Всеровно ругается
{Отчет.КассоваяКнигаПериод.Форма.Форма1.Форма(132)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить();
по причине:
{(12, 21)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ПриходныйОрдер.Дата <<?>>МЕЖДУ &ДатаНачала И &ДатаОкончания
0
Fenomen
898 / 875 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
20.09.2012, 20:15 #13
Цитата Сообщение от Дюха Посмотреть сообщение
{(12, 21)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ПриходныйОрдер.Дата <<?>>МЕЖДУ &ДатаНачала И &ДатаОкончания
Нельзя сравнивать типы Дата и Граница. Используйте просто
1C
1
КонецДня(ДатаЛиста)
1
Дюха
0 / 0 / 0
Регистрация: 02.07.2012
Сообщений: 35
21.09.2012, 12:45  [ТС] #14
большое СП.
0
21.09.2012, 12:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.09.2012, 12:45

Запрос в УТ
Дамы и господа! Помогите, пожалуйста, разобраться с запросами в 1С 8.0. Суть...

Запрос 8.2
Здравствуйте, помогите пожалуйста разобраться..переходим на 8.2 управляемое...

Запрос
Имеется вот такой не сложный запрос К сожалению при таком запросе,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru