Как сформировать диаграмму с типом Круговая В этом примере показано как сформировать диаграмму с типом Круговая, которая выглядит:
Настройки
Код
Код 1C v 8.х Состояние("Формирование диаграммы продаж");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа КАК НоменклатураНоменклатурнаяГруппа,
| КОЛИЧЕСТВО(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот,
| СУММА(0) КАК Проц
|ИЗ
| РегистрНакопления.Продажи.Обороты(
| &ND,
| &KD,
| Запись,
| Организация = &Org
| И ДоговорКонтрагента.Менеджер В ИЕРАРХИИ (&Mened)) КАК ПродажиОбороты
|
|СГРУППИРОВАТЬ ПО
| ПродажиОбороты.Номенклатура.НоменклатурнаяГруппа
|
|УПОРЯДОЧИТЬ ПО
| НоменклатураНоменклатурнаяГруппа
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("KD",КонПериодаР);
Запрос.УстановитьПараметр("Mened", МенеджерОПР);
Запрос.УстановитьПараметр("ND", НачПериодаР);
Запрос.УстановитьПараметр("Org", ДляОрганизацииОР);
Результат = Запрос.Выполнить();
Выборка = Результат.Выгрузить();
итог = Выборка.Итог("КоличествоОборот");
Для каждого СтрокаТЗ Из Выборка Цикл
СтрокаТЗ.Проц = Окр(СтрокаТЗ.КоличествоОборот*100/итог,2);
КонецЦикла;
ДиаграммаВП = ЭлементыФормы.ДиаграммаОР;
Для Каждого СтрТраб из Выборка Цикл
Серия=ДиаграммаВП.Серии.Добавить(?(ЗначениеЗаполнено(СтрТраб.Получить(0).Наименование), СтрТраб.Получить(0).Наименование+" - "+Строка(СтрТраб.Получить(2))+"%","Без группы"));
Попытка
ДиаграммаВП.УстановитьЗначение(1,Серия,?(СтрТраб.Получить(2)=Неопределено,0,СтрТраб.Получить(2)));
Исключение
// такого не должно быть, но на всякий случай
КонецПопытки;
КонецЦикла;
Категория:
Диаграмма Как в запросе объединить несколько значений в один столбец отобрав по условию? Бывают ситуации, особенно когда формируешь отчеты по проводкам, где надо вывести отчет по одному типу значений и эти значения могут быть в разных колонках регистра.
В примере ниже, необходимо собрать отчет в разбивке по Номенклатурным группам.
Проводки разные - поэтому Субконто с типом Номенклатурная группа может быть как Дт1 и Дт2 или Дт3
Пример запроса объединяющий несколько значений в один столбец отобрав по условию и собирающий данные по этим условиям:
Код 1C v 8.х Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВЫБОР
| КОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1 ССЫЛКА Справочник.НоменклатурныеГруппы
| ТОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт1
| КОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт2 ССЫЛКА Справочник.НоменклатурныеГруппы
| ТОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт2
| КОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт3 ССЫЛКА Справочник.НоменклатурныеГруппы
| ТОГДА ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.СубконтоДт3
| КОНЕЦ КАК Измерение,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.LOCATION_ACTIVITY,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.REVENUE_COST_CENTER,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Сумма,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Организация,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Комментарий,
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка КАК Документ
|ПОМЕСТИТЬ втПоИзмерениям
|ИЗ
| Документ.ОтражениеЗарплатыВРеглУчете.ОтражениеВУчете КАК ОтражениеЗарплатыВРеглУчетеОтражениеВУчете
|ГДЕ
| ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.Проведен
| И ОтражениеЗарплатыВРеглУчетеОтражениеВУчете.Ссылка.ПериодРегистрации МЕЖДУ &НачалоПериода И &ОкончаниеПериода
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| втПоИзмерениям.Измерение,
| втПоИзмерениям.LOCATION_ACTIVITY,
| втПоИзмерениям.REVENUE_COST_CENTER,
| втПоИзмерениям.Сумма,
| втПоИзмерениям.Организация,
| втПоИзмерениям.Комментарий,
| втПоИзмерениям.Документ
|ИЗ
| втПоИзмерениям КАК втПоИзмерениям
|ГДЕ
| втПоИзмерениям.Измерение ССЫЛКА Справочник.НоменклатурныеГруппы";
Запрос.УстановитьПараметр("НачалоПериода", Дата("01.09.2014 0:00:00"));
Запрос.УстановитьПараметр("ОкончаниеПериода", Дата("30.09.2014 23:59:59"));
Результат = Запрос.Выполнить();
Выборка = Результат.Выгрузить();
Для каждого СтрокаТЗ Из Выборка Цикл
КонецЦикла;
Категория:
Запросы Как получить уникальный идентификатор объекта, GUID? GUID (Globally Unique Identifier) — статистически уникальный 128-битный идентификатор. Его главная особенность — уникальность, которая позволяет создавать расширяемые сервисы и приложения без опасения конфликтов, вызванных совпадением идентификаторов. Хотя уникальность каждого отдельного GUID не гарантируется, общее количество уникальных ключей настолько велико (2128 или 3,402 * 10в38), что вероятность того, что в мире будут независимо сгенерированы два совпадающих ключа, крайне мала.
Для получения уникального идентификатора объекта, используйте код вида:
Код 1C v 8.х ГУИДССЫЛКИ = СсылкаНаОбъект.УникальныйИдентификатор();
// или
НоменклатураСсылка = Справочники.Номенклатура.НайтиПоКоду("00013");
Если НЕ НоменклатураСсылка.Пустая() Тогда
Сообщить("GUID = " + НоменклатураСсылка.УникальныйИдентификатор());
КонецЕсли;
Как с помощью запроса получить уникальный идентификатор:
Код 1C v 8.х Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.НаименованиеПолное,
| Номенклатура.ЕдиницаИзмерения,
| Номенклатура.СтавкаНДС,
| Номенклатура.НоменклатурнаяГруппа,
| Номенклатура.СчетУчетаЗапасов,
| Номенклатура.СчетУчетаЗатрат,
| Номенклатура.Ссылка,
| Номенклатура.ЭтоГруппа
| ИЗ
| Справочник.Номенклатура КАК Номенклатура";
РезультатЗапроса = Запрос.Выполнить();
СпрОбъект = РезультатЗапроса.Выбрать();
Пока СпрОбъект.Следующий() Цикл
СтрокаУИ = Объект.XMLСтрока(СпрОбъект.Ссылка);
GUID = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(СокрЛП(СтрокаУИ)));
КонецЦикла;
В 1С 7.7 можно получить так
Через v7plus.dll
Код 1C v 7.x Инфо = СоздатьОбъект("AddIn.V7SysInfo");
ГлобальноУникальныйИдентификатор = Инфо.СоздатьGUID();
Через WScript
Код 1C v 7.x Функция СоздатьGUID()
TypeLib = CreateObject("Scriptlet.TypeLib");
NewGUID = TypeLib.Guid();
TypeLib = "";
Возврат NewGUID;
КонецФункции
//*******************************************
Процедура Сформировать()
g=СоздатьGUID();
Сообщить("Создан GUID: "+g);
КонецПроцедуры
при OLE доступе:
Код 1C v 7.x Если Док_Источник.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода) = 1 Тогда
Пока Док_Источник.ПолучитьДокумент() = 1 Цикл
Объект = БазаОле.ЗначениеВстрокуВнутр(Док_Источник.ТекущийДокумент());
ИдентификаторДокумента = СокрЛП(ПолучитьИД(Объект));
// Для примера Объект возвращает {"O","0","0","3114","0","0"," 258156CB "},
// а ПолучитьИД(объект) = 258156CB
КонецЦикла;
Еще посмотрите метод:
ЗначениеВСтрокуВнутр(<?>);
Синтаксис:
ЗначениеВСтрокуВнутр(<Объект>)
Назначение:
Преобразование значения объекта агрегатного типа в строковое системное представление.
Возвращает: представление значения объекта в строковом системном виде.
Параметры:
<Объект> - значение объекта агрегатного типа данных которое нужно преобразовать.
Категория:
Встроенные Функции