Особенности сортировки в "1С:Предприятие 7.7".
Подобная "разработка" использовалась для анализа/сравнения порядка индексов таблиц БД в различных СУБД: "родные" DBF, MS SQL, CodeBase 6.5, Advantage 7.x/8.x/9.x. Тогда было выяснено, что в этих СУБД разный порядок сортировки индекса.
Повторно обратиться к данной "проблеме" меня побудил планируемый переход с Windows МЕ/2000/XP на Windows 7 (локализация Eng и Rus есть во всех вариантах Windows-а).Т.е. для выяснения - достаточно ли только отключить проверку кодовой страницы (файлом OrdNoChk.prm) при совместной работе этих ОС-ов с общей базой данных.
Конфигурация и внешняя обработка показывает порядок сортировки для:
1) Массива символов.
2) Индекса таблицы БД.
3) Таблицы значений.
4) Списка значений.
В результирующем отчете выделяются цветом символы не совпадающие с элементом массива в результате сравнения с применением функции ВРег(), т.к. в "движке" 1С для построения индекса таблицы, для символьных полей, используется функция UPPER().
Установка:
1) Развернуть архив.
2) Подцепить каталог в окне запуска 1С.
3) Войти в 1С монопольно.
Внешняя обработка и "документация" расположены в подкаталоге ExtForms.Файл "Символы.mxl" создан (локально) в DBF-ной версии "1С:Предприятие 7.7" (версия 7.70.25) под управлением "Windows XP Professional x64 Edition SP2"(Eng) и полностью совпал с файлами (и базой данных) созданными в "Windows 2000 Advanced Server SP4+Update Rollup 1"(Eng) и "Windows ME"(Rus).
Что можно выяснить данной "разработкой"?
После выполнения настроек (по рекомендациям разработчиков 1С) развертываем данную "разработку" под управлением различных ОС-в. Сохраняем отчеты в файлы. Сравниваем файлы из под различных ОС-ов. Если файлы полностью совпали, то можем "спать спокойно". И, соблюдая ограничения и рекомендации от разработчиков 1С, эксплуатируем систему в рамках уже существующих проблем расхождения порядка сортировки. Т.е. системе не стало сильно хуже. Это не означает, что не появятся другие проблемы. Но это хоть какая-то гарантия, что система, на первый взгляд, работоспособна.
Если файлы не совпали, то проводим сравнения (глазами и руками) строк таблицы отчета. Возможны следующие (приблизительно) варианты при расхождении значений в строках:
1) "Массив" - нарушения в логике проблемных алгоритмов (написанных на встроенном языке платформы) и в логике системных (внутренних) алгоритмов платформы.
2) "Индексы" - порча индексов и, как следствие, порча базы данных.
3) "Таблица" и/или "Список" - нарушение в логике проблемных алгоритмов (написанных на встроенном языке платформы).
Обновление от 20.06.2011:
Добавлено создание файлов *.dat в подкаталоге ExtForms, что позволяет сравнить идентичность порядка сортировки отдельно для "Массива, Индекса, Таблицы, Списка" программным способом, а не "глазами и руками".