858 / 657 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
1
1C 8.x

Начальный и конечный остатки по 2-м измерениям без СКД

18.02.2019, 13:15. Показов 2052. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Для тех, кто хочет поломать голову.

УТ 10.3 два регистра ДенежныеСредства и ДвиженияДенежныхСредств.
Задача: Написать запрос, в котором можно получить Начальный и конечный остаток, а также Приход и Расход, по 2-м измерениям Касса и День.

Касса |Нач. Ост. |Приход|Расход|Кон.ост
День |Нач. Ост. |Приход|Расход|Кон.ост
....
Документы
....


Если с приходом и расходом всё просто, то как получить остатки без дополнительной обработки результата?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2019, 13:15
Ответы с готовыми решениями:

Начальный и конечный индекс слова в строке!
Помогите пожалуйста с задачкой! У нас есть любая строка из любого количества слов и любого...

Определить начальный и конечный номера элементов массива
Хех,у меня вот какая задача:Определить нач и конечный номера эл. одномерного массива,составляющих...

Транспонировать матрицу. Вывести на печать начальный и конечный вариант матрицы
Дана квадратная матрица натуральных чисел, (получаемая через rand()). Транспонировать матрицу. ...

Счастливый билет(Начальный и конечный номера билетов вводит пользователь)
Доброго времени суток! Прошу помочь с заданием и заранее спасибо) “Счастливый билет”. Напишите...

7
3019 / 1578 / 568
Регистрация: 16.01.2015
Сообщений: 6,721
18.02.2019, 19:53 2
Xomych, Что-то не понял вопроса, потому что не вижу проблемы. Движения ден средств оборотный Ден средства - остатки. Почему нельзя обратиться к виртуальным таблицам остатки и обороты
0
858 / 657 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
19.02.2019, 09:37  [ТС] 3
polax, Ну вот я тоже не видел проблемы, а ты попробуй напиши запрос и что будет на выходе

Добавлено через 11 минут
Проблема в том, что не пойму. как просто получить нач. и кон. остатки по кассе и по дню в одном запросе.

Смог только так решить, может я уже туплю на старости лет?
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
    ТДат = Новый ТаблицаЗначений;
    ТДат.Колонки.Добавить("Касса",Новый ОписаниеТипов("СправочникСсылка.Кассы"));
    ТДат.Колонки.Добавить("День",Новый ОписаниеТипов("Дата"));
    
    Для Каждого Эл Из Касса Цикл
        ТекДат = НачалоДня(НачалоПериода);
        Пока ТекДат <= НачалоДня(КонецПериода) Цикл 
            нс = ТДат.Добавить();
            нс.Касса = Эл.Значение;
            нс.День = ТекДат;
            
            ТекДат = ТекДат+86400;
        КонецЦикла;
    КонецЦикла;
    
    
    З = Новый Запрос;
    З.Текст = "ВЫБРАТЬ
              | Тбл.Касса,
              | Тбл.День
              |ПОМЕСТИТЬ Дни
              |ИЗ
              | &Тбл КАК Тбл
              |;
              |
              |////////////////////////////////////////////////////////////////////////////////
              |ВЫБРАТЬ
              | Дни.День КАК День,
              | Дни.Касса КАК Касса,
              | ДенежныеСредстваОстаткиИОбороты.Период,
              | ЕСТЬNULL(ДенежныеСредстваОстаткиИОбороты.СуммаНачальныйОстаток, 0) КАК ОстатокНач,
              | ЕСТЬNULL(ДенежныеСредстваОстаткиИОбороты.СуммаКонечныйОстаток, 0) КАК ОстатокКон
              |ПОМЕСТИТЬ ОстаткиДень
              |ИЗ
              | Дни КАК Дни
              |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДенежныеСредства.ОстаткиИОбороты(
              |             &НачалоПериода,
              |             &КонецПериода,
              |             День,
              |             ,
              |             ВидДенежныхСредств = &ВидДС
              |                 И БанковскийСчетКасса В (&Кассы)) КАК ДенежныеСредстваОстаткиИОбороты
              |     ПО (ДенежныеСредстваОстаткиИОбороты.БанковскийСчетКасса = Дни.Касса)
              |         И (НАЧАЛОПЕРИОДА(ДенежныеСредстваОстаткиИОбороты.Период, ДЕНЬ) = Дни.День)
              |;
              |
              |////////////////////////////////////////////////////////////////////////////////
              |ВЫБРАТЬ
              | Кассы.Касса КАК Касса,
              | ЕСТЬNULL(ДенежныеСредстваОстаткиИОбороты.СуммаНачальныйОстаток, 0) КАК ОстатокНач,
              | ЕСТЬNULL(ДенежныеСредстваОстаткиИОбороты.СуммаКонечныйОстаток, 0) КАК ОстатокКон
              |ПОМЕСТИТЬ ОстаткиКасса
              |ИЗ
              | (ВЫБРАТЬ
              |     Дни.Касса КАК Касса
              | ИЗ
              |     Дни КАК Дни
              | 
              | СГРУППИРОВАТЬ ПО
              |     Дни.Касса) КАК Кассы
              |     ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДенежныеСредства.ОстаткиИОбороты(
              |             &НачалоПериода,
              |             &КонецПериода,
              |             ,
              |             ,
              |             ВидДенежныхСредств = &ВидДС
              |                 И БанковскийСчетКасса В (&Кассы)) КАК ДенежныеСредстваОстаткиИОбороты
              |     ПО Кассы.Касса = ДенежныеСредстваОстаткиИОбороты.БанковскийСчетКасса
              |;
              |
              |////////////////////////////////////////////////////////////////////////////////
              |ВЫБРАТЬ
              | ДенежныеСредстваОстаткиИОбороты.Регистратор.Дата КАК Дата,
              | НАЧАЛОПЕРИОДА(ДенежныеСредстваОстаткиИОбороты.Регистратор.Дата, ДЕНЬ) КАК День,
              | ДенежныеСредстваОстаткиИОбороты.Регистратор КАК Документ,
              | ДенежныеСредстваОстаткиИОбороты.Регистратор.Основание КАК Основание,
              | ДвиженияДенежныхСредствОбороты.СтатьяДвиженияДенежныхСредств КАК СтатьяДДС,
              | ДвиженияДенежныхСредствОбороты.Контрагент,
              | ДенежныеСредстваОстаткиИОбороты.СуммаПриход КАК СуммаПриход,
              | ДенежныеСредстваОстаткиИОбороты.СуммаРасход КАК СуммаРасход,
              | ДенежныеСредстваОстаткиИОбороты.СуммаНачальныйОстаток,
              | ДенежныеСредстваОстаткиИОбороты.СуммаКонечныйОстаток,
              | ДенежныеСредстваОстаткиИОбороты.БанковскийСчетКасса КАК Касса
              |ПОМЕСТИТЬ Движения
              |ИЗ
              | РегистрНакопления.ДенежныеСредства.ОстаткиИОбороты(
              |         &НачалоПериода,
              |         &КонецПериода,
              |         Регистратор,
              |         ,
              |         ВидДенежныхСредств = &ВидДС
              |             И БанковскийСчетКасса В (&Кассы)) КАК ДенежныеСредстваОстаткиИОбороты
              |     ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияДенежныхСредств.Обороты(
              |             &НачалоПериода,
              |             &КонецПериода,
              |             Регистратор,
              |             ВидДенежныхСредств = &ВидДС
              |                 И БанковскийСчетКасса В (&Кассы)) КАК ДвиженияДенежныхСредствОбороты
              |     ПО ДенежныеСредстваОстаткиИОбороты.Регистратор = ДвиженияДенежныхСредствОбороты.Регистратор
              |;
              |
              |////////////////////////////////////////////////////////////////////////////////
              |ВЫБРАТЬ
              | ОстаткиДень.Касса КАК Касса,
              | ЕСТЬNULL(Движения.Дата, ОстаткиДень.День) КАК Дата,
              | ОстаткиДень.День КАК День,
              | Движения.Документ КАК Документ,
              | Движения.Основание КАК Основание,
              | Движения.СтатьяДДС КАК СтатьяДДС,
              | Движения.Контрагент,
              | ЕСТЬNULL(Движения.СуммаПриход, 0) КАК СуммаПриход,
              | ЕСТЬNULL(Движения.СуммаРасход, 0) КАК СуммаРасход,
              | ОстаткиДень.ОстатокНач КАК ОстатокДеньНач,
              | ОстаткиДень.ОстатокКон КАК ОстатокДеньКон,
              | ОстаткиКасса.ОстатокНач КАК ОстатокКассаНач,
              | ОстаткиКасса.ОстатокКон КАК ОстатокКассаКон,
              | ЕСТЬNULL(Движения.СуммаНачальныйОстаток, ОстаткиДень.ОстатокНач) КАК СуммаНачальныйОстаток,
              | ЕСТЬNULL(Движения.СуммаКонечныйОстаток, ОстаткиДень.ОстатокКон) КАК СуммаКонечныйОстаток
              |ИЗ
              | ОстаткиКасса КАК ОстаткиКасса
              |     ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиДень КАК ОстаткиДень
              |     ПО ОстаткиКасса.Касса = ОстаткиДень.Касса
              |     ЛЕВОЕ СОЕДИНЕНИЕ Движения КАК Движения
              |     ПО (ОстаткиДень.День = Движения.День)
              |         И (ОстаткиДень.Касса = Движения.Касса)
              |ГДЕ
              | (ЕСТЬNULL(Движения.СуммаПриход, 0) <> 0
              |         ИЛИ ЕСТЬNULL(Движения.СуммаРасход, 0) <> 0
              |         ИЛИ ОстаткиДень.ОстатокНач <> 0
              |         ИЛИ ОстаткиДень.ОстатокКон <> 0)
              |
              |УПОРЯДОЧИТЬ ПО
              | ОстаткиДень.День,
              | Движения.Дата
              |ИТОГИ
              | СУММА(СуммаПриход),
              | СУММА(СуммаРасход),
              | МАКСИМУМ(ОстатокДеньНач),
              | МАКСИМУМ(ОстатокДеньКон),
              | МАКСИМУМ(ОстатокКассаНач),
              | МАКСИМУМ(ОстатокКассаКон)
              |ПО
              | Касса,
              | День";
    З.УстановитьПараметр("Тбл", ТДат);
    З.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода));
    З.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));
    З.УстановитьПараметр("ВидДС", Перечисления.ВидыДенежныхСредств.Наличные);
    З.УстановитьПараметр("Кассы", Касса.ВыгрузитьЗначения());
    
    //ТЗ = З.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
    //ТЗ.ВыбратьСтроку();
    //Возврат;
    
    
    
    Таб = Новый ТабличныйДокумент;
    М = ОтчетОбъект.ПолучитьМакет("Макет");
    ОблШапка = М.ПолучитьОбласть("Шапка");
    ОблДень = М.ПолучитьОбласть("День");
    ОблКасса = М.ПолучитьОбласть("Касса");
    ОблСтрока = М.ПолучитьОбласть("Строка");
    
    ОблШапка.Параметры.ДатаНач = Формат(НачалоПериода,"ДФ='дд.ММ.гг'");
    ОблШапка.Параметры.ДатаКон = Формат(КонецПериода,"ДФ='дд.ММ.гг'");
    Таб.Вывести(ОблШапка);
    
    Таб.НачатьАвтогруппировкуСтрок();
    
    ВыбКасса = З.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);   
    Пока ВыбКасса.Следующий() Цикл
    
        ЗаполнитьЗначенияСвойств(ОблКасса.Параметры, ВыбКасса);
        Таб.Вывести(ОблКасса,1,"Касса");
        
        ВыбДень = ВыбКасса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        Пока ВыбДень.Следующий() Цикл
            
            ЗаполнитьЗначенияСвойств(ОблДень.Параметры, ВыбДень);
            Таб.Вывести(ОблДень,2,"День");
            
            
            ВыбДет = ВыбДень.Выбрать();
            Пока ВыбДет.Следующий() Цикл
                ЗаполнитьЗначенияСвойств(ОблСтрока.Параметры, ВыбДет);
                Таб.Вывести(ОблСтрока,3,"Строка");
            КонецЦикла;   
            
        КонецЦикла;   
        
    КонецЦикла;
        
    
    Таб.ЗакончитьАвтогруппировкуСтрок();
    
    Таб.ТолькоПросмотр = Истина;
    Таб.Показать();
