Рекурсия тестирования баз 1С. Когда однократного тестирования базы недостаточно



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

Здравствуйте, коллеги. Хочу поделиться с вами историей, с которой вы, возможно сталкивались или еще столкнетесь.

В работе с базами 1С, в данном случае речь пойдет о Рознице 2.2, я столкнулся с необъяснимыми проблемами баз данных клиентов. В основном это были случаи неработающего обмена РИБ и ошибка загрузки файловой базы в серверную.

Например, с РИБ, все стандартные операции тестирования, анализа ошибок обмена, загрузки файла обмена с FTP на рабочую машину и тп, не помогали. Замучавшись с базой, и отчаявшись, я начал последовательное тестирование базы данных по схеме: тестирование через утилиту chdbfl — тестирование в конфигураторе — тестирование через утилиту chdbfl — тестирование в конфигураторе — и так в своеобразной рекурсии, пока тестирование в конфигураторе не покажет отсутствие ошибок. Раньше, несмотря на весь опыт, мне и в голову бы не пришло делать такую рекурсию, я всегда думал, что однократных тестирований хватает за глаза. Однако, то ли Розница 2.2 такая, то ли платформа, то ли у меня не так уж и много опыта, но я реально столкнулся с двумя случаями, когда эта рекурсия тестирования необходима.

Ниже подробное описание ситуации, на примере, исправления ошибки загрузки файловой Розницы 2.2 в серверную базу данных.
Итак, у меня стояла задача, перевести файловую базу(Розница 1.0, кастомизированная) в серверный режим. База эта, надо сказать, была достаточно проблемной, на нее было привязано порядка 20 РИБ магазинов, сама она за полтора года работы разрослась до 5 ГБ. Итак, мы поставили сервер 1С, SQL, развернули пустую базу. Далее я, как обычно, выгрузил dt файл и решил его загрузить его в данную SQL базу. Однако, при загрузке 1С выдала ошибку — не все данные были загружены.
Ествественно, несмотря на то, что база выглядела рабочей, с ней нельзя было дальше работать, неизвестно к чему бы это привело.
Я приступил к поиску и исправлению ошибок. Сделал физическое тестирование через утилиту, сделал тестирование в конфигураторе. Физическое ошибок не выявило, в конфигураторе ошибки обнаружились, исправились. Но база так и не загрузилась, выдавала ошибку. Не буду описывать, что я далее делал для исправления данной проблемы и как я дошел до решения.
Скажу лишь в чем данное решение заключалось. Мне пришлось сделать следующее:

1.физическое тестирование через утилиту, далее тестирование логической и ссылочной целостности в конфигураторе.

2.физическое тестирование через утилиту, далее тестирование логической и ссылочной целостности в конфигураторе.            

3.физическое тестирование через утилиту, далее тестирование логической и ссылочной целостности в конфигураторе.

Нет, я не ошибся при написании данной статьи. Именно так, я несколько раз подряд повторял данную процедуру, при этом физическое тестирование ошибок так и не показывало, а тестирование в конфигураторе выявляло каждый раз новые ошибки. Я повторял данную процедуру до тех пор, пока тестирование в конфигураторе не показало мне заветное: «Тестирование начато»-«Тестирование закончено». После этого dt базы загрузился в северную версию успешно.

Как-то так. Спасибо за внимание, может, этот сомнительный опыт кому-то поможет.

7 Comments

  1. Dmitri93

    Скорее всего, тестирование через chdbfl делать было необязательно, достаточно было бы просто несколько раз протестировать базу с помощью ТИИ. Была похожая проблема с розницей.

    Reply
  2. iskan

    Видимо ситуации бывают разные. Ибо я делал два тестирования подряд, без утилиты, однако, так не прокатывало.

    (1)

    Reply
  3. TODD22

    Повторение операции это не то же самое что «рекурсия». Учите мат часть.

    Reply
  4. iskan

    (3)

    Очень уместно в данной публикации:), для флуда бесполезного вроде бы другие места есть, нет?

    Reply
  5. TODD22
    для флуда бесполезного вроде бы другие места есть, нет?

    Откуда же вы тогда узнаете что рекурсия это не то же самое что многократное повторение? 🙂

    Reply
  6. iskan

    (5)

    А флуд-то продолжен.

    1. Вы придираетесь непонятно к чему, а не разъясняете, что такое рекурсия. Фраза учите матчасть — в стиле некоторых преподавателей матана 60+.

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

    Reply
  7. kuzyara

    (3)

    Откуда же вы тогда узнаете что рекурсия это не то же самое что многократное повторение? 🙂

    Наверное автор имел ввиду так называемую «хвостовую» рекурсию, которая формально оптимизируется многими компиляторами в плоскую итерацию. Учите матчасть. :]

    Reply

Leave a Comment

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