Переводим организацию "Орг2021" на ЗГУ 3.1
Есть подходящая богато доработанная конфигурация ЗГУ 3.1.14.265 от организации "Орг2018".
Чтобы не настраивать по новому созданную базу данных, решили удалить из копии рабочей базы организации "Орг2018" все наработанные данные. В итоге, получился программерский способ подготовки новой настроенной БД без долгой настройки видов расчётов и переноса всяких справочников.
Можно использовать для очистки мусора в БД. Код в спойлере.
Если хотите пользоваться, то без изучения кода и доработки под себя не обойтись.
&НаСервере
Процедура Распроведение_док_по_виду(тек_мет)
сообщ = Новый СообщениеПользователю;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Имя_Вида_Документа.Ссылка КАК Ссылка,
| Имя_Вида_Документа.Дата КАК Дата
|ИЗ
| Документ.Имя_Вида_Документа КАК Имя_Вида_Документа
|ГДЕ
| (Имя_Вида_Документа.Проведен = ИСТИНА)
|
|УПОРЯДОЧИТЬ ПО
| Дата УБЫВ";
// сортировка по УБЫВАНИЮ для связей: исправленный-исправитель, продлёных больничных и других доков введённых на основании.
Запрос.Текст = СтрЗаменить(Запрос.Текст,"Имя_Вида_Документа", тек_мет.Имя);
тз_док = Запрос.Выполнить().Выгрузить();
Для каждого тек_стр_д из тз_док Цикл
тек_дока = тек_стр_д.ссылка.получитьОбъект();
Попытка
Если (тек_дока.Проведен) Тогда
Если тек_мет.Проведение = Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
//Возврат;
тек_дока.ОбменДанными.Загрузка = Истина;
тек_дока.Записать(РежимЗаписиДокумента.ОтменаПроведения);
Иначе
сообщ.Текст = "все доки данного ТИПА "+тек_мет.Имя+" надо распроводить вручную";
сообщ.Сообщить();
КонецЕсли;
КонецЕсли;
Исключение
сообщить("ИСКЛЮЧЕНИЕ РАСпроведения --- "+тек_стр_д.ссылка+" "+тек_мет.Имя);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Процедура Пометка_на_удаление_док_по_виду(тек_мет)
сообщ = Новый СообщениеПользователю;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Имя_Вида_Документа.Ссылка КАК Ссылка,
| Имя_Вида_Документа.Дата КАК Дата
|ИЗ
| Документ.Имя_Вида_Документа КАК Имя_Вида_Документа
|ГДЕ
| (Имя_Вида_Документа.ПометкаУдаления = ЛОЖЬ)
|
|УПОРЯДОЧИТЬ ПО
| Дата УБЫВ";
// сортировка по УБЫВАНИЮ для связей: исправленный-исправитель, продлёных больничных и других доков введённых на основании.
Запрос.Текст = СтрЗаменить(Запрос.Текст,"Имя_Вида_Документа", тек_мет.Имя);
тз_док = Запрос.Выполнить().Выгрузить();
Для каждого тек_стр_д из тз_док Цикл
тек_дока = тек_стр_д.ссылка.получитьОбъект();
Попытка
Если (тек_дока.ПометкаУдаления = Ложь) Тогда
тек_дока.УстановитьПометкуУдаления(Истина);
КонецЕсли;
Исключение
сообщить("ИСКЛЮЧЕНИЕ ПОМЕТКИ "+тек_стр_д.ссылка+" "+тек_мет.Имя);
КонецПопытки;
КонецЦикла;
КонецПроцедуры
Процедура ПЕРЕзапись_статуса_реестров_в_АННУЛИРОВАН()
// ПЕРЕзапись статуса реестров в АННУЛИРОВАН
Запрос = Новый Запрос;
Запрос.текст = "ВЫБРАТЬ
| РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.Ссылка КАК Ссылка
|ИЗ
| Документ.РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий КАК РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий
|ГДЕ
| РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий.СтатусДокумента <> &Аннулирован";
запрос.УстановитьПараметр("Аннулирован", Перечисления.СтатусыЗаявленийИРеестровНаВыплатуПособий.Аннулирован);
выб_р_вып = запрос.Выполнить().Выбрать();
Пока выб_р_вып.Следующий() Цикл
док_об_р = выб_р_вып.Ссылка.ПолучитьОбъект();
док_об_р.СтатусДокумента = Перечисления.СтатусыЗаявленийИРеестровНаВыплатуПособий.Аннулирован;
док_об_р.записать(РежимЗаписиДокумента.Запись);
КонецЦикла;
КонецПроцедуры
Процедура Шаг_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_удаление_частичноеНаСервере();
КонецПроцедуры