Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

ЗАПРОС - 1С/1C 8.x

02.07.2012, 16:22. Просмотров 2599. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос 1C 8.x ЗАПРОС (1С):

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

1C 8.x Запрос - 1С
Здравствуйте, помогите найти откуда идет запрос ПлатежноеПоручениеИсходящее.СчетКонтрагента.НомерСчета КАК ГЦВПБанковскийСчет, ...

Запрос в 7.7 - 1С
Есть справочник &quot;Сотрудники&quot; в нем периодический реквизит Ставка. Для отчета необходимо посчитать кол-во основных и неосновных сотр. Вся...

1C 8.x Запрос - 1С
| РегистрБухгалтерии.Хозрасчетный.Остатки( | &amp;Период, | Счет В...

Запрос 1с 7.7 - 1С
напишите, пожалуйста, пример запросов на семерке. Не могу найти нигде. Требуется выбрать данные из документа. На 8 примерно так: ...

1C 8.x Запрос - 1С
Вначале создал отчет в СКД с таким запросом ВЫБРАТЬ НачисленияСотрудников.Сотрудник, НачисленияСотрудников.ВидРасчета, ...

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С
Подскажите, что за ошибка {Форма.ОтчетОбНеИсполненныхКонтрольныхПоручениях.Форма(184)}: Ошибка при вызове метода контекста (Выполнить) ...

Запрос - 1С
Доброго времени суток. Помогите решить задачу. Есть запрос и есть поле ввода на форме (справочникссылка.склад) чего у меня не...

Запрос в 1С 7.7 - 1С
Всем доброго времени суток. Ситуация следующая: 1C 7.7 Комплексная конфигурация 4.5 В приходный документ (Поступление ТМЦ Розница)...

Запрос - 1С
Добрый вечер подскажите пожалуйста, как правильно написать запрос, чтобы получение неповторяющихся комбинаций значений полей результата...


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

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

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