/
1c4_9_01.txt
151 lines (138 loc) · 9.87 KB
/
1c4_9_01.txt
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
//ПОИСК ОШИБОК в выгружаемой базе
Процедура ОсновныеДействияФормыДействие(Кнопка)
ОчиститьСообщения();
Сообщить("Проверка базы ...");
ДокументыСОшибкой.Очистить();
Счет21=ПланыСчетов.ЕПСБУ.НайтиПоКоду("21");
КонПериод=КонецДня(ДатаОстатковОС);
СписокОС=Новый Массив();
СписокОСБалансовые=Новый Массив();
//1 - проверем бухгалтерские остатки
Сообщить("1 - проверка бухгалтерских остатков");
Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ЕПСБУОстатки.Счет,
| ВЫБОР
| КОГДА ЕПСБУОстатки.Счет В ИЕРАРХИИ (&Счет21)
| ТОГДА ЕПСБУОстатки.Субконто1
| ИНАЧЕ ЕПСБУОстатки.Субконто2
| КОНЕЦ КАК ОС,
| ВЫБОР
| КОГДА ЕПСБУОстатки.Счет В ИЕРАРХИИ (&Счет21)
| ТОГДА ЕПСБУОстатки.Субконто2
| ИНАЧЕ ЕПСБУОстатки.Субконто3
| КОНЕЦ КАК МОЛ,
| ЕПСБУОстатки.КоличествоОстаток КАК Колво,
| ЕПСБУОстатки.СуммаОстаток КАК Сумма
|ИЗ
| РегистрБухгалтерии.ЕПСБУ.Остатки(&КонПериод, Счет В ИЕРАРХИИ (&Счет), , Учреждение = &Учреждение) КАК ЕПСБУОстатки
|
|УПОРЯДОЧИТЬ ПО
| ОС,
| МОЛ";
Запрос.УстановитьПараметр("КонПериод", КонПериод);
Запрос.УстановитьПараметр("Учреждение", Организация);
Запрос.УстановитьПараметр("Счет", Счет);
Запрос.УстановитьПараметр("Счет21", Счет21);
Выборка=Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СчетРаб=Выборка.Счет;
ОСРаб=Выборка.ОС;
МОЛРаб=Выборка.МОЛ;
Колво=Выборка.Колво;
Сумма=Выборка.Сумма;
Если Колво<1 Тогда
ЗаписьОшибки("",ОСРаб,"Остаток кол-ва ОС меньше 1!");
КонецЕсли;
Если Сумма<0 Тогда
ЗаписьОшибки("",ОСРаб,"Отрицательный остаток по сумме (возможно неправильное перемещение или списание)!");
КонецЕсли;
Если МОЛРаб=Справочники.ЦМО.ПустаяСсылка() Тогда
ЗаписьОшибки("",ОСРаб,"В бух. остатках отсутствует МОЛ!");
КонецЕсли;
Если ОСРаб=Справочники.ОсновныеСредства.ПустаяСсылка() Тогда
ЗаписьОшибки("","","В бух. остатках отсутствует ОС!");
Иначе
Если (Счет.Родитель.Родитель=Счет21) Или (Счет.Родитель=Счет21) Или (Счет=Счет21) Тогда
СписокОС.Добавить(ОСРаб);
Иначе
СписокОС.Добавить(ОСРаб);
СписокОСБалансовые.Добавить(ОСРаб);
КонецЕсли;
//запрос по инв.номерам
ЗапросИнвНомер=Новый Запрос;
ЗапросИнвНомер.Текст="ВЫБРАТЬ
| ИнвентарныеНомераОС.Ссылка,
| ИнвентарныеНомераОС.Код
|ИЗ
| Справочник.ИнвентарныеНомераОС КАК ИнвентарныеНомераОС
|ГДЕ
| ИнвентарныеНомераОС.ОС = &ОС
| И ИнвентарныеНомераОС.Владелец = &Организация";
ЗапросИнвНомер.УстановитьПараметр("ОС",ОСРаб);
ЗапросИнвНомер.УстановитьПараметр("Организация",Организация);
ВыборкаИнвНомер=ЗапросИнвНомер.Выполнить().Выбрать();
КолвоИнвНом=ВыборкаИнвНомер.Количество();
//проверка инв-номера
Если (Счет.Родитель.Родитель=Счет21) Или (Счет.Родитель=Счет21) Или (Счет=Счет21) Тогда
//для забаланса пропускаем
Иначе
Если КолвоИнвНом=0 Тогда
ЗаписьОшибки("",ОСРаб,"Не обнаружен инвентарный номер (нет вообще). Для ОС на балансовых счетах, обязательно должен быть введен инвентарный номер!");
КонецЕсли;
//проверка группового учета
Если Колво>1 Тогда
Если ОСРаб.ГрупповойУчет=Ложь Тогда
ЗаписьОшибки("",ОСРаб,"На остатках кол-во больше единицы, а карточка ОС - обычная. Она должна быть групповой!");
КонецЕсли;
//проверка соответствия кол-ва на остатке и кол-ва инв.номеров
Если КолвоИнвНом<Колво Тогда
ЗаписьОшибки("",ОСРаб,"Не верное кол-во инв.номеров для групповой карточки. На остатке кол-во="+СокрЛП(Колво)+", а инвентарных номеров всего="+СокрЛП(КолвоИнвНом)+". Нехватает инвентарных номеров!");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
//2 - отсутствие инв. номеров или МОЛ в регистре сведений - Местонахождение ОС
Сообщить("2 - проверка регистра сведений: Состояние и местонахождение ОС (на дату="+СокрЛП(КонПериод)+")");
Сообщить(" (только для балансовых ОС)");
ЗапросРег=Новый Запрос;
ЗапросРег.Текст="ВЫБРАТЬ
| МестонахождениеОССрезПоследних.ОС КАК ОС,
| МестонахождениеОССрезПоследних.ЦМО КАК МОЛ,
| МестонахождениеОССрезПоследних.ИнвНомер,
| МестонахождениеОССрезПоследних.Регистратор КАК Документ
|ИЗ
| РегистрСведений.МестонахождениеОС.СрезПоследних(
| &КонПериод,
| ОС В (&СписокОС)
| И Учреждение = &Организация) КАК МестонахождениеОССрезПоследних
|
|УПОРЯДОЧИТЬ ПО
| ОС,
| МОЛ";
ЗапросРег.УстановитьПараметр("КонПериод",КонПериод);
ЗапросРег.УстановитьПараметр("СписокОС",СписокОСБалансовые);
ЗапросРег.УстановитьПараметр("Организация",Организация);
РезультатРег=ЗапросРег.Выполнить();
ВыборкаРег=РезультатРег.Выбрать();
Пока ВыборкаРег.Следующий() Цикл
ОСРаб=ВыборкаРег.ОС;
МОЛРаб=ВыборкаРег.МОЛ;
ИнвНомер=ВыборкаРег.ИнвНомер;
Документ=ВыборкаРег.Документ;
Если МОЛРаб=Справочники.ЦМО.ПустаяСсылка() Тогда
ЗаписьОшибки(Документ,ОСРаб,"В регистре МестанохождениеОС отсутствует МОЛ! Неправильно заполена ТЧ документа.");
КонецЕсли;
Если ИнвНомер=Справочники.ИнвентарныеНомераОС.ПустаяСсылка() Тогда
ЗаписьОшибки(Документ,ОСРаб,"В регистре МестанохождениеОС отсутствует инвентарный номер! Неправильно заполена ТЧ документа.");
КонецЕсли;
КонецЦикла;
//завершение
Сообщить("-------------------------------------------------------------");
Если ДокументыСОшибкой.Количество()=0 Тогда
Сообщить("Проверка завершена. ОШИБОК НЕТ!");
Иначе
Сообщить("Проверка завершена. Обнаружено ошибок: "+СокрЛП(ДокументыСОшибкой.Количество())+". Описание ошибок смотрите на закладке - список ошибок");
КонецЕсли;
КонецПроцедуры