Как программно открыть типовые отчеты (Карточку счета, Анализ счета, ОСВ по счету) с отбором, не изменяя сам отчет, в конфигурации БП 3.0
Задачи пользователя - Менеджеры внешних отчетов
Механизм формирования отчетов в БП 3 переработали полностью по сравнению с БП 2, сделав его более «хитро-мудрым». Он стал гибок и удобен, но немного «замудрен».
При открытии форм в них можно передавать параметры, и каждый раз, когда открывается форма типового отчета, она проверяется на соответствие параметрам открытия, и если в них указать интересующие нас отборы, то отчет откроется сформированным согласно этим отборам.
Не буду сильно углублять в теорию, каждый и сам может посмотреть, как все формируется, просто выложу пример части кода, который позволит открыть отчет.
Пример для «Карточки счета».
//Имя вызываемого отчета карточка,анализ, ОСВ по счету . Я делал только для этих трех.
ИмяОтчета = "КарточкаСчета";
//Заполняем реквизиты отчета и обязательные поля (могут отличаться в зависимости от отчета)
ПользовательскиеНастройкиКомпоновкиДанных = Новый ПользовательскиеНастройкиКомпоновкиДанных;
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Счет" , Счет);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("НачалоПериода" , Объект.ДатаНачало);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("КонецПериода" , Объект.ДатаКонец);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Организация" , Объект.Организация);
//Заполняем дополнительные отборы (в примере только для субконто1 и субконто2)
НовыйОтбор = ПользовательскиеНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
НовыйОтбор.ИдентификаторПользовательскойНастройки = "Отбор";
ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"Субконто1", Контрагент);
ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"Субконто2", Договор);
//Обязателньо указываем ключ (Равным параметру "ИДРасшифровки",я указывал Имя отчета ) НастройкиРасшифровки
НастройкиРасшифровки = Новый Структура;
НастройкиРасшифровки.Вставить(ИмяОтчета, ПользовательскиеНастройкиКомпоновкиДанных);
УсловияОтбора = Новый Структура();
УсловияОтбора.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
//Дублируем настройки (у меня в файловой без этого не открывалось)
ОбщиеНастройки = Новый Структура();
ОбщиеНастройки.Вставить("Объект" , УсловияОтбора);
ОбщиеНастройки.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
//Помещаем во временное хранилище (Уид можно случайный)
АлресХранилища = ПоместитьВоВременноеХранилище(ОбщиеНастройки, Новый УникальныйИдентификатор);
//Обращаем внимания на заполнемые настройки, если вы укажете отбор = истина то затрется все выше указанные отборы ( поскольку показатели и группировки я не менял, то оставил их типоыми)
ЗаполнятьТиповыеНастройки = Новый Структура;
ЗаполнятьТиповыеНастройки.Вставить("Отбор" , Ложь);
ЗаполнятьТиповыеНастройки.Вставить("Группирова" , Истина);
ЗаполнятьТиповыеНастройки.Вставить("ВыводимыеДанные", Истина);
ЗаполнятьТиповыеНастройки.Вставить("Показатели" , Истина);
//Сами параметры для предачи на форму ("ИДРасшифровки" - в данном случаи ключ от структуры НастройкиРасшифровки , если "СформироватьПриОткрытии" будет равно Ложь то отчет откроется с ранее сохраненными настройками)
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("ВидРасшифровки" , 1);
ПараметрыОтчета.Вставить("АдресНастроек" , АлресХранилища);
ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыОтчета.Вставить("ИДРасшифровки" , ИмяОтчета);
ПараметрыОтчета.Вставить("РежимРасшифровки" , Истина);
ПараметрыОтчета.Вставить("ЗаполняемыеНастройки" , ЗаполнятьТиповыеНастройки);
//Ну и открываем саму форму
ОткрытьФорму("Отчет." + ИмяОтчета + ".Форма.ФормаОтчета", ПараметрыОтчета,ЭтаФорма);
&НаКлиенте
Процедура ЗаполнитьЭлементОтбораКомпоновкиДанных(ОтборНастройкиКомпоновкиДанных,Использование,ВидСрав,ИмяПоля,ЗначениеОтбора)
НовыйЭлемент = ОтборНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовыйЭлемент.Использование = Использование;
НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
НовыйЭлемент.ВидСравнения = ВидСрав;
НовыйЭлемент.ПравоеЗначение = ЗначениеОтбора;
КонецПроцедуры
P.S. Если что-то непонятно, то не стесняемся, оставляем комментарии, по возможности буду отвечать.
Вступайте в нашу телеграмм-группу Инфостарт
ОСВ по счету Анализ счета Карточка счета ОСВ АС КС
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Менеджеры внешних отчетов Инструментарий разработчика Разработчик 1С 8.3 Бесплатно (free)
Описание внешней обработки в ручном реестре теряется при первом же переименовании файла. Проверьте у себя: сколько файлов там названы "Обработка1" и сколько версий одной загрузки лежит в разных подпапках. Разбираем, почему ручной реестр умирает на первом переименовании, почему открыть чужой .epf значит выполнить его код (и как этого избежать), как прочитать файл вообще без запуска и как собрать обработки из всех баз в одну папку по расписанию. Замеры на нашей папке из 85 файлов.
16.10.2026 576 nedomolkov.ivan 6
Менеджеры внешних отчетов Инструментарий разработчика Разработчик 1С 8.3 Абонемент ($m)
Папка с сотнями .epf превращается в каталог: описание собирается само, дубли и версии видны сразу, обработки из баз (дополнительные отчёты и обработки БСП или старый справочник внешних обработок) собираются туда же с указанием базы. Память каталога в library.json рядом с файлами, ключ - хеш, поэтому переименование ничего не теряет. Чужие файлы читаются в безопасном режиме или без запуска кода, у каждого пометка риска. Ничего не удаляет, базу не меняет.
10 стартмани
15.10.2026 905 4 nedomolkov.ivan 5
Менеджеры внешних отчетов Логистика, склад и ТМЦ 1С 8.3 1С 8.5 1С:Управление нашей фирмой 3.0 Россия Абонемент ($m)
Загрузка данных из Excel в документ «Приходная накладная» по артикулу для 1С:Управление нашей фирмой (УНФ). Простая, быстрая и надежная внешняя обработка для автоматизации складского учета и закупок. Позволяет в несколько кликов перенести данные из прайс-листа или накладной поставщика (в формате Excel) напрямую в новый документ «Приходная накладная». Избавляет менеджеров от рутинного ручного ввода номенклатуры.
10 стартмани
14.09.2026 392 0 Alexey_Dev 0
Менеджеры внешних отчетов Инструменты администратора БД Инструментарий разработчика Разработчик Пользователь 1С 8.3 1С 8.5 Россия Абонемент ($m)
«Мастер обработок» — инструмент для массовой выгрузки и обратной загрузки измененных дополнительных отчетов и обработок в 1С:Предприятие с контролем их версии.
1 стартмани
29.05.2026 1103 7 m0r0z0v 0
Менеджеры внешних отчетов 1С 8.3 1С:ERP Управление предприятием 2 1С:Библиотека стандартных подсистем Бесплатно (free)
Альтернатива меню "все отчеты", выводит всю информацию о вариантах отчета, можно фильтровать по варианту отчета и по объекту отчета, копировать и переходить по навигационной ссылке.
29.01.2026 1266 76 Suker86 0
Менеджеры внешних отчетов Кадровый учет Аналитик Руководитель проекта 1С 8.3 1С:ERP Управление предприятием 2 1С:Зарплата и Управление Персоналом 3.x Россия Платные (руб)
«Кадровый монитор руководителя» — готовое расширение для 1С:ЗУП и 1С:ERP, которое превращает кадровые данные в наглядные дашборды для руководителя, HRD и HR-аналитика. Решение помогает в реальном времени контролировать укомплектованность штата, плановый и фактический ФОТ, динамику увольнений и другие ключевые HR-показатели без ручной сборки отчетов. Аналитика работает в интерфейсе «1С:Аналитика», устанавливается без доработок типовой конфигурации и позволяет быстро получить целостную картину по персоналу в одном окне.
91500 руб.
17.11.2025 4946 2 0
Инструменты администратора БД Менеджеры внешних отчетов 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:Бухгалтерия 3.0 1С:Управление производственным предприятием 1С:Розница 3.0 Абонемент ($m)
Данная обработка позволит выгрузить все внешние отчеты и обработки с учетом внутренней иерархии (Обычные и управляемые формы)
1 стартмани
09.09.2025 2136 4 FoxesStyle 1
Менеджеры внешних отчетов Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Абонемент ($m)
Иногда требуется переименовать внешнюю обработку или отчет без конфигуратора, а в типовой задать новое имя команды, что высвечивается в меню пользователя невозможно. Данное решение позволяет переименовать представление обработки/отчета не прибегая к услугам программиста.
1 стартмани
27.08.2025 2513 2 AlexHelmer 5
Тогда не нужно будет помещать во временное хранилище ,он возьмет настройки из пользовательских которые будут указаны в параметрах передаваемых форме.
&НаСервере
Функция ПолучитьСсылкуПоКоду(Код) Экспорт
Возврат Справочники.Склады.НайтиПоКоду(Код);
КонецФункции // ПолучитьСсылкуПоКоду()
&НаКлиенте
Процедура ОткрытьОтчет(Команда)
ИмяОтчета = "ВедомостьТоварыНаСкладах";
//Заполняем реквизиты отчета и обязательные поля (могут отличаться в зависимости от отчета)
ПользовательскиеНастройкиКомпоновкиДанных = Новый ПользовательскиеНастройкиКомпоновкиДанных;
//ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Склад" , ПолучитьСсылкуПоКоду("00000118 "));
// ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("НачалоПериода" , Объект.ДатаНачало);
//ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("КонецПериода" , Объект.ДатаКонец);
//ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Организация" , Объект.Организация);
//Заполняем дополнительные отборы (в примере только для субконто1 и субконто2)
НовыйОтбор = ПользовательскиеНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
НовыйОтбор.ИдентификаторПользовательскойНастройки = "Отбор";
ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"Склад", ПолучитьСсылкуПоКоду("00000118 "));
//ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина,ВидСравненияКомпоновкиДанных.Равно,"Субконто2", Договор);
//Обязателньо указываем ключ (Равным параметру "ИДРасшифровки",я указывал Имя отчета ) НастройкиРасшифровки
НастройкиРасшифровки = Новый Структура;
НастройкиРасшифровки.Вставить(ИмяОтчета, ПользовательскиеНастройкиКомпоновкиДанных);
УсловияОтбора = Новый Структура();
УсловияОтбора.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
//Дублируем настройки (у меня в файловой без этого не открывалось)
ОбщиеНастройки = Новый Структура();
ОбщиеНастройки.Вставить("Объект" , УсловияОтбора);
ОбщиеНастройки.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
//Помещаем во временное хранилище (Уид можно случайный)
АлресХранилища = ПоместитьВоВременноеХранилище(ОбщиеНастройки, Новый УникальныйИдентификатор);
//Обращаем внимания на заполнемые настройки, если вы укажете отбор = истина то затрется все выше указанные отборы ( поскольку показатели и группировки я не менял, то оставил их типоыми)
ЗаполнятьТиповыеНастройки = Новый Структура;
ЗаполнятьТиповыеНастройки.Вставить("Отбор" , Ложь);
ЗаполнятьТиповыеНастройки.Вставить("Группирова" , Истина);
ЗаполнятьТиповыеНастройки.Вставить("ВыводимыеДанные", Истина);
ЗаполнятьТиповыеНастройки.Вставить("Показатели" , Истина);
//Сами параметры для предачи на форму ("ИДРасшифровки" - в данном случаи ключ от структуры НастройкиРасшифровки , если "СформироватьПриОткрытии" будет равно Ложь то отчет откроется с ранее сохраненными настройками)
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("ВидРасшифровки" , 1);
ПараметрыОтчета.Вставить("АдресНастроек" , АлресХранилища);
ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыОтчета.Вставить("ИДРасшифровки" , ИмяОтчета);
ПараметрыОтчета.Вставить("РежимРасшифровки" , Истина);
ПараметрыОтчета.Вставить("ЗаполняемыеНастройки" , ЗаполнятьТиповыеНастройки);
//Ну и открываем саму форму
ОткрытьФорму("Отчет." + ИмяОтчета + ".Форма.ФормаОтчетаУправляемая", ПараметрыОтчета,ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьЭлементОтбораКомпоновкиДанных(ОтборНастройкиКомпоновкиДанных,Использование,ВидСрав,ИмяПоля,ЗначениеОтбора)
НовыйЭлемент = ОтборНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовыйЭлемент.Использование = Использование;
НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
НовыйЭлемент.ВидСравнения = ВидСрав;
НовыйЭлемент.ПравоеЗначение = ЗначениеОтбора;
КонецПроцедуры
ПоказатьОднако отчет открылся без отбора по складу... Или я суть статьи не понял?
Во-вторых, нет примера как добавить в настройки такие часто используемые вещи, как сортировку и оформление. Делается это примерно так:
Процедура ЗаполнитьЭлементПорядкаКомпоновкиДанных(ЭлементНастройкиКомпоновкиДанных,Использование,Поле,ТипУпорядочивания)
НовыйЭлемент = ЭлементНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ЭлементПорядкаКомпоновкиДанных"));
НовыйЭлемент.Использование = Использование;
НовыйЭлемент.Поле = Новый ПолеКомпоновкиДанных(Поле);
НовыйЭлемент.ТипУпорядочивания = ТипУпорядочивания;
КонецПроцедуры
Процедура ЗаполнитьЭлементУсловноеОформлениеКомпоновкиДанных(ЭлементНастройкиКомпоновкиДанных,Параметр,Значение,Представление)
НовыйЭлемент = ЭлементНастройкиКомпоновкиДанных.Элементы.Добавить();
НовыйЭлемент.Представление = Представление;
НовыйЭлемент.Оформление.УстановитьЗначениеПараметра(Параметр,Значение);
КонецПроцедуры
НовыйЭлемент = МоиНастройки.Элементы.Добавить(Тип("ПорядокКомпоновкиДанных"));
НовыйЭлемент.ИдентификаторПользовательскойНастройки = "Порядок";
ЗаполнитьЭлементПорядкаКомпоновкиДанных(НовыйЭлемент,Истина,"СальдоНаКонецПериода.БУКонечныйРазвернутыйОстатокДт.ПроцентОбщий",НаправлениеСортировкиКомпоновкиДанных.Убыв);
НовыйЭлемент = МоиНастройки.Элементы.Добавить(Тип("УсловноеОформлениеКомпоновкиДанных"));
НовыйЭлемент.ИдентификаторПользовательскойНастройки = "УсловноеОформление";
ЗаполнитьЭлементУсловноеОформлениеКомпоновкиДанных(НовыйЭлемент,"ВыделятьОтрицательные",Истина,"Выделять отрицательные");
ЗаполнитьЭлементУсловноеОформлениеКомпоновкиДанных(НовыйЭлемент,"Шрифт",Новый Шрифт(,9),"Основной шрифт");
ПоказатьНу и в-третьих, хорошо бы описать как добавлять остальные элементы коллекции
//Заполняем группировки
Группировка = Новый Массив;
ОписаниеГруппировки = Новый Структура("Использование,Поле", Истина, "Субконто1");
Группировка.Добавить(ОписаниеГруппировки);
ОписаниеГруппировки = Новый Структура("Использование,Поле", Истина, "Субконто2");
Группировка.Добавить(ОписаниеГруппировки);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Группировка", Группировка); ПоказатьОписаниеГруппировки = Новый Структура("Использование,Поле", Истина, "Субконто1");
Группировка.Добавить(ОписаниеГруппировки);
ОписаниеГруппировки = Новый Структура("Использование,Поле", Истина, "Субконто2");
Группировка.Добавить(ОписаниеГруппировки);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Группировка", Группировка);
Что передавать в место "Субконто1", если мне нужна группировка по справочнику номенклатура?
&НаКлиенте
Процедура ПрограммноОСВ()
//Заполняем реквизиты отчета и обязательные поля (могут отличаться в зависимости от отчета)
ПользовательскиеНастройкиКомпоновкиДанных = Новый ПользовательскиеНастройкиКомпоновкиДанных;
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("НачалоПериода" , '20170101');
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("КонецПериода" , ТекущаяДата());
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Организация" , "");
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("ПоказательБУ", Истина);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("ПоказательНУ", Ложь);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("ПоказательПР", Ложь);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("ПоказательВР", Ложь);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("ПоказательКонтроль", Ложь);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("ПоказательВалютнаяСумма", Ложь);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("ПоказательКоличество", Истина);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Счет", ПредопределенноеЗначение("ПланСчетов.Хозрасчетный.Товары"));
//Заполняем группировки
Группировки = Новый Массив;
ОписаниеГруппировки = Новый Структура("Использование,Поле", Истина, "Субконто1.ВидНоменклатуры");
Группировки.Добавить(ОписаниеГруппировки);
ОписаниеГруппировки = Новый Структура("Использование,Поле", Истина, "Субконто1");
Группировки.Добавить(ОписаниеГруппировки);
ОписаниеГруппировки = Новый Структура("Использование,Поле", Истина, "Субконто2");
Группировки.Добавить(ОписаниеГруппировки);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Группировка", Группировки);
//Обязателньо указываем ключ (Равным параметру "ИДРасшифровки") НастройкиРасшифровки
НастройкиРасшифровки = Новый Структура;
НастройкиРасшифровки.Вставить("ИДРасшифровки", ПользовательскиеНастройкиКомпоновкиДанных);
УсловияОтбора = Новый Структура();
УсловияОтбора.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
//Дублируем настройки (у меня в файловой без этого не открывалось)
ОбщиеНастройки = Новый Структура();
ОбщиеНастройки.Вставить("Объект" , УсловияОтбора);
ОбщиеНастройки.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
//Помещаем во временное хранилище (Уид можно случайный)
АдресХранилищаНастроекОСВ = ПоместитьВоВременноеХранилище(ОбщиеНастройки, Новый УникальныйИдентификатор);
//Сами параметры для предачи на форму ("ИДРасшифровки" - в данном случаи ключ от структуры НастройкиРасшифровки , если "СформироватьПриОткрытии" будет равно Ложь то отчет откроется с ранее сохраненными настройками)
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("ВидРасшифровки" , 1);
ПараметрыОтчета.Вставить("АдресНастроек" , АдресХранилищаНастроекОСВ);
ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыОтчета.Вставить("ИДРасшифровки" , "ИДРасшифровки");
ОткрытьФорму("Отчет.ОборотноСальдоваяВедомостьПоСчету.Форма", ПараметрыОтчета, ЭтаФорма, Истина);
КонецПроцедуры
ПоказатьПробовал такое код на бухгалтерии 2.0, но к сожалению не срабатывает... Хотя с виду все красиво...
Судя по тексту автора этой статьи, изменено формирование настроек у 2.0 и 3.0?
Подскажите, плиз, как тогда можно сделать аналогично на БП 2.0?
Уже несколько вариантов испробовал... (((
Спасибо!
//Заполняем группировки
Группировка1 = Новый Массив;
ОписаниеГруппировки = Новый Структура("Использование,Поле,Представление", Ложь, "Подразделение", "Подразделение");
Группировка1.Добавить(ОписаниеГруппировки);
ОписаниеГруппировки = Новый Структура("Использование,Поле,Представление", Истина, "Субконто2", "Склад");
Группировка1.Добавить(ОписаниеГруппировки);
ОписаниеГруппировки = Новый Структура("Использование,Поле,Представление", Истина, "Субконто1", "Номенклатура");
Группировка1.Добавить(ОписаниеГруппировки);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Группировка", Группировка1);
И не забыть поставить
ЗаполнятьТиповыеНастройки.Вставить("Группировка" , Ложь);
Пробовал такое код на бухгалтерии 2.0, но к сожалению не срабатывает... Хотя с виду все красиво...
Подскажите, плиз, как тогда можно сделать аналогично на БП 2.0?
Уже несколько вариантов испробовал... (((
Спасибо!
Единственный вопрос, можно ли сделать так, чтобы отчет при открытии не формировался сразу. Дело в том, что я вызываю его из справочника, а даты ещё не определены. И мне необходимо сделать так, чтобы после открытия пользователь сначала задавал период, а только потом нажимал на кнопку формирования. В параметрах процедуры ОткрытьФорму ничего похожего не нашла :(.
Группировка1 = Новый Массив();
ОписаниеГруппировки = Новый Структура("Использование,Поле,ТипГруппировки", Истина, "Субконто3", ТипГруппировкиКомпоновкиДанных.ТолькоИерархия); // "Номенклатура"
Группировка1.Добавить(ОписаниеГруппировки);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Группировка", Группировка1);
но при формировании отчёта Анализ счета в настройках в группировках сейчас ничего не показывает, а хотелось, чтобы стояла галочка "По субсчетам" и показавало бы Номенклатуру.
//Заполняем группировки
Группировка1 = Новый Массив;
ОписаниеГруппировки = Новый Структура("Использование,Поле,Представление", Ложь, "Подразделение", "Подразделение");
Группировка1.Добавить(ОписаниеГруппировки);
ОписаниеГруппировки = Новый Структура("Использование,Поле,Представление", Истина, "Субконто2", "Склад");
Группировка1.Добавить(ОписаниеГруппировки);
ОписаниеГруппировки = Новый Структура("Использование,Поле,Представление", Истина, "Субконто1", "Номенклатура");
Группировка1.Добавить(ОписаниеГруппировки);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Группировка", Группировка1);
ОткрытьФорму("Отчет." + ИмяОтчета + ".Форма.ФормаОтчета", ПараметрыОтчета,ЭтаФорма,Истина);
Добавить "Истина", в параметре открытия формы "Уникальность".
//Заполняем реквизиты отчета и обязательные поля (могут отличаться в зависимости от отчета)
ПользовательскиеНастройкиКомпоновкиДанных = Новый ПользовательскиеНастройкиКомпоновкиДанных;
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Счет" , ПредопределенноеЗначение("ПланСчетов.Хозрасчетный.Материалы"));
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("НачалоПериода" , НачалоГода(ДатаСоставления));
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("КонецПериода" , КонецГода(ДатаСоставления));
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Организация" , Организация);
//Заполняем дополнительные отборы
НовыйОтбор = ПользовательскиеНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
НовыйОтбор.ИдентификаторПользовательскойНастройки = "Отбор";
// зададим Отбор
ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Ложь, ВидСравненияКомпоновкиДанных.Равно,"Подразделение", );
ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина, ВидСравненияКомпоновкиДанных.ВСписке,"Субконто2", СписокСкладов);
ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина, ВидСравненияКомпоновкиДанных.ВСписке,"Субконто1", СписокНоменклатуры);
//Заполняем группировки
Группировка1 = Новый Массив;
ОписаниеГруппировки = Новый Структура("Использование,Поле,Представление", Ложь, "Подразделение", "Подразделение");
Группировка1.Добавить(ОписаниеГруппировки);
ОписаниеГруппировки = Новый Структура("Использование,Поле,Представление", Истина, "Субконто2", "Склад");
Группировка1.Добавить(ОписаниеГруппировки);
ОписаниеГруппировки = Новый Структура("Использование,Поле,Представление", Истина, "Субконто1", "Номенклатура");
Группировка1.Добавить(ОписаниеГруппировки);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Группировка", Группировка1);
//Обязательно указываем ключ (Равным параметру "ИДРасшифровки",я указывал Имя отчета ) НастройкиРасшифровки
НастройкиРасшифровки = Новый Структура;
НастройкиРасшифровки.Вставить(ИмяОтчета, ПользовательскиеНастройкиКомпоновкиДанных);
УсловияОтбора = Новый Структура();
УсловияОтбора.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
//Дублируем настройки (у меня в файловой без этого не открывалось)
ОбщиеНастройки = Новый Структура();
ОбщиеНастройки.Вставить("Отчет", УсловияОтбора);//Объект
ОбщиеНастройки.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
//Помещаем во временное хранилище (Уид можно случайный)
АдресХранилища = ПоместитьВоВременноеХранилище(ОбщиеНастройки, Новый УникальныйИдентификатор);
//Обращаем внимания на заполнемые настройки, если вы укажете отбор = истина то затрется все выше указанные отборы
ЗаполнятьТиповыеНастройки = Новый Структура;
ЗаполнятьТиповыеНастройки.Вставить("Отбор" , Ложь);
ЗаполнятьТиповыеНастройки.Вставить("Группировка" , Ложь);
ЗаполнятьТиповыеНастройки.Вставить("ВыводимыеДанные", Истина);
ЗаполнятьТиповыеНастройки.Вставить("Показатели" , Истина);
//Сами параметры для предачи на форму ("ИДРасшифровки" - в данном случаи ключ от структуры НастройкиРасшифровки , если "СформироватьПриОткрытии" будет равно Ложь то отчет откроется с ранее сохраненными настройками)
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("ВидРасшифровки" , 1);
ПараметрыОтчета.Вставить("АдресНастроек" , АдресХранилища);
ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыОтчета.Вставить("ИДРасшифровки" , ИмяОтчета);
ПараметрыОтчета.Вставить("РежимРасшифровки" , Истина);
ПараметрыОтчета.Вставить("ЗаполняемыеНастройки" , ЗаполнятьТиповыеНастройки);
ОткрытьФорму("Отчет." + ИмяОтчета + ".Форма.ФормаОтчета", ПараметрыОтчета,ЭтаФорма,Истина);
Использую данный метод для программного открытия отчета по проводкам и у меня не заполняются параметры отчета (НачалоПериода и КонецПериода).Отчет формируется, но за все время учета. Подскажите в чем может быть дело?
ПараметрыФормы = Новый Структура("КлючНазначенияИспользования, Отбор, СформироватьПриОткрытии, ВидимостьКомандВариантовОтчетов");
ПараметрыФормы.Вставить("КлючНазначенияИспользования", Неопределено);
ПараметрыФормы.Вставить("Отбор", Новый Структура("ОбъектРасчетов", МассивОбъектовРасчетов));
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыФормы.Вставить("ВидимостьКомандВариантовОтчетов", Ложь);
ОткрытьФорму("Отчет.КарточкаРасчетовСПоставщиками24.Форма", ПараметрыФормы);
там есть такие Показатели (это реквизиты отчета)
ПараметрыОтчета.Вставить("СальдоНаНачалоДт" , Ложь);
ПараметрыОтчета.Вставить("СальдоНаНачалоКт" , Ложь);
ПараметрыОтчета.Вставить("СальдоНаКонецДт" , Ложь);
ПараметрыОтчета.Вставить("СальдоНаКонецКт" , Ложь);
ПараметрыОтчета.Вставить("ОборотыЗаПериодДт" , Ложь);
ПараметрыОтчета.Вставить("ОборотыЗаПериодКт" , Ложь);
ПараметрыОтчета.Вставить("ОборотыСоСчетамиДт" , Истина);
ПараметрыОтчета.Вставить("ОборотыСоСчетамиКт" , Ложь);
Показатьно куда я бы не вставил - на сам отчет не влияет
ИмяОтчета = "ОборотноСальдоваяВедомость";
ПользовательскиеНастройкиКомпоновкиДанных = Новый ПользовательскиеНастройкиКомпоновкиДанных;
//ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Счет" , СтруктураНастроек.Счет);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("НачалоПериода" , СтруктураНастроек.ДатаНачала);
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("КонецПериода" , Дата(СтруктураНастроек.ДатаОкончания));
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("Организация" , СтруктураНастроек.Организация);
НовыйОтбор = ПользовательскиеНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
НовыйОтбор.ИдентификаторПользовательскойНастройки = "Отбор";
//ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Ложь, ВидСравненияКомпоновкиДанных.Равно,"Подразделение", );
ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина, ПреобразоватьВидСравнения(СтруктураНастроек.ВидСравнения),"Счет", СтруктураНастроек.Счет);
//ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор,Истина, ВидСравненияКомпоновкиДанных.Равно,"Субконто1", СтруктураНастроек.НаправлениеДеятельности); ПоказатьПредложенное решение прекрасно работает. Спасибо!
Но действительно, как вместо "Субконто1" или "Субконто2" сделать группировку по дополнительному полю.
Например по Группе основных средств.
Для этого вместо "Субконто1" или "Субконто2" нужно вставить ссылку на справочник? Как это сделать?
ОписаниеГруппировки = Новый Структура("Использование,Поле,Представление", Истина, "ГруппаОС", );
МассГруппировкаКор.Добавить(Новый Структура("Использование,Счет,ПоСубсчетам,Представление,ПоСубконто", Истина, МойКорСчетСсылка1, Истина, , "Субконто1"));
Этот вариант не работает. Наверное, более хитро задается выбор субконто кор.счета.
&НаСервере
Функция ВладелецДоговора(Знач ДоговорСсылка)
Возврат ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДоговорСсылка, "Владелец");
КонецФункции
&НаКлиенте
Процедура ЗаполнитьЭлементОтбораКомпоновкиДанных(ОтборНастройкиКомпоновкиДанных,Использование,ВидСрав,ИмяПоля,ЗначениеОтбора)
НовыйЭлемент = ОтборНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
НовыйЭлемент.Использование = Использование;
НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
НовыйЭлемент.ВидСравнения = ВидСрав;
НовыйЭлемент.ПравоеЗначение = ЗначениеОтбора;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
//Имя вызываемого отчета карточка,анализ, ОСВ по счету . Я делал только для этих трех.
ИмяОтчета = "АнализСубконто";
//Заполняем реквизиты отчета и обязательные поля (могут отличаться в зависимости от отчета)
ПользовательскиеНастройкиКомпоновкиДанных = Новый ПользовательскиеНастройкиКомпоновкиДанных;
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("НачалоПериода", '00010101');
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("КонецПериода", '39991212235959');
// Массив видов субконто для анализа
СписокВидовСубконто = Новый СписокЗначений;
СписокВидовСубконто.Добавить(ПредопределенноеЗначение("ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты"));
СписокВидовСубконто.Добавить(ПредопределенноеЗначение("ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры"));
ПользовательскиеНастройкиКомпоновкиДанных.ДополнительныеСвойства.Вставить("СписокВидовСубконто", СписокВидовСубконто);
//Заполняем дополнительные отборы (в примере только для субконто1 и субконто2)
НовыйОтбор = ПользовательскиеНастройкиКомпоновкиДанных.Элементы.Добавить(Тип("ОтборКомпоновкиДанных"));
НовыйОтбор.ИдентификаторПользовательскойНастройки = "Отбор";
ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор, Истина, ВидСравненияКомпоновкиДанных.Равно,"Субконто1", ВладелецДоговора(ПараметрКоманды));
ЗаполнитьЭлементОтбораКомпоновкиДанных(НовыйОтбор, Истина, ВидСравненияКомпоновкиДанных.Равно,"Субконто2", ПараметрКоманды);
//Обязателньо указываем ключ (Равным параметру "ИДРасшифровки",я указывал Имя отчета ) НастройкиРасшифровки
НастройкиРасшифровки = Новый Структура;
НастройкиРасшифровки.Вставить(ИмяОтчета, ПользовательскиеНастройкиКомпоновкиДанных);
УсловияОтбора = Новый Структура();
УсловияОтбора.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
//Дублируем настройки (у меня в файловой без этого не открывалось)
ОбщиеНастройки = Новый Структура();
ОбщиеНастройки.Вставить("Объект" , УсловияОтбора);
ОбщиеНастройки.Вставить("НастройкиРасшифровки", НастройкиРасшифровки);
//Помещаем во временное хранилище (Уид можно случайный)
АлресХранилища = ПоместитьВоВременноеХранилище(ОбщиеНастройки, Новый УникальныйИдентификатор);
//Обращаем внимания на заполнемые настройки, если вы укажете отбор = истина то затрется все выше указанные отборы ( поскольку показатели и группировки я не менял, то оставил их типоыми)
ЗаполнятьТиповыеНастройки = Новый Структура;
ЗаполнятьТиповыеНастройки.Вставить("Отбор" , Ложь);
ЗаполнятьТиповыеНастройки.Вставить("Группирова" , Истина);
ЗаполнятьТиповыеНастройки.Вставить("ВыводимыеДанные", Истина);
ЗаполнятьТиповыеНастройки.Вставить("Показатели" , Истина);
//Сами параметры для предачи на форму ("ИДРасшифровки" - в данном случаи ключ от структуры НастройкиРасшифровки , если "СформироватьПриОткрытии" будет равно Ложь то отчет откроется с ранее сохраненными настройками)
ПараметрыОтчета = Новый Структура;
ПараметрыОтчета.Вставить("ВидРасшифровки" , 1);
ПараметрыОтчета.Вставить("АдресНастроек" , АлресХранилища);
ПараметрыОтчета.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыОтчета.Вставить("ИДРасшифровки" , ИмяОтчета);
ПараметрыОтчета.Вставить("РежимРасшифровки" , Истина);
ПараметрыОтчета.Вставить("ЗаполняемыеНастройки" , ЗаполнятьТиповыеНастройки);
//Ну и открываем саму форму
ОткрытьФорму("Отчет." + ИмяОтчета + ".Форма.ФормаОтчета", ПараметрыОтчета);
КонецПроцедуры
ПоказатьВы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 345249
Создание 13.04.15 13:11
Обновление 13.04.15 13:11
Просмотры 51050
Загрузки 0
Рейтинг
175
Комментарии 71
Код открыт Не указано
Рубрики Менеджеры внешних отчетов
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1С:Бухгалтерия 3.0
Операционная система Windows
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Бухгалтерский учет
Доступ к файлу Бесплатно (free)