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

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

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

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

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

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

ВЫБРАТЬ

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

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

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

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

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

ИЗ

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

 

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

                       

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

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

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

                       

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

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

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

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

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

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

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

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

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

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

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

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

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

               КонецЕсли;   

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

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

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

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

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

               КонецЕсли;

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

                Счетчик = 0;

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

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

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

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

                         Продолжить;

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

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

                         Продолжить;

                     КонецЕсли;                       

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

                КонецЦикла;

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

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

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

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

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

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

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

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

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

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

                  Иначе

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

                   КонецЕсли;                                                                                                                  

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

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

 

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

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

               КонецЦикла;

 

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

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

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

 

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

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

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

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

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

            Иначе

                 Продолжить;

            КонецЕсли;

      КонецЦикла;                

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

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

 

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

Расшифровка

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

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

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

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

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

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

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

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

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

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

              КонецЕсли;

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

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

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

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

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

                             Возврат;

                        КонецЕсли;                    

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

                       

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

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

                        КонецЕсли;                     

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

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

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

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

 

Итог.

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

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

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

51 Comments

  1. khaoos

    Для обычных форм мне вполне нравится шаблон СКД от 1С. Но он поставляется вместе с общим модулем ТиповыеОтчеты, который (могу соврать) есть в типовых конфигурациях на обычных формах. Имеет достаточно хороший API и много возможностей подлезть в разные этапы компоновки. Есть также свойство ПользовательскиеНастройки компоновщика настроек. Но им пользоваться удобнее в управляемых формах. В 8.3 такие настройки отображаются в виде полей ввода, в 8.2 в виде табличного поля. Для управляемых же форм есть решение и в БСП, которое стало стандартом в типовых управляемых конфигурациях. Но форма вроде там отличается только программной начинкой от генерируемой автоматически, внешний вид вроде такой же.

    Но все же молодец, что разобралась. Еще не раз пригодятся знания :).

    Reply
  2. Новенький_2209

    Зачем изобретать какие-то свои «внешние виды», «удобные формы» и т.д. В типовых — шаблон типового отчета. И если пользователь работал в нем, то ваша поделка, даже если там будет +100500 интересных фич и изюма, ему будет не привычна, хотя бы потому, что он интерфейс у вас — не сможет настроить под себя. Вытащить отборы привычными элементами управления (как пример) и т.д., сделать сохранение всего этого.

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

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

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

    Reply
  3. she's

    (2) Новенький_2209,

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

    Reply
  4. Новенький_2209

    (3) she’s, я и не сомневался что вы не знаете стандартный шаблон, т.к. кто знает — просто физически не сможет заставить себя родить столько много кода по программной модификации схемы 🙂 Изучайте, но только по живой конфигурации. К сожалению, сам шаблон обновляется значительно реже, нежели его клоны в типовых. Возьмите последнюю редакцию УПП или КА и оттуда заберите все что нужно для шаблона.

    Если же конфа управляемая, то (имхо сугубо) самый удачный вариант в БП 3.0. От типового шаблона он внешне не сильно отличается.

    Reply
  5. samamoiloff

    (0)(she’s) Evgeniya,

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

    Крепитесь, если что, удачи Вам в поисках, так держать!

    Reply
  6. Zerkon

    (4)Если не затруднит, можно более подробно, как найти этот самый шаблон типового отчета? Или имеете ввиду взять за основу любой типовой отчет и из него сделать болванку?

    Reply
  7. glek

    (6) На диске ИТС есть папочка treport. там установка (почему то по 80 или81) и сам шаблон отчета

    Reply
  8. maXon777

    А я советую автору дополнить материал вышеуказанной в комментариях инфой и скриншотом настроек из 8.3 (пусть пока не актуально, но все посмотрят) и получится блестящий мануал. С меня однозначно плюс!

    Reply
  9. samamoiloff

    Хороший типовой шаблончик брал в свое время из ЗУП и использовал на снятой с поддержки БП, просто так не работал, пришлось в общем модуле дописывать пару строк, чтоб как в ЗУП было. Так что не все типовые однозначно типовые (типовые 1С-ники тоже в разных комнатах сидят у них там, видимо…) 🙂

    Reply
  10. OrsoBear

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

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

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

    Reply
  11. she's

    (10) OrsoBear,

    Я не много работала с управляемыми формами, но, возможно, вам поможет флаг «Пользовательская видимость» в свойстве элемента. По умолчанию элемент будет невидимым, но его можно будет включить в меню «Изменить форму».

    Reply
  12. OrsoBear

    (11) she’s, В этом вся и сложность. Эта форма видна только в отчете, в конфигураторе ее не видно.

    Reply
  13. she's

    (12) OrsoBear, вы имеете в виду форма отчёта создаётся автоматически? А в конфигураторе создать не хотите?

    Reply
  14. she's

    (14) fort13, пожалуйста:)

    Reply
  15. OrsoBear

    (13) she’s, В конфигураторе создается совсем другая форма. Не такая, как автоматическая.

    Но я решил вопрос именно таким способом. Нарисовал приближенно похожую форму, и внес в нее поля.

    Только это глупый труд. Куда интереснее было бы именно включать и отключать программно блоки настроек.

    Reply
  16. Vlad_2008

    + За попытку внимательного отношения к пользователю (наличие настроек на форме),

    но за реализацию -.

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

    отчета на СКД получили прос

    Reply
  17. she's

    (17) Vlad_2008, ваши замечания оправданы и все перечисленные недочёты действительно есть. Думаю, никто и не будет вставлять этот отчёт в свою конфигурацию копипастом. У меня и не было цели нарисовать идеальный интерфейс с функциональностью полноценного отчёта с учётом всех нагрузок на сервер. Я хотела показать простейший пример с объяснением что, зачем и почему. Чтобы программист, столкнувшись с подобной задачей впервые имел под рукой простой и понятный пример. А нюансы оптимизации, культура создания интерфейса и прочие прелести подробно описаны в литературе и других статьях на этом и других сайтах.

    Reply
  18. Vlad_2008

    Поддерживаю. И литературу, конечно, читать надо.

    Ну и очень хорошо, что мы все движемся в правильном направлении.

    Reply
  19. alexware

    (7) glek, Спасибо, тоже вот не знал об этом шаблоне.

    Reply
  20. texnic79

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

    Reply
  21. higs

    Поставлю плюс, полезная тема. Хотя лично для меня ничего нового не принесло, но помню себя, когда только начинал разбираться с СКД.

    Reply
  22. ksai

    (4) Новенький_2209,

    Возьмите последнюю редакцию УПП или КА и оттуда заберите все что нужно для шаблона.

    Можно поподробнее, что конкретно нужно вытащить из последней УПП, чтобы получить шаблон типового отчета?

    Reply
  23. anchovy

    На примере БГУ, в УПП скорее всего то же самое.

    Необходимо добавить в конфигурацию следующие объекты:

    отчет

    — ШаблонТиповогоОтчета

    общий модуль

    — ТиповыеОтчеты

    — ТиповыеОтчетыПереопределяемый

    — СохранениеНастроек

    справочник

    — СохраненныеНастройки

    перечисления

    — ТипыНастроек

    — ПредставленияЭлементовОтчетов

    общие формы

    — ФормаНастройкиСтруктурыОтчета

    общие макеты

    — ЗаголовокТиповогоОтчета

    Reply
  24. ksai

    (24) anchovy,

    Спасибо! Хотя гос. учреждение и производственное предприятие весьма далеки друг от друга, думается мне, перечисленные тобой объекты должны быть универсальными.

    Reply
  25. klel

    Большое спасибо за интересную статью =) Плюсик «+»

    Reply
  26. Moll

    Благодарим автора за проделанную работу, но скорее соглашусь с теми комментариями которые говорят о том, что пользователю всё таки необходимо предоставлять возможность модифицирования отчёта, ведь есть же среди них люди соображающие)

    удачи на конкурсе 😉

    Reply
  27. Yashazz

    Ничего особенного. Из Хрусталёвой можно почерпнуть столько же, а то и больше. Недоумеваю, отчего такие восторги вокруг этой публикации.

    Reply
  28. dyak84

    Спасибо очень познавательно и интересно.Появятся деньги обязательно скачаю

    Reply
  29. ~gekK@~

    да уж лучше не выпиливать возможности, а провести обучение персонала дабы использовать все инструменты предоставляемые платформой

    Reply
  30. GovoruN3562

    Мне очень пригодилось. Спасибо. Правда, добившись результата, нашёл типовой шаблон и сделал на его основе. Пускай пользователи привыкают.

    Reply
  31. AlexO

    а мне плюсики понравились.

    Никто из плюсовавших (кроме тех, кто плюсовал «за девушку» и «типовой все ж лучше») так и не понял — че тут, зачем…

    Интересно, а сколько бы плюсиков Хрусталевой наставили бы, на основе которой статья? Ни одного — «не осилил, автор, пейши исчо»? 🙂

    Reply
  32. she's

    (32) AlexO, Ваш комментарий, наверное, нужно трактовать так : » А что вы тут статьи пишите? В книжках давно всё написано». Даже не знаю что бы вы сказали несчастным учёным, которые строят свои теории на основании научных трудов, например, Эйнштейна. Кстати, а вы сами-то Хрусталёву читали? Предположу, что нет, так как если бы читали, то заметили бы, что конкретно такого примера там нет.

    Чувствую тема автора Elva_ вам наскучила и вы решили найти новое место для выяснения отношений и отстаивания своей, неоспоримо правильной, позиции в жизни.

    Reply
  33. nikolaygorbunov

    Хрусталеву почитай если обычное приложение, если управляемое, там итак все настройки можно на форму вынести, Радченко в помощь, есть у него немного в его книжице.

    Reply
  34. dyak84

    Спасибо за публикацию узнал много интересного и полезного. Статья краткая и содержительная все по существу, самое главное все получилось.автору огромное спасибо

    Reply
  35. Vond

    Лаконичнее чем книги Хрусталевой и Радченко ) Попробуем, спасибо

    Reply
  36. AlexO

    (36) Vond,

    Лаконичнее чем книги Хрусталевой

    вообще-то это как раз перепечатка главы книги Хрусталевой.

    «Программное создание отчета на СКД» называется.

    Reply
  37. AlexO

    (3) she’s,

    «А как же всё-таки оно работает».

    как раз, если не пользоваться ПРОГРАММНЫМ созданием СКД (а им приходится пользоваться лишь в исключительных случаях) — там все НЕ ТАК работает 🙂

    В этом и есть «специфика» 1С — что все работает по своим законам при почти полном отсутствии документации.

    Reply
  38. AlexSunS

    Объективность… автору спасибо просто хотя бы за то, что не ресурсить в гугл и не на бесконечное кол-во форумов отсылает…а просто дает свою реализацию задачи.. с которой сталкиваемся все мы…особенно на начальном этапе…

    Reply
  39. pvl_mksv

    (39) AlexSunS,

    Присоединяюсь, практическая база набрана — пора учить теорию !

    Автору — респект!

    Reply
  40. jurgal1C

    То, что доктор прописал 🙂 Спасибо

    Reply
  41. EarlyBird

    полезно, спасибо!

    Reply
  42. ogion

    И как бы «сделать сохранение выбранных пользователем настроек»?

    Reply
  43. &rew

    Все это, конечно, хорошо, но тогда смысл использования СКД несколько нивелируется. Хотя если разработать некий шаблон, куда потом «запихивать» свою схему компоновки, тогда да. В любом случае это «…в 7 раз сытнее, чем ничё…»

    Reply
  44. marinelle

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

    Reply
  45. marinelle

    Для кодеров только начинающих разбираться с СКД очень полезно ))) Еще раз спасибо!

    Reply
  46. zoytsa

    Воспользовался разработкой автора, только вынес настройки на отдельную форму. И сохранил кнопку стандартную настроек, озаглавив «Расширенные настройки».

    Спасибо!

    Reply
  47. zoytsa

    (43) ogion,

    В подменю Действия можно кнопки соответствующие вывести. 🙂

    Reply
  48. svetanik

    Однозначно, автору респект. Прочитать литературу, реализовать своё (и ведь работает! обратите внимание на коммент 38) и не полениться написать статью и вынести её на обсуждение… Однозначно плюсую

    Reply
  49. OrsoBear

    Снова вернулся к этой теме.

    Очередной отчет, где нужно автоматом загружать параметры.

    И как всегда, на управляемых формах 🙂

    Порылся в комментариях, вспомнил, как делал раньше 🙂

    Reply
  50. laf

    Вы молодец. Завидую. Сама не могу разобраться с этими «СКД»

    Reply
  51. laf

    Подскажите, кто-нибудь, где в конфигураторе БП 3.0 находится модуль переноса в табличную часть документа номенклатуры из подбора. Недавно с 7.7 — ничего не понимаю.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *