&НаСервере Процедура ОбновитьРейтинг() пЗапросВыручка = Новый Запрос("ВЫБРАТЬ | ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, | ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот КАК Выручка, | 1 КАК МестоПоВыручке, | 1 КАК МестоПоРентабельности, | 1 КАК МестоПоПрибыли, | 1 КАК МестоПоКоличеству, | 1 КАК Рейтинг, | 1 КАК МестоПоРейтингу, | ВыручкаИСебестоимостьПродажОбороты.СебестоимостьОборот, | ВЫБОР | КОГДА ВыручкаИСебестоимостьПродажОбороты.СебестоимостьОборот = 0 | ТОГДА 0 | ИНАЧЕ ВЫРАЗИТЬ(100 * (ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот - ВыручкаИСебестоимостьПродажОбороты.СебестоимостьОборот) / ВыручкаИСебестоимостьПродажОбороты.СебестоимостьОборот КАК ЧИСЛО(10, 0)) | КОНЕЦ КАК Рентабельность, | ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот - ВыручкаИСебестоимостьПродажОбороты.СебестоимостьОборот КАК Прибыль, | ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот КАК Количество |ИЗ | РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты КАК ВыручкаИСебестоимостьПродажОбороты | |УПОРЯДОЧИТЬ ПО | ВыручкаИСебестоимостьПродажОбороты.СуммаВыручкиОборот"); пРез = пЗапросВыручка.Выполнить().Выгрузить(); //установка места по выручке пИндекс = пРез.Количество(); Для Каждого пСтрокаРез Из пРез Цикл пСтрокаРез.МестоПоВыручке = пИндекс; пИндекс = пИндекс - 1; КонецЦикла; //установка места по рентабельности пИндекс = пРез.Количество(); пРез.Сортировать("Рентабельность"); Для Каждого пСтрокаРез Из пРез Цикл пСтрокаРез.МестоПоРентабельности = пИндекс; пИндекс = пИндекс - 1; КонецЦикла; //установка места по прибыли пИндекс = пРез.Количество(); пРез.Сортировать("Прибыль"); Для Каждого пСтрокаРез Из пРез Цикл пСтрокаРез.МестоПоПрибыли = пИндекс; пИндекс = пИндекс - 1; КонецЦикла; //установка места по количеству пИндекс = пРез.Количество(); пРез.Сортировать("Количество"); Для Каждого пСтрокаРез Из пРез Цикл пСтрокаРез.МестоПоКоличеству = пИндекс; пИндекс = пИндекс - 1; КонецЦикла; //установка рейтинга Для Каждого пСтрокаРез Из пРез Цикл пСтрокаРез.Рейтинг = пСтрокаРез.МестоПоКоличеству + пСтрокаРез.МестоПоРентабельности + пСтрокаРез.МестоПоПрибыли + пСтрокаРез.МестоПоВыручке; КонецЦикла; //установка места по рейтингу пИндекс = пРез.Количество(); пРез.Сортировать("Рейтинг Убыв"); Для Каждого пСтрокаРез Из пРез Цикл пСтрокаРез.МестоПоРейтингу = пИндекс; пИндекс = пИндекс - 1; КонецЦикла; Для Каждого пСтрокаРез Из пРез Цикл пОбъект = пСтрокаРез.Номенклатура.получитьОбъект(); пОбъект.Рейтинг = пСтрокаРез.МестоПоРейтингу; пОбъект.Записать(); //пСтрокаРез.МестоПоРейтингу = пИндекс; //пИндекс = пИндекс - 1; КонецЦикла; КонецПроцедуры &НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) ОбновитьРейтинг(); ПоказатьОповещениеПользователя("Рейтинг обновлен",,"Рейтинг обновлен"); КонецПроцедуры