Посты от Июнь, 2010

Как изменить отбор программно

Ваш отзывFavoriteLoadingВ закладки

Эта тема тоже достаточна распространена. Нюанс программного изменения отбора заключается в том, что коллекция:

КомпоновщикНастроек.Настройки.Отбор.Элементы

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

Приведу пример универсальной функции для изменения отбор компоновки данных:

Эта тема тоже достаточна распространена. Нюанс программного изменения отбора заключается в том, что коллекция: КомпоновщикНастроек.Настройки.Отбор.Элементы в отличие от аналогичной коллекции параметров, не имеет метода Найти(). Можно конечно изменять отбор “в лоб”, т.е. по индексу, но это не есть хорошо. Самый оптимальный вариант, обходить все поля отбора в цикле. Приведу пример универсальной функции для изменения отбор компоновки данных: //Ищет отбор в компоновщике настроек по параметрам, заданным через //"СоответствиеПоискаОтбора", и заменяет //на отбор с параметрами, указанными в "СоответствиеНовогоОтбора" Процедура ИзменитьОтбор(ЭлементСтруктуры, СоответствиеПоискаОтбора = Неопределено, СоответствиеНовогоОтбора) Экспорт Если ТипЗнч(ЭлементСтруктуры) = Тип("КомпоновщикНастроекКомпоновкиДанных")  Тогда Отбор = ЭлементСтруктуры.Настройки.Отбор; Иначе Отбор = ЭлементСтруктуры; КонецЕсли; Если ТипЗнч(СоответствиеНовогоОтбора["ЛевоеЗначение"]) = Тип("Строка") Тогда нПоле = Новый ПолеКомпоновкиДанных(СоответствиеНовогоОтбора.ЛевоеЗначение); Иначе нПоле = СоответствиеНовогоОтбора["ЛевоеЗначение"]; КонецЕсли; Если СоответствиеНовогоОтбора.Получить("ВидСравнения") = Неопределено Тогда нВидСравнения = ВидСравненияКомпоновкиДанных.Равно; Иначе нВидСравнения = СоответствиеНовогоОтбора["ВидСравнения"]; КонецЕсли; Если СоответствиеНовогоОтбора.Получить("Использование") = Неопределено Тогда нИспользование = Истина; Иначе нИспользование = СоответствиеНовогоОтбора["Использование"]; КонецЕсли; нЗначение = СоответствиеНовогоОтбора["Значение"]; ТолькоПоЛевомуЗначению = Ложь; Если СоответствиеПоискаОтбора = Неопределено Тогда ТолькоПоЛевомуЗначению = Истина; КонецЕсли; сЛевоеЗначение = СоответствиеПоискаОтбора.Получить("ЛевоеЗначение"); Если сЛевоеЗначение = Неопределено Тогда сЛевоеЗначение = нПоле; КонецЕсли; сВидСравнения = СоответствиеПоискаОтбора.Получить("ВидСравнения"); Если ВидСравнения = Неопределено Тогда сВидСравнения = ВидСравнения; КонецЕсли; сИспользование = СоответствиеПоискаОтбора.Получить("Использование"); Если сИспользование = Неопределено Тогда сИспользование = нИспользование; КонецЕсли; Для каждого ЭлементОтбора Из Отбор.Элементы Цикл Если ТолькоПоЛевомуЗначению Тогда НайденныйОтбор = ЭлементОтбора; Прервать; Иначе Если (ЭлементОтбора.ЛевоеЗначение = сЛевоеЗначение) И (ЭлементОтбора.ВидСравнения = сВидСравнения) И (ЭлементОтбора.Использование = сИспользование) Тогда НайденныйОтбор = ЭлементОтбора; Прервать; КонецЕсли; КонецЕсли; КонецЦикла; Если НайденныйОтбор <> Неопределено Тогда НайденныйОтбор.ЛевоеЗначение = нПоле; НайденныйОтбор.Использование = нИспользование; НайденныйОтбор.ВидСравнения = нВидСравнения; НайденныйОтбор.ПравоеЗначение = нЗначение; КонецЕсли; КонецПроцедуры Пример вызова процедуры: СоответствиеПоискаОтбора = Новый Соответствие; СоответствиеПоискаОтбора.Вставить("ЛевоеЗначение",Новый ПолеКомпоновкиДанных("Наименование")); СоответствиеПоискаОтбора.Вставить("ВидСравнения",ВидСравненияКомпоновкиДанных.Содержит); СоответствиеПоискаОтбора.Вставить("Использование",Истина); СоответствиеНовогоОтбора = Новый Соответствие; СоответствиеНовогоОтбора.Вставить("ЛевоеЗначение",Новый ПолеКомпоновкиДанных("Наименование")); СоответствиеНовогоОтбора.Вставить("ВидСравнения",ВидСравненияКомпоновкиДанных.Содержит); СоответствиеНовогоОтбора.Вставить("Использование",Истина); СоответствиеНовогоОтбора.Вставить("Значение","бла-бла-бла"); ИзменитьОтбор(КомпоновщикНастроек,СоответствиеПоискаОтбора,СоответствиеНовогоОтбора);...

Далее

Вывод полей в нужной колонке

Отзывов (15)FavoriteLoadingВ закладки

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

