-
Notifications
You must be signed in to change notification settings - Fork 1
/
Документ.МодульМенеджера.bsl
170 lines (125 loc) · 9.92 KB
/
Документ.МодульМенеджера.bsl
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
#Область ОбработкаПроведения
Процедура ПодготовитьПараметрыПроведения(ДокументСсылка, ДополнительныеСвойства, Отказ) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
// Формирование ПараметрыПроведения.Реквизиты
ИнициализироватьРеквизитыДокумента(Запрос, ДополнительныеСвойства, Отказ);
// Формирование таблиц данных запросов
ТекстЗапросаТабличныеЧасти(Запрос, ДополнительныеСвойства);
ТекстЗапросаРегистрОстатки(Запрос, ДополнительныеСвойства);
ПроведениеСерверПТБ.ВыполнитьЗапросДанных(Запрос, ДополнительныеСвойства);
КонецПроцедуры
Процедура ВыполнитьДополнительныеПроверки(ДополнительныеСвойства, Отказ) Экспорт
КонецПроцедуры
Процедура СформироватьДвиженияПоРегистрам(Движения, ДополнительныеСвойства, Отказ) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
СформироватьДвиженияРегистрОстатки(Движения, ДополнительныеСвойства, Отказ);
КонецПроцедуры
Процедура СформироватьСписокРегистровДляКонтроля(Движения, ДополнительныеСвойства, Отказ) Экспорт
ПроведениеСерверПТБ.ДобавитьРегистрДляКонтроля(Движения.РегистрОстатки, ДополнительныеСвойства);
КонецПроцедуры
Процедура СообщитьКонтрольРезультатовПроведения(ДополнительныеСвойства, Отказ) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
СообщитьКонтрольРегистрОстатки(ДополнительныеСвойства, Отказ);
КонецПроцедуры
#Область ПодготовитьПараметрыПроведения
Процедура ИнициализироватьРеквизитыДокумента(Запрос, ДополнительныеСвойства, Отказ)
ТекстЗапроса =
"ВЫБРАТЬ
| ""ТестовыйДокументПроведение"" КАК ВидДокумента,
| ТестовыйДокументПроведение.Ссылка КАК Ссылка,
| ТестовыйДокументПроведение.Номер КАК Номер,
| ТестовыйДокументПроведение.Дата КАК Дата,
| ТестовыйДокументПроведение.Организация КАК Организация,
| ТестовыйДокументПроведение.ЭтоРасход КАК ЭтоРасход,
| ТестовыйДокументПроведение.МоментВремени КАК МоментВремени
|ИЗ
| Документ.ТестовыйДокументПроведение КАК ТестовыйДокументПроведение
|ГДЕ
| ТестовыйДокументПроведение.Ссылка = &Ссылка";
ПроведениеСерверПТБ.ДобавитьТаблицуЗапроса("Реквизиты", ДополнительныеСвойства);
ПроведениеСерверПТБ.ДобавитьТекстЗапроса(ТекстЗапроса, Запрос);
ПроведениеСерверПТБ.ВыполнитьЗапросДанныхРеквизитов(Запрос, ДополнительныеСвойства);
// Дополнение параметров
Реквизиты = ДополнительныеСвойства.ПараметрыПроведения.Реквизиты;
Запрос.УстановитьПараметр("НачалоПериода", Реквизиты.МоментВремени);
КонецПроцедуры
Процедура ТекстЗапросаТабличныеЧасти(Запрос, ДополнительныеСвойства)
ТекстЗапроса =
"ВЫБРАТЬ
| &Дата КАК Период,
| ТабличнаяЧасть.НомерСтроки КАК НомерСтроки,
| ТабличнаяЧасть.Пользователь КАК Пользователь,
| ТабличнаяЧасть.Количество КАК Количество
|ПОМЕСТИТЬ ТабличнаяЧасть
|ИЗ
| Документ.ТестовыйДокументПроведение.ТабличнаяЧасть КАК ТабличнаяЧасть
|ГДЕ
| ТабличнаяЧасть.Ссылка = &Ссылка";
ПроведениеСерверПТБ.ДобавитьТаблицуЗапроса("ВТ_ТабличнаяЧасть", ДополнительныеСвойства);
ПроведениеСерверПТБ.ДобавитьТекстЗапроса(ТекстЗапроса, Запрос);
КонецПроцедуры
Процедура ТекстЗапросаРегистрОстатки(Запрос, ДополнительныеСвойства)
ТекстЗапроса =
"ВЫБРАТЬ
| &Дата КАК Период,
| МИНИМУМ(ТабличнаяЧасть.НомерСтроки) КАК НомерСтрокиТЧ,
| ВЫБОР
| КОГДА &ЭтоРасход
| ТОГДА ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
| ИНАЧЕ ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
| КОНЕЦ КАК ВидДвижения,
| &Организация КАК Организация,
| ТабличнаяЧасть.Пользователь КАК Пользователь,
| СУММА(ТабличнаяЧасть.Количество) КАК Количество
|ИЗ
| ТабличнаяЧасть КАК ТабличнаяЧасть
|
|СГРУППИРОВАТЬ ПО
| ТабличнаяЧасть.Пользователь";
ПроведениеСерверПТБ.ДобавитьТаблицуЗапроса("РегистрОстатки", ДополнительныеСвойства);
ПроведениеСерверПТБ.ДобавитьТекстЗапроса(ТекстЗапроса, Запрос);
КонецПроцедуры
#КонецОбласти
#Область СформироватьДвиженияПоРегистрам
Процедура СформироватьДвиженияРегистрОстатки(Движения, ДополнительныеСвойства, Отказ) Экспорт
Если Отказ Тогда
Возврат;
КонецЕсли;
ПараметрыПроведения = ДополнительныеСвойства.ПараметрыПроведения;
Движения.РегистрОстатки.Записывать = Истина;
Для Каждого СтрокаТаблицы Из ПараметрыПроведения.РегистрОстатки Цикл
ДвижениеРегистра = Движения.РегистрОстатки.Добавить();
ЗаполнитьЗначенияСвойств(ДвижениеРегистра, СтрокаТаблицы);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СообщитьКонтрольРезультатовПроведения
Процедура СообщитьКонтрольРегистрОстатки(ДополнительныеСвойства, Отказ) Экспорт
РезультатКонтроля = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеСвойства.РезультатКонтроля,
"РегистрОстатки", Неопределено);
Если НЕ ТипЗнч(РезультатКонтроля) = Тип("ТаблицаЗначений") ИЛИ РезультатКонтроля.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ДокументСсылка = ДополнительныеСвойства.ОбщиеДанные.Ссылка;;
Для Каждого СтрокаКонтроля Из РезультатКонтроля Цикл
ОтборСтрок = Новый Структура("Пользователь");
ЗаполнитьЗначенияСвойств(ОтборСтрок, СтрокаКонтроля);
ПутьКРеквизиту = ПроведениеСерверПТБ.ПутьКТабличнойЧасти(ДополнительныеСвойства,
"РегистрОстатки", ОтборСтрок, "Объект.ТабличнаяЧасть.Количество");
Если СтрокаКонтроля.Количество < 0 Тогда
СтрПользователь = Строка(СтрокаКонтроля.Пользователь);
ТекстСообщения = СтрШаблон(НСтр("ru='Недостаточно количества по пользователю ""%1"" (недостаток: %2 %3)'"),
СтрПользователь,
Формат(-СтрокаКонтроля.Количество, "ЧДЦ=3; ЧН=0.000; ЧГ="),
НСтр("ru='ед.'"));
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ДокументСсылка, ПутьКРеквизиту,, Отказ);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецОбласти