Отправляет email-рассылки с помощью сервиса Sendsay

Я люблю 1С

  Все выпуски  

Я люблю 1С: Порядок сортировки


Love1C Новостная рассылка сайта "Я люблю 1С"

Порядок сортировки базы данных 1С

Есть в программе 1С ошибка, с которой сталкивались все. Ну, или почти все. Эта ошибка появляется при запуске 1С, а если быть более точным, то при загрузке информационной базы 1С. И появляется эта ошибка в случае, когда порядок сортировки, установленный в системе Windows, не соответствует тому порядку сортировки, который установлен в информационной базе 1С.

Когда появляется ошибка?

Как администратор баз данных 1С, могу констатировать, что с ошибкой о несоответствии порядка сортировки приходится сталкиваться в двух случаях:

  1. При первоначальной установке 1С и первом запуске базы данных 1С.
  2. После длительного использования базы данных 1С, когда ничто не предвещало беды.

Опытный администратор баз данных 1С прекрасно знаком с проблемой несоответствия порядка сортировки, а потому отлично знает, как проблему несоответствия порядка сортировки решить. Но даже опытного администратора баз данных расстраивают, мягко говоря, случаи, когда тебе звонит пользователь и невинным голосом сообщает, что сегодня ни с того ни с сего у него при входе в 1С появилось сообщение о несоответствии порядка сортировки базы данных, и теперь, мол, он не может работать. При этом пользователь клянётся, что с компьютером ничего не делал. А ты, администратор, теперь иди и настраивай 1С, чтоб работала. А то клиенты ждут.

Сообщение о несоответствии порядка сортировки

Сообщение о несоответствии порядка сортировки

Откровенно говоря, я понимаю того пользователя, который, типа, ничего не делал с компьютером, а теперь недоумевает по поводу неработающей 1С. Потому что непосвящённому человеку сложно логически увязать неработающую 1С с теми действиями, которые всё-таки пользователь произвёл с компьютером. Ведь, казалось бы, как связан порядок сортировки таблиц базы данных 1С с настройками языка, которые установлены в операционной системе Windows?

Если вы заинтригованы, то давайте разберёмся в проблеме несоответствия порядка сортировки базы данных более подробно.

Места установки порядка сортировки

Обратите внимание, что в сообщении идёт речь о том, что порядок сортировки, установленный для базы данных 1С, отличается от системного порядка сортировки. А системный порядок сортировки - это порядок сортировки, установленный в операционной системе Windows, в которой программа 1С запускается. Значит порядок сортировки, который важен для программы 1С, устанавливается в двух местах:

  • Операционная система Windows, на основе которой работает программа 1С.
  • Информационная база, которую обслуживает программа 1С

На данном этапе повествования я не смею утверждать, что одно место установки порядка сортировки имеет преимущество перед другим. И дальше я объясню, что место установки порядка сортировки зависит от многих факторов и на каждом компьютере выбирается индивидуально.

Таблица символов

Чтобы вы поняли причину несоответствия порядков сортировки между программой 1С и операционной системой Windows, я начну объяснение от самых основ компьютерной грамотности.

Начнём с того, что программа 1С хранит буквы и цифры, которые ввёл в неё человек. Для человека единицей числовой информации является цифра, а единицей словесной информации является буква. У компьютера всё несколько проще. Компьютер вообще всю информацию хранит в цифрах. Вводимые человеком цифры компьютер хранит в цифрах. А вводимые буквы компьютер преобразует в цифры с использованием специальной системы кодирования.

Но если человек вводимую в компьютер информацию разделяет на буквы и цифры, то компьютер вводимые буквы и цифры воспринимает, как символы. А уже каждый символ на компьютерном языке обозначается цифровым кодом. Например, русской букве «А» в компьютерном языке соответствует код «0192», а украинской букве «Ї» соответствует код «0175». И так далее. 

Коды символов в операционной среде Windows

Коды символов в операционной среде Windows.

На самом деле, всё несколько сложнее, и таблицу символов в рассказе о кодировках я использовал лишь для наглядности. Главное, чтобы вы поняли принцип преобразования символов в соответствующие им числовые коды.

Кодовая страница

Программисты для наименования системы кодировки, которая используется для преобразования символов, применяют термин "кодовая страница". И если возвращаться к разговору о программе 1С, то следует знать и понимать, что программа 1С в информационной базе символы хранит в кодах, которые соответствуют определённой кодовой странице.

Например, программа 1С, работая в операционной среде Windows, для хранения символов русского языка в базе данных использует кодовую страницу "Windows-1251" (она же "Microsoft code page 1251"). А если программа 1С будет использоваться для ведения учёта в Турции на турецком языке, то будет использоваться кодовая страница "Windows-1254".

Таким образом, программа 1С и операционная среда Windows работают в плотной связке. Операционная среда Windows предоставляет программе 1С инструментарий в виде кодовой страницы для ввода символов. А программа 1С получает от операционной среды Windows символы, вводимые пользователем с клавиатуры, и преобразует их в компьютерные коды в соответствии с используемой кодовой страницей для последующего хранения в информационной базе.

Но программа 1С не использует операционную систему Windows для хранения данных. Хранением данных в информационной базе программа 1С занимается сама. И для того, чтобы организовать хранение данных в отдельной базе, программа 1С использует какую-то определённую кодовую страницу. А операционная система Windows для взаимодействия с пользователем и обработки вводимой с клавиатуры информации использует свою кодовую страницу. Улавливаете, к чему я веду?

Если в программе 1С для информационной базы и в операционной среде Windows установлены одинаковые кодовые страницы, тогда никакого конфликта нет, и взаимодействие происходит нормально. Но если кодовые страницы, установленные для информационной базы в программе 1С и в операционной среде Windows, отличаются, тогда возникает взаимное непонимание. А для пользователя такой конфликт кодовых страниц между программой 1С и операционной средой Windows проявляется в виде зловещего сообщения "Порядок сортировки, установленный для базы данных, отличается от системного".

Сортировка и порядок

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

Если вы работали с программой 1С, то понимаете, что вся информация, которую человек вводит в базу данных, состоит из букв и цифр. А уже программа 1С, будучи системой управления базой данных, принимает от человека вводимые буквы и цифры, хранит введённые данные и по запросу выводит накопленную в базе данных информацию на обозрение пользователя.

При этом, заметьте, выведение информации из базы данных выполняется в определённом порядке. Например, документы в журнале документов, как правило, выводятся в хронологическом порядке, а элементы в окне списка справочника выводятся в алфавитном порядке наименований. Программисты используют специальные термины и говорят, что данные отсортированы. И следует отметить, что у каждой сортировки есть свой порядок.

Вы уже знаете о том, что в базе данных программа 1С хранит не символы, а коды символов. Поэтому при разговоре о сортировке вы понимаете, что сортировке подвергаются не символы, а соответствующие им коды.

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

Кодовая страница операционной среды Windows

В начале статьи я упомянул о том, что рядовые пользователи базы данных редко догадываются о том, почему программа 1С вдруг выдаёт сообщение "Порядок сортировки, установленный для базы данных, отличается от системного". Такие пользователи просто не знают, как в операционной системе Windows определяется порядок сортировки и в каком месте он устанавливается. И когда они в том месте что-то меняют, они никак не могут предполагать, к каким последствиям их действия могут привести.

Кодовая страница, которая используется в операционной системе Windows, определяется в зависимости от установленного формата данных. Чтобы изменить формат данных, нужно зайти в Панель управления Windows и в разделе "Часы, язык и регион" выбрать апплет "Язык и региональные стандарты". В открывшемся диалоговом окне нужно перейти на первую слева закладку "Форматы".

Настройка регионального формата в операционной системе Windows

Настройка регионального формата в операционной системе Windows.

Как установленный в настройках Windows формат будет влиять на кодовую страницу, которая должна использоваться в программе 1С для базы данных?

  • Если в настройках Windows установлен формат "Украинский (Украина)", то в программе 1С для базы данных должна быть выбрана кодовая страница "1251 - Украинский язык".
  • Если в настройках Windows выбран формат "Русский (Россия)", то в 1С в настройках базы данных должна быть выбрана кодовая страница "1251 - Русский, белорусский, болгарский и сербские языки".

Но учтите, что указанные настройки справедливы только для 1С, которая работает под управлением операционных систем Windows 9х и Windows XP. В базе данных 1С, которая используется на операционных системах Windows Vista и Windows 7, кодовая страница выбирается по-другому.

Кодовая страница базы данных 1С

Чтобы установить кодовую страницу базы данных в программе 1С, нужно открыть базу данных в режиме Конфигуратора. После загрузки конфигуратора в меню нужно выбрать пункт "Администрирование - Кодовая страница таблиц ИБ". В результате на экране появится диалоговое окно "Кодовая страница таблиц информационной базы".

