Как убрать или изменить разделитель триад в 1С 7.7 при выгрузке в Excel?

Программист 1С v7.7 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При активной работе с отчетами в платформе 1С:Предприятие 7.7 пользователи часто сталкиваются с проблемой: сохраненные в формате Excel числовые колонки содержат символы-разделители групп разрядов (апострофы, пробелы или неразрывные пробелы). В результате табличный процессор Excel распознает такие значения как обычный текст, из-за чего стандартные формулы суммирования и вычислений перестают работать.

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

Почему не срабатывает глобальная настройка параметров

Проанализируем работу платформы 1С 7.7. Флаг разделителя триад в меню «Параметры» отвечает исключительно за визуальное отображение чисел в интерактивных элементах управления — в формах документов, справочниках и журналах. При формировании табличных документов (отчетов и печатных форм) платформа использует либо формат конкретной ячейки макета, либо программное форматирование чисел в коде модулей.

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

Способ 1. Изменение глобального формата сумм в типовой конфигурации

В типовой конфигурации «1С:Бухгалтерия 7.7» формат вывода чисел в большинстве стандартных отчетов задается централизованно через специальную функцию ФорматС(), параметры которой инициализируются в глобальном модуле при запуске программы.

Разберем по шагам, как отключить разделитель триад для всей базы сразу:

  1. Открываем конфигурацию в режиме Конфигуратор.
  2. Переходим в меню Действия — Глобальный модуль.
  3. С помощью поиска (Ctrl+F) находим процедуру УстановитьФорматСумм.
  4. В исходном виде код формирования формата выглядит следующим образом:

Процедура УстановитьФорматСумм()
    сФорматС = "Ч0" + (Метаданные.ДлинаСуммыПроводки + 3) + "." + Метаданные.ТочностьСуммыПроводки;
    Если Метаданные.РазделятьТриадыСуммыПроводки = 1 Тогда
        сФорматС = сФорматС + ".,";
    КонецЕсли;
КонецПроцедуры

Для полного отключения разделителя триад закомментируем блок условия, проверяющий признак разделения триад:


Процедура УстановитьФорматСумм()
    сФорматС = "Ч0" + (Метаданные.ДлинаСуммыПроводки + 3) + "." + Метаданные.ТочностьСуммыПроводки;
    // Если Метаданные.РазделятьТриадыСуммыПроводки = 1 Тогда
    //     сФорматС = сФорматС + ".,";
    // КонецЕсли;
КонецПроцедуры

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


сФорматС = сФорматС + ". "; // Разделителем целой и дробной части будет точка, а триад — пробел

После сохранения изменений все типовые отчеты начнут формироваться без лишних служебных символов.

Способ 2. Настройка формата ячеек в макете печатной формы

Если отчет является внешним или доработанным и не использует функцию ФорматС(), формат настраивается непосредственно в свойствах ячеек таблицы.

Выполним следующие действия:

  1. Открываем форму или макет отчета в Конфигураторе.
  2. Выделяем ячейку, в которую выводится сумма, и открываем ее свойства (двойной клик или Alt+Enter).
  3. На вкладке Текст в строке Формат задаем шаблон числа без разделения триад, например: Ч15.2 или Ч015.2.

Способ 3. Программное форматирование чисел в коде отчета

Посмотрим на пример, когда в алгоритме выгрузки или формирования строки используется встроенная функция Формат(). Для исключения апострофа или неразрывного пробела необходимо скорректировать управляющую строку:


// Исходная строка с разделителем:
// РезСтрока = СокрЛ(Формат(ЧислЗнач, "Ч" + ВыводНулевого + "15.2." + РаздТриад));

// Исправленный вариант без разделителя триад:
РезСтрока = СокрЛ(Формат(ЧислЗнач, "Ч" + ВыводНулевого + "15.2."));

При явной выгрузке через COM-объект Excel.Application строкового преобразования лучше избегать, передавая значение с явным приведением типа Число():

Лист.Cells(НомерСтроки, НомерКолонки).Value = Число(Выборка.Сумма);

Способ 4. Преобразование выгруженного отчета средствами Excel

Если вносить изменения в конфигурацию нельзя, а отчет уже выгружен, преобразуем текстовые ячейки в числа непосредственно в таблице Excel:

  1. Замена неразрывного пробела: В 1С 7.7 разделителем часто выступает неразрывный пробел с кодом 160. Выделяем таблицу, нажимаем Ctrl+H, в поле «Найти» зажимаем клавишу Alt и на цифровом блоке клавиатуры вводим 0160. Поле «Заменить на» оставляем пустым и нажимаем Заменить все.
  2. Инструмент «Текст по столбцам»: Выделяем столбец с числами, переходим в меню Данные — Текст по столбцам и нажимаем Готово. Excel автоматически преобразует псевдочисла в настоящий числовой формат.
  3. Специальная вставка: В любую пустую ячейку вводим 1, копируем ее (Ctrl+C), выделяем диапазон с суммами, нажимаем правую кнопку мыши, выбираем Специальная вставка — Умножить и нажимаем ОК.
← На главную