Разработка и Конфигурация · 13 мин
Что такое разделитель в 1С и где он используется
Разделитель в 1С: что это, где применяется — в запросах, строках, разделении данных и интерфейсе. Как настроить разделители и избежать типичных ошибок.
Термин «разделитель» в 1С не имеет единственного значения — в зависимости от контекста под ним понимают символ-разделитель строк в текстовых данных, разделитель хранимых данных в механизме разделения информационной базы, разделитель группировок в отчётах или визуальный разделитель элементов интерфейса. Чтобы правильно работать с конфигурацией, важно понимать, о каком именно разделителе идёт речь в конкретной задаче.
Наиболее часто с разделителями сталкиваются разработчики и администраторы: при обмене данными через CSV-файлы, при настройке механизма разделения данных для работы в режиме сервиса (SaaS), при построении запросов и при разборе строк во встроенном языке. Каждый из этих сценариев предъявляет свои требования к выбору символа-разделителя и способу его обработки.
Ошибки в работе с разделителями приводят к вполне конкретным последствиям: «съезжают» колонки при загрузке данных из файлов, нарушается изоляция данных между абонентами сервиса, некорректно формируются отчёты. Поэтому ниже рассмотрены основные виды разделителей в 1С, условия их выбора и типичные проблемы.
Что означает термин «разделитель» в контексте 1С
В широком смысле разделитель — это то, что отделяет один фрагмент данных от другого. В платформе 1С:Предприятие термин встречается минимум в четырёх разных смыслах, и путаница между ними — частая причина недопонимания между специалистами.
Первое значение — символ-разделитель в текстовых данных: запятая, точка с запятой, табуляция или вертикальная черта, которые отделяют поля в файлах обмена и строках при программной обработке. Второе — разделитель хранимых данных, объект метаданных (общий реквизит), который физически разграничивает данные разных организаций или абонентов в одной информационной базе. Третье — разделитель в интерфейсе, визуальный элемент, отделяющий группы команд или полей. Четвёртое — разделители групп и итогов в отчётах и табличных документах.
Дальнейшие разделы разбирают каждый сценарий отдельно, с указанием того, когда какой подход применять и как проверить результат.
Символ-разделитель в строках и файлах обмена
Чаще всего под разделителем понимают символ, который отделяет поля в текстовых файлах форматов CSV, TXT и подобных. Классический пример — выгрузка из Excel или сторонней системы, где поля отделены точкой с запятой, а загрузка в 1С настроена на запятую. В результате вся строка попадает в одну колонку.
Во встроенном языке разделение строк выполняется функцией СтрРазделить(Строка, Разделитель), которая возвращает массив подстрок, и обратной операцией СтрСоединить(Массив, Разделитель). Для построчного чтения файлов используются объекты ЧтениеТекста и ЧтениеДанных, где символ-разделитель передаётся параметром или разбиение выполняется вручную.
Как выбрать символ-разделитель
Выбор символа зависит от содержимого данных. Если в значениях полей встречаются запятые (например, в адресах или наименованиях), запятая как разделитель не подходит — берите точку с запятой или табуляцию. Табуляция считается наиболее безопасным вариантом, поскольку в пользовательских данных она встречается редко.
Сравнение вариантов
Стандарт CSV, но конфликтует с запятыми внутри текста и с десятичным разделителем в числах
Типичный разделитель CSV в русской локали Windows; надёжнее запятой, но тоже может встречаться в тексте
Почти не встречается в пользовательских данных; удобна для обмена между 1С и Excel
Редко встречается в данных; подходит для технических выгрузок, но нестандартна для Excel
Учитывайте и региональные настройки: в русской локали Windows десятичным разделителем чисел является запятая, поэтому CSV с запятой-разделителем полей в такой среде практически гарантированно создаёт конфликты при обмене числовыми данными.
Разделитель хранимых данных (разделение информационной базы)
Второе важное значение термина — разделитель как механизм изоляции данных. В конфигурациях, рассчитанных на работу в режиме сервиса (SaaS) или на ведение учёта нескольких независимых организаций в одной базе, используется объект метаданных «Общий реквизит» со свойством «Разделение данных», установленным в значение «Разделять».
Такой общий реквизит становится разделителем хранимых данных: платформа автоматически добавляет его значение как условие отбора ко всем запросам к разделённым объектам. Пользователь одной области данных физически не видит записи другой области, хотя все данные лежат в одних и тех же таблицах СУБД.
Значение разделителя текущей области задаётся при входе пользователя или программно через параметры сеанса. В режиме сервиса за сопоставление пользователей и областей данных отвечает менеджер сервиса; при самостоятельном развёртывании — административные механизмы кластера или внешние обработки управления областями.
Когда применяется разделение данных
Механизм оправдан, когда одна база обслуживает множество независимых абонентов: облачные сервисы, франчайзинговые сети, обслуживающие организации. Для одиночной компании с несколькими юрлицами обычно достаточно штатного ведения учёта по организациям без разделения данных — это проще в администрировании и не накладывает ограничений на запросы.
Разделители в интерфейсе и отчётах
В управляемых формах разделитель — это элемент оформления, визуально отделяющий группы команд в командной панели или поля на форме. Он не несёт данных и влияет только на восприятие интерфейса: грамотно расставленные разделители делают форму читаемой, их отсутствие превращает панель команд в сплошную ленту.
В табличных документах и отчётах на СКД разделителями иногда называют строки группировок и подытогов, отделяющие одну группу записей от другой, а также разделители страниц при печати. Платформа поддерживает автоматические и ручные разрывы страниц: в табличном документе их можно вставить методами объекта ТабличныйДокумент, а в режиме просмотра — проверить, как документ ляжет на страницы.
Откройте файл в текстовом редакторе и посмотрите, каким символом отделены поля
Проверьте значение разделителя в параметрах сеанса и права доступа
Проверьте, какой символ отделяет дробную часть в файле, и региональные настройки
Добавьте элементы-разделители между группами кнопок в редакторе формы
Как работать с разделителями строк в коде
Для разбора строк во встроенном языке используется СтрРазделить. Функция принимает исходную строку, разделитель и необязательный признак включения пустых строк. Если разделитель в строке не найден, функция вернёт массив из одного элемента — исходной строки целиком, что нужно учитывать при проверке результата.
СтрокаДанных = "Иванов;Менеджер;45000";
Поля = СтрРазделить(СтрокаДанных, ";");
// Поля[0] = "Иванов", Поля[1] = "Менеджер", Поля[2] = "45000"
Обратно = СтрСоединить(Поля, ";");При обработке многострочных текстов удобно сначала разделить текст на строки по символу переноса, а затем каждую строку — на поля. Для переносов строк используйте константу Символы.ПС (перевод строки) или Символы.ВК + Символы.ПС, если файл создан в Windows и переносы двухсимвольные.
- 1Откройте файл в текстовом редакторе и определите фактический символ-разделитель полей
- 2Проверьте, встречается ли этот символ внутри значений (адреса, наименования, числа)
- 3При конфликте замените разделитель на табуляцию или точку с запятой либо используйте кавычки-ограничители
- 4Загрузите файл в тестовую базу и сверьте количество и содержимое колонок с исходником
- 5Только после успешной проверки выполняйте загрузку в рабочую базу
Типичные ошибки и как их избежать
Большинство проблем с разделителями возникает не из-за сложности механизмов, а из-за невнимательности к исходным данным. Файл приходит из внешней системы, его структура предполагается «стандартной», а реальный разделитель никто не проверяет.
Отдельная группа ошибок связана с кавычками-ограничителями. В корректном CSV поле, содержащее разделитель, заключается в кавычки. Простое разбиение через СтрРазделить такие случаи не обрабатывает — для файлов с ограничителями нужен парсер, учитывающий кавычки, либо использование готовых библиотек обмена.
Как проверить результат
Совпадает с ожидаемым числом колонок во всех строках файла
В разных строках разное число полей — разделитель встречается внутри данных
Числа распознаны как числа, дробная часть на месте
Числа стали текстом или потеряли дробную часть — конфликт десятичного разделителя
Пользователь видит только записи своей области
Видны чужие записи или данные пусты — проверьте значение разделителя в сеансе
Разрывы страниц не разрезают строки таблицы
Строки обрезаны на границе страниц — настройте разрывы и повтор заголовков
Как выбрать подход под свою задачу
Выбор зависит от того, что именно нужно разделить. Для разового обмена файлами достаточно правильно определить символ-разделитель и проверить данные. Для постоянного обмена между системами надёжнее перейти на структурированные форматы (XML, JSON), где разделители не нужны вовсе — структура описывается тегами и ключами.
Как выбрать действие
Для регулярных интеграций текстовые файлы с разделителями стоит рассматривать как временное решение: любая смена структуры файла поставщиком ломает загрузку. Форматы с явной структурой устраняют целый класс ошибок, связанных с разделителями.
Что важно запомнить
Разделитель в 1С — это символ-разделитель в строках и файлах, разделитель хранимых данных для изоляции областей базы либо визуальный элемент интерфейса. Перед загрузкой файлов всегда проверяйте фактический разделитель и конфликты с данными, а операции с разделением данных выполняйте только на копии базы.
Частые вопросы
Чем отличается разделитель в запросе от разделителя в строке?
В языке запросов 1С разделителем полей в выборке является запятая — это часть синтаксиса, её нельзя изменить. Разделитель в строке — произвольный символ, который вы задаёте сами при вызове СтрРазделить или чтении файла. Это разные уровни: один — грамматика языка, другой — обработка пользовательских данных.
Какой разделитель лучше использовать для выгрузки в Excel?
Практичнее всего табуляция: Excel корректно распознаёт такие файлы, а сам символ почти не встречается в пользовательских данных. Если файл открывается двойным щелчком как CSV, ориентируйтесь на точку с запятой — она соответствует русской региональной настройке Windows и не конфликтует с запятой в числах.
Можно ли включить разделение данных в существующей типовой базе?
Нет, если конфигурация изначально не спроектирована под разделение. Разделитель хранимых данных — это общий реквизит с особым режимом, который должен быть включён в состав метаданных, а весь код конфигурации — корректно работать с разделёнными таблицами. Произвольную базу перевести на такой режим без серьёзной доработки нельзя.
Почему после СтрРазделить количество полей меньше, чем ожидалось?
Функция по умолчанию может пропускать пустые подстроки между идущими подряд разделителями. Если в данных есть пустые поля (два разделителя рядом), передайте третьим параметром значение Ложь, чтобы пустые элементы сохранялись в массиве и индексы полей не смещались.
Что делать, если в тексте встречается сам символ-разделитель?
Три рабочих варианта: сменить разделитель на символ, которого нет в данных (табуляцию или вертикальную черту); заключать поля с разделителями в кавычки и использовать парсер, понимающий ограничители; либо перейти на формат без разделителей — XML или JSON, где структура задана явно.
Как проверить, какой разделитель используется в присланном файле?
Откройте файл в любом текстовом редакторе (Notepad++, Блокнот) — поля визуально отделены конкретным символом. Не полагайтесь на расширение файла и заверения отправителя: фактический разделитель виден в первых строках содержимого. Заодно проверьте кодировку файла, чтобы избежать проблем с кириллицей при чтении.