Поскольку в статье я использую скриншоты диалоговых окон, то мне придётся показать два диалоговых окна. Как я отметил в предыдущем разделе, настройка кодовой страницы для базы данных 1С, которая используется под операционными системами Windows 9х и Windows XP, отличается от настройки кодовой страницы информационной базы 1С, которая используется под управлением операционных систем Windows Vista или Windows 7.

Кодовая страница базы данных 1С под Windows 9x и Windows XP

Если информационная база 1С используется в операционной среде Windows 9x или Windows XP, то при настройке кодовой страницы таблиц информационной базы следует выбрать тот язык, который соответствует языковому формату, выбранному в региональных настройках Windows. Например, если в региональных настройках Windows выбран формат "Украинский (Украина)", то при настройке кодовой страницы информационной базы нужно выбрать кодовую страницу со значением "1251 - Украинский язык".

Установка кодовой страницы для украинского языка

Установка кодовой страницы для украинского языка

Кодовая страница базы данных 1С под Windows Vista и Windows 7

Если информационная база данных 1С используется на операционной системе Windows Vista или Windows 7, то в диалоговом окне "Кодовая страница таблиц информационной базы" следует выбрать значение "+ Текущая системная установка", которая находится в самом конце списка кодовых страниц.

Настройка кодовой страницы таблиц информационной базы данных 1С

Настройка кодовой страницы таблиц информационной базы.

Устанавливая в настройках базы данных кодовую страницу со значением "+ Текущая системная настройка", хотелось бы надеяться, что при смене кодовой страницы операционной системы Windows программа 1С будет автоматически подхватывать текущую системную настройку. Но чуда не произойдёт. Допустим для примера, что однажды в операционной системе Windows был выбран формат "Русский (Россия)", а данные в информационной базе 1С на тот момент были отсортированы в соответствии с кодовой страницей "1251 - Русский язык". Если впоследствии изменить системный формат на "Украинский (Украина)", то после этого придётся изменить порядок сортировки данных также и для информационной базы, хотя в настройках базы установлено значение "+ Текущая системная установка".

Итак, в настройках кодовой страницы информационной базы 1С, которая работает под управлением операционной среды Windows Vista или Windows 7, можно один раз и навсегда выбрать значение "+ Текущая системная настройка". Если при этом появляется необходимость изменить кодовую страницу таблиц информационной базы вследствие изменения кодовой страницы Windows, то нужно просто открыть диалоговое окно "Кодовая страница таблиц информационной базы", убедиться в том, что выбрано значение "+ Текущая системная настройка" и нажать кнопку "ОК".

После выбора кодовой страницы информационной базы программа 1С попросит подтвердить внесённые изменения. Пускай вас не смущает подобного рода педантичность и дотошность со стороны программы 1С, поскольку изменение кодовой страницы информационной базы - это достаточно существенное изменение структуры базы данных.

Подтверждение изменения кодовой страницы 1С

Подтверждение изменения кодовой страницы информационной базы 1С.

Если вы действительно согласны провести изменение кодовой страницы информационной базы 1С, то в диалоге жмите кнопку "Да". После этого программа 1С выполнит изменение кодовой страницы. При этом будет сгенерирован новый порядок сортировки и выполнено перестроение индексов всех таблиц данных информационной базы.

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

После окончания изменения порядка сортировки таблиц информационной базы программа 1С выдаст на экран уведомление об окончании процедуры.

Сообщение об окончании изменения порядка сортировки таблиц

Сообщение об окончании изменения кодовой страницы информационной базы.

Надеюсь, вы знаете, что нужно делать, если на мониторе появляется модельное окно с одной единственной кнопкой "ОК"? Потому что некоторые пользователи в таких случаях также вызывают администратора.

Вероятная причина возникновения конфликта кодовых страниц

Как я сказал в самом начале статьи, у украинских пользователей конфликт кодовых страниц между информационной базой 1С и системой Windows чаще всего проявляется при первоначальной установке и настройке программы 1С на компьютере. На мой взгляд, истоки проблемы в данном случае исходят из того счастливого момента, когда на компьютер пользователя устанавливалась операционная среда Windows.

Настройка регионального формата при установке Windows

Настройка регионального формата при установке Windows.

Поскольку в большинстве случаев на компьютеры украинских пользователей устанавливается русская версия Windows, то по умолчанию подставляются региональные настройки для России. С настройками по умолчанию соглашаются без раздумий. А потом на основе установленной операционной среды Windows с русскими настройками для России устанавливают программу 1С для ведения учёта на украинском языке в Украине. Как следствие, возникает конфликт языковых форматов и кодовых страниц, установленных в операционной среде Windows и в информационной базе 1С.

