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