«Программное заполнение настроек СКД» или «Как сделать отчёт на СКД с понятным для пользователя интерфейсом». (1С: Предприятие 8.1, 8.2 обычное приложение)

01.10.12

Разработка - СКД

В настоящее время большинство отчётов пишется с использованием системы компоновки данных. Это удобно для разработчика, но не всегда удобно для пользователя. Чаще всего у пользователя нет ни времени, ни желания разбираться во всех широких возможностях отчёта, ему просто хочется видеть нужные ему настройки на форме и быстро получить желаемый результат. В данной статье я хочу привести пример, как можно вынести на форму настройки системы компоновки данных и программно сформировать отчёт на основе этих настроек.

Скачать файлы

Наименование Файл Версия Размер
Пример отчёта с программным заполнением настроек СКД
.erf 21,76Kb
644
.erf 21,76Kb 644 Скачать

  Когда впервые столкнулась с подобным требованием пользователя пришлось потратить немало времени на изучение вопроса.. Надеюсь, что моя статья окажется полезной и сэкономит кому-нибудь время и силы.

  Пример  программного заполнения настроек построю на основе отчёта по оборотному регистру накопления Продажи с измерениями: Контрагент, Номенклатура и ресурсами: Количество и Сумма.

Создание отчёта и настройка схемы компоновки данных.

    Итак. Создаём новый отчёт. Открываем схему компоновки данных и добавляем новый набор данных запрос. В окне запроса пишем следующий запрос:

ВЫБРАТЬ

                        ПродажиОбороты.Регистратор,

                        ПродажиОбороты.Контрагент,

                        ПродажиОбороты.Номенклатура,

                        ПродажиОбороты.СуммаОборот,

                        ПродажиОбороты.КоличествоОборот

ИЗ

                        РегистрНакопления.Продажи.Обороты(, , Авто, ) КАК ПродажиОбороты

 

    На закладке «Ресурсы» указываем в качестве ресурсов поля КоличествоОборот и СуммаОборот.

    На закладке «Параметры» добавим новый параметр «Период» типа СтандартныйПериод. Для параметра «НачалоПериода» в качестве выражения укажем следующее значение:  &Период.ДатаНачала, для параметра «КонецПериода» - &Период.ДатаОкончания. Таким образом, мы избавим себя от приведения даты окончания к концу дня и установки каждого параметра в отдельности. Настройку структуры отчёта мы не делаем. Она будет сформирована программно.

На этом настройка схемы компоновки закончена. Переходим к настройке интерфейса.

 

Настройка пользовательского интерфейса.

    Вначале создадим реквизиты отчёта. Они понадобятся нам при создании интерфейса и дальнейшей программной обработке указанных пользователем настроек. Добавляем реквизит Период – тип СтандартныйПериод, Количество – тип Булево, Сумма – тип Булево. Данные реквизиты будут отвечать за переданный параметр Период и за вывод ресурсов отчёта КоличествоОборот и СуммаОборот соответственно. Также нам потребуется табличная часть Группировки с реквизитами Поле – тип Строка и ТипГруппировки – тип Строка. Табличная часть будет отвечать за выбранные группировки при формировании отчёта.

    Необходимые реквизиты созданы, теперь создаём форму отчёта.  

    На форме располагаем следующие элементы:

  • Поля ввода для указания периода: ДатаНачала – данные Период.ДатаНачала, Датаокончания - Период.ДатаОкончания, Период – данные Период и кнопку КнопкаВыбораПериода (для кнопки нужно назначить обработчик, открывающий диалог указания периода. Программный код можно посмотреть в прикреплённом внешнем отчёте) .
  • Панель с тремя страницами. Первую страницу назовём Отбор и расположим на ней табличное поле с данными КомпоновщикНастроек.Настройки.Отбор. Вторую страницу назовём УсловноеОформление и расположим на ней табличное поле с данными КомпоновщикНастроек.Настройки.УсловноеОформление. Третью страницу назовём Сортировка и расположим на ней табличное поле с данными КомпоновщикНастроек.Настройки.Порядок.
  • Табличное поле Группировки, связанное с табличной частью отчёта «Группировки», и добавляем командную панель с указанием в качестве источника действий табличного поля «Группировки». На командную панель добавляем кнопки «Добавить», «Удалить», «Переместить вверх», «Переместить вниз».  
  • 2 флажка ВыводитьКоличество и ВыводитьСумму, связанные с реквизитами отчёта Количество и Сумма соответственно.
  • Поле табличного документа Результат, автоматически созданное при создании формы, оставляем без изменения. 

    На этом создание пользовательского интерфейса завершено. Переходим к самому интересному – программной части.

Программная работа со схемой компоновки данных.

    В первую очередь, необходимо описать какие группировки будут доступны в нашем отчёте. Для этого в модуле объекта создадим экспортные переменные СписокДоступныхПолейГруппировки и СписокДоступныхТиповГруппировки. В теле основной программы заполним их списками значений:

СписокДоступныхПолейГруппировки = Новый СписокЗначений;

СписокДоступныхПолейГруппировки.Добавить("Регистратор");

СписокДоступныхПолейГруппировки.Добавить("Контрагент");

СписокДоступныхПолейГруппировки.Добавить("Номенклатура");

 

СписокДоступныхТиповГруппировки = Новый СписокЗначений;

СписокДоступныхТиповГруппировки.Добавить("Иерархия");

СписокДоступныхТиповГруппировки.Добавить("Элементы");

    При открытии формы заполним группировки значениями по умолчанию

               Группировки.Очистить();

               НоваяГруппировка = Группировки.Добавить();

               НоваяГруппировка.Поле = "Регистратор";

               НоваяГруппировка.ТипГруппировки = "Элементы";

                       

               НоваяГруппировка = Группировки.Добавить();

               НоваяГруппировка.Поле = "Контрагент";

               НоваяГруппировка.ТипГруппировки = "Элементы";

                       

               НоваяГруппировка = Группировки.Добавить();

               НоваяГруппировка.Поле = "Номенклатура";

               НоваяГруппировка.ТипГруппировки = "Элементы";

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

ЭлементыФормы.Группировки.Колонки.Поле.ЭлементУправления.СписокВыбора = СписокДоступныхПолейГруппировки;

ЭлементыФормы.Группировки.Колонки.ТипГруппировки.ЭлементУправления.СписокВыбора = СписокДоступныхТиповГруппировки;

    Также нам необходимо определить в модуле объекта обработчик ПриКомпоновкеРезультата, в котором будем загружать наши настройки в схему компоновки данных.

// Добавляет колонки (поля ресурсов) в соответствии с флажками на форме

               Если Количество И Не НайтиПолеКомпоновки("КоличествоОборот", НастройкиСКД.Выбор.Элементы) Тогда

                    ВыбранноеПоле = НастройкиСКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));

                    ВыбранноеПоле.Использование = Истина;

                    ВыбранноеПоле.Заголовок = "Количество";

                    ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("КоличествоОборот");

               КонецЕсли;   

               Если Сумма И Не НайтиПолеКомпоновки("СуммаОборот", НастройкиСКД.Выбор.Элементы) Тогда

                    ВыбранноеПоле = НастройкиСКД.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));

                    ВыбранноеПоле.Использование = Истина;

                    ВыбранноеПоле.Заголовок = "Сумма";

                    ВыбранноеПоле.Поле = Новый ПолеКомпоновкиДанных("СуммаОборот");

               КонецЕсли;

//Удаляет колонки, соответствующие флажки которых не были отмечены

                Счетчик = 0;

                Пока Счетчик < НастройкиСКД.Выбор.Элементы.Количество() Цикл

                     ПолеКомпоновкиДанных = НастройкиСКД.Выбор.Элементы[Счетчик];

                     Если ПолеКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("КоличествоОборот") И Не Количество Тогда

                         НастройкиСКД.Выбор.Элементы.Удалить(ПолеКомпоновкиДанных);

                         Продолжить;

                     ИначеЕсли ПолеКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных("СуммаОборот") И Не Сумма Тогда

                         НастройкиСКД.Выбор.Элементы.Удалить(ПолеКомпоновкиДанных);

                         Продолжить;

                     КонецЕсли;                       

                     Счетчик = Счетчик + 1;

                КонецЦикла;

//заполняем поля группировок в соответствии с настройками в табличной части Группировки

НастройкиСКД.Структура.Очистить();

               ЭлементСтруктуры = НастройкиСКД;        

               Для Каждого Группировка Из Группировки Цикл

                   ЭлементСтруктуры = ЭлементСтруктуры.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));

                   ЭлементГруппировки = ЭлементСтруктуры.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));

                   ЭлементГруппировки.Использование = Истина;

                   ЭлементГруппировки.Поле =  Новый ПолеКомпоновкиДанных(Группировка.Поле);                                                  

                   Если СписокДоступныхТиповГруппировки.НайтиПоЗначению(Группировка.ТипГруппировки)=Неопределено Тогда

                       ЭлементГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных.Элементы;

                  Иначе

                       ЭлементГруппировки.ТипГруппировки = ТипГруппировкиКомпоновкиДанных[Группировка.ТипГруппировки];

                   КонецЕсли;                                                                                                                  

                   ПолеСортировки = ЭлементСтруктуры.Порядок.Элементы.Добавить(Тип("АвтоЭлементПорядкаКомпоновкиДанных"));

                   ПолеСортировки.Использование = Истина;

 

                   ВыбранноеПоле = ЭлементСтруктуры.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

                   ВыбранноеПоле.Использование = Истина;

               КонецЦикла;

 

    Далее, устанавливаем значения параметров и загружаем заполненные настройки

               Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период",Период);

               КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);

 

    В алгоритме добавления ресурсов в схему компоновки использовалась функция НайтиПолеКомпоновки. Эта функция определяет, есть ли добавляемое поле в выбранных полях схемы или нет. Если уже есть, то добавлять поле не требуется.

Функция НайтиПолеКомпоновки(Имя, Коллекция)

        Для Каждого ПолеКомпоновкиДанных Из Коллекция Цикл

            Если ПолеКомпоновкиДанных.Поле = Новый ПолеКомпоновкиДанных(Имя) Тогда

                  Возврат Истина;

            Иначе

                 Продолжить;

            КонецЕсли;

      КонецЦикла;                

 Возврат Ложь;

КонецФункции

 

    Готово. Настройки схемы компоновки данных заполнены, и отчёт может быть сформирован.

Расшифровка

    Для того чтобы при обработке расшифровки поля отбора и группировок заполнились в соответствии с выбранным полем нужно самостоятельно описать обработчик расшифровки. Для этого создадим булевский реквизит отчёта ЭтоРасшифровка. Реквизит будет показывать, формируем мы простой отчёт или расшифровываем. Для  табличного поля Результат  создаём обработчик РезультатОбработкаРасшифровки. В созданном обработчике пишем

СтандартнаяОбработка = ложь;

               Если ДанныеРасшифровки = Неопределено Тогда Возврат КонецЕсли;

ОбработкаРасшифровки = Новый ОбработкаРасшифровкиКомпоновкиДанных(ДанныеРасшифровки, Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));

               Настройки = ОбработкаРасшифровки.Выполнить(Расшифровка);

               Если Настройки<>Неопределено Тогда                                                                                          

                    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);

                    ЭтоРасшифровка = Истина;

                    ЭлементыФормы.Результат.Очистить();

                    СкомпоноватьРезультат(ЭлементыФормы.Результат,ДанныеРасшифровки);

              КонецЕсли;

  А в обработчике ПриКомпоновкеРезультата модуля объекта указываем, что заполнять настройки группировок нужно только в том случае, если это не расшифровка. Таким образом, обработчик ПриКомпоновкеРезультата принимает вид:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

                        Если Не (Количество ИЛИ Сумма ) Тогда

                            СтандартнаяОбработка = Ложь;

                             Сообщить("Необходимо выбрать хотя бы один показатель!");

                             Возврат;

                        КонецЕсли;                    

                        Настройки = КомпоновщикНастроек.ПолучитьНастройки();

                       

                        Если НЕ ЭтоРасшифровка  Тогда

                             УстановитьСтруктуруГруппировокСКД(Настройки);

                        КонецЕсли;                     

                        Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период",Период);

                        КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);

                        ЭтоРасшифровка = ложь;

КонецПроцедуры

 

Итог.

    Создан отчёт, не требующий заходить в настройки компоновки данных, переключать вкладки и разбираться в настройках структуры отчёта. Все необходимые настройки пользователь видит на форме отчёта. При необходимости можно расширить функционал. Например, сделать сохранение выбранных пользователем настроек, скрывать настройки, если пользователю требуется всегда один вариант и тд.

    Также при желании можно сделать отчёт более универсальным. Например, заполнять список полей группировок и настройки по умолчанию из СКД, создать табличную часть параметры и заполнять её   параметрами, перечисленными в макете компоновки данных. Таким образом, получится некий шаблон отчёта, на основе которого можно будет легко делать другие отчёты, меняя только запрос, указание ресурсов и список параметров.

Созданный отчёт прикрепляю к данной статье для ознакомления.

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122086    670    389    

714

Генератор схемы компоновки данных (СКД), написание кода схемы программно

Инструментарий разработчика СКД Платформа 1С v8.3 Конфигурации 1cv8 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

По выбранной схеме компоновки данных генерирует программный код, который генерирует СКД, аналогичную исходной схеме. Есть дополнительные инструменты для просмотра дерева схемы, сравнение исходной схемы и полученной по коду, а также сравнение изменений в сгенерированном коде для исходной схемы и для измененной.

3 стартмани

05.02.2024    4036    25    obmailok    17    

63

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2000    2    Yashazz    0    

29

СКД на JavaScript в 1С

СКД WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    8157    20    John_d    25    

123

Использование менеджера временных таблиц в СКД

СКД Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Рассмотрим еще не получивший широкого распространения способ работы с внешними данным в СКД. В процессе обсуждения работы с СКД выяснилось, что многие не знакомы со способом помещения туда временной таблицы, полученной предварительно. Статья будет полезна разработчикам, знакомым с программным созданием СКД.

05.12.2023    4652    PROSTO-1C    13    

61

Модель СКД

Инструментарий разработчика СКД Платформа 1С v8.3 Система компоновки данных Абонемент ($m)

DSL для работы с СКД.

1 стартмани

15.11.2023    5805    15    kalyaka    5    

86

Пользовательские настройки отчетов 1С. Часть 1. Простые и расширенные настройки

СКД Инструкции пользователю Платформа 1С v8.3 Конфигурации 1cv8 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Простые приемы работы с отчетами на СКД. Что нужно знать пользователю про настройку отчетов, чтобы использовать их на полную катушку.

18.09.2023    6698    accounting_cons    5    

29

Разрыв страницы в СКД. Легко!

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

Когда отчет надо разделить по страницам, это всегда проблема для разработчика. Поскольку в СКД нет стандартных вариантов, как это сделать. Нашел (на свой взгляд) самое простое и оптимальное решение.

01.09.2023    4518    KVIKS    15    

80
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. khaoos 239 02.10.12 05:17 Сейчас в теме
Для обычных форм мне вполне нравится шаблон СКД от 1С. Но он поставляется вместе с общим модулем ТиповыеОтчеты, который (могу соврать) есть в типовых конфигурациях на обычных формах. Имеет достаточно хороший API и много возможностей подлезть в разные этапы компоновки. Есть также свойство ПользовательскиеНастройки компоновщика настроек. Но им пользоваться удобнее в управляемых формах. В 8.3 такие настройки отображаются в виде полей ввода, в 8.2 в виде табличного поля. Для управляемых же форм есть решение и в БСП, которое стало стандартом в типовых управляемых конфигурациях. Но форма вроде там отличается только программной начинкой от генерируемой автоматически, внешний вид вроде такой же.
Но все же молодец, что разобралась. Еще не раз пригодятся знания :).
2. Новенький_2209 02.10.12 12:35 Сейчас в теме
Зачем изобретать какие-то свои "внешние виды", "удобные формы" и т.д. В типовых - шаблон типового отчета. И если пользователь работал в нем, то ваша поделка, даже если там будет +100500 интересных фич и изюма, ему будет не привычна, хотя бы потому, что он интерфейс у вас - не сможет настроить под себя. Вытащить отборы привычными элементами управления (как пример) и т.д., сделать сохранение всего этого.

Затем, например, вы создали убийцу шаблона типового. Допустим. Поставили его клиенту и ушли. Через нное количество времени, приходит ваш коллега - КАК минимум, ваш отчет нужно открыть в конфигураторе и выгрузить схему компоновки и настройки компоновки, чтобы потом подсунуть это в консоль. Чутка подшаманив схему и настройки, нужно загрузить их обратно и посмотреть - что у вас выполняется на выходе, т.к. вы кодом добавляете/удаляете некоторые весчи. Т.е. по сравнение с типовым механизмом, вы привносите лишние, никому не нужные телодвижения - они не нужны ни вашему коллеге, ни клиенту.

Шаблон типового интегрируется в ЛЮБУЮ конфигурацию за 30 минут под чашечку кофе. Я считаю, это оправданная трата времени, т.к. потом ваша работа по написанию отчетов ускорить в разы. Более того, типовой отчет - это некий признак "хорошего" тона. Вы думаете не только о себе - но и о пользователях, привыкших к типовым отчетам, и ваших коллегах, которые возможно будут модифицировать ваши отчеты.

Все же за труд ставлю жирный плюс. И надеюсь, в реальных ситуациях вы будете стремиться к унификации своих решений.
M.Shalimov; Lena272; freeek; zoytsa; Lyns_owner; imbaZeratul; wowik; echo77; Feelthis; ABudnikov; slavap; krylovim; Tangram; maXon777; serpent; +15 Ответить
3. she's 407 02.10.12 13:34 Сейчас в теме
(2) Новенький_2209,
За плюс спасибо:) К сожалению, до, собственно, публикации не знала о существовании типового отчёта. Обязательно изучу его функционал. Но я всё же думаю, что тема, рассмотренная в моей статье, поможет программистам 1С, только начинающим знакомиться с СКД, разобраться в вопросе "А как же всё-таки оно работает".
marinelle; +1 Ответить
4. Новенький_2209 02.10.12 15:09 Сейчас в теме
(3) she's, я и не сомневался что вы не знаете стандартный шаблон, т.к. кто знает - просто физически не сможет заставить себя родить столько много кода по программной модификации схемы :) Изучайте, но только по живой конфигурации. К сожалению, сам шаблон обновляется значительно реже, нежели его клоны в типовых. Возьмите последнюю редакцию УПП или КА и оттуда заберите все что нужно для шаблона.

Если же конфа управляемая, то (имхо сугубо) самый удачный вариант в БП 3.0. От типового шаблона он внешне не сильно отличается.
marinelle; +1 Ответить
6. Zerkon 96 02.10.12 16:40 Сейчас в теме
(4)Если не затруднит, можно более подробно, как найти этот самый шаблон типового отчета? Или имеете ввиду взять за основу любой типовой отчет и из него сделать болванку?
7. glek 119 02.10.12 16:52 Сейчас в теме
(6) На диске ИТС есть папочка treport. там установка (почему то по 80 или81) и сам шаблон отчета
20. alexware 04.10.12 21:38 Сейчас в теме
(7) glek, Спасибо, тоже вот не знал об этом шаблоне.
23. ksai 11.10.12 10:50 Сейчас в теме
(4) Новенький_2209,
Возьмите последнюю редакцию УПП или КА и оттуда заберите все что нужно для шаблона.


Можно поподробнее, что конкретно нужно вытащить из последней УПП, чтобы получить шаблон типового отчета?
38. AlexO 135 18.01.13 14:22 Сейчас в теме
(3) she's,
"А как же всё-таки оно работает".

как раз, если не пользоваться ПРОГРАММНЫМ созданием СКД (а им приходится пользоваться лишь в исключительных случаях) - там все НЕ ТАК работает :)
В этом и есть "специфика" 1С - что все работает по своим законам при почти полном отсутствии документации.
5. samamoiloff 861 02.10.12 16:25 Сейчас в теме
(0)(she's) Evgeniya,
не слышно воплей что-то, типа "доколе... на главной... такое...", удивило, может потому, что девушка... Обычно здесь такое не прощают. По разным причинам, большинство из которых внутренние противоречия самих критикующих.
Крепитесь, если что, удачи Вам в поисках, так держать!
8. maXon777 128 02.10.12 18:17 Сейчас в теме
А я советую автору дополнить материал вышеуказанной в комментариях инфой и скриншотом настроек из 8.3 (пусть пока не актуально, но все посмотрят) и получится блестящий мануал. С меня однозначно плюс!
9. samamoiloff 861 02.10.12 23:01 Сейчас в теме
Хороший типовой шаблончик брал в свое время из ЗУП и использовал на снятой с поддержки БП, просто так не работал, пришлось в общем модуле дописывать пару строк, чтоб как в ЗУП было. Так что не все типовые однозначно типовые (типовые 1С-ники тоже в разных комнатах сидят у них там, видимо...) :)
10. ITEkb 03.10.12 00:34 Сейчас в теме
Спасибо за статью, попробовал примерно то же самое сделать в управляемой форме. Только вместо предложенного варианта перетягивал в отбор и остальные закладки таблички компоновки данных. Получилось более навороченно и универсально. Настроек стало на порядок больше, и код дописывать не пришлось.

Есть вопрос по управляемым формам. Там есть кнопочка "Настроить форму", в которой галками можно включить и выключить ненужные блоки настроек. Стоит переименовать отчет, или скинуть другому пользователю, эти настройки сбрасываются. В настройках конфигурации тоже не нашел, как это жестко прописать. К примеру, хочу оставить для выбора колонки, которые нужно показывать в отчете и отбор.

Выглядят такие настройки более красиво, но для каждого пользователя настраивать персонально не разумно.
11. she's 407 03.10.12 08:48 Сейчас в теме
(10) OrsoBear,
Я не много работала с управляемыми формами, но, возможно, вам поможет флаг "Пользовательская видимость" в свойстве элемента. По умолчанию элемент будет невидимым, но его можно будет включить в меню "Изменить форму".
12. ITEkb 03.10.12 09:33 Сейчас в теме
(11) she's, В этом вся и сложность. Эта форма видна только в отчете, в конфигураторе ее не видно.
13. she's 407 03.10.12 10:18 Сейчас в теме
(12) OrsoBear, вы имеете в виду форма отчёта создаётся автоматически? А в конфигураторе создать не хотите?
16. ITEkb 03.10.12 16:00 Сейчас в теме
(13) she's, В конфигураторе создается совсем другая форма. Не такая, как автоматическая.
Но я решил вопрос именно таким способом. Нарисовал приближенно похожую форму, и внес в нее поля.
Только это глупый труд. Куда интереснее было бы именно включать и отключать программно блоки настроек.
14. пользователь 03.10.12 14:50
Сообщение было скрыто модератором.
...
15. she's 407 03.10.12 15:29 Сейчас в теме
17. Vlad_2008 16 03.10.12 21:49 Сейчас в теме
+ За попытку внимательного отношения к пользователю (наличие настроек на форме),
но за реализацию -.

В попытке сделать лучше Вы "украли" у пользователя почти всю СКД, и вместо универсального
отчета на СКД получили простую табличку с минимумом настроек.

Надеюсь, что в кнопке "Действия" стандартные кнопки сохранены, если так, то еще не все потеряно!

Само расположение этих настроек тоже сделано не удобно. На наших широкоформатных мониторах
располагать их сверху не эрогономично, удобнее справа (и если использовать код, то можно их
скрыть или показать), а используя разделитель можно менять размеры полей.

Использование кода в таком примере не оправданно, не показательно (в части работы с компоновкой),
да и вообще не нужно. Сам стараюсь редко использовать код, пусть СКД работает сама. Обычно использую
код когда СКД "не правильно" оптимизирует использование параметров виртуальных таблиц в запросах
к регистрам, особенно где используются ОБЪЕДИНЕНИЕ ИЛИ СОЕДИНЕНИЕ.

Вот фото формы отчета (правда старенький отчет и для 8.1, но люди до сих пор пользуются) БЕЗ КОДА ВООБЩЕ



Основные настройки вынесены на форму, НО стандартные настройки НИ В КОЕМ СЛУЧАЕ НЕ ОТКЛЮЧЕНЫ, и по
кнопке "Настройки" пользователь всегда может воспользоваться ВСЕЙ универсальностью СКД.

За пример работы с расшифровкой, дико извеняюсь, очень конечно извеняюсь, но "ПО УБИВАВ". Это за
вывод расшифровки в этой же форме, а не в отдельном окне. А если требуется расшифровать несколько
позиций отчета и сравнить их? А как же производительность системы? - Строим ресурсоемкий отчет какое-то
приличное время, а потом просто убиваем его расшифровкой?!, и пользователь опять тычет "Сформировать", чтобы
вернуть исходное состояние, а сервер крутится, пользователи курят! Не хорошо это.

Ни кого не хотел обидеть, просто высказал свое мнение. Простите если что не так.
Удачи!
18. she's 407 03.10.12 22:16 Сейчас в теме
(17) Vlad_2008, ваши замечания оправданы и все перечисленные недочёты действительно есть. Думаю, никто и не будет вставлять этот отчёт в свою конфигурацию копипастом. У меня и не было цели нарисовать идеальный интерфейс с функциональностью полноценного отчёта с учётом всех нагрузок на сервер. Я хотела показать простейший пример с объяснением что, зачем и почему. Чтобы программист, столкнувшись с подобной задачей впервые имел под рукой простой и понятный пример. А нюансы оптимизации, культура создания интерфейса и прочие прелести подробно описаны в литературе и других статьях на этом и других сайтах.
19. Vlad_2008 16 03.10.12 22:47 Сейчас в теме
Поддерживаю. И литературу, конечно, читать надо.

Ну и очень хорошо, что мы все движемся в правильном направлении.
21. texnic79 43 11.10.12 07:33 Сейчас в теме
Поддерживаю коллег, по поводу использование шаблона типового отчет, который унифицирует интерфейс работы с отчетом, но программная работа с СКД дело важное, нужное и полезное. Поэтому однозначно +.
22. higs 11.10.12 10:17 Сейчас в теме
Поставлю плюс, полезная тема. Хотя лично для меня ничего нового не принесло, но помню себя, когда только начинал разбираться с СКД.
24. anchovy 24 11.10.12 15:33 Сейчас в теме
На примере БГУ, в УПП скорее всего то же самое.
Необходимо добавить в конфигурацию следующие объекты:

отчет
- ШаблонТиповогоОтчета
общий модуль
- ТиповыеОтчеты
- ТиповыеОтчетыПереопределяемый
- СохранениеНастроек
справочник
- СохраненныеНастройки
перечисления
- ТипыНастроек
- ПредставленияЭлементовОтчетов
общие формы
- ФормаНастройкиСтруктурыОтчета
общие макеты
- ЗаголовокТиповогоОтчета
svetanik; fieryfist; Figar; ksai; +4 Ответить
25. ksai 11.10.12 17:14 Сейчас в теме
(24) anchovy,
Спасибо! Хотя гос. учреждение и производственное предприятие весьма далеки друг от друга, думается мне, перечисленные тобой объекты должны быть универсальными.
26. klel 11.10.12 20:23 Сейчас в теме
Большое спасибо за интересную статью =) Плюсик "+"
27. Moll 14.10.12 18:41 Сейчас в теме
Благодарим автора за проделанную работу, но скорее соглашусь с теми комментариями которые говорят о том, что пользователю всё таки необходимо предоставлять возможность модифицирования отчёта, ведь есть же среди них люди соображающие)

удачи на конкурсе ;)
28. Yashazz 4709 15.10.12 18:27 Сейчас в теме
Ничего особенного. Из Хрусталёвой можно почерпнуть столько же, а то и больше. Недоумеваю, отчего такие восторги вокруг этой публикации.
29. dyak84 19.10.12 11:50 Сейчас в теме
Спасибо очень познавательно и интересно.Появятся деньги обязательно скачаю
30. ~gekK@~ 26.10.12 14:30 Сейчас в теме
да уж лучше не выпиливать возможности, а провести обучение персонала дабы использовать все инструменты предоставляемые платформой
31. GovoruN3562 07.11.12 14:50 Сейчас в теме
Мне очень пригодилось. Спасибо. Правда, добившись результата, нашёл типовой шаблон и сделал на его основе. Пускай пользователи привыкают.
32. AlexO 135 11.12.12 12:14 Сейчас в теме
а мне плюсики понравились.
Никто из плюсовавших (кроме тех, кто плюсовал "за девушку" и "типовой все ж лучше") так и не понял - че тут, зачем...
Интересно, а сколько бы плюсиков Хрусталевой наставили бы, на основе которой статья? Ни одного - "не осилил, автор, пейши исчо"? :)
33. she's 407 11.12.12 14:09 Сейчас в теме
(32) AlexO, Ваш комментарий, наверное, нужно трактовать так : " А что вы тут статьи пишите? В книжках давно всё написано". Даже не знаю что бы вы сказали несчастным учёным, которые строят свои теории на основании научных трудов, например, Эйнштейна. Кстати, а вы сами-то Хрусталёву читали? Предположу, что нет, так как если бы читали, то заметили бы, что конкретно такого примера там нет.
Чувствую тема автора Elva_ вам наскучила и вы решили найти новое место для выяснения отношений и отстаивания своей, неоспоримо правильной, позиции в жизни.
34. nikolaygorbunov 1 11.12.12 14:21 Сейчас в теме
Хрусталеву почитай если обычное приложение, если управляемое, там итак все настройки можно на форму вынести, Радченко в помощь, есть у него немного в его книжице.
35. dyak84 07.01.13 15:27 Сейчас в теме
Спасибо за публикацию узнал много интересного и полезного. Статья краткая и содержительная все по существу, самое главное все получилось.автору огромное спасибо
36. Vond 11.01.13 23:17 Сейчас в теме
Лаконичнее чем книги Хрусталевой и Радченко ) Попробуем, спасибо
37. AlexO 135 18.01.13 14:20 Сейчас в теме
(36) Vond,
Лаконичнее чем книги Хрусталевой

вообще-то это как раз перепечатка главы книги Хрусталевой.
"Программное создание отчета на СКД" называется.
39. AlexSunS 21.01.13 09:14 Сейчас в теме
Объективность... автору спасибо просто хотя бы за то, что не ресурсить в гугл и не на бесконечное кол-во форумов отсылает...а просто дает свою реализацию задачи.. с которой сталкиваемся все мы...особенно на начальном этапе...
Lena272; freeek; Maximysis; svetanik; zoytsa; silberRus; marinelle; pvl_mksv; +8 Ответить
40. pvl_mksv 20 28.02.13 10:32 Сейчас в теме
(39) AlexSunS,
Присоединяюсь, практическая база набрана - пора учить теорию !
Автору - респект!
41. jurgal1C 21.05.13 01:24 Сейчас в теме
То, что доктор прописал :) Спасибо
42. EarlyBird 6 21.05.13 09:55 Сейчас в теме
43. ogion 24.09.13 15:26 Сейчас в теме
И как бы "сделать сохранение выбранных пользователем настроек"?
48. zoytsa 22.03.14 15:35 Сейчас в теме
(43) ogion,
В подменю Действия можно кнопки соответствующие вывести. :-)
44. &rew 49 03.12.13 13:20 Сейчас в теме
Все это, конечно, хорошо, но тогда смысл использования СКД несколько нивелируется. Хотя если разработать некий шаблон, куда потом "запихивать" свою схему компоновки, тогда да. В любом случае это "...в 7 раз сытнее, чем ничё..."
45. marinelle 05.01.14 11:13 Сейчас в теме
Спасибо автору за данную публикацию!!! Кратко, по существу, а главное все понятно описано. Перепечатка главы книги или нет, не суть важно. Не у всех ведь есть исходный материал ))
46. marinelle 05.01.14 11:17 Сейчас в теме
Для кодеров только начинающих разбираться с СКД очень полезно ))) Еще раз спасибо!
47. zoytsa 22.03.14 15:34 Сейчас в теме
Воспользовался разработкой автора, только вынес настройки на отдельную форму. И сохранил кнопку стандартную настроек, озаглавив "Расширенные настройки".
Спасибо!
49. svetanik 5 02.04.14 15:44 Сейчас в теме
Однозначно, автору респект. Прочитать литературу, реализовать своё (и ведь работает! обратите внимание на коммент 38) и не полениться написать статью и вынести её на обсуждение... Однозначно плюсую
50. ITEkb 09.12.14 08:32 Сейчас в теме
Снова вернулся к этой теме.
Очередной отчет, где нужно автоматом загружать параметры.
И как всегда, на управляемых формах :-)
Порылся в комментариях, вспомнил, как делал раньше :-)
51. laf 28.01.15 09:53 Сейчас в теме
Вы молодец. Завидую. Сама не могу разобраться с этими "СКД"
52. laf 28.01.15 09:58 Сейчас в теме
Подскажите, кто-нибудь, где в конфигураторе БП 3.0 находится модуль переноса в табличную часть документа номенклатуры из подбора. Недавно с 7.7 - ничего не понимаю.
Оставьте свое сообщение