Приоритет порядка сортировки

Ещё раз отмечу, что невозможно для всех случаев заранее предусмотреть приоритет порядка сортировки между операционной средой Windows и информационной базой программы 1С. Это означает, что в каждом отдельном случае следует проанализировать несколько факторов, влияющих на выбор приоритета порядка сортировки, и только после сделать в системе соответствующие настройки.

До сих пор в статье я описывал алгоритм работы с порядком сортировки, при котором в информационной базе 1С устанавливалась та кодовая страница, которая установлена в операционной системе Windows. То есть мы рассматривали ситуации, когда приоритет порядка сортировки был у операционной системы Windows, а порядок сортировки информационной базы 1С подстраивался под операционную систему. Но на практике так бывает не всегда.

Бывают ситуации, когда приходится в настройках операционной системы Windows установить ту кодовую страницу, которая установлена для информационной базы 1С. Поэтому теперь мы рассмотрим случаи, когда приоритет порядка сортировки будет у информационной базы.

Настройка рабочей станции для работы с информационной базой в сети

Когда на предприятии появляется новое рабочее место пользователя информационной базы 1С, такое рабочее место оборудуется компьютером. На компьютере устанавливается операционная система Windows и, как уже становится очевидным, в настройках операционной системы Windows устанавливается какая-то кодовая страница. При настройке операционной системы Windows устанавливается сетевой доступ к файловому серверу с информационной базой 1С, с которой предстоит работа с локального рабочего места. Затем на компьютер устанавливается программа 1С и настраивается доступ к информационной базе, которая расположена на сервере. А информационная база, в свою очередь, уже имеет установленную кодовую страницу и соответствующий порядок сортировки.

Если возникает выбор приоритета кодовой страницы для локальной рабочей станции, которая будет работать в существующей сети, то в таком случае приоритет будет у информационной базы, которая находится на сервере и с которой уже работают существующие рабочие станции в сети. Поэтому в таком случае на новом рабочем компьютере в операционной системе Windows должна быть установлена та кодовая страница, которая используется в существующей информационной базе.

Например, если на предприятии используется информационная база с установленной кодовой страницей "1251 - Русский язык", то на всех компьютерах, с которых проводится работа с информационной базой, в настройках Windows должен быть установлен формат "Русский (Россия)". И именно в таких условиях происходят глупые недоразумения между администраторами и пользователями 1С. Скажем, блуждая по просторам рабочего компьютера во время обеденного перерыва, пользователь решил, что в региональных настройках Windows правильнее было бы выбрать формат "Украинский (Украина)". Ведь предприятие и компьютер располагаются в Украине, а весь учёт ведётся на украинском языке. Но в информационной базе, которая лежит на сервере, установлена кодовая страница "1251 - Русский язык", и пользователь об этом не знает. Пользователь изменил кодовую страницу в Windows на своём компьютере и пошёл доедать свой бутерброд. А после обеда администратор оказывается виноват в том, что у кого-не работает 1С.

Ошибки в работе 1С при работе с украинской кодовой страницей

Но бывают случаи, когда даже опытные администраторы разводят руками в недоумении. Такой случай был у меня. Работал я в организации, в которой было 5 структурных подразделений и около 30 пользователей 1С. Работа с информационной базой велась в режиме распределённой базы данных. То есть центральная база данных располагалась на моём рабочем компьютере, а после окончания рабочего дня проводился обмен изменениями с периферийными информационными базами, которые располагались на серверах в структурных подразделениях.

Там, в структурных подразделениях, все пользователи работали с информационной базой 1С в терминальном режиме. А использование терминального режима означает, что работа с информационной базой фактически проводится на сервере, а на локальном компьютере пользователя 1С выполняется только ввод данных, а также на экран монитора выводится изображение, которое генерирует терминальный сервер. В информационной базе, с которой велась работа во всей нашей распределённой базе, была установлена кодовая страница "1251 - Украинский язык".

Программа 1С работает в операционной системе Windows 7

Программа 1С работает в операционной системе Windows 7

А затем на рынок вышла операционная система Windows 7. Она была настолько красива и привлекательна, что мне во что бы то ни стало захотелось установить её на свой компьютер. Однажды моя мечта сбылась, и на моём рабочем компьютере загорелся логотип новых "форточек". Но счастье моё длилось не долго. Потому что когда я запустил 1С, я обнаружил, что 1С не работает и периодически выдаёт сообщения о каких-то странных ошибках. После глубокого анализа проблемы я выявил, что 1С неправильно воспринимает в функциях и процедурах строковые аргументы. При этом какой-то закономерности я не обнаружил. Иногда 1С не воспринимала букву "ж", а в других случаях ей не удавалось прочитать букву "ф".

Моему горю не было границ. Все пользователи администрируемой мной информационной базы работали в новой операционной системе Windows 7. Ведь в терминальном режиме вся работа пользователей фактически проводится на сервере, и настройки операционной системы Windows 7, которая была установлена на локальных компьютерах пользователей, никак не влияли на кодовую страницу информационной базы 1С. А я, как администратор информационной базы, должен был сидеть на старой Windows XP. Здесь для дотошных читателей отмечу, что сервера в удалённых подразделениях работали под управлением Windows Server 2003.

Я страдал несколько месяцев. Всё человечество стройными рядами переходило на новую красивую Windows 7, а я продолжал фрустрировать, глядя на старые окна Windows XP. Пока однажды не случилось чудо. Не помню уже, откуда ко мне пришло просветление. Но однажды я в информационной базе изменил кодовую страницу с "1251 - Украинский язык" на "1251 - Русский язык" и запустил информационную базу под Windows 7. К моему удивлению, 1С с информационной базой работала без ошибок. Хотя я и не понимал, почему.

В результате я установил кодовую страницу "1251 - Русский язык" в рабочей информационной базе, а на своём рабочем компьютере установил операционную систему Windows 7. В настройках операционных систем на моём компьютере и на серверах в удалённых подразделениях мне также пришлось установить формат "Русский (Россия)". Это было необходимо сделать для того, чтобы на всех компьютерах, с которых проводится работа с информационной базой 1С, в настройках операционной среды Windows была установлена та же кодовая страница, что и в информационной базе 1С.

Альтернативный способ решения проблемы

Существует ещё один способ решения проблемы несоответствия порядка сортировки между информационной базой и операционной средой Windows. Я обязан о нём рассказать в этой статье, посвящённой теме порядка сортировки таблиц в информационной базе. Но при этом я такой способ решения проблемы считаю весьма грубым. Также добавлю, что данным способом я никогда не пользовался. Но если фирмой "1С" предусмотрен такой способ решения проблемы несоответствия порядка сортировки, то значит это кому-нибудь нужно.

OrdNoChk.prm

Итак, если в каталог информационной базы положить файл с именем "OrdNoChk.prm", то программа 1С не будет проверять порядок сортировки таблиц для такой информационной базы. Если файл с указанным именем положить в программный каталог (как правило, это "C:\Program Files\1Cv77\BIN\"), то при такой настройке программа 1С вообще не будет проверять порядок сортировки таблиц ни в одной из информационных баз.

Кстати, предлагаемый метод работает только с программой 1С, исполняемый файл которой имеет релиз "7.70.027". Если ваша 1С имеет более раннюю версию и если вы хотите использовать описываемый способ решения проблемы несоответствия порядков сортировки, то сначала обновите вашу 1С.

Проверка версии программы 1С

Проверка версии программы 1С.

Мне не нравится такой метод решения проблемы несоответствия порядков сортировки, когда программе 1С, по сути, даётся запрет на сообщение об обнаруженной ошибке. Такой метод похож на приём обезболивающего, когда болит голова, и лечат не причину, а следствие.

Возможно, я чего-то не знаю. Но мне думается, что кодовые страницы - это серьёзно, а потому кодовые страницы информационной базы 1С и операционной системы Windows всё-таки должны соответствовать. Поэтому в случае их несоответствия я хочу получать соответствующее сообщение от программы 1С. И я не буду запрещать программе 1С сообщать мне об ошибках в тех местах, которые для меня важны.

Резюме

Практически каждый пользователь программы 1С сталкивался с системным сообщением "Порядок сортировки, установленный для базы данных, отличается от системного". И становится очень обидно, если после такого сообщения программа 1С не запускается. Чтобы исправить несоответствие порядков сортировки, установленных в информационной базе 1С и в операционной системе Windows, следует руководствоваться рекомендациями, изложенными в данной статье. Статья содержит многа букафф и иллюстраций.

Сайт рассылки Страница рассылки Архив рассылки Подписаться

В избранное