Программная работа с настройками СКД

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

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

программная работа настройки СКД отбор группировка настроек

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

Ни у кого не вызывает сомнений необходимость научиться работать с отчетами на СКД и динамическими списками программно. На эту тему написано много хороших статей. Вот некоторые из них:

Пример создания отчета на СКД полностью программно

Все возможные варианты вывода картинок в отчет на СКД

Процедура ПриКомпоновкиРезультата

Сложность здесь заключается не сколько в самом алгоритме программного формирования отчета – он достаточно простой и неоднократно описан:

Схема = СхемаКомпоновкиДанных;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
	
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, ДанныеРасшифровки);
	
ПроцессорКомпоновки = новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
	
ПроцессорВывода = новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);

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

Я рассмотрю нюансы программной работы с настройками компоновки в целом и конкретно работу с отборами. Отборы - это наиболее распространенный вариант программной работы с отчетами или с динамическим списком. 

Прежде чем перейти к практике, как всегда, немного теории. Для тех, кто в теме, и хорошо все это знает, переходите сразу к следующему разделу.

 

Немного теории…

Компоновщик настроек – это объект, который предоставляет возможность настраивать представление данных отчета или динамического списка построенных на СКД. Объект «Отчет» помимо самой схемы компоновки, имеет компоновщик настроек. В форме отчета компоновщик настроек доступен через основной реквизит формы «Отчет». В форме динамического списка, компоновщик также доступен через основной реквизит формы «Список».

Компоновщик настроек не может существовать без схемы компоновки, он неразрывно связан с ней. Если посмотреть содержимое этого объекта в конфигураторе, можно увидеть следующее:

Компоновщик настроек

Как видим, существует аж три различных раздела настроек:

  • Настройки
  • Пользовательские настройки
  • Фиксированные настройки  

У тех, кто только начинает осваивать СКД это может вызвать недоумение. И это вполне понятно. Почему бы не сделать только один вариант настроек и не работать с ним?

Ну что же, вполне резонный вопрос. Как минимум, сильно упростилась бы работа с этим объектом.

Но разработчики 1С так не думают. На сколько это оправдано – сказать сложно. В любом случае нам остается только принимать то, что есть, разбираться в этом и искать положительные стороны, которые безусловно есть.

И так разберем по порядку все варианты настроек. Как Вы увидите позже, это очень важно понимать для ПРАВИЛЬНОЙ работы с ними.  

Замечу еще раз, что все что будет сказано, справедливо как для отчетов так и для динамических списков.

Настройки компоновщика настроек

 

Настройки

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

Подробное описание интерактивной работы с настройками компоновки читайте в статье Работа с настройками системы компоновки.

Тип Настроек компоновки данных - «НастройкиКомпоновкиДанных». Настройки содержат в себе отдельные разделы для работы с отборами, параметрами, порядком, структурой, условным оформлением: 

Настройки компоновки

Пользовательские настройки

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

Подробнее об интерактивной работе с пользовательскими настройками читайте в статье Работа с пользовательскими настройками.

Не смотря на то, что Пользовательские настройки это подмножество Настроек, для программной работы с ними используется отдельный раздел компоновщика настроек. Более того, его тип - «ПользовательскиеНастройкиКомпоновкиДанных», который отличается от типа Настроек.

В отличие от Настроек, Пользовательские настройки содержат в себе общий список всех элементов настроек, которые включены в пользовательские. Это могут быть как целые разделы (отбор, порядок, структура), так и отдельные элементы того или иного раздела. Это очень ВАЖНО понимать при программной работе с настройками:

Пользовательские настройки

Для связи элемента Настроек и Пользовательских настроек существует специальный реквизит Настроек «ИдентификаторПользовательскийНастройки». Собственно для программного включения элемента настроек в пользовательские настройки, достаточно установить для него идентификатор пользовательской настройки:

ЭлементОтбораВНастройках.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор; 