0
Phil
19.02.2019, 09:40
  #4

Не по теме:

я б поковырял, да 10 УТ нет

0
858 / 657 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
19.02.2019, 11:02  [ТС] 5
Phil, Да необязательно УТ 10, возьми любой регистр. вирт. таблицу ОстаткиИОбороты и попробуй получить получить нач. и кон. остатки по двум измерениям. (Например ТоварыНаСкладах (Группировки Склад и День и дет. записи по Номенклатуре)
0
Эксперт 1С
434 / 305 / 92
Регистрация: 28.05.2014
Сообщений: 1,247
19.02.2019, 17:06 6
Xomych, в каком виде надо получить результат?
можешь накидать пример вывода строчки 4-5 как должно выглядеть в отчете?
0
858 / 657 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
19.02.2019, 18:28  [ТС] 7
Вот так. Он работает, все ок, но мне запрос не нравится, хотелось бы упростить
Миниатюры
Начальный и конечный остатки по 2-м измерениям без СКД  
0
858 / 657 / 111
Регистрация: 01.11.2012
Сообщений: 2,411
20.02.2019, 09:31  [ТС] 8
Что-то я не ту картинку выложил вчера, там ещё сверху дат должна быть группировка по кассам тоже с остатками и оборотами
0
20.02.2019, 09:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.02.2019, 09:31
Помогаю со студенческими работами здесь

Строки. Найти в тексте начальный и конечный отрезок цифрового алфавита
Подскажите как в форме записать эту программу : Дана последовательность символов (строка). Найти в...

Найти в тексте начальный и конечный отрезки латинского алфавита, максимальные по длине
Дана последовательность символов (строка). Найти в тексте начальный и конечный отрезки латинского...

Создать отсутствующий файл и записать в него конечный и начальный элементы существующего файла
Есть две задачи, ломал голову над ними около двух дней. неудачно) 1). Даны имена двух файлов...

Создать отсутствующий файл и записать в него начальный и конечный элементы существующего файла
Даны имена двух файлов вещественных чисел. Известно, что первый из них существует и является...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru