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