Настройки и Пользовательские настройки могут накладываться друг на друга. В этом случае приоритет будут иметь Пользовательские настройки. Это легко проверить. Можно добавить на форму отчета объект «Отбор» из раздела Настроек, и добавить один из элементов отбора в пользовательские настройки. В этом случае в пользовательском режиме можно установить один и тот же элемент отбора в Настройках и в Пользовательских настройках:    

Слияние настроек

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

 

Фиксированные настройки

А это уже отдельный, не связанный с другими, вариант настроек. Предполагается, что Фиксированные настройки не доступны для интерактивного редактирования ни в конфигураторе ни в 1С-предприятии. Это не совсем так. Вы можете добавить на форму отчета или динамического списка раздел «Отбор» фиксированных настроек. Это даст возможность редактировать их в пользовательском режиме.

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

Еще одно отличие от Настроек и Пользовательских настроек заключается в том, что Фиксированные настройки применяются ко всем вариантам отчета.

Важно иметь в виду, что при наложении Фиксированных настроек и Настроек или Пользовательских настроек будет вызвано исключение:

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

 

Доступ к настройкам в процедуре модуля отчета «ПриКомпоновкеРезультата»

В процедуре «ПриКомпоновкеРезультата», можно получить доступ к настройкам через схему компоновки или компоновщик настроек. Получить настройки можно следующим образом:

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

КомпоновщикНастроек.ПолучитьНастройки() – результирующие настройки, которые получены путем совмещения Настроек, Пользовательских настроек и Фиксированных настроек.

Также через компоновщик можно получить непосредственно тот или иной вариант настроек (Пользовательские, Фиксированные…).

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

Следует иметь в виду, что если используются результирующие настройки и отчет формируется стандартным способом, необходимо загрузить исправленные результирующие настройки обратно в компоновщик настроек:

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

 

Программная работа с отборами

Наиболее частый вариант программной работы с настройками компоновки - это работа с отборами.

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

 

Отбор может быть изменен пользователями в настройках

Оба эти варианты используются для установки отборов, которые в последствие могут быть изменены пользователями.  

Вариант 1. Отбор целиком добавлен в пользовательские настройки:

ОтборНастройки = Отчет.КомпоновщикНастроек.Настройки.Отбор;

//Поиск элемента пользовательских настроек по уникальному идентификатору раздела настроек 
ОтборПользовательскиеНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ОтборНастройки.ИдентификаторПользовательскойНастройки);
ОтборПоСкладу = Неопределено;
ПолеКомпоновкиСклад = Новый ПолеКомпоновкиДанных("Склад");

//Поиск еже созданного ранее элемента отбора	
Для каждого ЭлементОтбора Из ОтборПользовательскиеНастройки.Элементы Цикл
   Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных")
             и ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиСклад Тогда
      ОтборПоСкладу = ЭлементОтбора;
      Прервать;
   КонецЕсли;	
КонецЦикла;

//Создание нового элемента отбора в пользовательских настройках	
Если ОтборПоСкладу = Неопределено Тогда
   ОтборПоСкладу = ОтборПользовательскиеНастройки.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ОтборПоСкладу.ЛевоеЗначение = ПолеКомпоновкиСклад;
   ОтборПоСкладу.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
  
   //Для вывода отбора в быстром доступе необходимо обязательно назначить идентификатор пользовательской настройки
   ОтборПоСкладу.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
   СоздатьЭлементыФормыПользовательскихНастроек();
КонецЕсли;
	
ОтборПоСкладу.Использование = Истина;
ОтборПоСкладу.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборПоСкладу.ПравоеЗначение = Склад;

 

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

В пользовательском режиме, отбор будет доступен в форме отчета (так как указан режим отображения - быстрый доступ) и на закладке «Отбор»:

Отбор в пользовательских настройках

 