Часто возникают вопросы «как в СКД сделать свои итоги», «как определенные поля выводить только в нужном месте».  Начнем рассказ. Наша цель  – посчитать среднюю цену продажи и вывести ее в нужном месте. Запрос: ВЫБРАТЬ ПродажиОбороты.Подразделение, ПродажиОбороты.Номенклатура, ПродажиОбороты.КоличествоОборот, ПродажиОбороты.СтоимостьОборот, 0 КАК Цена ИЗ РегистрНакопления.Продажи.Обороты({(&НачалоПериода)}, {(&КонецПериода)}, Период, {(Номенклатура).*, (ХарактеристикаНоменклатуры).*, (ЗаказПокупателя).*, (ДоговорКонтрагента).*, (ДоговорКонтрагента.Владелец).* КАК Покупатель, (ДокументПродажи).*, (Подразделение).*}) КАК ПродажиОбороты Цену рассчитываем в ресурсах: ВЫБОР КОГДА ЕСТЬNULL(СУММА(КоличествоОборот), 0) = 0 ТОГДА 0 ИНАЧЕ ЕСТЬNULL(СУММА(СтоимостьОборот), 0) / СУММА(КоличествоОборот) КОНЕЦ Добавим вычисляемое поле, назовем его «ДополнительнаяКолонка». Конструктором настроек формируем таблицу, в строках «Номенклатура», в колонках «Подразделение». В колонки добавляем группировку «ДополнительнаяКолонка». Мы хотим, чтобы поле «Цена» не выводилась в итогах. Для этого итоги нужно «переопределить». Отключим стандартный вывод горизонтальных итогов. В группировке «ДополнительнаяКолонка» изменим состав выводимых полей следующим образом. Зададим заголовок группировке в условном оформлении. В результате наш отчет выглядит так. Желаем чтобы, поле «Цена» не было в группировке «Подразделение» а в итогах пусть будет. Изменим состав выводимых полей в группировке «Подразделение» следующим образом. А в группировке «ДополнительнаяКолонка» так. Теперь наш отчет выглядит так. Вот и все....

Далее

Рекомендации к публикации статей

Ваш отзывFavoriteLoadingВ закладки

В этой статье пойдет речь об основных правилах публикации Ваших статей. Пойдем по пунктам.

  1. Мы рады любому Вашему начинанию в качестве автора, но постарайтесь все таки сначала поискать по сайту похожий материал, и проанализировать его.
  2. Соблюдайте (ну хотя бы старайтесь соблюдать) правила орфографии и пунктуации.
  3. Еще раз проанализируйте содержание Вашей публикации, и укажите заголовок, рубрику, а также метки для Вашей публикации наиболее точно. (Конечно, мы будем стараться модерировать статьи, но, хотелось бы, чтобы наши изменения стремились к нулю.
В этой статье пойдет речь об основных правилах публикации Ваших статей. Пойдем по пунктам. Мы рады любому Вашему начинанию в качестве автора, но постарайтесь все таки сначала поискать по сайту похожий материал, и проанализировать его. Соблюдайте (ну хотя бы старайтесь соблюдать) правила орфографии и пунктуации. Еще раз проанализируйте содержание Вашей публикации, и укажите заголовок, рубрику, а также метки для Вашей публикации наиболее точно. (Конечно, мы будем стараться модерировать статьи, но, хотелось бы, чтобы наши изменения стремились к нулю....

Далее

Как добавить отбор программно

Отзывов (4)FavoriteLoadingВ закладки

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

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

НовыйЭлементОтбора.ЛевоеЗначение  = ПолеОтбора;
НовыйЭлементОтбора.Использование  = Истина;
НовыйЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
НовыйЭлементОтбора.ПравоеЗначение = Значение;

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

Далее

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

Отзывов (11)FavoriteLoadingВ закладки

О рубрике

Данный цикл статей, по сути, будет обычным FAQ по вопросам СКД. Здесь вы найдете ответы на самые часто задаваемые вопросы по компоновке. Думаю, данный раздел будет очень полезным.

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

Как же установить параметр в СКД программно

Устанавливать параметр будем в ПриОткрытии:

Процедура ПриОткрытии()
   ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.
                                 Элементы.Найти("ИмяПараметра")
   ПараметрСКД.Использование = Истина;
   ПараметрСКД.Значение  = Значение;
КонецПроцедуры
О рубрике Данный цикл статей, по сути, будет обычным FAQ по вопросам СКД. Здесь вы найдете ответы на самые часто задаваемые вопросы по компоновке. Думаю, данный раздел будет очень полезным. Естественно, первым вопросом, на который мы дадим ответ, будет тот, что указан в заголовке. Этот вопрос задавался на 1с-ных форумах миллионы раз, но новички упорно спрашивают вновь и вновь. Так зафиксируем же ответ, и будем кидаться в новичков этой ссылкой. Как же установить параметр в СКД программно Устанавливать параметр будем в ПриОткрытии: Процедура ПриОткрытии() ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных. Элементы.Найти("ИмяПараметра") ПараметрСКД.Использование = Истина; ПараметрСКД.Значение = Значение; КонецПроцедуры Перейти к...

Далее
Страница 1 из 212

Авторизация

Логин:
Пароль:
Регистрация

Архивы

Закладки

  • Your favorites will be here.