Учебный пример программного формирования схемы компоновки данных: Универсальный отчет по регистрам накопления

0. 154 14.06.21 15:38 Сейчас в теме
Разберём учебную задачу создания Универсального отчета по оборотным регистрам накопления конфигурации.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Jimbo 9 16.06.21 14:50 Сейчас в теме
Как-то корявенько. Много скринов из хелпа. Много кода, хотя даже не показана структура самих 2 регистров.
О чём статья ? О программной работе с СКД ? Так есть потолковее аналоги, где суть кратко и ёмко изложены без воды, кучи кода и скринов хелпа.
2. maraton1185 154 17.06.21 08:15 Сейчас в теме
Суть в том, что структура регистров не важна, как и их количество в конфигурации)
Мы же наполняем список выбора из метаданных, а запрос по регистру формируем через ВЫБРАТЬ *

По поводу скринов хелпа - вообще в Синтакс-помощнике есть вся необходимая информация, нужно просто научиться его внимательно читать и понимать.
Например мне кажется интересной аналогия структуры объектов ПостроительЗапросов и НастройкиКомпоновкиДанных.
Также часто возникают неясности с тек как работать с объектом ПолеКомпоновкиДанных и зачем он нужен в принципе.
А исходя из той же справки - это просто обёртка строки-имени поля в запросе.
Можно провести следующую связку:
Текст запроса - > ПолеКомпоновкиДанных - > ДоступноеПолеКомпоновкиДанных - > ДоступныеПоляВыбора -> Выбор.Элементы
На мой взгляд это не вода, а информация для кругозора.

При написании кода быстрее всего посмотреть как раз в Синтакс-помощник)
Что касается кучи кода - ну как же без него? Мы же про программную работу говорим.
neyasytyf; fomaOp; the1; +3 Ответить
3. silverr 4 29.07.21 19:55 Сейчас в теме
Всем доброго времени суток!
А можно мне задать вопрос по отборам в отчетах на СКД.
Пытаюсь из расширения запустить отчет конфигурации БП 3.0 "Движения товаров". Передаю туда отбор по номенклатуре:
Номенклатура = ТекущиеДанные.Ссылка;
        Отбор = Новый Структура("Номенклатура", Номенклатура);
        Отбор.Вставить("НачалоПериода", НачалоМесяца(ТекущаяДата()));
        Отбор.Вставить("КонецПериода", ТекущаяДата());
        ПараметрыФормы = Новый Структура("СформироватьПриОткрытии, Отбор", Истина, Отбор);
        ФормаОтчета = ПолучитьФорму("Отчет.ДвижениеТоваров.ФормаОбъекта", ПараметрыФормы);
        НовыеПользовательскиеНастройки = Новый ПользовательскиеНастройкиКомпоновкиДанных;
        ФормаОтчета.Отчет.КомпоновщикНастроек.ЗагрузитьПользовательскиеНастройки(НовыеПользовательскиеНастройки);
        ОткрытьФорму(ФормаОтчета);
Показать

Выдает ошибку:
Невозможно применить фиксированные настройки. Совпадают значения параметра.
{Отчет.ДвижениеТоваров.Форма.ФормаОтчета.Форма(667)}:    ПараметрыОтчета.НастройкиКомпоновкиДанных         = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
{Отчет.ДвижениеТоваров.Форма.ФормаОтчета.Форма(925)}:    ПараметрыОтчета = ПодготовитьПараметрыОтчетаНаСервере();
{Отчет.ДвижениеТоваров.Форма.ФормаОтчета.Форма(733)}:    БухгалтерскиеОтчеты.ЗаписатьОперациюБизнесСтатистики(ЭтотОбъект, "СформироватьОтчет", НастройкиОтчетаДляСтатистики());
{Отчет.ДвижениеТоваров.Форма.ФормаОтчета.Форма(875)}:    РезультатВыполнения = СформироватьОтчетНаСервере();
{Отчет.ДвижениеТоваров.Форма.ФормаОтчета.Форма(511)}:    ЗапуститьФормированиеОтчета();
по причине:
Невозможно применить фиксированные настройки. Совпадают значения параметра
Показать


Если передавать параметры в виде фиксированных настроек, типа:
ПараметрыФормы = Новый Структура();
        ПараметрыФормы.Вставить("Отбор", Новый Структура("Номенклатура",ТекущиеДанные.Ссылка));
        ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
        ОткрытьФорму("Отчет.ДвижениеТоваров.Форма", ПараметрыФормы, ЭтаФорма, УникальныйИдентификатор);

Отчет открывается не заполненным, по кнопке "Сформировать" получаем все туже ошибку. Но если нажать "Показать настройки" и на вкладке "Отбор" снять отбор по выбранной позиции, то отчет формируется.
Данные правильные, но с прицепом в виде предупреждения "Отчет не сформирован! Недействительный адрес или не найден родительский сеанс задания".
Вобщем никакой автоматизации. Прошу помощи!!!
4. sml 36 09.08.21 17:35 Сейчас в теме
не указано, что установка Идентификатора пользовательской настройки надо выполнять в конце Процедура ИмяРегистраПриИзмененииНаСервере(),
после чего надо загрузить измененные настройки в компоновщик настроек
	ПарКД = НастройкиКомпоновки.ПараметрыДанных.Элементы.Найти("ПериодОтчета");
	ПарКД.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
	
	КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКомпоновки);
	
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Программист 1С
Новосибирск
зарплата от 90 000 руб.
Полный день

Программист 1С
Екатеринбург
зарплата от 100 000 руб. до 150 000 руб.
Полный день

Программист 1С
Москва
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Программист 1С
Москва
зарплата от 100 000 руб. до 140 000 руб.
Полный день

Программист 1С
Хабаровск
зарплата от 130 000 руб. до 160 000 руб.
Полный день