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