После обновления конфигураций 1С:Управление торговлей 11 или 1С:Комплексная автоматизация 2.5 пользователи могут столкнуться с неожиданной ошибкой при попытке печати документов, например, «Заказ Клиента». Сообщение об ошибке обычно выглядит так: «Область не найдена: КолонкаКод» или «Область не найдена: КолонкаКодов». Эта проблема может вызывать значительные затруднения, поскольку блокирует возможность оформления и выдачи документов, критически важных для бизнес-процессов.
В этой статье мы подробно разберем, почему возникает данная ошибка, и предложим комплексные шаги по ее устранению, основываясь на опыте сообщества и анализе внутреннего кода типовых конфигураций. Мы рассмотрим различные сценарии, от самых распространенных до более тонких технических аспектов, и выясним, как вернуть функциональность печати в вашу систему.
Наиболее частая причина возникновения ошибки «Область не найдена: КолонкаКод» заключается в наличии пользовательских макетов печатных форм, которые были изменены или созданы до обновления конфигурации. После обновления разработчики 1С часто вносят изменения в структуру типовых макетов: добавляют новые области, переименовывают существующие или изменяют логику формирования печатной формы. Если у вас используется измененный пользовательский макет, он не будет автоматически адаптирован к этим изменениям. Программа, обращаясь к макету, будет пытаться найти область с именем «КолонкаКод» или «КолонкаКодов» в соответствии с новой логикой, но в устаревшем пользовательском макете такой области может не быть, что и приводит к ошибке.
Давайте разберем по шагам, как найти и исправить такие макеты:
Переходим в справочник макетов печатных форм. Для этого откроем раздел «Администрирование», затем перейдем в «Печатные формы, отчеты и обработки» и выберем пункт «Макеты печатных форм». В более новых версиях этот путь может быть «НСИ и Администрирование» -> «Макеты печатных форм».
Фильтруем список для поиска измененных макетов. В открывшемся справочнике важно не пропустить измененный макет. В верхней части формы справочника обратим внимание на опцию или фильтр «Используемые макеты с внесенными изменениями». Активировав его, мы увидим только те макеты, которые были изменены пользователями или расширениями, а не стандартные типовые макеты.
Идентифицируем и анализируем измененный макет. Нам необходимо найти макет, который относится к документу «Заказ Клиента». Как правило, его имя будет содержать «ЗаказКлиента» или похожее наименование. После обнаружения такого макета у нас есть несколько вариантов действий:
Отключить или удалить измененный макет. Это самый быстрый способ проверить, является ли именно этот макет причиной ошибки. Если после его отключения или удаления (и, возможно, очистки кэша, о чем поговорим ниже) печать заработает, значит, причина была именно в нем. Чтобы отключить макет, обычно достаточно снять соответствующую галку «Используется» или аналогичную опцию. При удалении будьте внимательны, если макет содержит ценные изменения, которые вы хотите сохранить.
Отредактировать измененный макет. Если пользовательский макет содержит важные изменения, которые вы не хотите терять, его необходимо адаптировать под новую версию конфигурации. Для этого мы открываем измененный макет для редактирования. Затем, параллельно открываем типовой макет того же документа в конфигураторе (или сравниваем его со старой версией). Наша задача — найти, какие области были добавлены или переименованы в типовом макете (в частности, связанные с кодом или артикулом товара), и добавить их в наш пользовательский макет. Особое внимание уделим области с именем КолонкаКод или КолонкаКодов, а также, как мы увидим далее, специальной области Макет_2_5_10.
Обновить стандартный макет и внести изменения заново. Другой подход — удалить измененный макет, тем самым заставив систему использовать стандартный типовой макет. После этого, если требуются индивидуальные изменения, мы можем снова создать пользовательский макет, но уже на основе обновленной типовой версии, и заново внести необходимые правки.
Важно: При редактировании пользовательских макетов всегда следует проявлять осторожность. Не рекомендуется изменять заголовки областей и имена параметров в ячейках, если вы не уверены в их предназначении, так как программный код обращается к ним по именам.
В новых релизах конфигураций 1С, таких как УТ 11.5.10.73, УТ 11.5.10.93, КА 2.5.10.74 и других, разработчики внесли существенные изменения в программный код, отвечающий за формирование печатных форм. Один из ключевых моментов, который был выявлен в процессе отладки, связан с появлением в макете специальной области Макет_2_5_10.
Давайте посмотрим на фрагмент кода из модуля менеджера обработки ПечатьЗаказовНаТоварыУслуги, который ответственный за формирование печатной формы «Заказа Клиента»:
Если НЕ Макет.Области.Найти("Макет_2_5_10") = Неопределено Тогда
// адаптирован для перевода
ЗаполнитьТабличныйДокументЗаказаНаТоварыУслугиАдаптированДляПеревода(ТабличныйДокумент, ПараметрыЗаполненияПФ, ОбъектыПечати, ПервыйДокумент, КодЯзыка);
Иначе
// не адаптирован
ЗаполнитьТабличныйДокументЗаказаНаТоварыУслугиДо_2_5_10(ТабличныйДокумент, ПараметрыЗаполненияПФ, ОбъектыПечати, ПервыйДокумент, КодЯзыка);
КонецЕсли;
Что этот код делает? Он проверяет, существует ли в текущем используемом макете область с именем Макет_2_5_10. Эта область служит своеобразным "флагом" или "меткой версии", указывающей на то, что макет является "адаптированным для перевода" или соответствует новой структуре, начиная с определенного релиза (2.5.10 в данном случае).
Если область Макет_2_5_10 найдена: Вызывается процедура ЗаполнитьТабличныйДокументЗаказаНаТоварыУслугиАдаптированДляПеревода. Эта процедура предполагает, что макет соответствует новым стандартам и содержит все необходимые области, включая КолонкаКодов или КолонкаКод, а также, возможно, поддерживает многоязычность.
Если область Макет_2_5_10 НЕ найдена: Вызывается процедура ЗаполнитьТабличныйДокументЗаказаНаТоварыУслугиДо_2_5_10. Эта процедура предназначена для работы со старыми макетами, которые не были адаптированы. Однако, в некоторых случаях, даже если эта процедура должна обрабатывать старые макеты, при дальнейшей работе она может пытаться получить область, которая отсутствует в текущем макете, но ожидается кодом (например, ОбластьКодовШапки = Макет.ПолучитьОбласть(ОбластиСтрок.ШапкаТаблицы + "|КолонкаКодов");). Именно здесь и возникает ошибка «Область не найдена: КолонкаКодов».
Почему это происходит? Проблема в том, что даже если используется старый пользовательский макет, который не имеет области Макет_2_5_10, и система по идее должна перейти в ветку для "не адаптированного" макета, в процессе работы этой "не адаптированной" процедуры могут происходить обращения к областям, которые уже изменились или перестали существовать в новом коде, но старый макет их не содержит. Либо, что более вероятно, старый макет, который подтягивается, не имеет области Макет_2_5_10, но код при этом пытается работать с ним, как с новым, ожидая наличия КолонкаКодов. Это может быть связано с тем, что система "подхватывает" старый макет, но при этом вызывает часть кода, который предназначен для нового, либо же старая ветка кода сама содержит ошибку при работе с изменившимися данными.
Решение видится в следующем:
Обеспечить наличие области Макет_2_5_10 в используемом макете. Если вы используете пользовательский макет, откройте его в конфигураторе (Обработка.ПечатьЗаказовНаТоварыУслуги, макет ПФ_MXL_ЗаказКлиента) и убедитесь, что в нем присутствует область с именем Макет_2_5_10. Если ее нет, создайте ее (достаточно выделить любую небольшую ячейку в макете и присвоить ей имя Макет_2_5_10). Это позволит системе использовать "адаптированную" процедуру, которая корректно работает с новыми областями, такими как КолонкаКодов.
Убедиться, что в макете есть область КолонкаКодов. Помимо Макет_2_5_10, необходимо проверить, что в макете присутствует область, к которой идет обращение в коде. В данном случае это КолонкаКодов. Она обычно находится в строке заголовка табличной части документа. Если ее нет, ее также следует добавить, а ее имя ячейке назначить соответствующим образом.
Использование отладчика, как это делали участники форума, является критически важным для точной диагностики. Он позволяет пошагово отследить, какой именно макет подтягивается (пользовательский или типовой), какая ветка кода выбирается (ЗаполнитьТабличныйДокументЗаказаНаТоварыУслугиАдаптированДляПеревода или ЗаполнитьТабличныйДокументЗаказаНаТоварыУслугиДо_2_5_10) и в какой именно строке происходит попытка обращения к несуществующей области.
Устаревший кэш 1С, как на стороне клиента, так и на сервере, является частой причиной различных аномалий после обновления конфигурации. Система может продолжать использовать старые версии макетов, модулей или процедур, даже если на диске уже лежат новые. В нашем случае это может приводить к тому, что, несмотря на все изменения в конфигураторе, программа "видит" старый макет или старую версию кода.
Давайте разберем, как очистить кэш:
Очистка клиентского кэша.
Закройте все запущенные клиенты 1С.
Запустите 1С:Предприятие (не запускайте информационную базу сразу, а оставайтесь в списке баз).
Выделите нужную информационную базу и нажмите кнопку «Изменить».
На шаге выбора типа клиента (обычно это «Веб-клиент, Тонкий клиент, Толстый клиент») нажмите «Далее».
На следующем шаге вы увидите поле «Каталог информационной базы». Обратите внимание на путь, указанный там. Обычно это путь к папке с кэшем. Удалите эту папку вручную или скопируйте путь и откройте его в проводнике. Перед удалением всей папки можно попробовать удалить только ее содержимое.
Более простой способ: в окне запуска 1С:Предприятия выделите нужную базу, нажмите кнопку «Настройка» (или выберите пункт меню «Изменить», затем на одном из шагов увидите кнопку «Очистить кэш»). Если такой кнопки нет, то путь через удаление папки вручную остается самым надежным.
Очистка серверного кэша. Если у вас файловая база, очистка клиентского кэша обычно достаточна. Если же база клиент-серверная, то может потребоваться очистка кэша на сервере 1С:Предприятия. Это делается через оснастку «Администрирование серверов 1С:Предприятия» или путем перезапуска службы агента сервера 1С:Предприятия. Для этого потребуется доступ к серверу, где установлен сервер 1С, и права администратора. После перезапуска службы весь серверный кэш будет очищен.
Примечание: Как показывают сообщения в форуме, сброс кэша не всегда является панацеей, и часто приходится прибегать к более глубоким методам, таким как исправление пользовательских макетов или анализ кода.
Если после выполнения вышеописанных шагов проблема все еще не решена, рассмотрим другие аспекты, которые могут влиять на печать:
Проверка расширений конфигурации. Если в вашей системе используются расширения, которые модифицируют печатные формы или логику их формирования, после обновления конфигурации эти расширения могут стать несовместимыми. Необходимо проверить расширения на актуальность, обновить их или, временно, отключить для диагностики. Если проблема исчезнет после отключения расширения, значит, его требуется адаптировать к новой версии конфигурации.
Проверка настроек учета. В некоторых печатных формах предусмотрены предопределенные настройки для добавления дополнительных колонок, например, артикула или кода. Убедитесь, что эти настройки корректны. Например, в УТ 11 это может быть раздел «Администрирование» -> «Параметры учета» -> «Печать артикулов» (или аналогичные, связанные с выводом кода).
Анализ данных в документе. Редко, но ошибка может быть вызвана проблемами с данными в самом документе «Заказ Клиента». Например, если в табличной части документа отсутствуют товары или услуги, или есть некорректно заполненные поля, это может привести к ошибкам при попытке сформировать печатную форму. Проверьте заполнение табличной части и реквизитов документа.
Проверка настроек принтера. В редких случаях проблемы с печатью могут быть связаны не с 1С, а с операционной системой или драйверами принтера. Попробуйте распечатать документ на другом принтере или в другом формате (например, сохранить в PDF), чтобы исключить эту возможность.
Актуализация платформы 1С:Предприятие. Убедитесь, что помимо конфигурации, обновлена и платформа 1С:Предприятие до актуальной или рекомендуемой версии, совместимой с текущим релизом конфигурации.
Ошибка «Область не найдена: КолонкаКод» или «Область не найдена: КолонкаКодов» после обновления УТ 11 или КА 2.5 при печати Заказа Клиента чаще всего связана с неактуальными пользовательскими макетами печатных форм, которые не были адаптированы к изменениям в типовой конфигурации. Решение заключается в комплексном подходе: выявлении и корректировке или удалении устаревших макетов, а также понимании и адаптации к новой логике формирования печатных форм, основанной на проверке наличия области Макет_2_5_10. Всегда начинайте с проверки пользовательских макетов и очистки кэша, а в случае неудачи переходите к более глубокому анализу кода и структуры макетов.