Как убрать лишнюю колонку со штрихкодом при сохранении счета на оплату в Excel из 1С:ERP 2.4

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием
← На главную

При работе в современных конфигурациях на базе 1С:Предприятие 8.3, таких как 1С:ERP Управление предприятием 2.4, Управление торговлей 11 или Комплексная автоматизация 2, пользователи часто сталкиваются со странным поведением системы при экспорте документов. Типичная ситуация: на экране монитора и при печати на бумагу (или сохранении в PDF) счет на оплату выглядит идеально, но стоит сохранить его в формате XLSX (Excel), как в таблице появляется лишняя колонка с техническим тегом <штрихкод> или пустым пространством для него.

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

Выясним причину: почему Excel видит то, чего не видит принтер?

Для начала проанализируем ситуацию с технической точки зрения. Печатная форма в 1С — это объект типа ТабличныйДокумент. Когда мы нажимаем кнопку «Печать», система программно заполняет макет данными. В современных типовых решениях активно используется Библиотека стандартных подсистем (БСП), которая добавляет в макеты скрытые области для сервисных нужд (например, для последующего распознавания документа или интеграции со складским оборудованием).

Разберем основные причины появления колонки:

  1. Особенности конвертации: Формат PDF фиксирует визуальный слой (графическое представление), игнорируя невидимые элементы. Формат Excel же стремится сохранить структуру таблицы. Если в макете есть колонка с нулевой шириной или свойством Видимость = Ложь, при сохранении в XLSX платформа 1С может передать её как существующий, но «схлопнутый» столбец, который Excel успешно разворачивает.
  2. Теги в макете: В ячейках макета часто прописаны параметры в угловых скобках, например, <Штрихкод>. Если программный код заполнения не очистил эту область перед выводом, она попадает в итоговый документ.
  3. Настройки БСП: Система может принудительно подмешивать дополнительные данные в печатные формы на основании глобальных настроек программы, даже если конкретная функциональная опция штрихкодирования выключена.

Способ 1: Проверка настроек в пользовательском режиме (Интерфейс)

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

Рассмотрим по шагам, где найти нужную опцию:

  1. Перейдем в раздел НСИ и администрирование, далее выберем пункт Продажи.
  2. В открывшемся окне найдем группу настроек Печать документов.
  3. Обратим внимание на поле Дополнительная колонка печатных форм. Если там установлено значение Штрихкод, система будет пытаться вставить его во все товарные накладные и счета. Установим значение Не выводить или Код (если это требуется политикой компании).
  4. Проверим также общую настройку: НСИ и администрирование — Настройка НСИ и разделов — Администрирование — Печатные формы, отчеты и обработки. Убедимся, что флаг Штрихкодирование печатных форм снят. Однако, как показывает практика, для счета на оплату этого может быть недостаточно.

Способ 2: Использование пользовательских макетов печатных форм

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

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

  1. Зайдем в раздел Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм.
  2. В списке найдем макет с наименованием Счет на оплату (или СчетНаОплату для документа ЗаказКлиента).
  3. Нажмем кнопку Изменить. Система предложит создать пользовательский макет. Соглашаемся.
  4. В открывшемся редакторе табличного документа внимательно изучим структуру колонок. Найдем ту, где в заголовке или в области строк указан параметр Штрихкод.
  5. Выделим эту колонку целиком, нажмем правую кнопку мыши и выберем Удалить. Будьте осторожны: не удаляйте лишнего, чтобы не нарушить расчет итоговых сумм.
  6. Нажмем Записать и закрыть. Теперь система будет использовать ваш отредактированный макет, в котором физически нет места под штрихкод, и при сохранении в Excel колонке будет просто некуда «вылезти».

Способ 3: Программное решение через расширение (для разработчиков)

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

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

Пример логики кода, который можно внедрить через расширение (метод &После):


&После("СформироватьПечатнуюФормуСчетаНаОплату")
Процедура ИНФ_СформироватьПечатнуюФормуСчетаНаОплату(ТабличныйДокумент, ПараметрыПечати)
    
    // Пройдем по всем колонкам и проверим их на наличие данных о штрихкоде
    // Если колонка была скрыта программно, она все равно может выгрузиться в Excel
    // Нам нужно найти её и удалить из итогового документа
    
    Для НомерКолонки = 1 По ТабличныйДокумент.ШиринаТаблицы Цикл
        Область = ТабличныйДокумент.Область(1, НомерКолонки);
        // Если в области поиска встречается тег или специфическое имя
        Если Найти(Область.Текст, "Штрихкод") > 0 Или Область.Имя = "КолонкаШтрихкода" Тогда
             ТабличныйДокумент.УдалитьОбласть(ТабличныйДокумент.Область(, НомерКолонки), ТипСмещенияТабличногоДокумента.ПоГоризонтали);
        КонецЕсли;
    КонецЦикла;

КонецПроцедуры

Важно помнить, что использование метода УдалитьОбласть предпочтительнее, чем установка Видимость = Ложь, так как именно физическое отсутствие области в объекте ТабличныйДокумент гарантирует корректный экспорт в форматы Microsoft Office.

Способ 4: Оперативное исправление перед сохранением (для пользователя)

Если проблему нужно решить «здесь и сейчас», а прав на редактирование макетов нет, можно воспользоваться встроенным редактором 1С непосредственно в окне предпросмотра.

Рассмотрим этот алгоритм:

  1. Сформируйте счет на оплату, нажав кнопку Печать.
  2. В открывшемся окне, где вы видите готовый счет, найдите на панели инструментов кнопку Редактирование (иконка в виде карандаша или листа с ручкой). Нажмите её.
  3. Теперь таблица стала доступна для изменений. Найдите ту самую колонку со штрихкодом.
  4. Кликните по заголовку колонки (буквенное обозначение сверху), чтобы выделить её целиком.
  5. Нажмите правую кнопку мыши и выберите команду Удалить.
  6. Только после этого нажимайте на кнопку Сохранить (дискета) и выбирайте формат Лист Excel (.xlsx).

Этот метод не требует вмешательства программиста, но его придется повторять каждый раз при формировании документа. Поэтому для постоянной работы мы рекомендуем использовать Способ 2 с редактированием макета.

Резюме

Мы проанализировали проблему появления нежелательных колонок при выгрузке из 1С в Excel. Основная причина заключается в том, что формат XLSX чувствителен к структуре макета и отображает даже те элементы, которые были помечены как скрытые для печати. Для исправления ситуации лучше всего использовать механизм пользовательских макетов печатных форм, так как это наиболее стабильный и безопасный способ настройки системы под нужды конкретного бизнеса.

← На главную