В процессе разработки расширений для типовых конфигураций, таких как 1С:Розница или 1С:Управление торговлей, часто возникает необходимость постобработки сформированного табличного документа. Одной из частых задач является поиск ячеек, содержащих определенную расшифровку, или доработка отчетов для вывода дополнительных данных, например, присоединенных файлов.
Перебор всех ячеек табличного документа с использованием вложенных циклов по высоте и ширине — это ресурсоемкая операция, которая значительно замедляет формирование отчета. Рассмотрим, как можно подойти к этой задаче более профессионально.
Прежде всего, проанализируем текущую реализацию поиска. Использование конструкции:
Для Стр = 1 По ТабДок.ВысотаТаблицы Цикл
Для Кол = 1 По ТабДок.ШиринаТаблицы Цикл
ТекОбл = ТабДок.Область(Стр, Кол);
// Обработка расшифровки
КонецЦикла;
КонецЦикла;
Данный подход не учитывает, что многие современные отчеты 1С формируются с использованием Системы Компоновки Данных (СКД), где расшифровка может быть привязана не к конкретной ячейке, а к строке целиком. Чтобы не тратить ресурсы на избыточный обход, необходимо учитывать свойство ИспользованиеРасшифровкиТабличногоДокумента. Если пользователь выводит отчет по группировкам, обход каждой ячейки станет «бутылочным горлышком» вашего расширения.
Рекомендуем придерживаться следующих правил для оптимизации:
Расшифровка как отдельный объект или как массив значений.ТабличныйДокумент, вместо прямого обращения к Область(Стр, Кол) внутри двойного цикла.Второй важный вопрос, который мы разберем — это интеграция графических данных в табличные документы. Вместо того чтобы пытаться внедрять изображения «вручную» через сложное манипулирование координатами ячеек, правильнее использовать штатные механизмы СКД.
Рассмотрим пошаговый алгоритм внедрения:
НоменклатураПрисоединенныеФайлы.Метаданные.ОпределяемыеТипы.ПрисоединенныйФайл.Тип.СодержитТип(ТипЗнч(Значение)).Важно помнить, что при выводе большого количества изображений потребление оперативной памяти может существенно вырасти. Если вы планируете расширять функционал, рекомендуем рассмотреть такие улучшения, как:
ODS или XLSX, так как при экспорте из 1С качество графики может теряться.Подводя итог, можно сказать, что решение подобных задач требует отказа от «лобового» перебора ячеек в пользу использования возможностей СКД и метаданных конфигурации. Это не только ускоряет работу кода, но и делает его устойчивым к обновлениям типовой конфигурации.