&НаСервере
Процедура Распроведение_док_по_виду(тек_мет)
сообщ = Новый СообщениеПользователю;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Имя_Вида_Документа.Ссылка КАК Ссылка,
| Имя_Вида_Документа.Дата КАК Дата
|ИЗ
| Документ.Имя_Вида_Документа КАК Имя_Вида_Документа
|ГДЕ
| (Имя_Вида_Документа.Проведен = ИСТИНА)
|
|УПОРЯДОЧИТЬ ПО
| Дата УБЫВ";
// сортировка по УБЫВАНИЮ для связей: исправленный-исправитель, продлёных больничных и других доков введённых на основании.
Запрос.Текст = СтрЗаменить(Запрос.Текст,"Имя_Вида_Документа", тек_мет.Имя);
тз_док = Запрос.Выполнить().Выгрузить();
Для каждого тек_стр_д из тз_док Цикл
тек_дока = тек_стр_д.ссылка.получитьОбъект();
Попытка
Если (тек_дока.Проведен) Тогда
Если тек_мет.Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
//Возврат;
тек_дока.ОбменДанными.Загрузка = Истина;
тек_дока.Записать(РежимЗаписиДокумента.ОтменаПроведения);
Иначе
сообщ.Текст = "все доки данного ТИПА "+тек_мет.Имя+" надо распроводить вручную";
сообщ.Сообщить();
КонецЕсли;
КонецЕсли;
Исключение
сообщить("ИСКЛЮЧЕНИЕ РАСпроведения --- "+тек_стр_д.ссылка+" "+тек_мет.Имя);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Процедура Пометка_на_удаление_док_по_виду(тек_мет)
сообщ = Новый СообщениеПользователю;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Имя_Вида_Документа.Ссылка КАК Ссылка,
| Имя_Вида_Документа.Дата КАК Дата
|ИЗ
| Документ.Имя_Вида_Документа КАК Имя_Вида_Документа
|ГДЕ
| (Имя_Вида_Документа.ПометкаУдаления = ЛОЖЬ)
|
|УПОРЯДОЧИТЬ ПО
| Дата УБЫВ";
// сортировка по УБЫВАНИЮ для связей: исправленный-исправитель, продлёных больничных и других доков введённых на основании.
Запрос.Текст = СтрЗаменить(Запрос.Текст,"Имя_Вида_Документа", тек_мет.Имя);
тз_док = Запрос.Выполнить().Выгрузить();
Для каждого тек_стр_д из тз_док Цикл
тек_дока = тек_стр_д.ссылка.получитьОбъект();
Попытка
Если (тек_дока.ПометкаУдаления = Ложь) Тогда
тек_дока.УстановитьПометкуУдаления(Истина);
КонецЕсли;
Исключение
сообщить("ИСКЛЮЧЕНИЕ ПОМЕТКИ "+тек_стр_д.ссылка+" "+тек_мет.Имя);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Процедура ПЕРЕзапись_статуса_реестров_в_АННУЛИРОВАН()
// ПЕРЕзапись статуса реестров в АННУЛИРОВАН
Запрос = Новый Запрос;
Запрос.текст = "ВЫБРАТЬ
| РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.Ссылка КАК Ссылка
|ИЗ
| Документ.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий КАК РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий
|ГДЕ
| РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.СтатусДокумента <> &Аннулирован";
запрос.УстановитьПараметр("Аннулирован", Перечисления.СтатусыЗаявленийИРеестровНаВыплатуПособий.Аннулирован);
выб_р_вып = запрос.Выполнить().Выбрать();
Пока выб_р_вып.Следующий() Цикл
док_об_р = выб_р_вып.Ссылка.ПолучитьОбъект();
док_об_р.СтатусДокумента = Перечисления.СтатусыЗаявленийИРеестровНаВыплатуПособий.Аннулирован;
док_об_р.записать(РежимЗаписиДокумента.Запись);
КонецЦикла;
КонецПроцедуры
Процедура Шаг_1_ДОКИ_распроведение_ч1()
// ВАРИАНТ с ОБХОДом ДОКОВ ЧЕРЕЗ метаданные
сообщ = Новый СообщениеПользователю;
// 1-ая часть - ВЫПЛАТЫ
Распроведение_док_по_виду(Метаданные.Документы.ВедомостьНаВыплатуЗарплатыВБанк);
Распроведение_док_по_виду(Метаданные.Документы.ВедомостьНаВыплатуЗарплатыВКассу);
Распроведение_док_по_виду(Метаданные.Документы.ВедомостьНаВыплатуЗарплатыПеречислением);
Распроведение_док_по_виду(Метаданные.Документы.ВедомостьНаВыплатуЗарплатыРаздатчиком);
Распроведение_док_по_виду(Метаданные.Документы.ВедомостьПрочихДоходовВБанк);
Распроведение_док_по_виду(Метаданные.Документы.ВедомостьПрочихДоходовВКассу);
Распроведение_док_по_виду(Метаданные.Документы.ВедомостьПрочихДоходовПеречислением);
Распроведение_док_по_виду(Метаданные.Документы.ПеречислениеНДФЛВБюджет);
// прочее
Распроведение_док_по_виду(Метаданные.Документы.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий);
ПЕРЕзапись_статуса_реестров_в_АННУЛИРОВАН();
Распроведение_док_по_виду(Метаданные.Документы.ЗаявлениеСотрудникаНаВыплатуПособия);
Распроведение_док_по_виду(Метаданные.Документы.СторнированиеНачислений);
// 2-ая часть - основная дока НачислениеЗарПлаты
Распроведение_док_по_виду(Метаданные.Документы.НачислениеЗарплаты);
// 3-ая часть - межрасчёт
Распроведение_док_по_виду(Метаданные.Документы.БольничныйЛист);
Распроведение_док_по_виду(Метаданные.Документы.Отпуск);
Распроведение_док_по_виду(Метаданные.Документы.Командировка);
Распроведение_док_по_виду(Метаданные.Документы.ОтпускПоУходуЗаРебенком);
// 4-ая - для распроведения штатки надо распровести кадровые документы
Распроведение_док_по_виду(Метаданные.Документы.Увольнение);
Распроведение_док_по_виду(Метаданные.Документы.УвольнениеСписком);
Распроведение_док_по_виду(Метаданные.Документы.КадровыйПеревод);
Распроведение_док_по_виду(Метаданные.Документы.КадровыйПереводСписком);
Распроведение_док_по_виду(Метаданные.Документы.ПриемНаРаботу);
Распроведение_док_по_виду(Метаданные.Документы.ПриемНаРаботуСписком);
КонецПроцедуры
Процедура Шаг_2_ДОКИ_распроведение_ч2()
Распроведение_док_по_виду(Метаданные.Документы.ПриказНаНадбавки);
Распроведение_док_по_виду(Метаданные.Документы.Увольнение);
Распроведение_док_по_виду(Метаданные.Документы.ИзменениеШтатногоРасписания);
КонецПроцедуры
Процедура Шаг_3_ДОКИ_распроведение_ч3()
// все остальные доки без порядка связей - просто по алфавиту
Для Каждого тек_мет Из Метаданные.Документы Цикл
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Имя_Вида_Документа.Ссылка КАК Ссылка
|ИЗ
| Документ.Имя_Вида_Документа КАК Имя_Вида_Документа
|ГДЕ
| Имя_Вида_Документа.Проведен = ИСТИНА";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Имя_Вида_Документа", тек_мет.Имя);
выб_док = Запрос.Выполнить().Выбрать();
Если (выб_док.Следующий()) Тогда
//МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипЗнч(выб_док.ссылка));
Распроведение_док_по_виду(тек_мет);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Процедура Шаг_4_ДОКИ_пометка_УДАЛ()
// все остальные доки без порядка связей - просто по алфавиту
Для Каждого тек_мет Из Метаданные.Документы Цикл
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Имя_Вида_Документа.Ссылка КАК Ссылка
|ИЗ
| Документ.Имя_Вида_Документа КАК Имя_Вида_Документа
|ГДЕ
| Имя_Вида_Документа.ПометкаУдаления = ЛОЖЬ";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Имя_Вида_Документа", тек_мет.Имя);
выб_док = Запрос.Выполнить().Выбрать();
Если (выб_док.Следующий()) Тогда
//МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипЗнч(выб_док.ссылка));
Пометка_на_удаление_док_по_виду(тек_мет);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// СТАРЫЙ ВАРИАНТ
Процедура Шаг_СТАРЫЙ_______ВАРИАНТ_ПО_ССЫЛКАМ_НА_ОРГАНИЗАЦИЮ()
//// 1-ый ВАРИАНТ - ОБХОД ВСЕХ ДОКОВ ЧЕРЕЗ поиск ссылок на организации - ДООООЛГО
//
////1. тз всех док
// тз_все_доки = Новый таблицаЗначений;
// тз_все_доки.Колонки.Добавить("имя");
// тз_все_доки.Колонки.Добавить("мет_д");
// Для Каждого тек_мет Из Метаданные.Документы Цикл
// нов_стр = тз_все_доки.Добавить();
// нов_стр.имя = тек_мет.Имя;
// нов_стр.мет_д = тек_мет;
// КонецЦикла;
//
////2. тз всех доков по всем организациям
// массив_организаций = Новый Массив;
// выборка_орг = Справочники.Организации.Выбрать();
// Пока выборка_орг.Следующий() Цикл
// массив_организаций.Добавить(выборка_орг.Ссылка);
// КонецЦикла;
// ТабСсылок = НайтиПоСсылкам(массив_организаций);
//
////3. проход по всем докам - распроведение и пометка удаления
// Для Каждого Ссылка из ТабСсылок Цикл
//
// найд_тип_доки = тз_все_доки.Найти(ссылка.метаданные.имя,"имя");
// Если (найд_тип_доки <> неопределено) Тогда
//
// тек_дока = ссылка.данные.получитьобъект();
////тек_дока = документы.НазначениеПлановогоНачисления.СоздатьДокумент();
//
// КонецЕсли;
// КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура шаг1_ч1(Команда)
Шаг_1_ДОКИ_распроведение_ч1();
КонецПроцедуры
Процедура шаг2_ч2(Команда)
Шаг_2_ДОКИ_распроведение_ч2();
КонецПроцедуры
Процедура шаг3_ч3(Команда)
Шаг_3_ДОКИ_распроведение_ч3();
КонецПроцедуры
Процедура шаг4_пометка(Команда)
Шаг_4_ДОКИ_пометка_УДАЛ();
КонецПроцедуры
// после 3-го шага нужно проверить сколько осталось проведённых и при необходимости запустить по второму разу
&НаСервере
Процедура оценка_проведённых_документовНаСервере()
тз_всех_док = Новый ТаблицаЗначений;
тз_всех_док.Колонки.Добавить("имя");
тз_всех_док.Колонки.Добавить("кол");
Для Каждого тек_мет Из Метаданные.Документы Цикл
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СУММА(1) КАК Поле1
|ИЗ
| Документ.Имя_Вида_Документа КАК Имя_Вида_Документа
|ГДЕ
| Имя_Вида_Документа.Проведен = ИСТИНА";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Имя_Вида_Документа", тек_мет.Имя);
выб_док = Запрос.Выполнить().Выбрать();
тек_кол_д = 0;
Если (выб_док.Следующий()) Тогда
тек_кол_д = выб_док.поле1;
КонецЕсли;
нов_стр = тз_всех_док.Добавить();
нов_стр.имя = тек_мет.Имя;
нов_стр.кол = тек_кол_д;
КонецЦикла;
тз_всех_док.Сортировать("кол Убыв");
Для каждого тек_д из тз_всех_док Цикл
сообщить(" "+тек_д.имя+" "+тек_д.кол);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура оценка_проведённых_документов(Команда)
оценка_проведённых_документовНаСервере();
КонецПроцедуры
// ШАГ 5 --- Удаление ДОКОВ без проверки ссылок
&НаСервере
Процедура Удаление_док_по_виду(тек_мет)
сообщ = Новый СообщениеПользователю;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Имя_Вида_Документа.Ссылка КАК Ссылка
|ИЗ
| Документ.Имя_Вида_Документа КАК Имя_Вида_Документа
|ГДЕ
| (Имя_Вида_Документа.Проведен = ЛОЖЬ)";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"Имя_Вида_Документа", тек_мет.Имя);
тз_док = Запрос.Выполнить().Выгрузить();
Для каждого тек_стр_д из тз_док Цикл
тек_дока = тек_стр_д.ссылка.получитьОбъект();
Попытка
тек_дока.Удалить();
Исключение
сообщить("ИСКЛЮЧЕНИЕ УДАЛЕНИЯ --- "+тек_стр_д.ссылка+" "+тек_мет.Имя);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура Шаг_5_ДОКИ_удаление()
// Так как стандартная обработка удаления помеченных объектов ДООООЛГО проверяет
// ссылки НА помеченные объекты, ТО!! стоит ей помочь - удалить большую часть документов и другого хлама без проверки на
// ссылки - программно.
// все остальные доки без порядка связей - просто по алфавиту
Для Каждого тек_мет Из Метаданные.Документы Цикл
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Имя_Вида_Документа.Ссылка КАК Ссылка
|ИЗ
| Документ.Имя_Вида_Документа КАК Имя_Вида_Документа
|ГДЕ
| Имя_Вида_Документа.Проведен = ЛОЖЬ";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Имя_Вида_Документа", тек_мет.Имя);
выб_док = Запрос.Выполнить().Выбрать();
Если (выб_док.Следующий()) Тогда
//МетаданныеДокумента = Метаданные.НайтиПоТипу(ТипЗнч(выб_док.ссылка));
Удаление_док_по_виду(тек_мет);
КонецЕсли;
КонецЦикла;
// 1 ------------ ДОКИ
//РазовоеНачисление 11 643
//Отпуск 8 523
//ПриказНаНадбавки 7 613
//ВедомостьНаВыплатуЗарплатыВБанк 7 352
//НачислениеЗарплаты 6 820
//ТабельУчетаРабочегоВремени 6 665
//ЗаявлениеСотрудникаНаВыплатуПособия 4 885
//НачислениеЗаПервуюПоловинуМесяца 4 525
//ВводНачальныхОстатковОтпусков 3 372
//ПочасовойРасходНадбавками 2 951
//КадровыйПеревод 2 804
//ИзменениеШтатногоРасписания 2 442
//ПрогулНеявка 2 401
//ПриемНаРаботу 2 062
//Премия 2 013
//БольничныйЛист 1 906
//ОтпускаСотрудников 1 755
// 3 --------- справочники
//Дисциплины 62 610
//НомераКадровыхПриказов 17 543
//НомераТрудовыхДоговоров 7 725
//ШифрГруппы 7 242
//ОбразованиеФизическихЛиц 7 016
//ВедомостьНаВыплатуЗарплатыВБанкПрисоединенныеФайлы 5 028
// 3 --------- регистры сведений
//ВерсииОбъектов 3 699 248
//СоставДокументовЗарплатаКадры 957 949
//ФизическиеЛицаДокументов 638 922
//ГрафикиРаботыПоВидамВремени 542 567
//ЗамерыСтатистики 496 055
//ПерерасчетСреднегоЗаработка 195 044
//АдресныеОбъекты 166 352
//ДомаЗданияСтроения 152 272
//Журнал_открытия_сотрудников 127 781
//ДанныеОВремениДляРасчетаСреднегоОбщийКорректировка 61 911
//СведенияОВремениДляРасчетаСреднегоОбщий 61 504
//СведенияОНачисленияхДляРасчетаСреднегоЗаработкаОбщий 60 691
//ДанныеОВремениДляРасчетаСреднегоФСС 56 539
//СведенияОВремениДляРасчетаСреднегоФCC 56 508
//СправкиНДФЛДляИФНССведенияОДоходах 51 132
КонецПроцедуры
&НаКлиенте
Процедура шаг5_удаление(Команда)
Шаг_5_ДОКИ_удаление();
КонецПроцедуры
// ШАГ 5-Б --- удаление доков с ошибками распроведения: сначала их движений, а затем самих доков непосредственно
&НаСервере
Процедура шаг5_Б_удаление_ДОКОВ_с_ОШИБКАМИНаСервере()
// в моём случае ДОКИ с ошибками - это ИзменениеШтатногоРасписания
// если ошибка в коде РАСпроведения не особо понятна, проще уничтожить
// 1 - сначала удаляю движения по регистрам
выборка_док = документы.ИзменениеШтатногоРасписания.Выбрать();
Пока выборка_док.Следующий() Цикл
// ПЯТЬ регов:
НаборЗаписей = РегистрыСведений.ИсторияНачисленийПоШтатномуРасписанию.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(выборка_док.Ссылка);
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ИсторияПоказателейПоШтатномуРасписанию.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(выборка_док.Ссылка);
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.РаспределениеШтатныхСтавок.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(выборка_док.Ссылка);
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ИсторияИспользованияШтатногоРасписания.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(выборка_док.Ссылка);
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ИсторияЕжегодныхОтпусковПоШтатномуРасписанию.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(выборка_док.Ссылка);
НаборЗаписей.Записать();
КонецЦикла;
// 2 - доки
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ИзменениеШтатногоРасписания.Ссылка КАК Ссылка
|ИЗ
| Документ.ИзменениеШтатногоРасписания КАК ИзменениеШтатногоРасписания";
тз_д = запрос.Выполнить().Выгрузить();
Для каждого тек_стр_д из тз_д Цикл
док_об = тек_стр_д.ссылка.получитьобъект();
док_об.удалить();
КонецЦикла;
// 3 - доки ПриказНаНадбавки
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ПриказНаНадбавки.Ссылка КАК Ссылка
|ИЗ
| Документ.ПриказНаНадбавки КАК ПриказНаНадбавки";
тз_д = запрос.Выполнить().Выгрузить();
Для каждого тек_стр_д из тз_д Цикл
Попытка
док_об = тек_стр_д.ссылка.получитьобъект();
Если (док_об.проведен = Истина) Тогда
док_об.Записать(РежимЗаписиДокумента.ОтменаПроведения);
КонецЕсли;
док_об.удалить();
Исключение
сообщить("дока не удалилась или не распровелась "+док_об);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура шаг5_Б_удаление_ДОКОВ_с_ОШИБКАМИ(Команда)
шаг5_Б_удаление_ДОКОВ_с_ОШИБКАМИНаСервере();
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////ч/////ч//////////а////ссссс//ттттттт//ь//////////22222/////////////////////////////////////////////////////
/////ч/////ч/////////аа///с//////////т/////ь/////////2/////2////////////////////////////////////////////////////
/////ч/////ч////////а/а///с//////////т/////ь///////////////2////////////////////////////////////////////////////
/////ччччччч///////а//а///с//////////т/////ь//////////////2/////////////////////////////////////////////////////
///////////ч//////а///а///с//////////т/////ььььь/////////2//////////////////////////////////////////////////////
///////////ч/////аааааа///с//////////т/////ь////ь///////2///////////////////////////////////////////////////////
///////////ч////а/////а///с//////////т/////ь////ь//////2////////////////////////////////////////////////////////
///////////ч///а//////а////ссссс/////т/////ььььь//////222222////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// вывод ВСЕХ типов объектов с количествами
&НаСервере
Процедура вывод_списка_метаданных_по_количеству(тек_коллекция, тип_метаданных)
тз_всех_имён = Новый ТаблицаЗначений;
тз_всех_имён.Колонки.Добавить("имя");
тз_всех_имён.Колонки.Добавить("кол");
Для Каждого тек_мет Из тек_коллекция Цикл
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СУММА(1) КАК Поле1
|ИЗ
| Тип_метаданных.Имя_Вида_МетаДанных КАК Имя_Вида_МетаДанных";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"Имя_Вида_МетаДанных",тек_мет.Имя);
Запрос.Текст = СтрЗаменить(Запрос.Текст,"Тип_метаданных",тип_метаданных);
выб_з = Запрос.Выполнить().Выбрать();
тек_кол_д = 0;
Если (выб_з.Следующий()) Тогда
тек_кол_д = выб_з.поле1;
КонецЕсли;
нов_стр = тз_всех_имён.Добавить();
нов_стр.имя = тек_мет.Имя;
нов_стр.кол = тек_кол_д;
КонецЦикла;
тз_всех_имён.Сортировать("кол Убыв");
Для каждого тек_д из тз_всех_имён Цикл
тек_кол = 0;
Если СокрЛП(тек_д.кол) <> "" Тогда
Попытка
тек_кол = Число(СокрЛП(тек_д.кол));
Исключение
КонецПопытки;
КонецЕсли;
Если (тек_кол > 0) Тогда
сообщить(" "+тек_д.имя+" "+тек_д.кол);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура оценка_заполнения_базыНаСервере()
сообщить("=================== документы =================================");
вывод_списка_метаданных_по_количеству(Метаданные.Документы, "Документ");
сообщить("=================== справочники =================================");
вывод_списка_метаданных_по_количеству(Метаданные.Справочники, "Справочник");
сообщить("=================== РегистрСведений =================================");
вывод_списка_метаданных_по_количеству(Метаданные.РегистрыСведений, "РегистрСведений");
сообщить("=================== РегистрыНакопления =================================");
вывод_списка_метаданных_по_количеству(Метаданные.РегистрыНакопления, "РегистрНакопления");
сообщить("=================== РегистрыРасчета =================================");
вывод_списка_метаданных_по_количеству(Метаданные.РегистрыРасчета, "РегистрРасчета");
КонецПроцедуры
&НаКлиенте
Процедура оценка_заполнения_базы(Команда)
оценка_заполнения_базыНаСервере();
КонецПроцедуры
// ШАГ 6 --- выборочное удаление РАСПУХШИХ объектов БД
&НаСервере
Процедура Шаг_6_удаление_распухших()
// 1 - ВЕРСИИ объектов
//// всё сразу не может 1с - завершается с ошибкой
//НаборЗаписей = РегистрыСведений.ВерсииОбъектов.СоздатьНаборЗаписей();
//НаборЗаписей.Записать();
// тогда по ЧАСТям ...
//ЗапросОчистка = Новый Запрос;
//ЗапросОчистка.Текст = "ВЫБРАТЬ
//| ВерсииОбъектов.Объект,
//| ВерсииОбъектов.ВерсияОбъекта
//|ИЗ
//| РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
//|ГДЕ
//| ВерсииОбъектов.ДатаВерсии >= &НачПериода
//| И ВерсииОбъектов.ДатаВерсии <= &КонПериода";
//
//ЗапросОчистка.Параметры.Вставить("НачПериода",НачалоДня(ДатаОчистки));
//ЗапросОчистка.Параметры.Вставить("КонПериода",КонецДня(ДатаОчистки));
//Выборка = ЗапросОчистка.Выполнить().Выбрать();
// нужно взять из оценки заполнения базы
макс_знач = 317732;
Для счётчик = 0 по (макс_знач - 3) Цикл // первые и вторые версии пока не трогаю
НаборЗаписей = РегистрыСведений.ВерсииОбъектов.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.НомерВерсии.Установить(макс_знач - счётчик);
НаборЗаписей.Записать();
КонецЦикла;
Для счётчик = 1 по 2 Цикл // первые и вторые версии пока не трогаю
НаборЗаписей = РегистрыСведений.ВерсииОбъектов.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.НомерВерсии.Установить(счётчик);
НаборЗаписей.Записать();
КонецЦикла;
// 2 - ЗамерыСтатистики
Выборка = РегистрыСведений.ЗамерыСтатистики.Выбрать();
Пока Выборка.Следующий() Цикл
Запись = Выборка.ПолучитьМенеджерЗаписи();
Запись.Удалить();
КонецЦикла;
// 3 - небольшие реги можно одним ударом
НаборЗаписей = РегистрыСведений.ЗамерыВремениТехнологические.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.Журнал_открытия_сотрудников.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.Журнал_запуска_отчётов.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.УдалитьЗамерыВремени3.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
КонецПроцедуры
&НаКлиенте
Процедура шаг6_выборочно_удалить_расПУХших(Команда)
Шаг_6_удаление_распухших();
КонецПроцедуры
// ШАГ 7 --- пометка СПРАВОЧНИКов
&НаСервере
Процедура пометка_справочников_по_массиву_ссылок(ТабСсылок, тз_все_справ)
Для Каждого Ссылка из ТабСсылок Цикл
найд_тип_спр = тз_все_справ.Найти(ссылка.метаданные.имя, "имя");
Если (найд_тип_спр <> неопределено) Тогда
Попытка
// проверка на совпадение типов так как есть одинаковые ИМЕНА с регистрами!
Если (ТипЗнч(ссылка.данные) = Тип("СправочникССылка."+ссылка.метаданные.имя)) Тогда
Попытка
тек_спр = ссылка.данные.получитьобъект();
тек_спр.УстановитьПометкуУдаления(Истина);
Исключение
сообщить("ИСКЛЮЧЕНИЕ пометки на удаление --- "+ссылка.данные+" "+ссылка.метаданные.имя);
КонецПопытки;
КонецЕсли;
Исключение
сообщить(""+ссылка.данные+" "+ссылка.метаданные.имя);
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура Шаг_7_СПРАВочники_пометка()
тз_все_справ = Новый таблицаЗначений;
тз_все_справ.Колонки.Добавить("имя");
тз_все_справ.Колонки.Добавить("мет_д");
Для Каждого тек_мет Из Метаданные.Справочники Цикл
нов_стр = тз_все_справ.Добавить();
нов_стр.имя = тек_мет.Имя;
нов_стр.мет_д = тек_мет;
КонецЦикла;
сообщ = Новый СообщениеПользователю;
// 1-ая часть - пометка на удаление всех справочников по ссылкам на физ лица
массив_фл = Новый Массив;
выборка_фл = Справочники.ФизическиеЛица.Выбрать();
Пока выборка_фл.Следующий() Цикл
массив_фл.Добавить(выборка_фл.Ссылка);
Если (выборка_фл.ПометкаУдаления = Ложь) Тогда
Попытка
тек_об_фл = выборка_фл.Ссылка.получитьобъект();
тек_об_фл.УстановитьПометкуУдаления(Истина);
Исключение
сообщить("ИСКЛЮЧЕНИЕ пометки на удаление ФЛ--- "+тек_об_фл);
КонецПопытки;
КонецЕсли;
КонецЦикла;
ТабСсылок2 = НайтиПоСсылкам(массив_фл);
пометка_справочников_по_массиву_ссылок(ТабСсылок2, тз_все_справ);
// 2-ая часть - пометка на удаление всех справочников по ссылкам на СОТРОВ
массив_сотр = Новый Массив;
выборка_сотр = Справочники.Сотрудники.Выбрать();
Пока выборка_сотр.Следующий() Цикл
массив_сотр.Добавить(выборка_сотр.Ссылка);
Если (выборка_сотр.ПометкаУдаления = Ложь) Тогда
Попытка
тек_об_сотр = выборка_сотр.Ссылка.получитьобъект();
тек_об_сотр.УстановитьПометкуУдаления(Истина);
Исключение
сообщить("ИСКЛЮЧЕНИЕ пометки на удаление СОТРОВ--- "+тек_об_сотр);
КонецПопытки;
КонецЕсли;
КонецЦикла;
ТабСсылок2 = НайтиПоСсылкам(массив_сотр);
пометка_справочников_по_массиву_ссылок(ТабСсылок2, тз_все_справ);
// 3-ья часть - пометка на удаление всех справочников по ссылкам на подразделения
массив_подразд = Новый Массив;
выборка_подр = Справочники.ПодразделенияОрганизаций.Выбрать();
Пока выборка_подр.Следующий() Цикл
массив_подразд.Добавить(выборка_подр.Ссылка);
Если (выборка_подр.ПометкаУдаления = Ложь) Тогда
Попытка
тек_об_подр = выборка_подр.Ссылка.получитьобъект();
тек_об_подр.Сформировано = Ложь;
тек_об_подр.Записать();
тек_об_подр.УстановитьПометкуУдаления(Истина);
Исключение
сообщить("ИСКЛЮЧЕНИЕ пометки на удаление ПОДРАЗДЕЛЕНИЯ --- "+тек_об_подр);
КонецПопытки;
КонецЕсли;
КонецЦикла;
ТабСсылок = НайтиПоСсылкам(массив_подразд);
пометка_справочников_по_массиву_ссылок(ТабСсылок, тз_все_справ);
// 4-ая часть - пометка на удаление всех справочников по ссылкам на организации
массив_организаций = Новый Массив;
выборка_орг = Справочники.Организации.Выбрать();
Пока выборка_орг.Следующий() Цикл
массив_организаций.Добавить(выборка_орг.Ссылка);
Если (выборка_орг.ПометкаУдаления = Ложь) Тогда
Попытка
тек_об_орг = выборка_орг.Ссылка.получитьобъект();
тек_об_орг.УстановитьПометкуУдаления(Истина);
Исключение
сообщить("ИСКЛЮЧЕНИЕ пометки на удаление ОРГАНИЗАЦИИ --- "+тек_об_орг);
КонецПопытки;
КонецЕсли;
КонецЦикла;
ТабСсылок = НайтиПоСсылкам(массив_организаций);
пометка_справочников_по_массиву_ссылок(ТабСсылок, тз_все_справ);
КонецПроцедуры
&НаКлиенте
Процедура шаг7_пометка_справоч(Команда)
Шаг_7_СПРАВочники_пометка();
КонецПроцедуры
// ШАГ 8 --- Регик сведений - ГрафикиРаботыПоВидамВремени
&НаСервере
Процедура Шаг_удаление_рег_сведений_ГРАФИКИ_раб()
Выборка = РегистрыСведений.ГрафикиРаботыПоВидамВремени.Выбрать();
Пока Выборка.Следующий() Цикл
Если (Выборка.ГрафикРаботы.ПометкаУдаления = Истина)
или
(Выборка.Дата < НачалоМесяца(ТекущаяДата()) ) Тогда
Запись = Выборка.ПолучитьМенеджерЗаписи();
Запись.Удалить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура шаг8_удаление_рег_сведен_по_ГрафикамРаботы(Команда)
Шаг_удаление_рег_сведений_ГРАФИКИ_раб();
КонецПроцедуры
// ШАГ 9 --- удаление Регистров сведений по ссылкам
&НаСервере
Процедура удаление_регистров_СВЕДЕН_по_массиву_ссылок(ТабСсылок, тз_все_рег_свед)
Для Каждого Ссылка из ТабСсылок Цикл
найд_тип_р_с = тз_все_рег_свед.Найти(ссылка.метаданные.имя, "имя");
Если (найд_тип_р_с <> неопределено) Тогда
// проверка на совпадение типов так как есть одинаковые ИМЕНА у регистров!
Попытка
//Если (ТипЗнч(ссылка.данные) <> Тип("СправочникСсылка."+ссылка.метаданные.имя)) и
// (ТипЗнч(ссылка.данные) <> Тип("ДокументСсылка."+ссылка.метаданные.имя)) Тогда
ИмяРегистра = ссылка.метаданные.имя;
НаборЗаписей = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();
// для удаления нужно настроить отбор по измерениям регистра
// оценка имеющихся измерений
МетаданныеРегистра = Метаданные.РегистрыСведений[ИмяРегистра];
Рег_в_измерениях = Ложь;
Орг_в_измерениях = Ложь;
Для Каждого Измерение ИЗ МетаданныеРегистра.Измерения Цикл
Если Измерение.Имя = "Регисратор" Тогда
Рег_в_измерениях = Истина;
ИначеЕсли Измерение.Имя = "Организация" Тогда
Орг_в_измерениях = Истина;
КонецЕсли;
КонецЦикла;
Если (Рег_в_измерениях = Истина) Тогда
Если (СокрЛП(ссылка.данные.Регистратор) = "") Тогда
// с пустым регом
НаборЗаписей.Отбор["Регисратор"].Установить(ссылка.данные.Регистратор);
Попытка
НаборЗаписей.Записать();
Исключение
сообщить("ИСКЛЮЧЕНИЕ удаление Регистра Сведений -- "+ИмяРегистра + " по регистратору "+ссылка.данные.Регистратор);
КонецПопытки;
Иначе
// не нужно удалять, т.к. после распроведения доки записи будут удалены системой
сообщить("ОСТАЛСЯ РЕГ ?!??! "+ссылка.данные+" "+ссылка.метаданные.имя);
КонецЕсли;
Иначе
// удаляю по измерениям
Если (Орг_в_измерениях = Истина) Тогда
НаборЗаписей.Отбор["Организация"].Установить(ссылка.ссылка);
Попытка
НаборЗаписей.Записать();
Исключение
сообщить("ИСКЛЮЧЕНИЕ удаление Регистра Сведений -- "+ИмяРегистра + " по организации "+ссылка.ссылка);
КонецПопытки;
Иначе
// иначе весь РЕГИК!!
// !!!!!
// это ГРУБО
// могут быть удалены нужные настройки базы
Попытка
НаборЗаписей.Записать();
Исключение
сообщить("ИСКЛЮЧЕНИЕ удаление ВСЕГО Регистра Сведений -- "+ИмяРегистра);
КонецПопытки;
КонецЕсли;
КонецЕсли;
//КонецЕсли;
Исключение
КонецПопытки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура Шаг_удаление_рег_сведений()
тз_все_Рег_Свед = Новый таблицаЗначений;
тз_все_Рег_Свед.Колонки.Добавить("имя");
тз_все_Рег_Свед.Колонки.Добавить("мет_д");
Для Каждого тек_мет Из Метаданные.РегистрыСведений Цикл
нов_стр = тз_все_Рег_Свед.Добавить();
нов_стр.имя = тек_мет.Имя;
нов_стр.мет_д = тек_мет;
КонецЦикла;
сообщ = Новый СообщениеПользователю;
// 1-ая часть - пометка на удаление всех справочников по ссылкам на организации
массив_организаций = Новый Массив;
выборка_орг = Справочники.Организации.Выбрать();
Пока выборка_орг.Следующий() Цикл
массив_организаций.Добавить(выборка_орг.Ссылка);
КонецЦикла;
ТабСсылок = НайтиПоСсылкам(массив_организаций);
удаление_регистров_СВЕДЕН_по_массиву_ссылок(ТабСсылок, тз_все_Рег_Свед);
// 2-ая часть - пометка на удаление всех справочников по ссылкам на физ лица
массив_фл = Новый Массив;
выборка_фл = Справочники.ФизическиеЛица.Выбрать();
Пока выборка_фл.Следующий() Цикл
массив_фл.Добавить(выборка_фл.Ссылка);
КонецЦикла;
ТабСсылок2 = НайтиПоСсылкам(массив_фл);
удаление_регистров_СВЕДЕН_по_массиву_ссылок(ТабСсылок2, тз_все_Рег_Свед);
// 3-ья часть - пометка на удаление всех справочников по ссылкам на СОТРОВ
массив_сотр = Новый Массив;
выборка_сотр = Справочники.Сотрудники.Выбрать();
Пока выборка_сотр.Следующий() Цикл
массив_сотр.Добавить(выборка_сотр.Ссылка);
КонецЦикла;
ТабСсылок3 = НайтиПоСсылкам(массив_сотр);
удаление_регистров_СВЕДЕН_по_массиву_ссылок(ТабСсылок3, тз_все_Рег_Свед);
КонецПроцедуры
&НаКлиенте
Процедура Шаг_9_удаление_регистров_сведений(Команда)
Шаг_удаление_рег_сведений();
КонецПроцедуры
// ШАГ 10 --- удаление регистров сведений выборочно
&НаСервере
Процедура шаг10_удаление_регистров_сведений_по_отдельностиНаСервере()
Выборка = РегистрыСведений.СтрокиОтчетностиМониторингаРаботниковСоциальнойСферы.Выбрать();
Пока Выборка.Следующий() Цикл
Если (ТипЗнч(Выборка.Должность) = Тип("СправочникСсылка.ШтатноеРасписание")) Тогда
Запись = Выборка.ПолучитьМенеджерЗаписи();
Запись.Удалить();
КонецЕсли;
КонецЦикла;
// СНОВА ГрафикиРаботыПоВидамВременитак - решил очистить весь РЕГ, так как по графику заполнить недолго
НаборЗаписей = РегистрыСведений.ГрафикиРаботыПоВидамВремени.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ЗемельныеУчастки.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.СведенияОФайлах.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ДвоичныеДанныеФайлов.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ОперацииСтатистики.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.КодировкиФайлов.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ШтатноеРасписаниеПодключаемыеХарактеристики.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.НадбавкиПоШтатномуРасписаниюОрганизацийУдалить.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.перенос_номеров_приказов_до_2018.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.СтатистикаКонфигурации.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.СреднемесячныеНормыВремениГрафиковРаботыСотрудников.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ПользовательскиеНастройкиДоступаКОбработкам.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ЖурналОтчетовСтатусы.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ВложенияНеформализованныхДокументов.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.РаспределениеШтатныхСтавокУдалить.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.КадровыеДвиженияФилиалов.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.фНаименованиеПодразделенияДляТелефонногоСправочника.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.СведенияОПользователях.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.СтатусыОтправки.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ПользователиУчетныхЗаписейДокументооборота.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ЭлектронныеПодписи.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ШтатноеРасписаниеОрганизацийУдалить.СоздатьНаборЗаписей();
НаборЗаписей.Записать();
КонецПроцедуры
&НаКлиенте
Процедура шаг10_удаление_регистров_сведений_выборочно(Команда)
шаг10_удаление_регистров_сведений_по_отдельностиНаСервере();
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////ч/////ч//////////а////ссссс//ттттттт//ь//////////33333/////////////////////////////////////////////////////
/////ч/////ч/////////аа///с//////////т/////ь/////////3/////3////////////////////////////////////////////////////
/////ч/////ч////////а/а///с//////////т/////ь///////////////3////////////////////////////////////////////////////
/////ччччччч///////а//а///с//////////т/////ь////////////333/////////////////////////////////////////////////////
///////////ч//////а///а///с//////////т/////ььььь///////////3////////////////////////////////////////////////////
///////////ч/////аааааа///с//////////т/////ь////ь//////////3////////////////////////////////////////////////////
///////////ч////а/////а///с//////////т/////ь////ь////3/////3////////////////////////////////////////////////////
///////////ч///а//////а////ссссс/////т/////ььььь//////33333/////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
&НаСервере
Процедура оценка_помеченных_элементов_справочниковНаСервере()
тз_всех_спр = Новый ТаблицаЗначений;
тз_всех_спр.Колонки.Добавить("имя");
тз_всех_спр.Колонки.Добавить("кол_помеч");
тз_всех_спр.Колонки.Добавить("кол_нет");
Для Каждого тек_мет Из Метаданные.Справочники Цикл
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СУММА(1) КАК Поле1
|ИЗ
| Справочник.Имя_Вида_Справочника КАК Имя_Вида_Справочника
|ГДЕ
| Имя_Вида_Справочника.ПометкаУдаления = ИСТИНА";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Имя_Вида_Справочника", тек_мет.Имя);
выб_док = Запрос.Выполнить().Выбрать();
тек_кол_е = 0;
Если (выб_док.Следующий()) Тогда
тек_кол_е = выб_док.поле1;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СУММА(1) КАК Поле1
|ИЗ
| Справочник.Имя_Вида_Справочника КАК Имя_Вида_Справочника
|ГДЕ
| Имя_Вида_Справочника.ПометкаУдаления = ЛОЖЬ";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Имя_Вида_Справочника", тек_мет.Имя);
выб_док = Запрос.Выполнить().Выбрать();
тек_кол_н = 0;
Если (выб_док.Следующий()) Тогда
тек_кол_н = выб_док.поле1;
КонецЕсли;
нов_стр = тз_всех_спр.Добавить();
нов_стр.имя = тек_мет.Имя;
нов_стр.кол_помеч = тек_кол_е;
нов_стр.кол_нет = тек_кол_н;
КонецЦикла;
тз_всех_спр.Сортировать("кол_помеч Убыв");
Для каждого тек_д из тз_всех_спр Цикл
сообщить(" "+тек_д.имя+" ПОМЕТКА = "+тек_д.кол_помеч+" НЕТ пометки = "+тек_д.кол_нет);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура оценка_помеченных_элементов_справочников(Команда)
оценка_помеченных_элементов_справочниковНаСервере();
КонецПроцедуры
// ШАГ 11 --- удаление справочников выборочно
&НаСервере
Процедура Удаление_всех_элементов_справочника_по_метаданным(ссылка_метаданных)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Имя_Вида_Справочника.Ссылка КАК Ссылка
|ИЗ
| Справочник.Имя_Вида_Справочника КАК Имя_Вида_Справочника";
Запрос.Текст = СтрЗаменить(Запрос.Текст,"Имя_Вида_Справочника", ссылка_метаданных.Имя);
тз_элем_справ = Запрос.Выполнить().Выгрузить();
Для каждого тек_эл_спр из тз_элем_справ Цикл
Попытка
тек_об_эл_спр = тек_эл_спр.ссылка.получитьОбъект();
тек_об_эл_спр.удалить();
Исключение
сообщить("ИСКЛЮЧЕНИЕ удаления элемента справочника --- "+тек_эл_спр.ссылка+" "+ссылка_метаданных.Имя);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Процедура шаг11_удаление_справочников_выборочноНаСервере()
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.ТранспортноеСообщениеПрисоединенныеФайлы);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.НомераОтпусков);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.НомераЭкономическихПриказов);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.ТранспортноеСообщениеКонтейнерыПрисоединенныеФайлы);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.СведенияОСтраховомСтажеЗастрахованныхЛицСЗВ_СТАЖПрисоединенныеФайлы);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.СотрудникиФилиалов);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.ОснованияПриказов);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.Работодатели);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.Награды);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.СведенияОТрудовойДеятельностиРаботниковСЗВ_ТДПрисоединенныеФайлы);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.СеансыСвязиСКонтролирующимиОрганами);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.АттестацииППС);
// справочник ГруппыДоступа - ЧАСТИЧНО!!
выборка_группы_доступа = Справочники.ГруппыДоступа.Выбрать();
Пока выборка_группы_доступа.Следующий() Цикл
Попытка
тек_об_гр_д = выборка_группы_доступа.ПолучитьОбъект();
тек_кол = тек_об_гр_д.Пользователи.Количество();
счётчик = 1;
Пока счётчик <= тек_кол Цикл
тек_строка_польз = тек_об_гр_д.Пользователи.Получить(счётчик - 1);
Если (тек_строка_польз.Пользователь.ПометкаУдаления = Истина) тогда
тек_об_гр_д.Пользователи.Удалить(счётчик - 1);
тек_кол = тек_кол - 1;
Иначе
счётчик = счётчик + 1;
КонецЕсли;
КонецЦикла;
тек_об_гр_д.Записать();
Исключение
сообщить("ИСКЛЮЧЕНИЕ записи группы доступа --- "+тек_об_гр_д);
КонецПопытки;
КонецЦикла;
// Относительно большие справочники, добавленные в конфигурацию.
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.Дисциплины);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.НомераКадровыхПриказов);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.НомераТрудовыхДоговоров);
Удаление_всех_элементов_справочника_по_метаданным(Метаданные.Справочники.ШифрГруппы);
КонецПроцедуры
&НаКлиенте
Процедура шаг11_удаление_справочников_выборочно(Команда)
шаг11_удаление_справочников_выборочноНаСервере();
КонецПроцедуры
// ШАГ 12 --- стандрт обработка_удаления_помеченных_объектов
&НаКлиенте
Процедура шаг12_стандрт_обрабтка_удаления_помеченных_объектов(Команда)
сообщить("запусти обрабоку через меню ""ВСЕ ФУНКЦИИ -> Удаление помеченных объектов""");
КонецПроцедуры
// ШАГ 13 ---
&НаСервере
Процедура шаг13_удаление_частичноеНаСервере()
Выборка = РегистрыСведений.СоставыГруппПользователей.Выбрать();
Пока Выборка.Следующий() Цикл
Попытка
Если (Выборка.Пользователь.Недействителен) Тогда
ИначеЕсли (Выборка.Пользователь.ПометкаУдаления = Истина) Тогда
Иначе
продолжить;
КонецЕсли;
Запись = Выборка.ПолучитьМенеджерЗаписи();
Запись.Удалить();
Исключение
сообщить(" СоставыГруппПользователей нет.. "+выборка.Пользователь);
КонецПопытки;
КонецЦикла;
Выборка = РегистрыСведений.НастройкиПользователейБИП.Выбрать();
Пока Выборка.Следующий() Цикл
Попытка
Если (Выборка.Пользователь.Недействителен) Тогда
ИначеЕсли (Выборка.Пользователь.ПометкаУдаления = Истина) Тогда
Иначе
продолжить;
КонецЕсли;
Запись = Выборка.ПолучитьМенеджерЗаписи();
Запись.Удалить();
Исключение
сообщить(" НастройкиПользователейБИП нет.. "+выборка.Пользователь);
КонецПопытки;
КонецЦикла;
Выборка = РегистрыСведений.ГруппыЗначенийДоступа.Выбрать();
Пока Выборка.Следующий() Цикл
Попытка
Если (Выборка.ГруппаЗначенийДоступа.ПометкаУдаления = Истина) или
(Выборка.ЗначениеДоступа.ПометкаУдаления = Истина) Тогда
ИначеЕсли (Выборка.ГруппаЗначенийДоступа.Недействителен = Истина) или
(Выборка.ЗначениеДоступа.Недействителен = Истина) Тогда
Иначе
продолжить;
КонецЕсли;
Запись = Выборка.ПолучитьМенеджерЗаписи();
Запись.Удалить();
Исключение
сообщить(" ГруппыЗначенийДоступа нет.. "+Выборка.ЗначениеДоступа);
КонецПопытки;
КонецЦикла;
///////////////////////////
///////////////////////////
///////////////////////////
///////////////////////////
///////////////////////////
///////////////////////////
// СИНХРОНИЗАЦИЯ ДАННЫХ по каждому плану:
// 1. состав отправляемых данных - очистить вручную зарегистрированные изменения для обмена и номера сообщений.
// 2. расписание - отключить
// ФОНОВЫЕ регламентированные задачи ...
///////////////////////////
///////////////////////////
///////////////////////////
///////////////////////////
///////////////////////////
///////////////////////////
///////////////////////////
КонецПроцедуры
&НаКлиенте
Процедура шаг13_удаление_частичное(Команда)
шаг13_удаление_частичноеНаСервере();
КонецПроцедуры