Вариант 2. Отбор добавлен в настройках и включен в пользовательские настройки как отдельный элемент:

ОтборНастройки = Отчет.КомпоновщикНастроек.Настройки.Отбор;
ЭлементыПользовательскиеНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы;
ОтборПоСкладу = Неопределено;
ПолеКомпоновкиСклад = Новый ПолеКомпоновкиДанных("Склад");
	
Для каждого ЭлементОтбора Из ОтборНастройки.Элементы Цикл
   Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных")
             и ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиСклад Тогда
      ОтборПоСкладу = ЭлементОтбора;
      Прервать;
   КонецЕсли;	
КонецЦикла;
	
Если ОтборПоСкладу = Неопределено Тогда
   ОтборПоСкладу = ОтборНастройки.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ОтборПоСкладу.ЛевоеЗначение = ПолеКомпоновкиСклад;
   ОтборПоСкладу.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Обычный;
   
   //Создаем идентификатор пользовательской настройки, чтобы отбор добавился в пользовательские настройки
   ОтборПоСкладу.ИдентификаторПользовательскойНастройки = Новый УникальныйИдентификатор;
   СоздатьЭлементыФормыПользовательскихНастроек();
КонецЕсли;
	
//Находим отбор в пользовательских настройках по идентификатору
ОтборПоСкладуПользовательскиеНастройки = ЭлементыПользовательскиеНастройки.Найти(ОтборПоСкладу.ИдентификаторПользовательскойНастройки);
ОтборПоСкладуПользовательскиеНастройки.Использование = Истина;
ОтборПоСкладуПользовательскиеНастройки.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборПоСкладуПользовательскиеНастройки.ПравоеЗначение = Склад;

В этом случае работа происходит с коллекцией «Элементы» раздела Настроек «Отбор». Нужно указать идентификатор пользовательской настройки, для добавления отбора в Пользовательские настройки. Далее выполняется поиск добавленного отбора в Пользовательских настройках и настройка параметров отбора: использование, вид сравнения и правое значение.

В пользовательском режиме отбор будет виден только на первой закладке настроек. На закладке «Отбор» его не будет:

Отбор в настройках

 

Отбор может быть изменен пользователями только при корректировке варианта отчета   

ОтборНастройки = Отчет.КомпоновщикНастроек.Настройки.Отбор;
ОтборПоСкладу = Неопределено;
ПолеКомпоновкиСклад = Новый ПолеКомпоновкиДанных("Склад");
	
Для каждого ЭлементОтбора Из ОтборНастройки.Элементы Цикл
   Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных")
            и ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиСклад Тогда
      ОтборПоСкладу = ЭлементОтбора;
      Прервать;
   КонецЕсли;	
КонецЦикла;
	
Если ОтборПоСкладу = Неопределено Тогда
   ОтборПоСкладу = ОтборНастройки.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ОтборПоСкладу.ЛевоеЗначение = ПолеКомпоновкиСклад;
КонецЕсли;
	
ОтборПоСкладу.Использование = Истина;
ОтборПоСкладу.ВидСравнения  = ВидСравненияКомпоновкиДанных.Равно;
ОтборПоСкладу.ПравоеЗначение = Склад;

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

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

В пользовательском режиме отбор будет доступен только при корректировке варианта отчета:

Отбор в настройках 2

А что же будет, если режим отображения отбора сделать недоступным?

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

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

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

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

 

Отбор не может быть изменен пользователями:

ОтборНастройки = Отчет.КомпоновщикНастроек.ФиксированныеНастройки.Отбор;
ОтборПоСкладу = Неопределено;
ПолеКомпоновкиСклад = Новый ПолеКомпоновкиДанных("Склад");
	
Для каждого ЭлементОтбора Из ОтборНастройки.Элементы Цикл
   Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных")
             и ЭлементОтбора.ЛевоеЗначение = ПолеКомпоновкиСклад Тогда
      ОтборПоСкладу = ЭлементОтбора;
      Прервать;
   КонецЕсли;	
КонецЦикла;
	
Если ОтборПоСкладу = Неопределено Тогда
   ОтборПоСкладу = ОтборНастройки.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   ОтборПоСкладу.ЛевоеЗначение = ПолеКомпоновкиСклад;
КонецЕсли;
	
ОтборПоСкладу.Использование = Истина;
ОтборПоСкладу.ВидСравнения  = ВидСравненияКомпоновкиДанных.Равно;
ОтборПоСкладу.ПравоеЗначение = Склад;

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

 Слияние фиксированных настроек

 

БСП нам в помощь

В современных конфигурациях можно использовать типовую процедуру из БСП:  

КомпоновкаДанныхКлиентСервер.ДобавитьОтбор(
	НастройкиКомпоновки, 
	Новый ПолеКомпоновкиДанных("Склад"),
	Склад,
	ВидСравненияКомпоновкиДанных. Равно,
	Использование,
	Новый Струкура("ВПользовательскиеНастройки, ЗаменятьСуществующий", Истина, Истина);

Параметр «НастройкиКомпоновки» может принимать значение следующих типов:

  • КомпоновщикНастроекКомпоновкиДанных,
  • НастройкиКомпоновкиДанных,
  • ОтборКомпоновкиДанных.

В случае, если передан компоновщик настроек, есть возможность добавить отбор как в Настройки так и в Пользовательские настройки.

К сожалению нет возможности добавить добавленный отбор в быстрый доступ или сделать отбор недоступным.

 

Работа с остальными настройками

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

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

Добавление группировок в Настройки:

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

//Создание второй группировки в структуре первой 	
Группировка2 = Группировка1.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = Группировка2.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Группировка2");

 

Добавление группировок в Пользовательские настройки:

СтруктураНастройки = Отчет.КомпоновщикНастроек.Настройки.Структура;

//Поиск элемента пользовательских настроек по уникальному идентификатору раздела настроек 
СтруктураПользовательскиеНастройки = Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(СтруктураНастройки.ИдентификаторПользовательскойНастройки);

Группировки = СтруктураПользовательскиеНастройки.Структура;
Группировки.Очистить();
Группировка1 = Группировки.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = Группировка1.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Группировка1");
	
Группировка2 = Группировки.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
ПолеГруппировки = Группировка2.ПоляГруппировки.Элементы.Добавить(Тип("ПолеГруппировкиКомпоновкиДанных"));
ПолеГруппировки.Поле = Новый ПолеКомпоновкиДанных("Группировка2");

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

На этом все, спасибо за внимание. Успехов Вам в программной работе с СКД!

Для ознакомления с предыдущими моими статьями по СКД можно перейти по ссылкам ниже:

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. uno-c 158 27.01.20 20:39 Сейчас в теме
Не сразу нашел место, чтобы поставить плюс. Обычно это оранжевый квадратик, который сразу видно. А тут нечто серое, едва заметное, потому что еще никто не плюсовал )
2. user623969_dusa 28.01.20 08:14 Сейчас в теме
друзей корректоров нет ладно в тексте но в заголовке
"немного теориии" немного в смысле наречия мало пишется слитно
3. json 2708 28.01.20 08:21 Сейчас в теме
А знает кто-нибудь зачем в пользовательских настройках есть методы Добавить() и Вставить() ?
Добавление то происходит через присвоение идентификатора пользовательской настройки для настройки.
Чисто интересно, зачем добавлены эти методы?
Которые, кстати, мне так и не удалось заставить работать (когда-то давно пробовал это сделать)
4. Kaval88 116 28.01.20 08:41 Сейчас в теме
А в чём новизна публикации? При необходимости можно всё найти в синтакс-помощнике.
5. json 2708 28.01.20 09:29 Сейчас в теме
(4) Все можно где-то найти.
Чем больше статей на сложные темы с разных точек зрения, тем меньше времени придется потратить, чтобы найти ответ в нужный момент.
Вроде очевидная логика, нет?
o.nikolaev; nadi_bar; logarifm; ids79; aspirin4eg; +5 1 Ответить
6. VmvLer 28.01.20 09:51 Сейчас в теме
(4) согласен хотелось бы подробностей об областях знаний которые мало кем исследованы, например анализ данных и прочие области с нулевым опытом у 99% спецов.

а эта статья - простая компиляция известных всем фактов, может быть полезна очень ленивым новичкам которые открыли для себя адинэс сегодня у уже хотят получать 100500.
lunjio; user1274438; Kaval88; +3 5 Ответить
9. aspirin4eg 28.01.20 11:59 Сейчас в теме
(6) Эта статья представляет из себя выжимку и структурированный материал, который позволяет упорядочить разрозненные данные из множества разделов СП и документации. Если бы все можно было "просто почитать", преподаватели с университетами были бы не нужны. Такие статьи тоже важны и нужны и, если они не нужны Вам лично, это не повод кричать, что статья "проходняк". В конце-концов Вы тоже были когда-то "ленивым-новичком" у которого было миллион вопросов.
RedIn; Aggressorak; o.nikolaev; JustaUser; nekit_rdx; ids79; +6 Ответить
13. json 2708 29.01.20 07:45 Сейчас в теме
(6) а откуда тебе знать, что нужно 99%-м спецов?
Ты хоть с одним из них общался?

Ты можешь говорить только за диванных спецов, и причем только за одного.

У тебя 99% комментариев о том, что тебя что-то не устраивает.
Этот комментарий не исключение.

Вот если бы ты на деле показал, что действительно в чем-то разбираешься, написав об этом статью.
То тогда можно было бы с тобой о чем-то поговорить
dominatorwarr; ids79; the1; +3 1 Ответить
15. VmvLer 29.01.20 09:37 Сейчас в теме
(13) смысл балоболить, помню во времена расцвета 77 когда франчевая поросль покоряла страну спецы(без кавычек) завели моду ходить по пивбарам и обсуждать там тонкости технологий, может и сейчас там пузо греют. Короче, я не любитель такого чеса, а попинать профана всегда пожалуйста.
чяднт?

если ваша картина мира другая, то и варитесь в в ней без истерик.
11. ids79 5712 28.01.20 20:28 Сейчас в теме
(4)А зачем вообще ИС? Ведь все можно найти в технической документации.
nekit_rdx; logarifm; +2 1 Ответить
12. Kaval88 116 28.01.20 20:37 Сейчас в теме
(11)Вопрос про актуальность статьи, в 2010-2011 году было бы актуально, сейчас увы, тема заезжана.
14. json 2708 29.01.20 07:51 Сейчас в теме
(12) данная статья за один день набрала в полтора раза больше рейтинга, чем все твои публикации вместе взятые, начиная с 2016 года.
А по каким показателям судишь ты, говоря об актуальности?

