// Формирует таблицу цен на форме
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма. Может содержать:
// * Объект - ОбработкаОбъект.ПрайсЛист, ДокументОбъект.УстановкаЦенНоменклатуры - ДанныеФормыСтруктура
// * ВыбранныеЦены - ТаблицаЗначений - с колонками:
// ** Ссылка - СправочникСсылка.ВидыЦен, СправочникСсылка.ВидыЦенПоставщиков - Виды цен
// ** Идентификатор - Строка - Идентификатор для формул
// ** Наименование - Строка - Наименование видов цен
// * СохраненныеДокументы - ТаблицаЗначений - (необязательное) с колонками:
// ** Ссылка - ДокументСсылка.РегистрацияЦенНоменклатурыПоставщика -
// * Элементы - ЭлементыФормы - Могут содержать:
// ** ДеревоЦен - ДеревоЗначений, ТаблицаФормы, ДанныеФормыЭлементДерева, ДанныеФормыДерево - основной элемент формы с деревом цен
// * ДеревоЦен - ДеревоЗначений, ТаблицаФормы, ДанныеФормыЭлементДерева, ДанныеФормыДерево - основной элемент формы с деревом цен
// * КомпоновщикНастроекОтбор - КомпоновщикНастроекКомпоновкиДанных
// ИмяТаблицы - Строка - Имя таблицы
//
Процедура ПостроитьДеревоЦен(Форма) Экспорт
ИспользуетсяЦенообразование25 = Форма.ИспользуетсяЦенообразование25;
ЭтоРегистрацияЦенПоставщика = ЭтоРегистрацияЦенПоставщика(Форма);
ДобавляемыеКолонкиТаблицыЦен = Новый Массив();
УдаляемыеКолонкиТаблицыЦен = Новый Массив();
УдаляемыеЭлементы = Новый Массив();
УсловныеОформления = Новый Массив();
ВариантГруппировки = Форма.ВариантГруппировки;
Если ТипЗнч(Форма.ДеревоЦен) = Тип("ДанныеФормыКоллекция") Тогда
ДеревоЗначений = Новый ТаблицаЗначений;
Иначе
ДеревоЗначений = Новый ДеревоЗначений;
КонецЕсли;
ДеревоЗначений.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
ДеревоЗначений.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
ДеревоЗначений.Колонки.Добавить("ИндексКартинки", Новый ОписаниеТипов("Число"));
ДеревоЗначений.Колонки.Добавить("ЕдиницаИзмерения", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
ДеревоЗначений.Колонки.Добавить("Артикул", Новый ОписаниеТипов("Строка"));
ДеревоЗначений.Колонки.Добавить("ХарактеристикиИспользуются", Новый ОписаниеТипов("Булево"));
Если ЗначениеЗаполнено(ВариантГруппировки) Тогда
ДеревоЗначений.Колонки.Добавить("ИерархияЭтоГруппа", Новый ОписаниеТипов("Булево"));
ДеревоЗначений.Колонки.Добавить("ЭтоИерархия", Новый ОписаниеТипов("Булево"));
КонецЕсли;
Если ЭтоРегистрацияЦенПоставщика Тогда
ДеревоЗначений.Колонки.Добавить("НоменклатураПартнера", Новый ОписаниеТипов("СправочникСсылка.НоменклатураКонтрагентов"));
Если ЭтоЗагрузкаЦенПоставщикаИзВнешнихФайлов(Форма) Тогда
ДеревоЗначений.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
ДеревоЗначений.Колонки.Добавить("НоменклатураНаименование", Новый ОписаниеТипов("Строка"));
ДеревоЗначений.Колонки.Добавить("ХарактеристикаНаименование", Новый ОписаниеТипов("Строка"));
ДеревоЗначений.Колонки.Добавить("СерияНаименование", Новый ОписаниеТипов("Строка"));
ДеревоЗначений.Колонки.Добавить("УпаковкаНаименование", Новый ОписаниеТипов("Строка"));
ДеревоЗначений.Колонки.Добавить("НоменклатураСопоставленаАвтоматически", Новый ОписаниеТипов("Булево"));
ДеревоЗначений.Колонки.Добавить("ЭтоДубль", Новый ОписаниеТипов("Булево"));
ДеревоЗначений.Колонки.Добавить("СтрокаСопоставлена", Новый ОписаниеТипов("Булево"));
ДеревоЗначений.Колонки.Добавить("КоличествоНоменклатурыДляВыбора", Новый ОписаниеТипов("Число"));
ДеревоЗначений.Колонки.Добавить("КодОтличается", Новый ОписаниеТипов("Булево"));
ДеревоЗначений.Колонки.Добавить("АртикулОтличается", Новый ОписаниеТипов("Булево"));
ДеревоЗначений.Колонки.Добавить("НоменклатураНаименованиеОтличается", Новый ОписаниеТипов("Булево"));
ДеревоЗначений.Колонки.Добавить("ЦенаНеРаспознана", Новый ОписаниеТипов("Булево"));
ДеревоЗначений.Колонки.Добавить("ЦеныИзменены", Новый ОписаниеТипов("Булево"));
ДеревоЗначений.Колонки.Добавить("Серия", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатуры"));
ДеревоЗначений.Колонки.Добавить("Упаковка", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
КонецЕсли;
Иначе
ДеревоЗначений.Колонки.Добавить("ВидНоменклатуры", Новый ОписаниеТипов("СправочникСсылка.ВидыНоменклатуры"));
ДеревоЗначений.Колонки.Добавить("ХарактеристикаЦО", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатурыДляЦенообразования"));
ДеревоЗначений.Колонки.Добавить("СерияЦО", Новый ОписаниеТипов("СправочникСсылка.СерииНоменклатурыДляЦенообразования"));
ДеревоЗначений.Колонки.Добавить("УпаковкаЦО", Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"));
ДеревоЗначений.Колонки.Добавить("СерииИспользуются", Новый ОписаниеТипов("Булево"));
ДеревоЗначений.Колонки.Добавить("УпаковкиИспользуются", Новый ОписаниеТипов("Булево"));
ДеревоЗначений.Колонки.Добавить("ЦеноваяГруппа", Новый ОписаниеТипов("СправочникСсылка.ЦеновыеГруппы"));
ДеревоЗначений.Колонки.Добавить("РеквизитСортировки", Новый ОписаниеТипов("Число"));
КонецЕсли;
Для Каждого ВидЦены Из Форма.ВыбранныеЦены Цикл
Если ВидЦены.Выбрана Или ВидЦены.Влияет Тогда
ИмяКолонки = ВидЦены.ИмяКолонки;
Если ЭтоРегистрацияЦенПоставщика Тогда
ДеревоЗначений.Колонки.Добавить( ИмяКолонки, ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля(ДопустимыйЗнак.Неотрицательный), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("СтараяЦена" + ИмяКолонки, ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля(ДопустимыйЗнак.Неотрицательный), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("ПроцентИзменения" + ИмяКолонки, Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(05, 2, ДопустимыйЗнак.Любой)), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("СуммаИзменения" + ИмяКолонки, Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Любой)), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("ИзмененаВручную" + ИмяКолонки, Новый ОписаниеТипов("Булево"), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("ИзмененаАвтоматически" + ИмяКолонки, Новый ОписаниеТипов("Булево"), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("ЗапретРедактирования" + ИмяКолонки, Новый ОписаниеТипов("Булево"), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("КартинкаИзмененаВручную" + ИмяКолонки, Новый ОписаниеТипов("Число"), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("МинимальнаяПартияПоставки"+ ИмяКолонки, Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3, ДопустимыйЗнак.Неотрицательный)), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("УстановкаУсловий" + ИмяКолонки, Новый ОписаниеТипов("Булево"), НСтр("ru='Установка условий'"));
Если Форма.ИспользоватьУпаковкиНоменклатуры Тогда
ДеревоЗначений.Колонки.Добавить("Упаковка" + ИмяКолонки, Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"), "Упаковка");
ДеревоЗначений.Колонки.Добавить("УпаковкаЗаказа" + ИмяКолонки, Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"), НСтр("ru='Упаковка заказа'"));
Если Форма.КодФормы = "ЗагрузкаЦенПоставщикаИзВнешнихФайлов" Тогда
ДеревоЗначений.Колонки.Добавить("УпаковкаЗаполнена" + ИмяКолонки, Новый ОписаниеТипов("Булево"), НСтр("ru='Упаковка заполнена'"));
ДеревоЗначений.Колонки.Добавить("УпаковкаИмя" + ИмяКолонки, Новый ОписаниеТипов("Строка"), НСтр("ru='Упаковка наименование'"));
КонецЕсли;
КонецЕсли;
Иначе
ДеревоЗначений.Колонки.Добавить( ИмяКолонки, ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля(ДопустимыйЗнак.Неотрицательный), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("Валюта" + ИмяКолонки, Новый ОписаниеТипов("СправочникСсылка.Валюты"), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("СтараяЦена" + ИмяКолонки, ОбщегоНазначенияУТ.ОписаниеТипаДенежногоПоля(ДопустимыйЗнак.Неотрицательный), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("Формула" + ИмяКолонки, Новый ОписаниеТипов("Строка"), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("ПроцентИзменения" + ИмяКолонки, Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(05, 2, ДопустимыйЗнак.Любой)), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("СуммаИзменения" + ИмяКолонки, Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2, ДопустимыйЗнак.Любой)), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("ИзмененаВручную" + ИмяКолонки, Новый ОписаниеТипов("Булево"), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("ФормулаИзмененаВручную" + ИмяКолонки, Новый ОписаниеТипов("Булево"), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("ИзмененаАвтоматически" + ИмяКолонки, Новый ОписаниеТипов("Булево"), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("КартинкаИзмененаВручную" + ИмяКолонки, Новый ОписаниеТипов("Число"), ВидЦены.Наименование);
ДеревоЗначений.Колонки.Добавить("ЗапретРедактирования" + ИмяКолонки, Новый ОписаниеТипов("Булево"), ВидЦены.Наименование);
Если Форма.ИспользоватьУпаковкиНоменклатуры Тогда
ДеревоЗначений.Колонки.Добавить("Упаковка" + ИмяКолонки, Новый ОписаниеТипов("СправочникСсылка.УпаковкиЕдиницыИзмерения"), "Упаковка");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КолонкаОтступ = ДеревоЗначений.Колонки.Добавить("Отступ", Новый ОписаниеТипов("Строка"), НСтр("ru = 'Отступ'"));
Если ТипЗнч(Форма.ДеревоЦен) = Тип("ДанныеФормыДерево") Или ТипЗнч(Форма.ДеревоЦен) = Тип("ДанныеФормыКоллекция") Тогда
РеквизитыТаблицыЦен = Форма.ПолучитьРеквизиты("ДеревоЦен");
Для Каждого Реквизит Из РеквизитыТаблицыЦен Цикл
Если СтрНайти(Реквизит.Имя, "ВидЦены")
Или СтрНайти(Реквизит.Имя, "Отступ") Тогда
УдаляемыеКолонкиТаблицыЦен.Добавить("ДеревоЦен." + Реквизит.Имя);
КонецЕсли;
КонецЦикла;
Для Каждого Колонка Из ДеревоЗначений.Колонки Цикл
Если СтрНайти(Колонка.Имя, "ВидЦены") Тогда
УдаляемаяКолонка = УдаляемыеКолонкиТаблицыЦен.Найти("ДеревоЦен." + Колонка.Имя);
Если УдаляемаяКолонка <> Неопределено Тогда
УдаляемыеКолонкиТаблицыЦен.Удалить(УдаляемаяКолонка);
Иначе
ДобавляемыеКолонкиТаблицыЦен.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, "ДеревоЦен", Колонка.Заголовок, Истина));
КонецЕсли;
КонецЕсли;
КонецЦикла;
ДобавляемыеКолонкиТаблицыЦен.Добавить(Новый РеквизитФормы(КолонкаОтступ.Имя, КолонкаОтступ.ТипЗначения, "ДеревоЦен", КолонкаОтступ.Заголовок, Истина));
Если УдаляемыеКолонкиТаблицыЦен.Количество() > 0 Или ДобавляемыеКолонкиТаблицыЦен.Количество() > 0 Тогда
Форма.ИзменитьРеквизиты(ДобавляемыеКолонкиТаблицыЦен, УдаляемыеКолонкиТаблицыЦен);
КонецЕсли;
ПодчиненныеЭлементыТаблицы = Форма.Элементы["ДеревоЦен"].ПодчиненныеЭлементы; // ЭлементыФормы
Для Каждого ТекЭлемент Из ПодчиненныеЭлементыТаблицы Цикл
Если СтрНайти(ТекЭлемент.Имя, "ВидЦены")
Или СтрНайти(ТекЭлемент.Имя, "Отступ") Тогда
УдаляемыеЭлементы.Добавить(ТекЭлемент);
КонецЕсли;
КонецЦикла;
Для Каждого УдаляемыйЭлемент Из УдаляемыеЭлементы Цикл
Форма.Элементы.Удалить(УдаляемыйЭлемент);
КонецЦикла;
Для Каждого Оформление Из Форма.УсловноеОформление.Элементы Цикл
Если Оформление.Представление = "СозданоПрограммно" Тогда
УсловныеОформления.Добавить(Оформление);
КонецЕсли;
КонецЦикла;
Для Каждого Оформление Из УсловныеОформления Цикл
Форма.УсловноеОформление.Элементы.Удалить(Оформление);
КонецЦикла;
Для Каждого ВидЦены Из Форма.ВыбранныеЦены Цикл
ИмяКолонки = ВидЦены.ИмяКолонки;
ПоказыватьВлияющуюЦену = Форма.ОтображатьВлияющиеЦены
И ВидЦены.Влияет
И НЕ ВидЦены.ЗапрещенныйВидЦены;
Если ВидЦены.Выбрана
Или ПоказыватьВлияющуюЦену Тогда
ЦветЗаголовка = Неопределено;
ЦветФона = Неопределено;
КартинкаШапки = Неопределено;
Если ВидЦены.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.Вручную
Или ВидЦены.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.НаценкаНаЦенуПоступления
Или ВидЦены.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.НаценкаНаЦенуВводаОстатков Тогда
КартинкаШапки = БиблиотекаКартинок.СпособыЗаданияЦенЗадаватьВручную;
ИначеЕсли ВидЦены.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.ЗаполнятьПоДаннымИБ
Или ВидЦены.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.ЗаполнятьПоДаннымИБПриПоступлении
Или ВидЦены.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.ЗаполнятьПоДаннымИБПоКонкурентам
Или ВидЦены.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.ЗаполнятьПоДаннымИБПоПоставщикам
Или ВидЦены.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.ЗаполнятьПоДаннымИБПоСебестоимости Тогда
КартинкаШапки = БиблиотекаКартинок.СпособыЗаданияЦенЗаполнятьПоДаннымИБ;
ИначеЕсли ВидЦены.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.РассчитыватьПоФормуламОтДругихВидовЦен
Или ВидЦены.СпособЗаданияЦены = Перечисления.СпособыЗаданияЦен.НаценкаНаДругойВидЦен Тогда
КартинкаШапки = БиблиотекаКартинок.СпособыЗаданияЦенРассчитыватьПоФормуламОтДругихВидовЦен;
КонецЕсли;
Если ЭтоРегистрацияЦенПоставщика Тогда
НоваяГруппа = ДобавитьГруппуФормы(Форма, "ГруппаЦены" + ИмяКолонки, Строка(ВидЦены.Ссылка) + ", " + Строка(ВидЦены.Валюта), Истина, КартинкаШапки, ГруппировкаКолонок.Горизонтальная, Неопределено);
Иначе
НоваяГруппа = ДобавитьГруппуФормы(Форма, "ГруппаЦены" + ИмяКолонки, ?(Строка(ВидЦены.Идентификатор)=Строка(ВидЦены.Ссылка), Строка(ВидЦены.Ссылка), Строка(ВидЦены.Ссылка) + " ["+ Строка(ВидЦены.Идентификатор) +"]") + ", " + Строка(ВидЦены.Валюта), Истина, КартинкаШапки, ГруппировкаКолонок.Горизонтальная, Неопределено);
КонецЕсли;
Если ПодборТоваровКлиентСервер.ЭтоФормаПрайсЛиста(Форма) Или
ПодборТоваровКлиентСервер.ЭтоФормаПрайсЛистаПоставщиков(Форма) Тогда
Если ЗначениеЗаполнено(Форма.ДатаДействующихЦен) Тогда
ДатаДействующихЦен = КонецДня(Форма.ДатаДействующихЦен);
Иначе
ДатаДействующихЦен = НачалоДня(Форма.Дата)-1;
КонецЕсли;
ЗаголовокКолонкиСтараяЦена = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Цена на %1'"), Формат(ДатаДействующихЦен, "ДЛФ=D"));
Иначе
ЗаголовокКолонкиСтараяЦена = ?(ВидЦены.Выбрана, НСтр("ru='Действующая цена'"), НСтр("ru='Цена'"));
КонецЕсли;
Если ВидЦены.Выбрана Тогда
НоваяГруппаТехническая = ДобавитьГруппуФормы(Форма, "ГруппаТехническая" + ИмяКолонки, НСтр("ru='Группа'"), Ложь, Неопределено, ГруппировкаКолонок.Горизонтальная, НоваяГруппа);
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", ЗаголовокКолонкиСтараяЦена);
СтруктураПараметров.Вставить("ШиринаПоля", 12);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппаТехническая);
СтруктураПараметров.Вставить("ТолькоПросмотрПоля", Истина);
НовоеПоле = ДобавитьПолеФормы(Форма, "СтараяЦена" + ИмяКолонки, СтруктураПараметров);
НовоеПоле.Подсказка = НСтр("ru = 'Текущая установленная цена'");
НовоеПоле.ЦветТекста = WebЦвета.Серый;
Если Не ЭтоРегистрацияЦенПоставщика Тогда
НоваяГруппаФормула = ДобавитьГруппуФормы(Форма, "ГруппаТехническаяФормула" + ИмяКолонки, НСтр("ru='Группа формула'"), Ложь, Неопределено, ГруппировкаКолонок.ВЯчейке, НоваяГруппаТехническая);
НовоеПоле = Форма.Элементы.Добавить("ДеревоЦен" + "Формула" + "Картинка" + ИмяКолонки, Тип("ПолеФормы"), НоваяГруппаФормула);
НовоеПоле.ПутьКДанным = "ДеревоЦен.ФормулаИзмененаВручную" + ИмяКолонки;
НовоеПоле.Заголовок = "";
НовоеПоле.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
НовоеПоле.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе;
НовоеПоле.Вид = ВидПоляФормы.ПолеКартинки;
НовоеПоле.ТолькоПросмотр = Истина;
НовоеПоле.Ширина = 2;
НовоеПоле.ОтображатьВШапке = Ложь;
НовоеПоле.КартинкаЗначений = БиблиотекаКартинок.Внимание16;
НовоеПоле.Видимость = ВидЦены.ФормулаРедактируется;
НовоеПоле.РастягиватьПоГоризонтали = Ложь;
НовоеПоле.Подсказка = НСтр("ru = 'Формула изменена'");
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", НСтр("ru='Формула'"));
СтруктураПараметров.Вставить("ОбработчикПриИзменении", "Подключаемый_ДеревоЦенФормулаПриИзменении");
СтруктураПараметров.Вставить("ОбработчикНачалоВыбора", "Подключаемый_ДеревоЦенФормулаНачалоВыбора");
СтруктураПараметров.Вставить("ШиринаПоля", 12);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппаФормула);
СтруктураПараметров.Вставить("Видимость", ВидЦены.ФормулаРедактируется);
СтруктураПараметров.Вставить("ТолькоПросмотрПоля", НЕ ВидЦены.Редактировать);
СтруктураПараметров.Вставить("ГоризонтальноеПоложение", ГоризонтальноеПоложениеЭлемента.Право);
НовоеПоле = ДобавитьПолеФормы(Форма, "Формула" + ИмяКолонки, СтруктураПараметров);
НовоеПоле.Подсказка = НСтр("ru = 'Формула для расчета цены'");
НовоеПоле.ЦветТекста = WebЦвета.Серый;
КонецЕсли;
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", НСтр("ru='Изменение'"));
СтруктураПараметров.Вставить("ОбработчикПриИзменении", "Подключаемый_ДеревоЦенЦенаПриИзменении");
СтруктураПараметров.Вставить("ШиринаПоля", 12);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппаТехническая);
СтруктураПараметров.Вставить("ТолькоПросмотрПоля", ?(ЭтоРегистрацияЦенПоставщика, Ложь, НЕ ВидЦены.Редактировать));
НовоеПоле = ДобавитьПолеФормы(Форма, "СуммаИзменения" + ИмяКолонки, СтруктураПараметров);
НовоеПоле.ЦветТекста = WebЦвета.Серый;
НовоеПоле.ВыделятьОтрицательные = Истина;
НовоеПоле.Подсказка = НСтр("ru = 'Изменение цены'");
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", "%");
СтруктураПараметров.Вставить("ОбработчикПриИзменении", "Подключаемый_ДеревоЦенЦенаПриИзменении");
СтруктураПараметров.Вставить("ШиринаПоля", 6);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппаТехническая);
СтруктураПараметров.Вставить("ТолькоПросмотрПоля", ?(ЭтоРегистрацияЦенПоставщика, Ложь, НЕ ВидЦены.Редактировать));
НовоеПоле = ДобавитьПолеФормы(Форма, "ПроцентИзменения" + ИмяКолонки, СтруктураПараметров);
НовоеПоле.ЦветТекста = WebЦвета.Серый;
НовоеПоле.ВыделятьОтрицательные = Истина;
НовоеПоле.Подсказка = НСтр("ru = 'Процент изменения цены'");
НоваяГруппаЦена = ДобавитьГруппуФормы(Форма, "ГруппаЦена" + ИмяКолонки, НСтр("ru='Группа цена'"), Ложь, Неопределено, ГруппировкаКолонок.ВЯчейке, НоваяГруппа);
НовоеПоле = Форма.Элементы.Добавить("ЗапретРедактирования" + ИмяКолонки, Тип("ПолеФормы"), НоваяГруппаЦена);
НовоеПоле.ПутьКДанным = "ДеревоЦен.ЗапретРедактирования" + ИмяКолонки;
НовоеПоле.Заголовок = "Запрет редактирования";
НовоеПоле.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
НовоеПоле.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе;
НовоеПоле.Вид = ВидПоляФормы.ПолеКартинки;
НовоеПоле.ТолькоПросмотр = Истина;
НовоеПоле.Ширина = 2;
НовоеПоле.ОтображатьВШапке = Ложь;
НовоеПоле.КартинкаЗначений = БиблиотекаКартинок.ВидыЦенТолькоПросмотр;
НовоеПоле.КартинкаШапки = БиблиотекаКартинок.ВидыЦенТолькоПросмотр;
НовоеПоле.Видимость = ?(ЭтоРегистрацияЦенПоставщика, Ложь, НЕ ВидЦены.Редактировать);
НовоеПоле.РастягиватьПоГоризонтали = Ложь;
НовоеПоле.Подсказка = НСтр("ru = 'Запрет редактирования цены'");
НовоеПоле = Форма.Элементы.Добавить("ДеревоЦен" + "Картинка" + ИмяКолонки, Тип("ПолеФормы"), НоваяГруппаЦена);
НовоеПоле.ПутьКДанным = "ДеревоЦен.ИзмененаВручную" + ИмяКолонки;
НовоеПоле.Заголовок = "";
НовоеПоле.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
НовоеПоле.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе;
НовоеПоле.Вид = ВидПоляФормы.ПолеКартинки;
НовоеПоле.ТолькоПросмотр = Истина;
НовоеПоле.Ширина = 2;
НовоеПоле.ОтображатьВШапке = Ложь;
НовоеПоле.КартинкаЗначений = БиблиотекаКартинок.УстановитьЦены;
НовоеПоле.КартинкаШапки = БиблиотекаКартинок.УстановитьЦены;
НовоеПоле.Видимость = ?(ЭтоРегистрацияЦенПоставщика, Истина, ВидЦены.Редактировать);
НовоеПоле.РастягиватьПоГоризонтали = Ложь;
НовоеПоле.Подсказка = НСтр("ru = 'Цена изменена вручную'");
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", НСтр("ru='Цена'"));
СтруктураПараметров.Вставить("ОбработчикПриИзменении", "Подключаемый_ДеревоЦенЦенаПриИзменении");
СтруктураПараметров.Вставить("ШиринаПоля", 12);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппаЦена);
СтруктураПараметров.Вставить("ТолькоПросмотрПоля", ?(ЭтоРегистрацияЦенПоставщика, Ложь, НЕ ВидЦены.Редактировать));
НовоеПоле = ДобавитьПолеФормы(Форма, ИмяКолонки, СтруктураПараметров);
НовоеПоле.Подсказка = НСтр("ru = 'Устанавливаемая цена'");
Если Не ЭтоРегистрацияЦенПоставщика Тогда
НоваяГруппаВалюта = ДобавитьГруппуФормы(Форма, "ГруппаВалюта" + ИмяКолонки, НСтр("ru='Группа валюта'"), Ложь, Неопределено, ГруппировкаКолонок.Горизонтальная, НоваяГруппаТехническая);
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", НСтр("ru='Валюта'"));
СтруктураПараметров.Вставить("ОбработчикПриИзменении", "Подключаемый_ДеревоЦенВалютаПриИзменении");
СтруктураПараметров.Вставить("ОбработчикНачалоВыбора", "Подключаемый_ДеревоЦенВалютаНачалоВыбора");
СтруктураПараметров.Вставить("ШиринаПоля", 6);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппаВалюта);
СтруктураПараметров.Вставить("ТолькоПросмотрПоля", ?(ЭтоРегистрацияЦенПоставщика, Ложь, НЕ ВидЦены.Редактировать));
НовоеПоле = ДобавитьПолеФормы(Форма, "Валюта" + ИмяКолонки, СтруктураПараметров);
НовоеПоле.Подсказка = НСтр("ru = 'Валюта цены'");
НовоеПоле.БыстрыйВыбор = Ложь;
КонецЕсли;
Иначе
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", ЗаголовокКолонкиСтараяЦена);
СтруктураПараметров.Вставить("ШиринаПоля", 12);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппа);
СтруктураПараметров.Вставить("ТолькоПросмотрПоля", Истина);
НовоеПоле = ДобавитьПолеФормы(Форма, "СтараяЦена" + ИмяКолонки, СтруктураПараметров);
НовоеПоле.ЦветТекста = WebЦвета.Серый;
КонецЕсли;
Если Форма.ИспользоватьУпаковкиНоменклатуры Тогда
НоваяГруппаУпаковка = ДобавитьГруппуФормы(Форма, "ГруппаУпаковки" + ИмяКолонки, НСтр("ru='Ед. изм.'"), Ложь, Неопределено, ГруппировкаКолонок.ВЯчейке, НоваяГруппа);
НоваяСвязь = Новый СвязьПараметраВыбора("Номенклатура", "Элементы.ДеревоЦен.ТекущиеДанные.Номенклатура", РежимИзмененияСвязанногоЗначения.НеИзменять);
НовыйМассив = Новый Массив();
НовыйМассив.Добавить(НоваяСвязь);
НовыеСвязи = Новый ФиксированныйМассив(НовыйМассив);
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", НСтр("ru='Упаковка'"));
СтруктураПараметров.Вставить("ОбработчикПриИзменении", "Подключаемый_ДеревоЦенУпаковкаПриИзменении");
СтруктураПараметров.Вставить("ОбработчикНачалоВыбора", "Подключаемый_ДеревоЦенУпаковкаНачалоВыбора");
СтруктураПараметров.Вставить("ШиринаПоля", 3);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппаУпаковка);
СтруктураПараметров.Вставить("СвязиПараметровВыбора", НовыеСвязи);
СтруктураПараметров.Вставить("ОтображатьВШапке", Ложь);
СтруктураПараметров.Вставить("ТолькоПросмотрПоля", ?(ЭтоРегистрацияЦенПоставщика, Ложь, НЕ ВидЦены.Редактировать));
ДобавитьПолеФормы(Форма, "Упаковка" + ИмяКолонки, СтруктураПараметров);
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", НСтр("ru='Ед. изм.'"));
СтруктураПараметров.Вставить("ШиринаПоля", 3);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппаУпаковка);
СтруктураПараметров.Вставить("ПутьКДанным", "ДеревоЦен.Номенклатура.ЕдиницаИзмерения");
СтруктураПараметров.Вставить("ТолькоПросмотрПоля", Истина);
ДобавитьПолеФормы(Форма, "ЕдиницаИзмерения" + ИмяКолонки, СтруктураПараметров);
Если ЭтоРегистрацияЦенПоставщика Тогда
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", НСтр("ru = 'Упаковка заказа'"));
СтруктураПараметров.Вставить("ОбработчикПриИзменении", "Подключаемый_ДеревоЦенУпаковкаЗаказаПриИзменении");
СтруктураПараметров.Вставить("ШиринаПоля", 9);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппа);
СтруктураПараметров.Вставить("СвязиПараметровВыбора", НовыеСвязи);
СтруктураПараметров.Вставить("ОтображатьВШапке", Истина);
ДобавитьПолеФормы(Форма,"УпаковкаЗаказа" + ИмяКолонки, СтруктураПараметров);
Если Форма.КодФормы = "ЗагрузкаЦенПоставщикаИзВнешнихФайлов" Тогда
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", НСтр("ru = 'Упаковка заполнена'"));
СтруктураПараметров.Вставить("ШиринаПоля", 9);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппа);
СтруктураПараметров.Вставить("СвязиПараметровВыбора", НовыеСвязи);
СтруктураПараметров.Вставить("ОтображатьВШапке", Истина);
СтруктураПараметров.Вставить("Видимость", Ложь);
ДобавитьПолеФормы(Форма,"УпаковкаЗаполнена" + ИмяКолонки, СтруктураПараметров);
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", НСтр("ru = 'Наименование упак.'"));
СтруктураПараметров.Вставить("ШиринаПоля", 9);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппа);
СтруктураПараметров.Вставить("СвязиПараметровВыбора", НовыеСвязи);
СтруктураПараметров.Вставить("ОтображатьВШапке", Истина);
СтруктураПараметров.Вставить("Видимость", Истина);
СтруктураПараметров.Вставить("ТолькоПросмотрПоля", Истина);
ДобавитьПолеФормы(Форма,"УпаковкаИмя" + ИмяКолонки, СтруктураПараметров);
КонецЕсли;
КонецЕсли;
Иначе
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", НСтр("ru='Ед. изм.'"));
СтруктураПараметров.Вставить("ШиринаПоля", 3);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппа);
СтруктураПараметров.Вставить("ПутьКДанным", "ДеревоЦен.Номенклатура.ЕдиницаИзмерения");
СтруктураПараметров.Вставить("ТолькоПросмотрПоля", Истина);
ДобавитьПолеФормы(Форма, "ЕдиницаИзмерения" + ИмяКолонки, СтруктураПараметров);
КонецЕсли;
Если ЭтоРегистрацияЦенПоставщика Тогда
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", НСтр("ru = 'Мин. партия поставки'"));
СтруктураПараметров.Вставить("ОбработчикПриИзменении", "Подключаемый_ДеревоЦенМинимальнаяПартияПриИзменении");
СтруктураПараметров.Вставить("ШиринаПоля", 8);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппа);
СтруктураПараметров.Вставить("ОтображатьВШапке", Истина);
НовоеПоле = ДобавитьПолеФормы(Форма, "МинимальнаяПартияПоставки" + ИмяКолонки, СтруктураПараметров);
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("Заголовок", НСтр("ru = 'Условия'"));
СтруктураПараметров.Вставить("ШиринаПоля", 8);
СтруктураПараметров.Вставить("ЦветФона", ЦветФона);
СтруктураПараметров.Вставить("ЦветФонаЗаголовка", ЦветЗаголовка);
СтруктураПараметров.Вставить("Родитель", НоваяГруппа);
СтруктураПараметров.Вставить("ОтображатьВШапке", Истина);
СтруктураПараметров.Вставить("Вид", ВидПоляФормы.ПолеКартинки);
СтруктураПараметров.Вставить("ТолькоПросмотрПоля", Ложь);
СтруктураПараметров.Вставить("КартинкаЗначений", БиблиотекаКартинок.Изменить);
СтруктураПараметров.Вставить("КартинкаШапки", БиблиотекаКартинок.Изменить);
СтруктураПараметров.Вставить("Видимость", Ложь);
ДобавитьПолеФормы(Форма,"УстановкаУсловий" + ИмяКолонки, СтруктураПараметров);
КонецЕсли;
Если Не ЭтоРегистрацияЦенПоставщика Тогда
Если ВидЦены.ФормулаРедактируется Тогда
// Условное изменения формулы
НовыйЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = "Формула"+ ИмяКолонки;
НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно";
НовыйЭлементУсловногоОформления.Использование = Истина;
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ФормулаИзмененаВручную"+ ИмяКолонки);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + "Формула"+ ИмяКолонки);
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.ТемноСиний);
// Условное изменения формулы
НовыйЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = "Формула"+ ИмяКолонки;
НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно";
НовыйЭлементУсловногоОформления.Использование = Истина;
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ФормулаИзмененаВручную"+ ИмяКолонки);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Ложь;
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + "Формула"+ ИмяКолонки);
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);
Иначе
// Условное изменения формулы
НовыйЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = "Формула"+ ИмяКолонки;
НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно";
НовыйЭлементУсловногоОформления.Использование = Истина;
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + "Формула"+ ИмяКолонки);
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<формулы не используются>'"));
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ТекстЗапрещеннойЯчейкиЦвет);
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецЕсли;
КонецЕсли;
// Условное оформление увеличившихся цен
НовыйЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = ИмяКолонки;
НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно";
НовыйЭлементУсловногоОформления.Использование = Истина;
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен." + ИмяКолонки);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Больше;
ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.СтараяЦена" + ИмяКолонки);
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + ИмяКолонки);
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.ТемноСиний);
// Условное оформление уменьшившихся цен
НовыйЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = ИмяКолонки;
НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно";
НовыйЭлементУсловногоОформления.Использование = Истина;
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен." + ИмяКолонки);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
ЭлементОтбора.ПравоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.СтараяЦена" + ИмяКолонки);
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + ИмяКолонки);
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.ТемноЗеленый);
// Условное оформление единиц измерения
НоменклатураСервер.УстановитьУсловноеОформлениеЕдиницИзмерения(Форма, "ДеревоЦен" + "ЕдиницаИзмерения" + ИмяКолонки, "ДеревоЦен.Упаковка" + ИмяКолонки);
Если НЕ ЭтоРегистрацияЦенПоставщика и ИспользуетсяЦенообразование25 Тогда
НовыйЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = ИмяКолонки;
НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно";
НовыйЭлементУсловногоОформления.Использование = Истина;
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.УпаковкиИспользуются");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + "Упаковка" + ИмяКолонки);
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецЕсли;
// Условное оформление запрета редактирования
НовыйЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = ИмяКолонки;
НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно";
НовыйЭлементУсловногоОформления.Использование = Истина;
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ЗапретРедактирования" + ИмяКолонки);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Истина;
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + ИмяКолонки);
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + "Формула" + ИмяКолонки);
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + "СуммаИзменения" + ИмяКолонки);
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + "ПроцентИзменения" + ИмяКолонки);
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + "Валюта" + ИмяКолонки);
Если НЕ ЭтоРегистрацияЦенПоставщика Тогда
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + "Упаковка" + ИмяКолонки);
КонецЕсли;
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<Запрет редактирования>'"));
Если ЭтоРегистрацияЦенПоставщика Тогда
// В регистрации цен поставщика - пустая цена не регистрируется при проведении
НовыйЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = ИмяКолонки;
НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно";
НовыйЭлементУсловногоОформления.Использование = Истина;
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен." + ИмяКолонки);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 0;
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ХарактеристикиИспользуются");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = Ложь;
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + ИмяКолонки);
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<Не изменяется>'"));
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);
//
НовыйЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = ИмяКолонки;
НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно";
НовыйЭлементУсловногоОформления.Использование = Истина;
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен." + ИмяКолонки);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 0;
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.Характеристика");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + ИмяКолонки);
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<Не изменяется>'"));
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);
// В регистрации цен поставщика - пустая цена не регистрируется при проведении
НовыйЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = ИмяКолонки;
НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно";
НовыйЭлементУсловногоОформления.Использование = Истина;
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен." + ИмяКолонки);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = 0;
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен" + "ПроцентИзменения" + ИмяКолонки);
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Текст", "");
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Серый);
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ВариантГруппировки) Тогда
СписокИндексовКартинкиЭлемента = Новый СписокЗначений;
СписокИндексовКартинкиЭлемента.Добавить(0);
СписокИндексовКартинкиЭлемента.Добавить(2);
//
НовыйЭлементУсловногоОформления = Форма.УсловноеОформление.Элементы.Добавить();
НовыйЭлементУсловногоОформления.ИдентификаторПользовательскойНастройки = "СтрокиТолькоПросмотр";
НовыйЭлементУсловногоОформления.Представление = "СозданоПрограммно";
НовыйЭлементУсловногоОформления.Использование = Истина;
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЦен.ИндексКартинки");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВСписке;
ЭлементОтбора.ПравоеЗначение = СписокИндексовКартинкиЭлемента;
НовоеПоле = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовоеПоле.Использование = Истина;
НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЦен");
НовыйЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ТолькоПросмотр", Истина);
КонецЕсли;
КонецЦикла;
СтруктураПараметров = Новый Структура();
СтруктураПараметров.Вставить("ШиринаПоля", 30);
СтруктураПараметров.Вставить("ТолькоПросмотрПоля", Истина);
НовоеПоле = ДобавитьПолеФормы(Форма, "Отступ", СтруктураПараметров);
НовоеПоле.ЦветТекста = WebЦвета.Серый;
НовоеПоле.Видимость = Истина;
НовоеПоле.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
НовоеПоле.РастягиватьПоГоризонтали = Истина;
ДеревоЦенЗначение = Форма.РеквизитФормыВЗначение("ДеревоЦен"); // ДеревоЗначений
ДеревоЦенЗначение.Колонки.Очистить();
Для Каждого Колонка Из ДеревоЗначений.Колонки Цикл
ДеревоЦенЗначение.Колонки.Добавить(Колонка.Имя);
КонецЦикла;
Форма.ЗначениеВРеквизитФормы(ДеревоЦенЗначение, "ДеревоЦен");
Если ОбщегоНазначенияУТКлиентСервер.ЕстьРеквизитОбъекта(Форма, "ВыбранныеЦеныИзменены") Тогда
Форма.ВыбранныеЦеныИзменены = Ложь;
КонецЕсли;
Если Не ЭтоРегистрацияЦенПоставщика Тогда
УстановитьПометкуИзмененныхФормул(Форма, ДеревоЦенЗначение);
КонецЕсли;
Иначе
Форма["ДеревоЦен"] = ДеревоЗначений.Скопировать();
КонецЕсли;
КонецПроцедуры