При работе в современных конфигурациях на базе 1С:Предприятие 8.3, таких как 1С:ERP Управление предприятием 2.4, Управление торговлей 11 или Комплексная автоматизация 2, пользователи часто сталкиваются со странным поведением системы при экспорте документов. Типичная ситуация: на экране монитора и при печати на бумагу (или сохранении в PDF) счет на оплату выглядит идеально, но стоит сохранить его в формате XLSX (Excel), как в таблице появляется лишняя колонка с техническим тегом <штрихкод> или пустым пространством для него.
В этой статье мы подробно разберем, почему это происходит, как работают механизмы платформы 1С при формировании табличных документов и какими способами можно навсегда избавиться от назойливой колонки, сохранив при этом целостность данных в карточке номенклатуры.
Для начала проанализируем ситуацию с технической точки зрения. Печатная форма в 1С — это объект типа ТабличныйДокумент. Когда мы нажимаем кнопку «Печать», система программно заполняет макет данными. В современных типовых решениях активно используется Библиотека стандартных подсистем (БСП), которая добавляет в макеты скрытые области для сервисных нужд (например, для последующего распознавания документа или интеграции со складским оборудованием).
Разберем основные причины появления колонки:
Видимость = Ложь, при сохранении в XLSX платформа 1С может передать её как существующий, но «схлопнутый» столбец, который Excel успешно разворачивает.<Штрихкод>. Если программный код заполнения не очистил эту область перед выводом, она попадает в итоговый документ.Прежде чем открывать конфигуратор, попробуем решить задачу стандартными средствами администрирования. Зачастую проблема кроется в настройках вывода дополнительных колонок.
Рассмотрим по шагам, где найти нужную опцию:
Штрихкод, система будет пытаться вставить его во все товарные накладные и счета. Установим значение Не выводить или Код (если это требуется политикой компании).Штрихкодирование печатных форм снят. Однако, как показывает практика, для счета на оплату этого может быть недостаточно.Если настройки не помогли, воспользуемся механизмом переопределения макетов. Это позволяет изменить визуальную структуру счета без внесения изменений в программный код (без снятия с поддержки).
Выполним следующие действия:
Счет на оплату (или СчетНаОплату для документа ЗаказКлиента).Штрихкод.В некоторых случаях колонка добавляется программно в модуле менеджера документа через коллекцию ДанныеПечати. Если мы хотим гарантированно убрать её для всех пользователей программным путем, создадим расширение.
Проанализируем ситуацию: нам нужно перехватить момент формирования табличного документа. Обычно это происходит в процедуре ПечатьСчетаНаОплату модуля менеджера или специализированного общего модуля УправлениеПечатью.
Пример логики кода, который можно внедрить через расширение (метод &После):
&После("СформироватьПечатнуюФормуСчетаНаОплату")
Процедура ИНФ_СформироватьПечатнуюФормуСчетаНаОплату(ТабличныйДокумент, ПараметрыПечати)
// Пройдем по всем колонкам и проверим их на наличие данных о штрихкоде
// Если колонка была скрыта программно, она все равно может выгрузиться в Excel
// Нам нужно найти её и удалить из итогового документа
Для НомерКолонки = 1 По ТабличныйДокумент.ШиринаТаблицы Цикл
Область = ТабличныйДокумент.Область(1, НомерКолонки);
// Если в области поиска встречается тег или специфическое имя
Если Найти(Область.Текст, "Штрихкод") > 0 Или Область.Имя = "КолонкаШтрихкода" Тогда
ТабличныйДокумент.УдалитьОбласть(ТабличныйДокумент.Область(, НомерКолонки), ТипСмещенияТабличногоДокумента.ПоГоризонтали);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Важно помнить, что использование метода УдалитьОбласть предпочтительнее, чем установка Видимость = Ложь, так как именно физическое отсутствие области в объекте ТабличныйДокумент гарантирует корректный экспорт в форматы Microsoft Office.
Если проблему нужно решить «здесь и сейчас», а прав на редактирование макетов нет, можно воспользоваться встроенным редактором 1С непосредственно в окне предпросмотра.
Рассмотрим этот алгоритм:
Лист Excel (.xlsx).Этот метод не требует вмешательства программиста, но его придется повторять каждый раз при формировании документа. Поэтому для постоянной работы мы рекомендуем использовать Способ 2 с редактированием макета.
Мы проанализировали проблему появления нежелательных колонок при выгрузке из 1С в Excel. Основная причина заключается в том, что формат XLSX чувствителен к структуре макета и отображает даже те элементы, которые были помечены как скрытые для печати. Для исправления ситуации лучше всего использовать механизм пользовательских макетов печатных форм, так как это наиболее стабильный и безопасный способ настройки системы под нужды конкретного бизнеса.