Почему ты уверен, что более компетентен в данном вопросе, чем автор данной статьи?
dominatorwarr; o.nikolaev; user1361799; +3 1 Ответить
16. VmvLer 29.01.20 09:40 Сейчас в теме
(14) тема просто попсовая и популярна у студентов и прочей ленивой братии, ну это как ток-шоу с Шурыгиной.
старички бухтят, ну она же такая-сякая, а молодняк плюсует "на доннышке"
НА ИС главное выбрать в тему попсу и плюсы обеспечены, причем истина не важна.
18. logarifm 1080 29.01.20 10:27 Сейчас в теме
(11)ага и еще можно найти на ИТС. А еще почему-то люди ленятся читать документацию БСП. У Вас хорошо выходит ее интерпритировать - продолжайте в этом же духе. Вот сейчас проект вообще конфигурацию с нуля на базе БСП - там есть много интересного , когда ты начинаешь все это сам прощупивать по каждой подсистеме. Вот все жду может кто решится написать статью относительно БСП 3, а самое главное - это изменение доступов и их еконтроля. Может у Вас будет к этому желание ;)
21. ids79 5712 30.01.20 08:52 Сейчас в теме
(18)У меня было несколько статей на тему прав доступа. Посмотрите, может быть это то, что Вам нужно.
22. logarifm 1080 30.01.20 11:03 Сейчас в теме
(21) интересует именно БСП 3. Уже есть может чего я пропустил?
25. user1194102 09.02.20 10:58 Сейчас в теме
(18) Хорошо демонстировать эрудированность за чужой счет, напишите сами подобную статью и сравним у кого более полезная получилась, мне например понравилась статья автора, не смогу по вашему совету зайти в БСП с нуля, так нет даже нуля от БСП, у меня УПП)
7. al_zzz 173 28.01.20 11:32 Сейчас в теме
Я - человек простой. Вижу очередную статью Дмитрия Иванова - плюсую!
nadi_bar; ids79; bulpi; +3 Ответить
8. aspirin4eg 28.01.20 11:53 Сейчас в теме
Спасибо за статью! Все очень подробно разжевано и структурировано. Многое, о чем знал или знал смутно, стало понятно, и смог в голове разложить по полочкам. Теперь СКД все менее представляется мне черным ящиком.
10. YPermitin 9676 28.01.20 12:33 Сейчас в теме
(0) и еще одна отличная статья!

+
o.nikolaev; davdykin; ids79; +3 Ответить
17. logarifm 1080 29.01.20 10:23 Сейчас в теме
(0) не читая + . Автор в адеквате всегда по теме то что надо пишет.
19. the1 598 29.01.20 10:38 Сейчас в теме
На заметку. Среди реквизитов динамического списка присутствуют элементы настроек компоновки

Прошу пардону, если ошибаюсь, но разве это корректное утверждение? Может, среди реквизитов компоновщика настроек динамического списка?
20. ids79 5712 30.01.20 07:34 Сейчас в теме
(19)Возможно не совсем корректно выразился. Я имел в виду, что они вынесены на один уровень с реквизитами динамического списка.
23. davdykin 25 30.01.20 20:50 Сейчас в теме
Отличная статья, большое спасибо за логичное и доступное изложение.
24. user1194102 09.02.20 10:52 Сейчас в теме
Статья хорошая спасибо, есть что посмотреть и поразбираться. Не могли бы вы выложить еще статью в продолжение к этой, как с помощью кода в скд вывести данные не в типовой макет скд "ОсновнаяСхемаКомпановки", а в произвольный макет (унифицированную форму) что-то типа счет или Счет фактура?
o.nikolaev; ids79; +2 Ответить
26. Flyerink 19 27.02.20 16:08 Сейчас в теме
Спасибо за статью! Помогла разложить по полочкам отрывистые знания.
Особенно выручила инфа
КомпоновщикНастроек.ЗагрузитьНастройки(СкорректированныеНастройки);

Долго искал причину, почему мои программные настройки срабатывают после повторного формирования отчета...
Оставьте свое сообщение

См. также

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    37204    unichkin    72    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

15.01.2020    22863    John_d    22    

Последовательности событий. Шпаргалка

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    17432    kuzyara    33    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    16843    YPermitin    72    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    30043    tormozit    100    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    8240    Sibars    19    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    32310    Yashazz    50    

СКД. Отчеты с картинками

Практика программирования Работа с интерфейсом v8::СКД 1cv8.cf Бесплатно (free)

Решение популярных кейсов с картинками в отчетах на СКД.

25.09.2019    20739    YPermitin    37    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    77787    tormozit    131    

СКД не только для отчетов

Практика программирования v8::СКД 1cv8.cf Бесплатно (free)

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

18.09.2019    19165    YPermitin    36    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

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

06.09.2019    48149    rpgshnik    63    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    48212    ids79    54    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    48151    tormozit    41    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    27803    YPermitin    24    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    25305    YPermitin    80    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

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

17.08.2019    31067    ids79    16    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    44592    tormozit    74    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    79145    ids79    49    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

Как легко запускать выполнение в фоне, не прибегая к долгому описанию фоновых процедур.

02.08.2019    34244    avalakh    22    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    23177    json    13    

Выгрузка документа по условию Промо

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    16006    m-rv    2    

Процедура ПриКомпоновкеРезультата

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

Коллекция кода

1 стартмани

26.07.2019    36834    vasilev2015    64    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    57893    ids79    11    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    35337    ids79    27    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    20125    m-rv    17    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    25818    YPermitin    14    

Пользовательские настройки системы компоновки данных

Практика программирования Работа с интерфейсом v8 v8::СКД 1cv8.cf Бесплатно (free)

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

09.07.2019    25636    ids79    2    

"Меньше копипаста!", или как Вася универсальную процедуру писал

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

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    19540    SeiOkami    50    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

В статье приведены особенности внутренней архитектуры и примеры работы с расширением языка запросов 1С.

01.06.2018    30445    m-rv    21    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

02.07.2019    45217    ids79    17    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    51512    ids79    25    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    24797    dmurk    145    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Вариант решения задач с проведением по типовым регистрам нетиповыми регистраторами. Зачем - чтобы при сравнении конфигурации не обращать внимание на свойства регистров и исключить вероятность допущения горькой оплошности при обновлении информационных баз, заменив типы регистраторов основной конфигурации типами конфигурации поставщика. Для программных продуктов, имеющих в своем составе метаданных документ "Корректировка регистров"("Корректировка записей регистров").

05.12.2017    28192    itriot11    34    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    42312    YPermitin    30    

Выполнение внешней обработки в фоновом задании

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    29220    Eret1k    23    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    35084    ellavs    126    

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    76151    Serginio    108    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    27270    ellavs    88    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    31082    YPermitin    53    

Добавление отчетов в типовые конфигурации 1С

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

Описание различных способов добавления общих и контекстных отчетов в конфигурации 1С, построенные на базе БСП. Основные моменты и нюансы.

07.03.2019    53086    ids79    45    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    34451    ids79    40    

Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев

Практика программирования Vanessa Automation v8 Россия Бесплатно (free)

Формируем отчетность о результатах выполнения сценариев. Автоматизируем запуск.

26.02.2019    21741    Vladimir Litvinenko    27    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    38780    ids79    9    

Тестер: частые вопросы Промо

Практика программирования v8 Бесплатно (free)

Ошибкам бой - тесты норма жизни!

25.07.2018    29148    grumagargler    28    

EnterpriseData – часть 2. Процесс выгрузки данных

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Основные этапы выгрузки данных через ED, обработчики событий выгрузки, правила обработки данных, правила конвертации объектов, конвертация свойств первого и второго этапов, процедуры БСП, используемые при выгрузке данных, структура «КомпонентыОбмена».

26.12.2018    26535    ids79    31    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    40955    ids79    72    

Ускоряем 1С: модули с повторным использованием возвращаемых значений Промо

Практика программирования v8 Бесплатно (free)

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

04.09.2017    52451    m-rv    61    

EnterpriseData - пример доработки правил конвертации без использования КД 3.0 в расширении конфигурации

Практика программирования Обмен через XML v8 v8::УФ БП3.0 УТ11 Россия Бесплатно (free)

В статье подробно описан реальный пример доработки обмена данными через EnterpriseData (универсальный формат обмена) между конфигурациями УТ 11.4 и Бухгалтерия 3.0

16.11.2018    36689    ids79    42    

Программное заполнение пользовательских параметров и отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

13.11.2018    46675    Unk92    25