#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
УстановитьУсловноеОформление();
СоответствиеТоваров = Неопределено;
ВыбранныеИсточники = Неопределено;
ДокументИсточник = Неопределено;
ДатаОкончанияРассмотрения = Неопределено;
Если Параметры.Свойство("СписокТоваров", СоответствиеТоваров) Тогда
Параметры.Свойство("ВыбранныеИсточники" , ВыбранныеИсточники);
Параметры.Свойство("ДатаОкончанияРассмотрения" , ДатаОкончанияРассмотрения);
Параметры.Свойство("ДокументИсточник" , ДокументИсточник);
Параметры.Свойство("Валюта" , Валюта);
Параметры.Свойство("КоличествоСтрок" , КоличествоСтрок);
Параметры.Свойство("ТолькоПросмотр" , ДокументТолькоПросмотр);
ПараметрыПроцедуры = Новый Структура;
ПараметрыПроцедуры.Вставить("СписокТоваров" , СоответствиеТоваров);
ПараметрыПроцедуры.Вставить("ВыбранныеИсточники" , ВыбранныеИсточники);
ПараметрыПроцедуры.Вставить("УникальныйИдентификатор" , УникальныйИдентификатор);
ПараметрыПроцедуры.Вставить("ДокументИсточник" , ДокументИсточник);
ПараметрыПроцедуры.Вставить("Валюта" , Валюта);
ПараметрыПроцедуры.Вставить("АнализируемыеИсточники" , ПолучитьДоступныеИсточники());
ПараметрыПроцедуры.Вставить("СравниватьСНДС" , Ложь);
ПараметрыПроцедуры.Вставить("ДатаОкончанияРассмотрения" , ДатаОкончанияРассмотрения);
ДлительнаяОперация = НачатьПолучениеТаблицыДанныхПредложений(ПараметрыПроцедуры);
Для Каждого СтрокаСт Из СоответствиеТоваров Цикл
СписокТоваров.Добавить(СтрокаСт.Ключ, СтрокаСт.Значение);
КонецЦикла;
СписокТоваров.СортироватьПоПредставлению(НаправлениеСортировки.Возр);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ПараметрыОжидания.ОповещениеПользователя.Показать = Ложь;
ПараметрыОжидания.ВыводитьСообщения = Истина;
ПараметрыОжидания.Интервал = 1;
ВыполнениеОперацииЗавершение = Новый ОписаниеОповещения(
"ПолучениеТаблицыДанныхПредложенийЗавершение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(ДлительнаяОперация,
ВыполнениеОперацииЗавершение,
ПараметрыОжидания);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыДокумент
&НаКлиенте
Процедура ДокументПриАктивизацииОбласти(Элемент)
Если Документ.ТекущаяОбласть.ТипОбласти = ТипОбластиЯчеекТабличногоДокумента.Строки Тогда
Возврат;
КонецЕсли;
Если Документ.ТекущаяОбласть.ИспользованиеРасшифровки <> ИспользованиеРасшифровкиТабличногоДокумента.БезОбработки Тогда
Возврат;
КонецЕсли;
Отбор = Новый Структура("ИдентификаторИсточника", Документ.ТекущаяОбласть.Расшифровка);
НайденнаяСтрока = СписокПредложений.НайтиСтроки(Отбор);
Если НайденнаяСтрока.Количество() > 0 Тогда
Элементы.СписокПредложений.ТекущаяСтрока = НайденнаяСтрока[0].ПолучитьИдентификатор();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДокументОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка, ДополнительныеПараметры)
СтандартнаяОбработка = Ложь;
Если Элементы.Документ.ТекущаяОбласть.Маска = "Поставщик" Тогда
ЭтоДокумент = Ложь;
ИначеЕсли Элементы.Документ.ТекущаяОбласть.Маска = "Источник" Тогда
ЭтоДокумент = Истина;
Иначе
Возврат;
КонецЕсли;
Отбор = Новый Структура("ИдентификаторИсточника", Расшифровка);
НайденнаяСтрока = СписокПредложений.НайтиСтроки(Отбор);
Если НайденнаяСтрока.Количество() > 0 Тогда
Если ЭтоДокумент Тогда
КоммерческиеПредложенияДокументыКлиентПереопределяемый.ПоказатьФормуИсточника(
НайденнаяСтрока[0].ИмяИсточника,
НайденнаяСтрока[0].Источник,
НайденнаяСтрока[0].ИдентификаторСтрокиИсточника);
Иначе
ПоказатьЗначение(,НайденнаяСтрока[0].ПоставщикСсылка);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДокументВыбор(Элемент, Область, СтандартнаяОбработка)
Расшифровка = Область.Расшифровка;
Если Область.Текст = НСтр("ru = 'Скрыть'") Тогда
Скрыть = Истина;
ИначеЕсли Область.Текст = НСтр("ru = 'К заказу'") Тогда
Скрыть = Ложь;
Иначе
Возврат;
КонецЕсли;
СтандартнаяОбработка = Ложь;
Отбор = Новый Структура("ИдентификаторИсточника", Расшифровка);
НайденнаяСтрока = СписокПредложений.НайтиСтроки(Отбор);
Если НайденнаяСтрока.Количество() > 0 Тогда
Если Скрыть Тогда
НайденнаяСтрока[0].Использовать = Ложь;
УстановитьФлагиГрупп();
СформироватьТаблицуСравнения();
Иначе
Если Не ДокументТолькоПросмотр Тогда
Если Не ЗначениеЗаполнено(НайденнаяСтрока[0].Источник) Тогда
Закрыть(НайденнаяСтрока[0].ПредставлениеИсточника);
Иначе
Закрыть(НайденнаяСтрока[0].Источник);
КонецЕсли;
Иначе
ОчиститьСообщения();
ОбщегоНазначенияКлиент.СообщитьПользователю(
НСтр("ru = 'Для документа не доступен выбор предложения'"));
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписокПредложений
&НаКлиенте
Процедура СписокПредложенийИспользоватьГруппаПриИзменении(Элемент)
ТекущиеДанные = Элементы.СписокПредложений.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если ТекущиеДанные.ИспользоватьГруппа = 1 Тогда
Установить = Истина;
Иначе
Установить = Ложь;
КонецЕсли;
УстановитьФлагГруппы(ТекущиеДанные.ИмяИсточника, Установить);
КонецПроцедуры
&НаКлиенте
Процедура СписокПредложенийИспользоватьПриИзменении(Элемент)
УстановитьФлагиГрупп();
СформироватьТаблицуСравнения();
КонецПроцедуры
&НаКлиенте
Процедура СписокПредложенийПриАктивизацииСтроки(Элемент)
ТекущиеДанные = Элементы.СписокПредложений.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Найдено = Ложь;
НомерНачала = 0;
НомерОкончания = 0;
Для НомерСтроки = 4 По Документ.ШиринаТаблицы Цикл
Расшифровка = Документ.Область(2, НомерСтроки, 2, НомерСтроки).Расшифровка;
Если Расшифровка = ТекущиеДанные.ИдентификаторИсточника Тогда
Найдено = Истина;
НомерНачала = НомерСтроки;
КонецЕсли;
Если Не Расшифровка = ТекущиеДанные.ИдентификаторИсточника
И Найдено Тогда
НомерОкончания = НомерСтроки;
Прервать;
КонецЕсли;
КонецЦикла;
Элементы.Документ.ТекущаяОбласть = Документ.Область(2, НомерНачала, Документ.ВысотаТаблицы, НомерОкончания);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокПредложений.Группа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("СписокПредложенийИспользовать");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветРазделаПанелиФункций);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокПредложений.Группа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("СписокПредложенийПредставлениеИсточника");
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("СписокПредложенийКартинка");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокПредложений.Группа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("СписокПредложенийИспользоватьГруппа");
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить();
ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СписокПредложений.Группа");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных("СписокПредложенийКартинка");
КонецПроцедуры
&НаСервереБезКонтекста
Функция НачатьПолучениеТаблицыДанныхПредложений(ПараметрыПроцедуры)
НаименованиеФоновогоЗадания = СтрШаблон(НСтр("ru = 'Сравнение предложений по документу %1'"), ПараметрыПроцедуры.ДокументИсточник);
ИмяПроцедуры = "Документы.ЗапросКоммерческихПредложенийПоставщиков.СравнениеПоступившихПредложений";
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(ПараметрыПроцедуры.УникальныйИдентификатор);
ПараметрыВыполнения.НаименованиеФоновогоЗадания = НаименованиеФоновогоЗадания;
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.ОжидатьЗавершение = 0;
Возврат ДлительныеОперации.ВыполнитьВФоне(ИмяПроцедуры, ПараметрыПроцедуры, ПараметрыВыполнения);
КонецФункции
&НаКлиенте
Процедура ПолучениеТаблицыДанныхПредложенийЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
ПолучитьРезультатыВыполнения(Результат.АдресРезультата);
Элементы.СтраницыФормы.ТекущаяСтраница = Элементы.СтраницаОтчета;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПолучитьРезультатыВыполнения(АдресРезультата)
СтруктураОтвет = ПолучитьИзВременногоХранилища(АдресРезультата);
ЗначениеВРеквизитФормы(СтруктураОтвет.ДеревоПредложений, "ДеревоИсходное");
СписокПредложений.Очистить();
СписокИсточников = СтруктураОтвет.ТаблицИсточников.Скопировать();
СписокИсточников.Индексы.Добавить("ИмяИсточника");
ИменаИсточников = СписокИсточников.Скопировать(, "ИмяИсточника");
ИменаИсточников.Свернуть("ИмяИсточника");
Для Каждого СтрокаИмя Из ИменаИсточников Цикл
НоваяСтрока = СписокПредложений.Добавить();
Отбор = Новый Структура("ИмяИсточника", СтрокаИмя.ИмяИсточника);
НайденныеСтроки = АнализируемыеИсточникиПредложений.НайтиСтроки(Отбор);
НоваяСтрока.ПредставлениеИсточника = НайденныеСтроки[0].ПредставлениеИсточника;
НоваяСтрока.Группа = Истина;
НоваяСтрока.ИмяИсточника = СтрокаИмя.ИмяИсточника;
НоваяСтрока.Картинка = НайденныеСтроки[0].КартинкаИсточника;
НайденныеСтроки = СписокИсточников.НайтиСтроки(Отбор);
Для Каждого СтрокаИсточник Из НайденныеСтроки Цикл
НоваяСтрока = СписокПредложений.Добавить();
НоваяСтрока.Группа = Ложь;
Если СтруктураОтвет.ВыбранныеИсточники.Количество() > 0 Тогда
НоваяСтрока.Использовать = СтруктураОтвет.ВыбранныеИсточники.Найти(СтрокаИсточник.Источник) <> Неопределено;
Иначе
НоваяСтрока.Использовать = Истина;
КонецЕсли;
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаИсточник);
КонецЦикла;
КонецЦикла;
УстановитьФлагиГрупп();
СформироватьТаблицуСравнения();
КонецПроцедуры
&НаСервере
Функция ПолучитьДоступныеИсточники()
Источники = Неопределено;
КоммерческиеПредложенияДокументы.АнализируемыеИсточникиПредложений(Источники);
АнализируемыеИсточникиПредложений.Загрузить(Источники);
Возврат Источники.ВыгрузитьКолонку("ИмяИсточника");
КонецФункции
&НаСервере
Процедура СформироватьТаблицуСравнения()
Отбор = Новый Структура("Использовать", Истина);
Если СписокПредложений.НайтиСтроки(Отбор).Количество() = 0 Тогда
Элементы.Документ.Доступность = Ложь;
Документ.Очистить();
Возврат;
КонецЕсли;
Элементы.Документ.Доступность = Истина;
ДеревоПредложений = РеквизитФормыВЗначение("ДеревоИсходное");
Документ.Очистить();
Макет = Документы.ЗапросКоммерческихПредложенийПоставщиков.ПолучитьМакет("ПФ_MXL_СравнениеУсловийПредложений");
ШапкаНоменклатура = Макет.ПолучитьОбласть("Шапка|Номенклатура");
ШапкаПредложение = Макет.ПолучитьОбласть("Шапка|Предложение");
ГруппаНоменклатура = Макет.ПолучитьОбласть("Группа|Номенклатура");
ГруппаПредложение = Макет.ПолучитьОбласть("Группа|Предложение");
СтрокаНоменклатура = Макет.ПолучитьОбласть("Строка|Номенклатура");
СтрокаПредложение = Макет.ПолучитьОбласть("Строка|Предложение");
СтрокаУсловияПредложение = Макет.ПолучитьОбласть("СтрокаУсловия|Предложение");
СтрокаУсловияНоменклатура = Макет.ПолучитьОбласть("СтрокаУсловия|Номенклатура");
ОбщегоНазначенияБЭД.ВывестиОбластьВТабличныйДокумент(Документ, ШапкаНоменклатура, "Шапка|Номенклатура");
Для Каждого Источник Из СписокПредложений Цикл
Источник.СрокПоставки = 0;
Источник.Цена = 0;
Если Не Источник.Использовать
Или Источник.Группа Тогда
Продолжить;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ШапкаПредложение.Параметры, Источник);
ШапкаПредложение.Параметры.Расшифровка = Источник.ИдентификаторИсточника;
ОбщегоНазначенияБЭД.ПрисоединитьОбластьКТабличномуДокументу(Документ, ШапкаПредложение, "Шапка|Предложение");
КонецЦикла;
Для Каждого СтрокаТовар Из СписокТоваров Цикл
Документ.НачатьАвтогруппировкуСтрок();
ГруппаНоменклатура.Параметры.Номенклатура = СтрокаТовар.Представление;
ОбщегоНазначенияБЭД.ВывестиОбластьВТабличныйДокумент(Документ, ГруппаНоменклатура, "Группа|Номенклатура",,1);
Товары = Новый ТаблицаЗначений;
Товары.Колонки.Добавить("Номенклатура");
Для Каждого СтрокаИсточник Из СписокПредложений Цикл
Если Не СтрокаИсточник.Использовать
Или СтрокаИсточник.Группа Тогда
Продолжить;
КонецЕсли;
Отбор = Новый Структура("Номенклатура, Источник", СтрокаТовар.Значение, СтрокаИсточник.ИдентификаторИсточника);
НайденныеСтроки = ДеревоПредложений.Строки.НайтиСтроки(Отбор, Ложь);
Если НайденныеСтроки.Количество() > 0 Тогда
Источник = НайденныеСтроки[0];
Иначе
Источник = Новый Структура("Строки, СрокПоставки, Цена", Новый Массив, , 0);
КонецЕсли;
ЗаполнитьЗначенияСвойств(ГруппаПредложение.Параметры, Источник);
ГруппаПредложение.Параметры.Расшифровка = СтрокаИсточник.ИдентификаторИсточника;
Если ЗначениеЗаполнено(Источник.СрокПоставки) Тогда
СтрокаИсточник.СрокПоставки = Источник.СрокПоставки;
КонецЕсли;
СтрокаИсточник.Цена = СтрокаИсточник.Цена + Источник.Цена;
ОбщегоНазначенияБЭД.ПрисоединитьОбластьКТабличномуДокументу(Документ, ГруппаПредложение, "Группа|Предложение");
Для Каждого Товар Из Источник.Строки Цикл
НовыйТовар = Товары.Добавить();
НовыйТовар.Номенклатура = Товар.Номенклатура;
КонецЦикла;
КонецЦикла;
Товары.Свернуть("Номенклатура");
Товары.Сортировать("Номенклатура");
Для Каждого Товар Из Товары Цикл
ЗаполнитьЗначенияСвойств(СтрокаНоменклатура.Параметры, Товар);
ОбщегоНазначенияБЭД.ВывестиОбластьВТабличныйДокумент(Документ, СтрокаНоменклатура, "Строка|Номенклатура",,2);
Для Каждого СтрокаИсточник Из СписокПредложений Цикл
Если Не СтрокаИсточник.Использовать
Или СтрокаИсточник.Группа Тогда
Продолжить;
КонецЕсли;
Отбор = Новый Структура("Номенклатура, Источник", СтрокаТовар.Значение, СтрокаИсточник.ИдентификаторИсточника);
НайденныеСтроки = ДеревоПредложений.Строки.НайтиСтроки(Отбор, Ложь);
Источник = Новый Структура("СрокПоставки, Цена");
Если НайденныеСтроки.Количество() > 0 Тогда
НайденнаяСтрока = НайденныеСтроки[0].Строки.Найти(Товар.Номенклатура);
Если НайденнаяСтрока <> Неопределено Тогда
Источник = НайденнаяСтрока;
КонецЕсли;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаПредложение.Параметры, Источник);
СтрокаПредложение.Параметры.Расшифровка = СтрокаИсточник.ИдентификаторИсточника;
ОбщегоНазначенияБЭД.ПрисоединитьОбластьКТабличномуДокументу(Документ, СтрокаПредложение, "Строка|Предложение");
КонецЦикла;
КонецЦикла;
Документ.ЗакончитьАвтогруппировкуСтрок();
КонецЦикла;
ОбщегоНазначенияБЭД.ВывестиОбластьВТабличныйДокумент(Документ, СтрокаУсловияНоменклатура, "Итого|Номенклатура");
Для Каждого СтрокаИсточник Из СписокПредложений Цикл
Если Не СтрокаИсточник.Использовать
Или СтрокаИсточник.Группа Тогда
Продолжить;
КонецЕсли;
ЗаполнитьЗначенияСвойств(СтрокаУсловияПредложение.Параметры, СтрокаИсточник);
СтрокаУсловияПредложение.Параметры.Расшифровка = СтрокаИсточник.ИдентификаторИсточника;
ОхватПроценты = Окр(СтрокаИсточник.СтруктураУсловий.Охват * 100 / КоличествоСтрок, 0);
СтрокаУсловияПредложение.Параметры.Охват = СтрШаблон(НСтр("ru = '%1 (%2%%)'"), СтрокаИсточник.СтруктураУсловий.Охват, Формат(ОхватПроценты, "ЧДЦ=0"));;
СтрокаУсловияПредложение.Параметры.Налогообложение = СтрокаИсточник.СтруктураУсловий.Налогообложение;
СтрокаУсловияПредложение.Параметры.Оплата = СтрокаИсточник.СтруктураУсловий.УсловияОплатыТекст;
СтрокаУсловияПредложение.Параметры.Поставка = СтрокаИсточник.СтруктураУсловий.УсловияПоставкиТекст;
СтрокаУсловияПредложение.Параметры.Прочее = СтрокаИсточник.СтруктураУсловий.УсловиеПрочееТекст;
ОбщегоНазначенияБЭД.ПрисоединитьОбластьКТабличномуДокументу(Документ, СтрокаУсловияПредложение, "Итого|Предложение");
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьФлагиГрупп()
Отбор = Новый Структура("Группа", Истина);
Группы = СписокПредложений.НайтиСтроки(Отбор);
Для Каждого Группа Из Группы Цикл
Отбор = Новый Структура("ИмяИсточника, Группа", Группа.ИмяИсточника, Ложь);
НайденныеЭлементы = СписокПредложений.НайтиСтроки(Отбор);
ВсеВыбраны = Истина;
ВыбранХотьОдин = Ложь;
Для Каждого Элемент Из НайденныеЭлементы Цикл
Если Элемент.Использовать Тогда
ВыбранХотьОдин = Истина;
КонецЕсли;
ВсеВыбраны = Мин(ВсеВыбраны, Элемент.Использовать);
КонецЦикла;
Если ВсеВыбраны = 1 Тогда
Группа.ИспользоватьГруппа = 1;
ИначеЕсли ВыбранХотьОдин Тогда
Группа.ИспользоватьГруппа = 2;
Иначе
Группа.ИспользоватьГруппа = 0;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьФлагГруппы(ИмяИсточника, Установить)
Отбор = Новый Структура("ИмяИсточника, Группа", ИмяИсточника, Ложь);
НайденныеЭлементы = СписокПредложений.НайтиСтроки(Отбор);
Для Каждого Элемент Из НайденныеЭлементы Цикл
Элемент.Использовать = Установить;
КонецЦикла;
УстановитьФлагиГрупп();
СформироватьТаблицуСравнения();
КонецПроцедуры
#КонецОбласти