Восстановление значений реквизитов из копии через COM соединение

Обработка по определению уровня бедствия после ошибочного изменения типа, приведшего к потере данных и вытаскиванию потерянной информации из копии базы.

Дело было вечером, делать было нечего и мы решили поднять точность определяемого типа ЗначениеПоказателяРасчетаЗарплаты до 5 знаков, а то пляски с территориальными коэффициентами норовили потерять копейку.

Меняем "Число 10.2" на "Число 10.5", проверяем расчет — все стало четко, применяем на рабочую базу и идем домой.

(все, что выше, делал не я, так что подробностей не расскажу)

Утром удивленные кадровики обнаружили, что в штатном расписании оклад в 115000 превращается в 99999.99999, как только нажимаешь энтер. Упс.

Поиск ссылок на тип "ЗначениеПоказателяРасчетаЗарплаты" даёт 159 позиций, многие из которых разворачивается еще на сотню документов.

 

Итогом борьбы стала приложенная обработка, которая умеет делать следующее:

1. Искать проблемы:

по списку из результата поиска ссылок на объект типа

Справочник.МестаРаботы.ТабличнаяЧасть.Показатели.Реквизит.Значение.Тип
Справочник.ШтатноеРасписание.Реквизит.Значение.Тип

умеет искать сбойные значения для регистров, справочников и документов, включая табличные части. ( в частном случае 99999). Выводит количество грусти через "Сообщить". (список нужно положить в макет ПроверяемыеРеквизиты)

2. Решать проблемы:

Для документов и ТЧ документов умеет подключившись к эталонному бэкапу через V83.COMConnector находить аналогичный документ, проверять, что все кроме цифр в исправляемой строке (или документе) совпадает и исправлять сбойный реквизит на верный.

 

Как это работает и как пользоваться:

1. Решение сделано в толстом обыкновенном режиме, так как мне в условиях линукс сервера сопрягать серверные запросы к нашей базе с клиентским COMом в эталонную кажется излишним извращением.

2. В функции ПодключениеКЭталону() нужно переопределить параметры подключения. Так как обработка не предполагает еженедельного использования, то интерфейс и настройки прошиты в коде.

3. В функциях ПолучитьЗапросКТЧ, ПолучитьЗапросКОбъекту нужно в условиях прописать, как найти ваши проблемы.

4. Контроль неизменности эталона по отношению к исправляемому объекту осуществляется в ИсправитьПроблемы(), в блоке "//3. Проверить, что нецифровые строчки совпадают." У меня там проверка на совпадение всех нецифровых реквизитов через совпадение результата "ЗначениеВСтрокуВнутр". Думаю в большинстве случаев это всех устроит, но если что — менять там. (в двух местах, для ТЧ и для документов)

После этого остаётся жать кнопку "Выполнить" и ждать чуда.

 

Блок исправления регистров писать не стал, так как в нашем случае они были все ведомые, обошлись перепроведением регистраторов и отменой лишних перерасчетов. Если кому понадобиться, можно или дописать по аналогии с документами, или заинтересовать меня, чтобы это сделал я.

 

PS Испытывалось на 1С:Предприятие 8.3 (8.3.13.1690), но должно запуститься на 8.3.6+ (из за СтрРазделить).

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *