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

Публикация № 154236

Разработка - Практика программирования

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

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

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

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

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

ВЫБРАТЬ

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

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

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

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

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

ИЗ

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

 

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

                       

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

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

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

                       

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

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

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

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

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

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

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

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

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

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

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

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

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

               КонецЕсли;   

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

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

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

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

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

               КонецЕсли;

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

                Счетчик = 0;

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

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

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

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

                         Продолжить;

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

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

                         Продолжить;

                     КонецЕсли;                       

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

                КонецЦикла;

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

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

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

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

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

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

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

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

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

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

                  Иначе

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

                   КонецЕсли;                                                                                                                  

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

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

 

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

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

               КонецЦикла;

 

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

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

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

 

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

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

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

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

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

            Иначе

                 Продолжить;

            КонецЕсли;

      КонецЦикла;                

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

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

 

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

Расшифровка

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

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

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

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

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

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

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

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

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

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

              КонецЕсли;

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

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

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

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

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

                             Возврат;

                        КонецЕсли;                    

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

                       

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

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

                        КонецЕсли;                     

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

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

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

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

 

Итог.

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

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

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

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

Наименование Файл Версия Размер
Пример отчёта с программным заполнением настроек СКД

.erf 21,76Kb
641
.erf 21,76Kb 641 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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 406 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 112 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 130 18.01.13 14:22 Сейчас в теме
(3) she's,
"А как же всё-таки оно работает".

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

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

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

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

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

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

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

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



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

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

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

Ну и очень хорошо, что мы все движемся в правильном направлении.
21. texnic79 43 11.10.12 07:33 Сейчас в теме
Поддерживаю коллег, по поводу использование шаблона типового отчет, который унифицирует интерфейс работы с отчетом, но программная работа с СКД дело важное, нужное и полезное. Поэтому однозначно +.
22. higs 11.10.12 10:17 Сейчас в теме
Поставлю плюс, полезная тема. Хотя лично для меня ничего нового не принесло, но помню себя, когда только начинал разбираться с СКД.
24. anchovy 21 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 3752 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 130 11.12.12 12:14 Сейчас в теме
а мне плюсики понравились.
Никто из плюсовавших (кроме тех, кто плюсовал "за девушку" и "типовой все ж лучше") так и не понял - че тут, зачем...
Интересно, а сколько бы плюсиков Хрусталевой наставили бы, на основе которой статья? Ни одного - "не осилил, автор, пейши исчо"? :)
33. she's 406 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 130 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 29 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. OrsoBear 09.12.14 08:32 Сейчас в теме
Снова вернулся к этой теме.
Очередной отчет, где нужно автоматом загружать параметры.
И как всегда, на управляемых формах :-)
Порылся в комментариях, вспомнил, как делал раньше :-)
51. laf 28.01.15 09:53 Сейчас в теме
Вы молодец. Завидую. Сама не могу разобраться с этими "СКД"
52. laf 28.01.15 09:58 Сейчас в теме
Подскажите, кто-нибудь, где в конфигураторе БП 3.0 находится модуль переноса в табличную часть документа номенклатуры из подбора. Недавно с 7.7 - ничего не понимаю.
Оставьте свое сообщение

См. также

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5 Промо

Практика программирования Адаптация типовых решений Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

Данная публикация является продолжением описания функционирования обработки "FormCodeGenerator " в режиме сравнения форм и генерирования кода на основании сравнения. Подходит для перевода уже доработанных форм с интерактивной доработки на программную. Данный режим работы обработки снизит издержки при дальнейших обновлениях конфигураций.

5 стартмани

21.12.2020    4617    19    huxuxuya    11    

Свойства общих модулей

Практика программирования Прочие инструменты разработчика v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Надоело каждый раз искать, какие общие модули глобальные? какие повторно используемые? хочется взглянуть на все контексты выполнения?

1 стартмани

14.04.2021    815    1    kuzyara    3    

Отчет с настройкой роли поля СКД со свойством период

Практика программирования Работа с интерфейсом v8 v8::СКД Платформа 1C v8.2 1cv8.cf УУ Абонемент ($m)

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

1 стартмани

01.04.2021    880    0    softmaker    0    

Расшифровка СКД. Фильтр отчета по диапазону чисел. Переопределение обработки расшифровки. Не модальный режим

Практика программирования v8::УФ v8::СКД 8.3.14 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2021    1317    1    denmon88    1    

Альтернативный способ добавления элементов и реквизитов на формы Промо

Работа с интерфейсом v8 ERP2 УТ11 Россия Абонемент ($m)

Предлагаю альтернативный вариант добавления динамически создаваемых элементов и реквизитов на форму.

1 стартмани

09.09.2019    14384    28    bmk74    6    

Классический макет оформления СКД

Работа с интерфейсом v8 v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Законченный макет оформления для отчетов на СКД. Представляет собой черно-белый вариант для ностальгирующих по 7.7.

1 стартмани

27.10.2020    1695    2    the1    0    

Макет оформления СКД - яркий

Работа с интерфейсом v8::СКД 1cv8.cf Абонемент ($m)

Яркий, контрастный, отлично читаемый. Макет оформления СКД.

1 стартмани

26.10.2020    1743    1    1C_tradeomsk    0    

Простой пример отчета на СКД. Программное формирование, расшифровка, работа с параметрами и отборами

Практика программирования v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

15.10.2020    3340    6    Stivens    10    

Вам нравятся запросы в 1С? Промо

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    24157    6    m-rv    90    

Быстрое формирование наборов данных Объект схемы СКД

Практика программирования v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

05.07.2020    5687    5    Алексей Воробьев    16    

Построение графика в диапазоне изменений без точек

Практика программирования v8::СКД 1cv8.cf Россия Абонемент ($m)

График изменений каких-либо величин во всем диапазоне и в области изменения, без точек.

1 стартмани

30.05.2020    2488    3    yc_2011    4    

Метод восстановления битых ссылок в настройках СКД при консольно-конфигураторной разработке отчетов

Практика программирования Прочие инструменты разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

30.04.2020    5729    0    zaxarovsky    4    

Задачка: Список всех документов за заданный период, используя СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Вывести все документы за заданный период, используя СКД.

2 стартмани

11.03.2020    3625    6    MaxxiMiliSan    9    

Получение курса валюты за период с помощью СКД

Практика программирования v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

04.02.2020    3617    1    KawaNoNeko    2    

Шаблон внешнего отчета на СКД

Работа с интерфейсом v8 v8::СКД УНФ Абонемент ($m)

Шаблон отчета на базе СКД со своей формой отчета и выводом в свой макет (на примере прайс-листа).

1 стартмани

20.12.2019    6491    18    LamerSoft    0    

Менеджер открытых форм Промо

Работа с интерфейсом v8::УФ 1cv8.cf Абонемент ($m)

Обработка получает информацию об открытых формах и позволяет ими манипулировать.

1 стартмани

13.04.2017    23261    39    SeiOkami    19    

Преобразование объекта Отбор компоновки данных в Запрос

Практика программирования Прочие инструменты разработчика v8::УФ v8::Запросы v8::СКД 1cv8.cf Абонемент ($m)

Преобразует объект Отбор компоновки данных в объект Запрос (с заполнением текста и параметров).

1 стартмани

20.12.2019    5011    6    okon-teh    2    

Проверка несуществующих полей в настройках СКД

Практика программирования Работа с интерфейсом Разработка v8 v8::СКД ERP2 УТ11 КА2 Абонемент ($m)

Обработка находит все поля настроек СКД, которые утратили свою актуальность Подходит для УТ 11, ERP, КА 2.

1 стартмани

20.06.2019    5825    3    MuI_I_Ika    2    

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

Инструментарий разработчика Практика программирования v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Разрабатывалась на 1С:Зарплата и управление персоналом в кредитных организациях, редакция 3.1 (3.1.5.407), поэтому использует типовой отчет Состояние штатного расписания, но технология работает для любой конфигурации. Пример внешней обработки с вызовом типового отчета на СКД "Состояние штатного расписания" и передачей ему настроек, изменения имен колонок после выполнения на имена указанные в "Пользовательских полях" или "заголовках" и вывода результата в таблицу значений.

1 стартмани

21.03.2019    7537    14    pavel_pss    0    

Расширенная настройка динамического списка УФ Промо

Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

31.05.2017    35786    159    tormozit    25    

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

Практика программирования Разработка v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Если в запросе динамического списка используется конструкция {ХАРАКТЕРИСТИКИ ...}, то как вывести на форму колонки с характеристиками?

1 стартмани

22.02.2019    7536    3    kasper076    3    

Расширение: Темы для 1С 8.3

Работа с интерфейсом v8::УФ 1cv8.cf Абонемент ($m)

Расширение позволяет сменить цвет оформления для интерфейса Такси.

1 стартмани

10.02.2019    19456    113    spec8s    19    

Модуль, реализующий хранение настроек отчетов СКД в типовом регистре "Сохраненные настройки"

Практика программирования v8 v8::СКД КА1 БП2.0 ЗУП2.5 УТ10 БП1.6 Абонемент ($m)

Модуль, обеспечивающий хранение настроек отчетов на СКД в типовом регистре "Сохраненные настройки", присутствующем в конфигурациях УПП 1.2, 1.3, УТ 10.3, БП 2.0 и т.д.

1 стартмани

12.01.2019    7415    0    lunjio    0    

Открывашка ячеек таблиц Промо

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

Глобальное сочетание клавиш для открытия объекта по ссылке из текущей ячейки любой таблицы в большинстве управляемых форм

1 стартмани

27.10.2018    19639    12    tormozit    31    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") Промо

Практика программирования v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    33376    88    m-rv    58    

Лучший подарок для бухгалтера - счёты 8.2 (со звуком) Промо

Работа с интерфейсом v8 1cv8.cf Россия Абонемент ($m)

(Толстый клиент) Подарите бухгалтеру счеты, и он(а) Вас никогда не забудет.

1 стартмани

13.05.2011    42643    922    Tatitutu    45    

Заполняем по шаблону (по умолчанию) Промо

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2018    31380    20    mvxyz    17