#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Объект, ЭтотОбъект);
УстановитьУсловноеОформление();
МассивТипов = Справочники.СертификатыНоменклатуры.СформироватьСписокВыбораТиповСертификатов();
Элементы.ТипСертификата.СписокВыбора.ЗагрузитьЗначения(МассивТипов);
Если Параметры.Свойство("ТипСертификата") Тогда
Объект.ТипСертификата = Параметры.ТипСертификата;
КонецЕсли;
Если Параметры.Свойство("ВидНоменклатуры") Тогда
ВидНоменклатуры = Параметры.ВидНоменклатуры;
КонецЕсли;
Если Параметры.Свойство("Номенклатура") Тогда
Номенклатура = Параметры.Номенклатура;
КонецЕсли;
Элементы.ОбластьДействияХарактеристика.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьХарактеристикиНоменклатуры");
Элементы.ОбластьДействияСерия.Видимость = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатуры");
СчетчикИзображений = НСтр("ru='0 из 0'");
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
ВариантОбластиДействия = "КонкретныйТовар";
Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда
ЗаполнитьОбластьДействия(Параметры.ЗначениеКопирования);
ИначеЕсли ЗначениеЗаполнено(Номенклатура) Тогда
НоменклатураПриИзмененииСервер();
ИначеЕсли ЗначениеЗаполнено(ВидНоменклатуры) Тогда
ВариантОбластиДействия = "ВидНоменклатуры";
Элементы.СтраницыОбластьДействия.ТекущаяСтраница = Элементы.СтраницаВидНоменклатуры;
НоменклатураПриИзмененииСервер();
Иначе
НоменклатураПриИзмененииСервер();
КонецЕсли;
ПриЧтенииСозданииНаСервере(Ложь);
Иначе
ОбновитьТаблицуИзображений();
КонецЕсли;
Если Не ПравоДоступа("Изменение", Метаданные.Справочники.СертификатыНоменклатуры) Тогда
Элементы.КоманднаяПанельИзображения.Доступность = Ложь;
Элементы.ОбластьДействия.КоманднаяПанель.Доступность = Ложь;
Элементы.ОбластьДействия.КонтекстноеМеню.Доступность = Ложь;
Элементы.ВариантОбластиДействия.Доступность = Ложь;
Элементы.АдресКартинки.КонтекстноеМеню.Доступность = Ложь;
КонецЕсли;
КэшЦветов = Новый Структура;
КэшЦветов.Вставить("ПоясняющийОшибкуТекст", ЦветаСтиля.ПоясняющийОшибкуТекст);
КэшЦветов.Вставить("ЦветТекстаНевыбраннойКартинки", ЦветаСтиля.ЦветТекстаНевыбраннойКартинки);
ЦветаСтиляКэш = Новый ФиксированнаяСтруктура(КэшЦветов);
НоменклатураЛокализация.ПриСозданииНаСервере_СертификатыНоменклатуры_ФормаЭлемента(ЭтотОбъект);
УстановитьВидимостьДоступностьРосаккредитации();
ОбновитьТекстыРосаккредитации();
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("Объект", Объект);
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
СобытияФорм.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
ПараметрыГиперссылки = РаботаСФайлами.ГиперссылкаФайлов();
ПараметрыГиперссылки.Размещение = "КоманднаяПанель";
РаботаСФайлами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыГиперссылки);
ИнтеграцияСМаркетплейсамиСервер.ПриСозданииФормыЭлементаСертификатаНоменклатуры(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ОбновитьПредставление();
Если ТекущееИзображение > 0 Тогда
ОбновитьАдресКартинки(Изображения[ТекущееИзображение - 1].АдресФайлаВХранилище,
Изображения[ТекущееИзображение - 1].ПриПолученииДанныхКартинкиВозниклаОшибка);
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПрисоединенныйФайл = Изображения[ТекущееИзображение - 1].Ссылка;
ОбновитьВидимостьКомандИзображения(ПрисоединенныйФайл);
КонецЕсли;
КонецЕсли;
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
РаботаСФайламиКлиент.ПриОткрытии(ЭтотОбъект, Отказ);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ИзображенияПомеченныеНаУдаление.Количество() > 0 Тогда
Если ЗавершениеРаботы Тогда
Отказ = Истина;
ТекстПредупреждения = НСтр("ru = 'Данные были изменены. Все изменения будут потеряны.'");
Возврат;
КонецЕсли;
УстановитьПометкуУдаленияДляДобавленныхИзображений();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Объект.Наименование = Объект.ПредставлениеСертификата;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ВариантОбластиДействия = "КонкретныйТовар"
И Не ЗначениеЗаполнено(Номенклатура) Тогда
Отказ = Истина;
ТекстСообщения = НСтр("ru='Область действия не заполнена'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Номенклатура");
ИначеЕсли ВариантОбластиДействия = "ВидНоменклатуры"
И Не ЗначениеЗаполнено(ВидНоменклатуры)Тогда
Отказ = Истина;
ТекстСообщения = НСтр("ru='Область действия не заполнена'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "ВидНоменклатуры");
ИначеЕсли ВариантОбластиДействия = "СписокТоваров" Тогда
ОтборСтрок = Новый Структура("ВидНоменклатуры", Справочники.ВидыНоменклатуры.ПустаяСсылка());
НеЗаполненныеСтроки = ОбластьДействия.НайтиСтроки(ОтборСтрок);
Для Каждого НеЗаполненнаяСтрока Из НеЗаполненныеСтроки Цикл
ОбластьДействия.Удалить(НеЗаполненнаяСтрока);
КонецЦикла;
Если ОбластьДействия.Количество()=0 Тогда
Отказ = Истина;
ТекстСообщения = НСтр("ru='Область действия не заполнена'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "ОбластьДействия");
КонецЕсли;
КонецЕсли;
Если Не ТекущийОбъект.ЭтоНовый() Тогда
ДействительныеСтатусыРосаккредитации = НоменклатураКлиентСерверЛокализация.ДействительныеСтатусыРосаккредитации();
СтатусДействует = (Объект.Статус = Перечисления.СтатусыСертификатовНоменклатуры.Действующий);
СтатусРосаккредитацииДействует = (ДействительныеСтатусыРосаккредитации.Найти(Объект.СтатусРосаккредитации) <> Неопределено);
Если СтатусДействует <> СтатусРосаккредитацииДействует
И Объект.СтатусРосаккредитации <> Перечисления.СтатусыСертификатовНоменклатурыРосаккредитации.ПустаяСсылка()
И Константы.ВариантПроверкиСтатусовСертификатовНоменклатурыРосаккредитации.Получить()
= Перечисления.ВариантыПроверкиСтатусовСертификатовНоменклатурыРосаккредитации.ПроверятьИОбновлятьСтатусДействия Тогда
Отказ = Истина;
ТекстСообщения = НСтр("ru='Статус сертификата не соответствует статусу по данным Росаккредитации.'");
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, , "Статус", "Статус");
КонецЕсли;
КонецЕсли;
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
МодификацияКонфигурацииПереопределяемый.ПередЗаписьюНаСервере(ЭтотОбъект, Отказ, ТекущийОбъект, ПараметрыЗаписи);
ИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
НаборЗаписей = РегистрыСведений.ОбластиДействияСертификатовНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.СертификатНоменклатуры.Установить(Объект.Ссылка);
НаборЗаписей.Прочитать();
ТаблицаОбластиДействия = НаборЗаписей.ВыгрузитьКолонки();
Если ВариантОбластиДействия = "КонкретныйТовар" Тогда
НоваяСтрокаОбластиДействия = ТаблицаОбластиДействия.Добавить();
НоваяСтрокаОбластиДействия.ВидНоменклатуры = ВидНоменклатуры;
НоваяСтрокаОбластиДействия.Номенклатура = Номенклатура;
НоваяСтрокаОбластиДействия.Характеристика = Характеристика;
НоваяСтрокаОбластиДействия.Серия = Серия;
ИначеЕсли ВариантОбластиДействия = "ВидНоменклатуры" Тогда
НоваяСтрокаОбластиДействия = ТаблицаОбластиДействия.Добавить();
НоваяСтрокаОбластиДействия.ВидНоменклатуры = ВидНоменклатуры;
Иначе
ТаблицаОбластиДействия = ОбластьДействия.Выгрузить();
ТаблицаОбластиДействия.Колонки.Добавить("СертификатНоменклатуры",
Новый ОписаниеТипов("СправочникСсылка.СертификатыНоменклатуры"));
КонецЕсли;
ТаблицаОбластиДействия.ЗаполнитьЗначения(Объект.Ссылка, "СертификатНоменклатуры");
ТаблицаОбластиДействия.Свернуть("СертификатНоменклатуры, ВидНоменклатуры, Номенклатура, Характеристика, Серия");
НаборЗаписей.Загрузить(ТаблицаОбластиДействия);
НаборЗаписей.Записать();
ТЗИзображенияПомеченныеНаУдаление = ИзображенияПомеченныеНаУдаление.Выгрузить();
ТЗИзображенияПомеченныеНаУдаление.Свернуть("Ссылка", "Пометка");
Для Каждого Изображение Из ТЗИзображенияПомеченныеНаУдаление Цикл
УстановитьПометкуУдаленияИзображения(Изображение.Ссылка,Изображение.Пометка);
КонецЦикла;
ИзображенияПомеченныеНаУдаление.Очистить();
Для Каждого Изображение Из Изображения Цикл
Если ЗначениеЗаполнено(Изображение.ИмяБезРасширения) Тогда
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.Автор = Пользователи.АвторизованныйПользователь();
ПараметрыФайла.ВладелецФайлов = Объект.Ссылка;
ПараметрыФайла.ИмяБезРасширения = Изображение.ИмяБезРасширения;
ПараметрыФайла.РасширениеБезТочки = Изображение.Расширение;
РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, Изображение.АдресФайлаВХранилище);
КонецЕсли;
КонецЦикла;
Изображения.Очистить();
ОбновитьТаблицуИзображений();
УстановитьВидимостьДоступностьРосаккредитации();
МодификацияКонфигурацииПереопределяемый.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Если ТекущееИзображение > 0 Тогда
ОбновитьАдресКартинки(Изображения[ТекущееИзображение - 1].АдресФайлаВХранилище,
Изображения[ТекущееИзображение - 1].ПриПолученииДанныхКартинкиВозниклаОшибка);
КонецЕсли;
Оповестить("Запись_СертификатНоменклатуры", Объект.Ссылка);
МодификацияКонфигурацииКлиентПереопределяемый.ПослеЗаписи(ЭтотОбъект, ПараметрыЗаписи);
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
КонецЕсли;
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, "Запись_Файл");
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ВыборОбластиДействияСертификатаНоменклатуры" Тогда
ПодборОбластиДействия(Параметр);
ИначеЕсли ИмяСобытия = "Запись_Файл" Тогда
ОбработатьЗаписиФайла(ИмяСобытия, Параметр, Источник);
КонецЕсли;
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
РаботаСФайламиКлиент.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПриЧтенииСозданииНаСервере();
МодификацияКонфигурацииПереопределяемый.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ТипСертификатаПриИзменении(Элемент)
ОбновитьПредставление(Истина);
КонецПроцедуры
&НаКлиенте
Процедура ТипСертификатаАвтоПодбор(Элемент, Текст, ДанныеВыбора, Параметры, Ожидание, СтандартнаяОбработка)
МассивТипов = СформироватьСписокТипов(Текст);
ДанныеВыбора = Новый СписокЗначений;
ДанныеВыбора.ЗагрузитьЗначения(МассивТипов);
КонецПроцедуры
&НаКлиенте
Процедура НомерПриИзменении(Элемент)
ОбновитьПредставление(Истина);
ОбновитьСтатусРосаккредитацииФоновоеЗадание();
КонецПроцедуры
&НаКлиенте
Процедура ОрганВыдавшийДокументПриИзменении(Элемент)
ОбновитьПредставление();
КонецПроцедуры
&НаКлиенте
Процедура БессрочныйПриИзменении(Элемент)
Если Объект.Бессрочный Тогда
Объект.ДатаОкончанияСрокаДействия = Дата(1, 1, 1);
Элементы.ДатаОкончанияСрокаДействия.Доступность = Ложь;
Иначе
Элементы.ДатаОкончанияСрокаДействия.Доступность = Истина;
КонецЕсли;
ОбновитьПредставление();
ОбновитьСтатусРосаккредитацииФоновоеЗадание();
КонецПроцедуры
&НаКлиенте
Процедура ВариантОбластиДействияПриИзменении(Элемент)
ОбработатьИзменениеВариантаОбластиДействия();
КонецПроцедуры
&НаКлиенте
Процедура ВидНоменклатурыПриИзменении(Элемент)
ВидНоменклатурыПриИзмененииНаСервере();
ПриИзмененииОбластиДействия();
КонецПроцедуры
&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент)
НоменклатураПриИзмененииСервер();
ПриИзмененииОбластиДействия();
КонецПроцедуры
&НаКлиенте
Процедура ХарактеристикаПриИзменении(Элемент)
Элементы.Серия.Доступность = ЗначениеЗаполнено(Номенклатура) И (ЗначениеЗаполнено(Характеристика)
Или Не ХарактеристикиИспользуются) И СерииИспользуются;
ПриИзмененииОбластиДействия();
КонецПроцедуры
&НаКлиенте
Процедура СерияПриИзменении(Элемент)
ПриИзмененииОбластиДействия();
КонецПроцедуры
&НаКлиенте
Процедура СерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("РежимПодбора", "ПодборСерий");
ПараметрыФормы.Вставить("ВидНоменклатуры", ВидНоменклатуры);
ПараметрыФормы.Вставить("Номенклатура", Номенклатура);
ПараметрыФормы.Вставить("Характеристика", Характеристика);
ПараметрыФормы.Вставить("ХарактеристикиИспользуются", ХарактеристикиИспользуются);
Оповещение = Новый ОписаниеОповещения("ВыборСерииЗавершение", ЭтотОбъект);
ОткрытьФорму("Справочник.СертификатыНоменклатуры.Форма.ФормаПодбораОбластиДействияСерия",
ПараметрыФормы,,,,,
Оповещение,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура СерияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДанныеВыбора = Новый СписокЗначений;
ДанныеВыбора.ЗагрузитьЗначения(СписокАвтоподбораСерии(Текст, Номенклатура, Характеристика));
КонецПроцедуры
&НаКлиенте
Процедура АдресКартинкиНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ЗначениеЗаполнено(АдресКартинки) Тогда
ПросмотретьИзображение();
Иначе
Если Не Элементы.КоманднаяПанельИзображения.Доступность Тогда
Возврат;
КонецЕсли;
ПриДобавленииИзображения();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДатаОкончанияСрокаДействияПриИзменении(Элемент)
ОбновитьПредставление();
ОбновитьСтатусРосаккредитацииФоновоеЗадание();
КонецПроцедуры
&НаКлиенте
Процедура ДатаНачалаСрокаДействияПриИзменении(Элемент)
Если ЗначениеЗаполнено(Объект.ДатаОкончанияСрокаДействия)
И Объект.ДатаНачалаСрокаДействия > Объект.ДатаОкончанияСрокаДействия Тогда
Объект.ДатаНачалаСрокаДействия = Объект.ДатаОкончанияСрокаДействия;
КонецЕсли;
ОбновитьПредставление();
ОбновитьСтатусРосаккредитацииФоновоеЗадание();
КонецПроцедуры
&НаКлиенте
Процедура ГиперссылкаНаСертификатРосаккредитацииНажатие(Элемент)
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(Объект.СсылкаНаСертификатРосаккредитации);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыОбластьДействия
&НаКлиенте
Процедура ОбластьДействияПриАктивизацииСтроки(Элемент)
УстановитьТекущуюОбластьДействияКлиент();
КонецПроцедуры
&НаКлиенте
Процедура ОбластьДействияВидНоменклатурыПриИзменении(Элемент)
ТекущиеДанные = Элементы.ОбластьДействия.ТекущиеДанные;
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
ТекущийВидНоменклатуры = ТекущиеДанные.ВидНоменклатуры;
Элементы.ОбластьДействия.ТекущиеДанные.СерииИспользуются = ДоступностьСерий(ТекущийВидНоменклатуры, Истина);
Элементы.ОбластьДействия.ТекущиеДанные.ХарактеристикиИспользуются = Ложь;
ПриИзмененииОбластиДействия();
КонецПроцедуры
&НаКлиенте
Процедура ОбластьДействияНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.ОбластьДействия.ТекущиеДанные;
Если ЗначениеЗаполнено(ТекущаяСтрока.Номенклатура) Тогда
СвойстваНоменклатуры = ОбластьДействияНоменклатураПриИзмененииНаСервере(ТекущаяСтрока.Номенклатура, ТекущаяСтрока.ВидНоменклатуры);
ТекущаяСтрока.ХарактеристикиИспользуются = СвойстваНоменклатуры.ХарактеристикиИспользуются;
Если СвойстваНоменклатуры.Свойство("ВидНоменклатуры") Тогда
ТекущаяОбластьДействия.ВидНоменклатуры = СвойстваНоменклатуры.ВидНоменклатуры;
ТекущаяСтрока.ВидНоменклатуры = СвойстваНоменклатуры.ВидНоменклатуры;
ТекущаяСтрока.СерииИспользуются = СвойстваНоменклатуры.СерииИспользуются;
КонецЕсли;
КонецЕсли;
ПриИзмененииОбластиДействия();
КонецПроцедуры
&НаКлиенте
Процедура ОбластьДействияХарактеристикаПриИзменении(Элемент)
ПриИзмененииОбластиДействия();
КонецПроцедуры
&НаКлиенте
Процедура ОбластьДействияСерияПриИзменении(Элемент)
ПриИзмененииОбластиДействия();
КонецПроцедуры
&НаКлиенте
Процедура ОбластьДействияСерияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ТекущаяСтрока = Элементы.ОбластьДействия.ТекущиеДанные;
СтандартнаяОбработка = Ложь;
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("РежимПодбора", "ПодборСерий");
ПараметрыФормы.Вставить("ВидНоменклатуры", ТекущаяСтрока.ВидНоменклатуры);
ПараметрыФормы.Вставить("Номенклатура", ТекущаяСтрока.Номенклатура);
ПараметрыФормы.Вставить("Характеристика", ТекущаяСтрока.Характеристика);
ПараметрыФормы.Вставить("ХарактеристикиИспользуются", ТекущаяСтрока.ХарактеристикиИспользуются);
Оповещение = Новый ОписаниеОповещения("ВыборСерииЗавершение", ЭтотОбъект);
ОткрытьФорму("Справочник.СертификатыНоменклатуры.Форма.ФормаПодбораОбластиДействияСерия",
ПараметрыФормы,,,,,
Оповещение,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ОбластьДействияСерияАвтоПодбор(Элемент, Текст, ДанныеВыбора, ПараметрыПолученияДанных, Ожидание, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = Элементы.ОбластьДействия.ТекущиеДанные;
ДанныеВыбора = Новый СписокЗначений;
ДанныеВыбора.ЗагрузитьЗначения(СписокАвтоподбораСерии(Текст, ТекущиеДанные.Номенклатура, ТекущиеДанные.Характеристика));
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_КомандаПанелиПрисоединенныхФайлов(Команда)
РаботаСФайламиКлиент.КомандаУправленияПрисоединеннымиФайлами(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПроверкаПеретаскивания(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраПеретаскивание(ЭтотОбъект, Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПолеПредпросмотраНажатие(Элемент, СтандартнаяОбработка)
РаботаСФайламиКлиент.ПолеПредпросмотраНажатие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
&НаКлиенте
Процедура Подобрать(Команда)
ПараметрыФормы = Новый Структура();
ПараметрыФормы.Вставить("РежимПодбора", "ПодборОбластиДействия");
Серия = Неопределено;
ОткрытьФорму("Справочник.СертификатыНоменклатуры.Форма.ФормаПодбораОбластиДействияСерия",ПараметрыФормы,,,,, Неопределено, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура ПросмотретьИзображение()
ОчиститьСообщения();
ДанныеФайла = Изображения[ТекущееИзображение-1];
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Если ЗначениеЗаполнено(ПрисоединенныйФайл) Тогда
РаботаСФайламиКлиент.ОткрытьФайл(РаботаСФайламиКлиент.ДанныеФайла(ДанныеФайла.Ссылка,
УникальныйИдентификатор));
Иначе
ТекстСообщения = НСтр("ru='Отсутствует изображение для просмотра'");
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения, ,"АдресКартинки");
КонецЕсли;
Иначе
ФайловаяСистемаКлиент.ОткрытьФайл(ДанныеФайла.АдресФайлаВХранилище, , ДанныеФайла.ПолноеИмя);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СкопироватьОбластьДействия(Команда)
Если Элементы.ОбластьДействия.ТекущиеДанные <> Неопределено Тогда
ИменаРеквизитов = "ВидНоменклатуры, Номенклатура, СерииИспользуются, Серия, Характеристика,
|ХарактеристикиИспользуются";
СтруктураСтроки = Новый Структура(ИменаРеквизитов);
ЗаполнитьЗначенияСвойств(СтруктураСтроки, Элементы.ОбластьДействия.ТекущиеДанные);
Элементы.ОбластьДействия.ДобавитьСтроку();
ЗаполнитьЗначенияСвойств(Элементы.ОбластьДействия.ТекущиеДанные, СтруктураСтроки);
ЗаполнитьЗначенияСвойств(ТекущаяОбластьДействия, СтруктураСтроки);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СледующиеИзображение(Команда)
Если ТекущееИзображение < ВсегоИзображений Тогда
ТекущееИзображение = ТекущееИзображение + 1;
ОбновитьАдресКартинки(Изображения[ТекущееИзображение - 1].АдресФайлаВХранилище,
Изображения[ТекущееИзображение - 1].ПриПолученииДанныхКартинкиВозниклаОшибка);
ОбновитьСчетчикИзображений();
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПрисоединенныйФайл = Изображения[ТекущееИзображение - 1].Ссылка;
ОбновитьВидимостьКомандИзображения(ПрисоединенныйФайл);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПредыдущееИзображение(Команда)
Если ТекущееИзображение > 1 Тогда
ТекущееИзображение = ТекущееИзображение - 1;
ОбновитьАдресКартинки(Изображения[ТекущееИзображение - 1].АдресФайлаВХранилище,
Изображения[ТекущееИзображение - 1].ПриПолученииДанныхКартинкиВозниклаОшибка);
ОбновитьСчетчикИзображений();
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПрисоединенныйФайл = Изображения[ТекущееИзображение - 1].Ссылка;
ОбновитьВидимостьКомандИзображения(ПрисоединенныйФайл);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзображение(Команда)
ПриДобавленииИзображения();
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьИзображение(Команда)
Если ВсегоИзображений > 0 Тогда
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
Модифицированность = Истина;
НоваяСтрока = ИзображенияПомеченныеНаУдаление.Добавить();
НоваяСтрока.Ссылка = Изображения[ТекущееИзображение - 1].Ссылка;
НоваяСтрока.Пометка = Истина;
КонецЕсли;
Изображения.Удалить(ТекущееИзображение-1);
ВсегоИзображений = ВсегоИзображений - 1;
Если ТекущееИзображение>ВсегоИзображений Тогда
ТекущееИзображение = ТекущееИзображение - 1;
КонецЕсли;
Если ВсегоИзображений = 0 Тогда
ОбновитьАдресКартинки("", Ложь);
ПрисоединенныйФайл = ПредопределенноеЗначение("Справочник.СертификатыНоменклатуры.ПустаяСсылка");
Иначе
ОбновитьАдресКартинки(Изображения[ТекущееИзображение - 1].АдресФайлаВХранилище,
Изображения[ТекущееИзображение - 1].ПриПолученииДанныхКартинкиВозниклаОшибка);
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ПрисоединенныйФайл = Изображения[ТекущееИзображение - 1].Ссылка;
КонецЕсли;
КонецЕсли;
ОбновитьСчетчикИзображений();
ОбновитьВидимостьКомандИзображения(ПрисоединенныйФайл);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьТоварыПоОтбору(Команда)
ПараметрыФормы = Новый Структура("УникальныйИдентификатор, ВестиУчетСертификатовНоменклатуры",
УникальныйИдентификатор, Истина);
ОписаниеОповещения = Новый ОписаниеОповещения("ДобавитьТоварыПоОтборуЗавершение", ЭтотОбъект);
ОткрытьФорму("Обработка.ПодборТоваровПоОтбору.Форма.Форма",
ПараметрыФормы,
ЭтотОбъект,
,
,
,
ОписаниеОповещения,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(Команда, ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)
СобытияФормКлиент.ВыполнитьПереопределяемуюКоманду(ЭтотОбъект, Команда);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСтатусРосаккредитации(Команда)
ОбновитьСтатусРосаккредитацииФоновоеЗадание();
КонецПроцедуры
&НаКлиенте
Процедура РаскрытьГруппуРосаккредитация(Команда)
Элементы.ГруппаРосаккредитацияСворачиваемая.Видимость = Не Элементы.ГруппаРосаккредитацияСворачиваемая.Видимость;
Если Элементы.ГруппаРосаккредитацияСворачиваемая.Видимость Тогда
ОбновитьСтатусРосаккредитацииФоновоеЗадание();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьПоДаннымРосаккредитации(Команда)
ОтветФункции = ЗаполнитьПоДаннымРосаккредитацииНаСервере();
Если Не ПустаяСтрока(ОтветФункции.ТекстСообщения) Тогда
ПоказатьВопрос(Новый ОписаниеОповещения("ЗаполнитьПоДаннымРосаккредитацииЗавершение", ЭтотОбъект),
ОтветФункции.ТекстСообщения,
РежимДиалогаВопрос.ДаНет,
,
КодВозвратаДиалога.Да);
ИначеЕсли ОтветФункции.ДанныеИзменены Тогда
ПоказатьОповещениеПользователя(
НСтр("ru = 'Заполнение завершено'"),
,
,
БиблиотекаКартинок.Информация32);
ВариантОбластиДействияПриИзмененииЗавершение();
Иначе
ПоказатьОповещениеПользователя(
НСтр("ru = 'Нет данных для заполнения'"),
,
,
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура УстановитьУсловноеОформление()
УсловноеОформление.Элементы.Очистить();
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияХарактеристика.Имя);
ГруппаОтбораИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ВидНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ХарактеристикиИспользуются");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Номенклатура");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<характеристики не используются>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияХарактеристика.Имя);
ГруппаОтбораИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Характеристика");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ВидНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ГруппаОтбораИЛИ = ГруппаОтбораИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИЛИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ОтборЭлемента = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Номенклатура");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбораИ2 = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ2.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ХарактеристикиИспользуются");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбораИ2.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Номенклатура");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для всех характеристик>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияСерия.Имя);
ГруппаОтбораИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ВидНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.СерииИспользуются");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<серия не указывается>'"));
Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияСерия.Имя);
ГруппаОтбораИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ВидНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.СерииИспользуются");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Серия");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для всех серий>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияНоменклатура.Имя);
ГруппаОтбораИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ВидНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Номенклатура");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", ЦветаСтиля.ЦветТекстаОтмененнойСтрокиДокумента);
Элемент.Оформление.УстановитьЗначениеПараметра("Текст", НСтр("ru = '<для всей номенклатуры>'"));
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияХарактеристика.Имя);
ГруппаОтбораИЛИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИЛИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ОтборЭлемента = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ВидНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Номенклатура");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ОбластьДействияСерия.Имя);
ГруппаОтбораИЛИ = Элемент.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИЛИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;
ОтборЭлемента = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ВидНоменклатуры");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Номенклатура");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ГруппаОтбораИ = ГруппаОтбораИЛИ.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбораИ.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИ;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.Характеристика");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
ОтборЭлемента = ГруппаОтбораИ.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ОбластьДействия.ХарактеристикиИспользуются");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Истина;
Элемент.Оформление.УстановитьЗначениеПараметра("Доступность", Ложь);
Элемент = УсловноеОформление.Элементы.Добавить();
ПолеЭлемента = Элемент.Поля.Элементы.Добавить();
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Элементы.ДатаОкончанияСрокаДействия.Имя);
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Бессрочный");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ОтборЭлемента.ПравоеЗначение = Ложь;
ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДатаОкончанияСрокаДействия");
ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.НеЗаполнено;
Элемент.Оформление.УстановитьЗначениеПараметра("ОтметкаНезаполненного", Истина);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииСозданииНаСервере(ЗаполнятьОбластьДействия = Истина)
Элементы.ДатаОкончанияСрокаДействия.Доступность = Не Объект.Бессрочный;
Если ЗаполнятьОбластьДействия Тогда
ЗаполнитьОбластьДействия(Объект.Ссылка);
КонецЕсли;
УстановитьТекущуюОбластьДействия();
КонецПроцедуры
&НаСервере
Процедура ОбновитьТаблицуИзображений()
СформироватьТаблицуИзображений();
Если ВсегоИзображений > 0 Тогда
ПрисоединенныйФайл = Изображения[ТекущееИзображение - 1].Ссылка;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВыборСерииЗавершение(ПодобраннаяСерия, Параметры) Экспорт
Если ВариантОбластиДействия = "КонкретныйТовар" Тогда
Серия = ПодобраннаяСерия;
Иначе
Элементы.ОбластьДействия.ТекущиеДанные.Серия = ПодобраннаяСерия;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьДоступностьИПодсказкуВводаСерийИХарактеристикиНаКлиенте()
Элементы.Характеристика.Доступность = ХарактеристикиИспользуются И ЗначениеЗаполнено(Номенклатура);
Элементы.Серия.Доступность = ЗначениеЗаполнено(Номенклатура) И (ЗначениеЗаполнено(Характеристика)
Или Не ХарактеристикиИспользуются) И СерииИспользуются;
Если ХарактеристикиИспользуются Тогда
Элементы.Характеристика.ПодсказкаВвода = НСтр("ru='<для всех характеристик>'");
Иначе
Элементы.Характеристика.ПодсказкаВвода = НСтр("ru='<характеристики не используются>'");
КонецЕсли;
Если СерииИспользуются Тогда
Элементы.Серия.ПодсказкаВвода = НСтр("ru='<для всех серий>'");
Иначе
Элементы.Серия.ПодсказкаВвода = НСтр("ru='<серия не указывается>'");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьВидимостьДоступностьРосаккредитации()
Если Объект.ТипСертификата = НСтр("ru = 'Сертификат соответствия'")
Или Объект.ТипСертификата = НСтр("ru = 'Декларация о соответствии'") Тогда
Элементы.ГруппаРосаккредитацияШапка.Видимость = Истина;
Элементы.ГруппаРосаккредитацияШапка.Доступность = ЗначениеЗаполнено(Объект.Ссылка);
Элементы.ЗаполнитьПоДаннымРосаккредитации.Видимость = ТНВЭДПоДаннымРосаккредитации.Количество() > 0
Или ШтрихкодыПоДаннымРосаккредитации.Количество() > 0;
Элементы.НадписьЗаполнитьИзРосаккредитации.Видимость = Элементы.ЗаполнитьПоДаннымРосаккредитации.Видимость;
Элементы.ГиперссылкаНаСертификатРосаккредитации.Видимость = Не ПустаяСтрока(Объект.СсылкаНаСертификатРосаккредитации);
Иначе
Элементы.ГруппаРосаккредитацияШапка.Видимость = Ложь;
Элементы.ГруппаРосаккредитацияСворачиваемая.Видимость = Ложь;
Элементы.ЗаполнитьПоДаннымРосаккредитации.Видимость = Ложь;
Элементы.НадписьЗаполнитьИзРосаккредитации.Видимость = Ложь;
КонецЕсли;
Элементы.ГруппаРосаккредитацияИТСНеПодключен.Видимость = Не ИТСПодключен
И (Объект.ТипСертификата = НСтр("ru = 'Сертификат соответствия'")
Или Объект.ТипСертификата = НСтр("ru = 'Декларация о соответствии'"));
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОбластьДействия(СсылкаСертификатаНоменклатуры)
ВариантОбластиДействия = "КонкретныйТовар";
НаборЗаписей = РегистрыСведений.ОбластиДействияСертификатовНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.СертификатНоменклатуры.Установить(СсылкаСертификатаНоменклатуры);
НаборЗаписей.Прочитать();
ТаблицаРегистра = НаборЗаписей.Выгрузить();
КоличествоЭлементовТаблицы = ТаблицаРегистра.Количество();
Если КоличествоЭлементовТаблицы = 1 Тогда
СтрокаОбластиДействия = ТаблицаРегистра[0];
Если ЗначениеЗаполнено(СтрокаОбластиДействия.Номенклатура) Тогда
ВидНоменклатуры = СтрокаОбластиДействия.ВидНоменклатуры;
Номенклатура = СтрокаОбластиДействия.Номенклатура;
Характеристика = СтрокаОбластиДействия.Характеристика;
Серия = СтрокаОбластиДействия.Серия;
НоменклатураПриИзмененииСервер();
Иначе
ВариантОбластиДействия = "ВидНоменклатуры";
ВидНоменклатуры = СтрокаОбластиДействия.ВидНоменклатуры;
Номенклатура = Справочники.Номенклатура.ПустаяСсылка();
Характеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
Серия = Справочники.СерииНоменклатуры.ПустаяСсылка();
СерииИспользуются = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВидНоменклатуры, "ИспользоватьСерии");
ХарактеристикиИспользуются = ХарактеристикиИспользуются(ВидНоменклатуры);
КонецЕсли;
ИначеЕсли КоличествоЭлементовТаблицы > 0 Тогда
ВариантОбластиДействия = "СписокТоваров";
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОбластьДействия.ВидНоменклатуры,
| ОбластьДействия.Номенклатура,
| ОбластьДействия.Характеристика,
| ОбластьДействия.Серия
|ПОМЕСТИТЬ ОбластьДействия
|ИЗ
| &ОбластьДействия КАК ОбластьДействия
|;
|
|
|ВЫБРАТЬ
| ОбластьДействия.Номенклатура,
| ОбластьДействия.ВидНоменклатуры,
| ОбластьДействия.Характеристика,
| ОбластьДействия.Серия,
| ВЫБОР
| КОГДА ОбластьДействия.Номенклатура.ИспользованиеХарактеристик В (ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры),
| ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры),
| ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ХарактеристикиИспользуются,
| ОбластьДействия.ВидНоменклатуры.ИспользоватьСерии КАК СерииИспользуются
|ИЗ
| ОбластьДействия КАК ОбластьДействия";
Запрос.УстановитьПараметр("ОбластьДействия", ТаблицаРегистра);
ОбластьДействия.Загрузить(Запрос.Выполнить().Выгрузить());
КонецЕсли;
Если ВариантОбластиДействия = "КонкретныйТовар" Тогда
Элементы.СтраницыОбластьДействия.ТекущаяСтраница = Элементы.СтраницаКонкретныйТовар;
ИначеЕсли ВариантОбластиДействия = "ВидНоменклатуры" Тогда
Элементы.СтраницыОбластьДействия.ТекущаяСтраница = Элементы.СтраницаВидНоменклатуры;
Иначе
Элементы.СтраницыОбластьДействия.ТекущаяСтраница = Элементы.СтраницаСписокПродукции;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьПредставление(ИзменятьПредставление = Ложь)
ПредставлениеСертификата = Объект.ТипСертификата + " №" + Объект.Номер;
Если Объект.Бессрочный Тогда
ПредставлениеДаты = " " + НСтр("ru='от %ДатаНачалаСрокаДействия%'");
Иначе
ПредставлениеДаты = " " + НСтр("ru='с %ДатаНачалаСрокаДействия% по %ДатаОкончанияСрокаДействия%'");
КонецЕсли;
ПредставлениеДаты = СтрЗаменить(ПредставлениеДаты, "%ДатаНачалаСрокаДействия%", Формат(Объект.ДатаНачалаСрокаДействия, "ДЛФ=Д"));
ПредставлениеДаты = СтрЗаменить(ПредставлениеДаты, "%ДатаОкончанияСрокаДействия%", Формат(Объект.ДатаОкончанияСрокаДействия, "ДЛФ=Д"));
Если ЗначениеЗаполнено(Объект.ОрганВыдавшийДокумент) Тогда
ПредставлениеВыдан = НСтр("ru='. Выдан: %ОрганВыдавшийДокумент%'");
ПредставлениеВыдан = СтрЗаменить(ПредставлениеВыдан, "%ОрганВыдавшийДокумент%", Объект.ОрганВыдавшийДокумент);
Иначе
ПредставлениеВыдан = "";
КонецЕсли;
Элементы.Представление.СписокВыбора.Очистить();
Элементы.Представление.СписокВыбора.Добавить(ПредставлениеСертификата);
Элементы.Представление.СписокВыбора.Добавить(ПредставлениеСертификата + ПредставлениеДаты);
Если ЗначениеЗаполнено(Объект.ОрганВыдавшийДокумент) Тогда
Элементы.Представление.СписокВыбора.Добавить(ПредставлениеСертификата + ПредставлениеДаты + ПредставлениеВыдан);
КонецЕсли;
Если ИзменятьПредставление Тогда
Объект.ПредставлениеСертификата = ПредставлениеСертификата;
КонецЕсли;
УстановитьВидимостьДоступностьРосаккредитации();
ОбновитьТекстыРосаккредитации();
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьИзменениеВариантаОбластиДействия()
Модифицированность = Истина;
Если ТекущаяОбластьДействия.ВариантОбластиДействия = "СписокТоваров" Тогда
СменитьВариантОбласти = Истина;
Если ОбластьДействия.Количество() > 1 Тогда
ТекстВопроса = НСтр("ru = 'При смене варианта области действия список будет очищен. Продолжить?'");
ПоказатьВопрос(
Новый ОписаниеОповещения("ВариантОбластиДействияПриИзмененииОтветНаВопрос", ЭтотОбъект),
ТекстВопроса,
РежимДиалогаВопрос.ДаНет,
,
КодВозвратаДиалога.Нет);
Возврат;
ИначеЕсли ОбластьДействия.Количество() = 0 Тогда
СменитьВариантОбласти = Ложь;
КонецЕсли;
ВариантОбластиДействияСменитьВариантОбласти(СменитьВариантОбласти);
ИначеЕсли ВариантОбластиДействия = "СписокТоваров" Тогда
ОбластьДействия.Очистить();
НоваяСтрока = ОбластьДействия.Добавить();
НоваяСтрока.ВидНоменклатуры = ВидНоменклатуры;
НоваяСтрока.Номенклатура = Номенклатура;
НоваяСтрока.Характеристика = Характеристика;
НоваяСтрока.Серия = Серия;
НоваяСтрока.ХарактеристикиИспользуются = ХарактеристикиИспользуются;
НоваяСтрока.СерииИспользуются = СерииИспользуются;
Элементы.ОбластьДействия.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
КонецЕсли;
ВариантОбластиДействияПриИзмененииЗавершение();
КонецПроцедуры
&НаКлиенте
Процедура ВариантОбластиДействияПриИзмененииОтветНаВопрос(РезультатВопроса, ДополнительныеПараметры) Экспорт
Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда
ВариантОбластиДействия = ТекущаяОбластьДействия.ВариантОбластиДействия;
Возврат;
КонецЕсли;
ВариантОбластиДействияСменитьВариантОбласти(Истина);
ВариантОбластиДействияПриИзмененииЗавершение();
КонецПроцедуры
&НаКлиенте
Процедура ВариантОбластиДействияСменитьВариантОбласти(Знач СменитьВариантОбласти)
Если СменитьВариантОбласти Тогда
ТекущаяСтрока = Элементы.ОбластьДействия.ТекущиеДанные;
ВидНоменклатуры = ТекущаяСтрока.ВидНоменклатуры;
Номенклатура = ТекущаяСтрока.Номенклатура;
Характеристика = ТекущаяСтрока.Характеристика;
Серия = ТекущаяСтрока.Серия;
ХарактеристикиИспользуются = ТекущаяСтрока.ХарактеристикиИспользуются;
СерииИспользуются = ТекущаяСтрока.СерииИспользуются;
УстановитьДоступностьИПодсказкуВводаСерийИХарактеристикиНаКлиенте();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВариантОбластиДействияПриИзмененииЗавершение()
Если ВариантОбластиДействия = "КонкретныйТовар" Тогда
Элементы.СтраницыОбластьДействия.ТекущаяСтраница = Элементы.СтраницаКонкретныйТовар;
ИначеЕсли ВариантОбластиДействия = "ВидНоменклатуры" Тогда
Элементы.СтраницыОбластьДействия.ТекущаяСтраница = Элементы.СтраницаВидНоменклатуры;
Иначе
Элементы.СтраницыОбластьДействия.ТекущаяСтраница = Элементы.СтраницаСписокПродукции;
КонецЕсли;
УстановитьТекущуюОбластьДействияКлиент();
КонецПроцедуры
&НаСервере
Процедура НоменклатураПриИзмененииСервер()
Если ЗначениеЗаполнено(Номенклатура) Тогда
ИменаРеквизитов = "ВидНоменклатуры, ИспользованиеХарактеристик";
РеквизитыНоменклатуры = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Номенклатура, ИменаРеквизитов);
ВидНоменклатуры = РеквизитыНоменклатуры.ВидНоменклатуры;
Если РеквизитыНоменклатуры.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры
Или РеквизитыНоменклатуры.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры
Или РеквизитыНоменклатуры.ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры Тогда
Элементы.Характеристика.Доступность = Истина;
Элементы.Характеристика.ПодсказкаВвода = НСтр("ru='<для всех характеристик>'");
ХарактеристикиИспользуются = Истина;
Иначе
Элементы.Характеристика.Доступность = Ложь;
Элементы.Характеристика.ПодсказкаВвода = НСтр("ru='<характеристики не используются>'");
ХарактеристикиИспользуются = Ложь;
КонецЕсли;
ДоступностьСерий(ВидНоменклатуры, Ложь);
Иначе
Элементы.Характеристика.Доступность = Ложь;
Элементы.Характеристика.ПодсказкаВвода = НСтр("ru='<характеристики не используются>'");
ХарактеристикиИспользуются = Ложь;
Элементы.Серия.Доступность = Ложь;
Элементы.Серия.ПодсказкаВвода = НСтр("ru='<серия не указывается>'");
СерииИспользуются = Ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВидНоменклатурыПриИзмененииНаСервере()
ТекущийВидНоменклатуры = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Номенклатура, "ВидНоменклатуры");
Если ТекущийВидНоменклатуры<>ВидНоменклатуры Тогда
Номенклатура = Справочники.Номенклатура.ПустаяСсылка();
ХарактеристикиИспользуются = Ложь;
Элементы.Характеристика.Доступность = Ложь;
Элементы.Характеристика.ПодсказкаВвода = НСтр("ru='<характеристики не используются>'");
КонецЕсли;
ДоступностьСерий(ВидНоменклатуры, Ложь);
КонецПроцедуры
&НаСервере
Функция ДоступностьСерий(ТекущийВидНоменклатуры, ЭтоСписок)
Если ЗначениеЗаполнено(ТекущийВидНоменклатуры) Тогда
ИспользоватьСерии = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущийВидНоменклатуры, "ИспользоватьСерии");
Иначе
ИспользоватьСерии = Ложь;
КонецЕсли;
Если ЭтоСписок Тогда
Возврат ИспользоватьСерии;
КонецЕсли;
Если ИспользоватьСерии Тогда
Элементы.Серия.Доступность = ЗначениеЗаполнено(Номенклатура)
И (ЗначениеЗаполнено(Характеристика)
Или Не ХарактеристикиИспользуются);
Элементы.Серия.ПодсказкаВвода = НСтр("ru='<для всех серий>'");
СерииИспользуются = Истина;
Иначе
Элементы.Серия.Доступность = Ложь;
Элементы.Серия.ПодсказкаВвода = НСтр("ru='<серия не указывается>'");
СерииИспользуются = Ложь;
КонецЕсли;
КонецФункции
&НаСервере
Функция ОбластьДействияНоменклатураПриИзмененииНаСервере(Номенклатура, ВидНоменклатурыВСтроке)
СтруктураВозврата = Новый Структура;
РеквизитыНоменклатуры = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Номенклатура,
"ИспользованиеХарактеристик, ВидНоменклатуры");
ИспользованиеХарактеристик = РеквизитыНоменклатуры.ИспользованиеХарактеристик;
ВидНоменклатуры = РеквизитыНоменклатуры.ВидНоменклатуры;
Если ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры
ИЛИ ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры
ИЛИ ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры Тогда
СтруктураВозврата.Вставить("ХарактеристикиИспользуются",Истина);
Иначе
СтруктураВозврата.Вставить("ХарактеристикиИспользуются",Ложь);
КонецЕсли;
Если ВидНоменклатуры <> ВидНоменклатурыВСтроке Тогда
ИспользоватьСерии = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ВидНоменклатуры, "ИспользоватьСерии");
СтруктураВозврата.Вставить("ВидНоменклатуры",ВидНоменклатуры);
СтруктураВозврата.Вставить("СерииИспользуются",ИспользоватьСерии);
КонецЕсли;
Возврат СтруктураВозврата;
КонецФункции
&НаСервере
Функция ХарактеристикиИспользуются(ТекущаяНоменклатура)
ИспользованиеХарактеристик = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущаяНоменклатура, "ИспользованиеХарактеристик");
Если ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры
ИЛИ ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры
ИЛИ ИспользованиеХарактеристик = Перечисления.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
&НаСервере
Процедура УстановитьТекущуюОбластьДействия()
ТекущаяОбластьДействия = Новый Структура;
ТекущаяОбластьДействия.Вставить("ВариантОбластиДействия", ВариантОбластиДействия);
Если ВариантОбластиДействия = "КонкретныйТовар"
Или ВариантОбластиДействия = "ВидНоменклатуры" Тогда
ТекущаяОбластьДействия.Вставить("ВидНоменклатуры", ВидНоменклатуры);
ТекущаяОбластьДействия.Вставить("Номенклатура", Номенклатура);
ТекущаяОбластьДействия.Вставить("Характеристика", Характеристика);
ТекущаяОбластьДействия.Вставить("Серия", Серия);
Иначе
Если Элементы.ОбластьДействия.ТекущаяСтрока = Неопределено Тогда
ТекущаяСтрока = ОбластьДействия[0];
Иначе
ТекущаяСтрока = ?(ОбластьДействия.НайтиПоИдентификатору(Элементы.ОбластьДействия.ТекущаяСтрока) = Неопределено,
ОбластьДействия[0],
ОбластьДействия.НайтиПоИдентификатору(Элементы.ОбластьДействия.ТекущаяСтрока));
КонецЕсли;
ТекущаяОбластьДействия.Вставить("ВидНоменклатуры", ТекущаяСтрока.ВидНоменклатуры);
ТекущаяОбластьДействия.Вставить("Номенклатура", ТекущаяСтрока.Номенклатура);
ТекущаяОбластьДействия.Вставить("Характеристика", ТекущаяСтрока.Характеристика);
ТекущаяОбластьДействия.Вставить("Серия", ТекущаяСтрока.Серия);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УстановитьТекущуюОбластьДействияКлиент()
ТекущаяОбластьДействия = Новый Структура;
ТекущаяОбластьДействия.Вставить("ВариантОбластиДействия", ВариантОбластиДействия);
Если ВариантОбластиДействия = "КонкретныйТовар"
Или ВариантОбластиДействия = "ВидНоменклатуры" Тогда
ТекущаяОбластьДействия.Вставить("ВидНоменклатуры", ВидНоменклатуры);
ТекущаяОбластьДействия.Вставить("Номенклатура", Номенклатура);
ТекущаяОбластьДействия.Вставить("Характеристика", Характеристика);
ТекущаяОбластьДействия.Вставить("Серия", Серия);
Иначе
Если Элементы.ОбластьДействия.ТекущиеДанные = Неопределено Тогда
ТекущаяОбластьДействия.Вставить("ВидНоменклатуры", Неопределено);
ТекущаяОбластьДействия.Вставить("Номенклатура", Неопределено);
ТекущаяОбластьДействия.Вставить("Характеристика", Неопределено);
ТекущаяОбластьДействия.Вставить("Серия", Неопределено);
Иначе
ТекущаяСтрока = Элементы.ОбластьДействия.ТекущиеДанные;
ТекущаяОбластьДействия.Вставить("ВидНоменклатуры", ТекущаяСтрока.ВидНоменклатуры);
ТекущаяОбластьДействия.Вставить("Номенклатура", ТекущаяСтрока.Номенклатура);
ТекущаяОбластьДействия.Вставить("Характеристика", ТекущаяСтрока.Характеристика);
ТекущаяОбластьДействия.Вставить("Серия", ТекущаяСтрока.Серия);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриИзмененииОбластиДействия()
Если ВариантОбластиДействия = "КонкретныйТовар"
Или ВариантОбластиДействия = "ВидНоменклатуры" Тогда
Если ТекущаяОбластьДействия.Характеристика <> Характеристика Тогда
Серия = ПредопределенноеЗначение("Справочник.СерииНоменклатуры.ПустаяСсылка");
УстановитьТекущуюОбластьДействияКлиент();
ИначеЕсли ТекущаяОбластьДействия.Номенклатура <> Номенклатура Тогда
Характеристика = ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка");
Серия = ПредопределенноеЗначение("Справочник.СерииНоменклатуры.ПустаяСсылка");
УстановитьТекущуюОбластьДействияКлиент();
ИначеЕсли ТекущаяОбластьДействия.ВидНоменклатуры <> ВидНоменклатуры Тогда
Номенклатура = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка");
Характеристика = ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка");
Серия = ПредопределенноеЗначение("Справочник.СерииНоменклатуры.ПустаяСсылка");
Элементы.Серия.ПодсказкаВвода = НСтр("ru='<серия не указывается>'");
Элементы.Характеристика.ПодсказкаВвода = НСтр("ru='<характеристики не используются>'");
УстановитьТекущуюОбластьДействияКлиент();
КонецЕсли;
Иначе
ТекущаяСтрока = Элементы.ОбластьДействия.ТекущиеДанные;
Если ТекущаяОбластьДействия.ВидНоменклатуры <> ТекущаяСтрока.ВидНоменклатуры Тогда
ТекущаяСтрока.Номенклатура = ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка");
ТекущаяСтрока.Характеристика = ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка");
ТекущаяСтрока.Серия = ПредопределенноеЗначение("Справочник.СерииНоменклатуры.ПустаяСсылка");
УстановитьТекущуюОбластьДействияКлиент();
ИначеЕсли ТекущаяОбластьДействия.Номенклатура <> ТекущаяСтрока.Номенклатура Тогда
ТекущаяСтрока.Характеристика = ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка");
ТекущаяСтрока.Серия = ПредопределенноеЗначение("Справочник.СерииНоменклатуры.ПустаяСсылка");
УстановитьТекущуюОбластьДействияКлиент();
ИначеЕсли ТекущаяОбластьДействия.Характеристика <> ТекущаяСтрока.Характеристика Тогда
ТекущаяСтрока.Серия = ПредопределенноеЗначение("Справочник.СерииНоменклатуры.ПустаяСсылка");
УстановитьТекущуюОбластьДействияКлиент();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПодборОбластиДействия(ПараметрыВыбора)
Если ПараметрыВыбора.Область = "ВидНоменклатуры" Тогда
НоваяСтрокаОбластиДействия = ОбластьДействия.Добавить();
НоваяСтрокаОбластиДействия.ВидНоменклатуры = ПараметрыВыбора.ВидНоменклатуры;
НоваяСтрокаОбластиДействия.СерииИспользуются = ПараметрыВыбора.СерииИспользуются;
ИначеЕсли ПараметрыВыбора.Область = "Номенклатура" Тогда
НоваяСтрокаОбластиДействия = ОбластьДействия.Добавить();
НоваяСтрокаОбластиДействия.ВидНоменклатуры = ПараметрыВыбора.ВидНоменклатуры;
НоваяСтрокаОбластиДействия.Номенклатура = ПараметрыВыбора.Номенклатура;
НоваяСтрокаОбластиДействия.ХарактеристикиИспользуются = ПараметрыВыбора.ХарактеристикиИспользуются;
НоваяСтрокаОбластиДействия.СерииИспользуются = ПараметрыВыбора.СерииИспользуются;
ИначеЕсли ПараметрыВыбора.Область = "Характеристика" Тогда
НоваяСтрокаОбластиДействия = ОбластьДействия.Добавить();
НоваяСтрокаОбластиДействия.ВидНоменклатуры = ПараметрыВыбора.ВидНоменклатуры;
НоваяСтрокаОбластиДействия.Номенклатура = ПараметрыВыбора.Номенклатура;
НоваяСтрокаОбластиДействия.Характеристика = ПараметрыВыбора.Характеристика;
НоваяСтрокаОбластиДействия.ХарактеристикиИспользуются = ПараметрыВыбора.ХарактеристикиИспользуются;
НоваяСтрокаОбластиДействия.СерииИспользуются = ПараметрыВыбора.СерииИспользуются;
ИначеЕсли ПараметрыВыбора.Область = "Серия" Тогда
НоваяСтрокаОбластиДействия = ОбластьДействия.Добавить();
НоваяСтрокаОбластиДействия.ВидНоменклатуры = ПараметрыВыбора.ВидНоменклатуры;
НоваяСтрокаОбластиДействия.Номенклатура = ПараметрыВыбора.Номенклатура;
НоваяСтрокаОбластиДействия.Характеристика = ПараметрыВыбора.Характеристика;
НоваяСтрокаОбластиДействия.Серия = ПараметрыВыбора.Серия;
НоваяСтрокаОбластиДействия.ХарактеристикиИспользуются = ПараметрыВыбора.ХарактеристикиИспользуются;
НоваяСтрокаОбластиДействия.СерииИспользуются = ПараметрыВыбора.СерииИспользуются;
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция СформироватьСписокТипов(Текст)
Возврат Справочники.СертификатыНоменклатуры.АвтоПодборТиповСертификатов(Текст);
КонецФункции
&НаКлиенте
Процедура ДобавитьТоварыПоОтборуЗавершение(АдресВоВременномХранилище, ДополнительныеПараметры) Экспорт
Если ЗначениеЗаполнено(АдресВоВременномХранилище) Тогда
ДобавитьТоварыПоОтборуНаСервере(АдресВоВременномХранилище);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДобавитьТоварыПоОтборуНаСервере(АдресВоВременномХранилище)
ТаблицаТовары = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
Если ТаблицаТовары.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Модифицированность = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.Номенклатура КАК Номенклатура,
| Таблица.Характеристика КАК Характеристика
|ПОМЕСТИТЬ ТаблицаНоменклатура
|ИЗ
| &Таблица КАК Таблица
|ГДЕ
| Таблица.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
|
|;
|
|ВЫБРАТЬ
| ТаблицаНоменклатура.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
| ТаблицаНоменклатура.Номенклатура КАК Номенклатура,
| ТаблицаНоменклатура.Характеристика КАК Характеристика,
| ВЫБОР
| КОГДА ТаблицаНоменклатура.Номенклатура.ИспользованиеХарактеристик В (ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры), ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры), ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры))
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ХарактеристикиИспользуются,
| ТаблицаНоменклатура.Номенклатура.ВидНоменклатуры.ИспользоватьСерии КАК СерииИспользуются
|ИЗ
| ТаблицаНоменклатура КАК ТаблицаНоменклатура";
Запрос.УстановитьПараметр("Таблица", ТаблицаТовары);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ОбластьДействия.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока,Выборка);
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция СписокАвтоподбораСерии(Текст, Номенклатура, Характеристика)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Текст", "%" + Текст + "%");
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Характеристика", Характеристика);
Запрос.УстановитьПараметр("Склад", Справочники.Склады.ПустаяСсылка());
Запрос.УстановитьПараметр("Помещение", Справочники.СкладскиеПомещения.ПустаяСсылка());
Запрос.УстановитьПараметр("КоэффициентУпаковки", 1);
Запрос.УстановитьПараметр("ВсеСерии", Истина);
Запрос.УстановитьПараметр("ЗнакОстатка", 1);
Запрос.Текст = Обработки.ПодборСерийВДокументы.ТекстЗапросаФормированияТаблицыДанныеРегистров("ВсеСерииНоменклатуры")
+ ОбщегоНазначения.РазделительПакетаЗапросов()
+ "ВЫБРАТЬ
| ДанныеРегистров.Серия
|ИЗ
| ДанныеРегистров КАК ДанныеРегистров
|ГДЕ
| ДанныеРегистров.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И (&ВсеСерии
| ИЛИ ДанныеРегистров.СвободныйОстаток > 0)
| И ДанныеРегистров.Серия.Наименование ПОДОБНО &Текст";
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Серия");
КонецФункции
#Область РаботаСИзображениями
&НаКлиенте
Процедура ОбновитьСчетчикИзображений()
ТекстДекорации = НСтр("ru='%ТекущееИзображение% из %ВсегоИзображений%'");
ТекстДекорации = СтрЗаменить(ТекстДекорации, "%ТекущееИзображение%", ТекущееИзображение);
ТекстДекорации = СтрЗаменить(ТекстДекорации, "%ВсегоИзображений%", ВсегоИзображений);
СчетчикИзображений = ТекстДекорации;
КонецПроцедуры
&НаСервере
Функция РеквизитыИзображения(СсылкаНаФайл)
УстановитьПривилегированныйРежим(Истина);
Попытка
ПриПолученииДанныхКартинкиВозниклаОшибка = Ложь;
ДанныеФайла = РаботаСФайлами.ДанныеФайла(СсылкаНаФайл, УникальныйИдентификатор);
АдресФайлаВХранилище = ДанныеФайла.СсылкаНаДвоичныеДанныеФайла;
Исключение
АдресФайлаВХранилище = "";
КонецПопытки;
РеквизитыФайла = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СсылкаНаФайл, "ПометкаУдаления, ВладелецФайла");
УстановитьПривилегированныйРежим(Ложь);
Если ПустаяСтрока(АдресФайлаВХранилище) Тогда
ПриПолученииДанныхКартинкиВозниклаОшибка = Истина;
Иначе
ПриПолученииДанныхКартинкиВозниклаОшибка = Ложь;
КонецЕсли;
РеквизитыИзображения = Новый Структура;
РеквизитыИзображения.Вставить("ВладелецФайла", РеквизитыФайла.ВладелецФайла);
РеквизитыИзображения.Вставить("ПометкаУдаления", РеквизитыФайла.ПометкаУдаления);
РеквизитыИзображения.Вставить("АдресФайлаВХранилище", АдресФайлаВХранилище);
РеквизитыИзображения.Вставить("ПриПолученииДанныхКартинкиВозниклаОшибка", ПриПолученииДанныхКартинкиВозниклаОшибка);
Возврат РеквизитыИзображения;
КонецФункции
&НаКлиенте
Процедура ОбновитьАдресКартинки(НовыйАдрес, ПриПолученииДанныхКартинкиВозниклаОшибка)
Если ПриПолученииДанныхКартинкиВозниклаОшибка Тогда
АдресКартинки = "";
Элементы.АдресКартинки.ТекстНевыбраннойКартинки = НСтр("ru = 'Ошибка при чтении файла изображения'");
Элементы.АдресКартинки.ЦветТекста = ЦветаСтиляКэш.ПоясняющийОшибкуТекст;
Иначе
АдресКартинки = НовыйАдрес;
Элементы.АдресКартинки.ТекстНевыбраннойКартинки = НСтр("ru = 'Добавить изображение'");
Элементы.АдресКартинки.ЦветТекста = ЦветаСтиляКэш.ЦветТекстаНевыбраннойКартинки;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СформироватьТаблицуИзображений()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СправочникСертификатыНоменклатурыПрисоединенныеФайлы.Ссылка,
| СправочникСертификатыНоменклатурыПрисоединенныеФайлы.ПометкаУдаления
|ИЗ
| Справочник.СертификатыНоменклатурыПрисоединенныеФайлы КАК СправочникСертификатыНоменклатурыПрисоединенныеФайлы
|ГДЕ
| СправочникСертификатыНоменклатурыПрисоединенныеФайлы.ВладелецФайла = &ВладелецФайла
| И СправочникСертификатыНоменклатурыПрисоединенныеФайлы.ПометкаУдаления = ЛОЖЬ
|
|УПОРЯДОЧИТЬ ПО
| СправочникСертификатыНоменклатурыПрисоединенныеФайлы.ДатаСоздания";
Запрос.УстановитьПараметр("ВладелецФайла",Объект.Ссылка);
ПрисоединенныйФайлВыборка = Запрос.Выполнить().Выбрать();
Пока ПрисоединенныйФайлВыборка.Следующий() Цикл
РеквизитыФайла = РеквизитыИзображения(ПрисоединенныйФайлВыборка.Ссылка);
НовоеИзображение = Изображения.Добавить();
ЗаполнитьЗначенияСвойств(НовоеИзображение, РеквизитыФайла);
НовоеИзображение.Ссылка = ПрисоединенныйФайлВыборка.Ссылка;
КонецЦикла;
ВсегоИзображений = Изображения.Количество();
Если ВсегоИзображений > 0 Тогда
Если ТекущееИзображение = 0 Тогда
ТекущееИзображение = 1;
КонецЕсли;
ТекстДекорации = НСтр("ru='%ТекущееИзображение% из %ВсегоИзображений%'");
ТекстДекорации = СтрЗаменить(ТекстДекорации, "%ТекущееИзображение%", ТекущееИзображение);
ТекстДекорации = СтрЗаменить(ТекстДекорации, "%ВсегоИзображений%", ВсегоИзображений);
СчетчикИзображений = ТекстДекорации;
ПометкаУдаления = Изображения[ТекущееИзображение - 1].ПометкаУдаления;
Элементы.АдресКартинки.Доступность = Не ПометкаУдаления;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриДобавленииИзображения()
ОчиститьСообщения();
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
ЗаблокироватьДанныеФормыДляРедактирования();
РаботаСФайламиКлиент.ДобавитьФайлы(Объект.Ссылка,
УникальныйИдентификатор,
НоменклатураКлиент.ФильтрФайловИзображений());
Иначе
ДобавитьИзображениеНеПрисоединенное();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзображениеНеПрисоединенное()
ОписаниеОповещения = Новый ОписаниеОповещения("ДобавитьИзображениеНеПрисоединенноеЗавершение", ЭтотОбъект);
ПараметрыЗагрузкиФайла = ФайловаяСистемаКлиент.ПараметрыЗагрузкиФайла();
ПараметрыЗагрузкиФайла.Диалог.Фильтр = НоменклатураКлиент.ФильтрФайловИзображений();
ФайловаяСистемаКлиент.ЗагрузитьФайл(ОписаниеОповещения, ПараметрыЗагрузкиФайла);
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьИзображениеНеПрисоединенноеЗавершение(ПомещенныйФайл, ДополнительныеПараметры) Экспорт
Если ПомещенныйФайл = Неопределено Тогда
Возврат;
КонецЕсли;
СтруктураИмениФайла = ОбщегоНазначенияКлиентСервер.РазложитьПолноеИмяФайла(ПомещенныйФайл.Имя);
НовоеИзображение = Изображения.Вставить(ВсегоИзображений);
НовоеИзображение.АдресФайлаВХранилище = ПомещенныйФайл.Хранение;
НовоеИзображение.ПолноеИмя = СтруктураИмениФайла.Имя;
НовоеИзображение.ИмяБезРасширения = СтруктураИмениФайла.ИмяБезРасширения;
НовоеИзображение.Расширение = ОбщегоНазначенияКлиентСервер.РасширениеБезТочки(
СтруктураИмениФайла.Расширение);
ОбновитьАдресКартинки(ПомещенныйФайл.Хранение, Ложь);
ВсегоИзображений = ВсегоИзображений + 1;
ТекущееИзображение = ВсегоИзображений;
ОбновитьСчетчикИзображений();
КонецПроцедуры
&НаСервере
Процедура УстановитьПометкуУдаленияИзображения(ПрисоединенныйФайлСсылка, Пометка)
ПрисоединенныйФайлОбъект = ПрисоединенныйФайлСсылка.ПолучитьОбъект();
ПрисоединенныйФайлОбъект.УстановитьПометкуУдаления(Пометка);
ПрисоединенныйФайлОбъект.Записать();
КонецПроцедуры
&НаСервере
Процедура УстановитьПометкуУдаленияДляДобавленныхИзображений()
Для Каждого Изображение Из ИзображенияПомеченныеНаУдаление Цикл
Если Не Изображение.Пометка Тогда
УстановитьПометкуУдаленияИзображения(Изображение.Ссылка,Истина);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура ОбработатьЗаписиФайла(ИмяСобытия, Параметр, Источник)
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Возврат;
КонецЕсли;
Если ТипЗнч(Источник) = Тип("Массив")
И Источник.Количество() > 0 Тогда
СсылкаНаФайл = Источник[0];
Иначе
СсылкаНаФайл = Источник;
КонецЕсли;
Если ТипЗнч(СсылкаНаФайл) = Тип("СправочникСсылка.СертификатыНоменклатурыПрисоединенныеФайлы") Тогда
Если ТекущееИзображение > 0 Тогда
ОтборСтрок = Новый Структура("Ссылка", СсылкаНаФайл);
СтрокиИзображений = Изображения.НайтиСтроки(ОтборСтрок);
Если СтрокиИзображений.Количество() > 0 Тогда
АктуализироватьИзображенияСертификата();
Возврат;
КонецЕсли;
КонецЕсли;
РеквизитыФайла = РеквизитыИзображения(СсылкаНаФайл);
Если РеквизитыФайла.ВладелецФайла <> Объект.Ссылка Тогда
Возврат;
КонецЕсли;
Модифицированность = Истина;
НовоеИзображение = Изображения.Вставить(ВсегоИзображений);
ЗаполнитьЗначенияСвойств(НовоеИзображение, РеквизитыФайла);
НовоеИзображение.Ссылка = СсылкаНаФайл;
ОбновитьАдресКартинки(РеквизитыФайла.АдресФайлаВХранилище,
РеквизитыФайла.ПриПолученииДанныхКартинкиВозниклаОшибка);
ВсегоИзображений = ВсегоИзображений + 1;
ТекущееИзображение = ВсегоИзображений;
ОбновитьСчетчикИзображений();
ПрисоединенныйФайл = Изображения[ТекущееИзображение - 1].Ссылка;
ОбновитьВидимостьКомандИзображения(ПрисоединенныйФайл);
Иначе
АктуализироватьИзображенияСертификата();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура АктуализироватьИзображенияСертификата()
Модифицированность = Истина;
АктуализироватьИзображенияСертификатаСервер();
Если ВсегоИзображений = 0 Тогда
ОбновитьАдресКартинки("", Ложь);
Иначе
ОбновитьАдресКартинки(Изображения[ТекущееИзображение - 1].АдресФайлаВХранилище,
Изображения[ТекущееИзображение - 1].ПриПолученииДанныхКартинкиВозниклаОшибка);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура АктуализироватьИзображенияСертификатаСервер()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ИзображенияСертификата.Ссылка КАК Ссылка,
| ИзображенияСертификата.ПометкаУдаления КАК ПометкаУдаления,
| ИзображенияСертификата.ДатаСоздания КАК ДатаСоздания
|ПОМЕСТИТЬ ИзображенияСертификата
|ИЗ
| Справочник.СертификатыНоменклатурыПрисоединенныеФайлы КАК ИзображенияСертификата
|
|ГДЕ
| НЕ ИзображенияСертификата.ПометкаУдаления
| И ИзображенияСертификата.ВладелецФайла = &ВладелецФайла
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| ИзображенияПомеченныеНаУдаление.Ссылка КАК Ссылка,
| ИзображенияПомеченныеНаУдаление.Пометка КАК Пометка
|ПОМЕСТИТЬ ИзображенияПомеченныеНаУдаление
|ИЗ
| &ИзображенияПомеченныеНаУдаление КАК ИзображенияПомеченныеНаУдаление
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ИзображенияПомеченныеНаУдаление.Ссылка КАК Ссылка,
| ИзображенияПомеченныеНаУдаление.Пометка КАК Пометка
|ПОМЕСТИТЬ УдаляемыеИзображения
|ИЗ
| ИзображенияПомеченныеНаУдаление КАК ИзображенияПомеченныеНаУдаление
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СертификатыНоменклатурыПрисоединенныеФайлы КАК ИзображенияСертификата
| ПО ИзображенияПомеченныеНаУдаление.Ссылка = ИзображенияСертификата.Ссылка
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ИзображенияСертификата.Ссылка КАК Ссылка,
| ИзображенияСертификата.ПометкаУдаления КАК ПометкаУдаления,
| ИзображенияСертификата.ДатаСоздания КАК ДатаСоздания
|ИЗ
| ИзображенияСертификата КАК ИзображенияСертификата
| ЛЕВОЕ СОЕДИНЕНИЕ УдаляемыеИзображения КАК УдаляемыеИзображения
| ПО ИзображенияСертификата.Ссылка = УдаляемыеИзображения.Ссылка
| И УдаляемыеИзображения.Пометка
|
|ГДЕ
| УдаляемыеИзображения.Ссылка ЕСТЬ NULL
|
|УПОРЯДОЧИТЬ ПО
| ИзображенияСертификата.ДатаСоздания";
Запрос.УстановитьПараметр("ВладелецФайла", Объект.Ссылка);
Запрос.УстановитьПараметр("ИзображенияПомеченныеНаУдаление", ИзображенияПомеченныеНаУдаление.Выгрузить());
РезультатЗапроса = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
ПрисоединенныйФайлВыборка = РезультатЗапроса[РезультатЗапроса.ВГраница()].Выбрать();
НомерИзображения = 0;
НомерТекущегоИзображения = 0;
Изображения.Очистить();
Пока ПрисоединенныйФайлВыборка.Следующий() Цикл
НомерИзображения = НомерИзображения + 1;
РеквизитыФайла = РеквизитыИзображения(ПрисоединенныйФайлВыборка.Ссылка);
НовоеИзображение = Изображения.Добавить();
ЗаполнитьЗначенияСвойств(НовоеИзображение, РеквизитыФайла);
НовоеИзображение.Ссылка = ПрисоединенныйФайлВыборка.Ссылка;
Если НовоеИзображение.Ссылка = ПрисоединенныйФайл Тогда
НомерТекущегоИзображения = НомерИзображения;
КонецЕсли;
КонецЦикла;
ВсегоИзображений = Изображения.Количество();
Если ВсегоИзображений > 0 Тогда
ТекущееИзображение = ?(НомерТекущегоИзображения = 0, 1, НомерТекущегоИзображения);
ПрисоединенныйФайл = Изображения[ТекущееИзображение - 1].Ссылка;
ТекстДекорации = НСтр("ru='%ТекущееИзображение% из %ВсегоИзображений%'");
ТекстДекорации = СтрЗаменить(ТекстДекорации, "%ТекущееИзображение%", ТекущееИзображение);
ТекстДекорации = СтрЗаменить(ТекстДекорации, "%ВсегоИзображений%", ВсегоИзображений);
СчетчикИзображений = ТекстДекорации;
ПометкаУдаления = Изображения[ТекущееИзображение - 1].ПометкаУдаления;
Элементы.АдресКартинки.Доступность = Не ПометкаУдаления;
Иначе
ТекущееИзображение = 0;
ПрисоединенныйФайл = Неопределено;
КонецЕсли;
ИзображенияПомеченныеНаУдаление.Загрузить(РезультатЗапроса[РезультатЗапроса.ВГраница() - 1].Выгрузить());
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьВидимостьКомандИзображения(ФайлСсылка)
Если ЗначениеЗаполнено(ФайлСсылка) Тогда
Результат = РаботаСФайламиКлиент.ДанныеФайла(ФайлСсылка);
Расширение = Результат.Расширение;
Если Расширение <> "bpm" И Расширение <> "dib" И Расширение <> "emf" И Расширение <> "gif"
И Расширение <> "ico" И Расширение <> "jpeg" И Расширение <> "jpg" И Расширение <> "png"
И Расширение <> "svg" И Расширение <> "tif" И Расширение <> "wmf" Тогда
Элементы.ПодменюПечать.Видимость = Ложь;
Иначе
Элементы.ПодменюПечать.Видимость = Истина;
КонецЕсли;
Иначе
Элементы.ПодменюПечать.Видимость = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
#КонецОбласти
#Область Росаккредитация
&НаКлиенте
Процедура ОбновитьСтатусРосаккредитацииФоновоеЗадание()
Если ИТСПодключен Тогда
ОбновитьСтатусРосаккредитацииНаСервере();
ПодключитьОбработчикОповещенияСтатусРосаккредитации();
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСтатусРосаккредитацииНаСервере()
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
Возврат;
КонецЕсли;
Если Не РаботаСНоменклатурой.СервисАккредитацииДоступен() Тогда
Возврат;
КонецЕсли;
Объект.СтатусРосаккредитации = Перечисления.СтатусыСертификатовНоменклатурыРосаккредитации.ПустаяСсылка();
Объект.СсылкаНаСертификатРосаккредитации = "";
Модифицированность = Истина;
ОбновитьТекстыРосаккредитации();
УстановитьТекстРосаккредитацияДетальнаяИнформация(Неопределено);
УстановитьВидимостьДоступностьРосаккредитации();
РезультатЗаданияПолученияДаныыхРосаккредитации = Неопределено;
ПараметрыВыполнения = ДлительныеОперации.ПараметрыВыполненияВФоне(УникальныйИдентификатор);
ПараметрыВыполнения.ЗапуститьВФоне = Истина;
ПараметрыВыполнения.ОжидатьЗавершение = 0;
РезультатРасчета = Неопределено;
РезультатРасчета = ДлительныеОперации.ВыполнитьФункцию(ПараметрыВыполнения,
"НоменклатураЛокализация.ЗапроситьИнформациюУРосаккредитации",
Объект.Номер,
Объект.ДатаНачалаСрокаДействия,
Объект.ДатаОкончанияСрокаДействия,
Объект.ТипСертификата,
Истина);
Если РезультатРасчета.Статус = "Выполняется" Тогда
РезультатЗаданияПолученияДаныыхРосаккредитации = РезультатРасчета;
ИначеЕсли РезультатРасчета.Статус = "Выполнено" Тогда
ОбновитьСтатусРосаккредитацииРезультатНаСервере(Истина);
РезультатЗаданияПолученияДаныыхРосаккредитации = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьСтатусРосаккредитацииРезультатНаСервере(ВыполнениеПроверено = Ложь)
Ответ = Неопределено;
Если РезультатЗаданияПолученияДаныыхРосаккредитации <> Неопределено Тогда
Ответ = ПолучитьИзВременногоХранилища(РезультатЗаданияПолученияДаныыхРосаккредитации.АдресРезультата);
Если Ответ = Неопределено Тогда
Возврат;
ИначеЕсли Не ПустаяСтрока(Ответ.ТекстОшибки) Тогда
Объект.СтатусРосаккредитации = Перечисления.СтатусыСертификатовНоменклатурыРосаккредитации.ПустаяСсылка();
Объект.СсылкаНаСертификатРосаккредитации = "";
Объект.ДатаОбновленияСтатусаРосаккредитации = ТекущаяДатаСеанса();
Иначе
Объект.СтатусРосаккредитации = НоменклатураЛокализация.СтатусРосаккредитацииИзСтроки(Ответ.Статус);
Объект.СсылкаНаСертификатРосаккредитации = Ответ.Гиперссылка;
Объект.ДатаОбновленияСтатусаРосаккредитации = ТекущаяДатаСеанса();
ШтрихкодыПоДаннымРосаккредитации.Очистить();
ШтрихкодыПоДаннымРосаккредитации.ЗагрузитьЗначения(Ответ.Штрихкоды);
ТНВЭДПоДаннымРосаккредитации.Очистить();
ТНВЭДПоДаннымРосаккредитации.ЗагрузитьЗначения(Ответ.ТНВЭД);
КонецЕсли;
УстановитьВидимостьДоступностьРосаккредитации();
УстановитьТекстРосаккредитацияДетальнаяИнформация(Ответ);
ОбновитьТекстыРосаккредитации();
РезультатЗаданияПолученияДаныыхРосаккредитации = Неопределено;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьТекстРосаккредитацияДетальнаяИнформация(ДетальнаяИнформация = Неопределено)
ШаблонПереносСтроки = Символы.ПС;
ШаблонИдетЗапросИнформации = НСтр("ru='Идет запрос информации...'");
ШаблонНеНайдено = НСтр("ru='<b>Не найдено.</b>'");
ШаблонНетИнформации = НСтр("ru='<b>Нет информации.</b>'");
ШаблонСтатус = НСтр("ru='<b>Статус:</b> %1'");
ШаблонИзготовитель = НСтр("ru='<b>Изготовитель:</b> %1'");
ШаблонПродукция = НСтр("ru='<b>Продукция:</b> %1'");
ШаблонЗаявитель= НСтр("ru='<b>Заявитель:</b> %1'");
ШаблонТехническиеРегламенты = НСтр("ru='<b>Технические регламенты:</b> %1'");
ШаблонКодыТНВЭД = НСтр("ru='<b>Коды ТН ВЭД:</b> %1'");
ШаблонШтрихкоды = НСтр("ru='<b>Штрихкоды (GTIN):</b> %1'");
ШаблонСтрокаСОтступом = НСтр("ru = '%1'") + Символы.ПС;
НаборИнформации = Новый Массив();
Если ДетальнаяИнформация = Неопределено Тогда
НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(ШаблонИдетЗапросИнформации));
ИначеЕсли Не ПустаяСтрока(ДетальнаяИнформация.ТекстОшибки) Тогда
НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(ШаблонНеНайдено));
Иначе
Производители = Новый Массив();
Для Каждого Изготовитель Из ДетальнаяИнформация.НаименованиеИзготовителя Цикл
Производители.Добавить(СтрШаблон(ШаблонСтрокаСОтступом, Изготовитель));
КонецЦикла;
ТехническиеРегламенты = Новый Массив();
Для Каждого ТехническийРегламент Из ДетальнаяИнформация.ТехническиеРегламенты Цикл
ТехническиеРегламенты.Добавить(СтрШаблон(ШаблонСтрокаСОтступом, ТехническийРегламент));
КонецЦикла;
ТНВЭД = Новый Массив();
Для Каждого СтрокаТНВЭД Из ДетальнаяИнформация.ТНВЭД Цикл
Если ЗначениеЗаполнено(СокрЛП(СтрокаТНВЭД)) Тогда
ТНВЭД.Добавить(СтрШаблон(ШаблонСтрокаСОтступом, СтрокаТНВЭД));
КонецЕсли;
КонецЦикла;
Штрихкоды = Новый Массив();
Для Каждого Штрихкод Из ДетальнаяИнформация.Штрихкоды Цикл
Если ЗначениеЗаполнено(СокрЛП(Штрихкод)) Тогда
Штрихкоды.Добавить(СтрШаблон(ШаблонСтрокаСОтступом, Штрихкод));
КонецЕсли;
КонецЦикла;
СтатусСтрокой = Строка(Объект.СтатусРосаккредитации);
Если ПустаяСтрока(СтатусСтрокой) Тогда
СтатусСтрокой = ШаблонНетИнформации;
КонецЕсли;
НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
ШаблонСтатус, СтатусСтрокой));
НаборИнформации.Добавить(ШаблонПереносСтроки);
НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
ШаблонИзготовитель, СтрСоединить(Производители)));
НаборИнформации.Добавить(ШаблонПереносСтроки);
НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
ШаблонПродукция, ДетальнаяИнформация.НаименованиеПродукции));
НаборИнформации.Добавить(ШаблонПереносСтроки);
НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
ШаблонЗаявитель, ДетальнаяИнформация.НаименованиеЗаявителя));
НаборИнформации.Добавить(ШаблонПереносСтроки);
НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
ШаблонТехническиеРегламенты, ?(ТехническиеРегламенты.Количество() > 0,
СтрСоединить(ТехническиеРегламенты),
ШаблонНетИнформации)));
НаборИнформации.Добавить(ШаблонПереносСтроки);
НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
ШаблонКодыТНВЭД, ?(ТНВЭД.Количество() > 0,
СтрСоединить(ТНВЭД),
ШаблонНетИнформации)));
НаборИнформации.Добавить(ШаблонПереносСтроки);
НаборИнформации.Добавить(СтроковыеФункции.ФорматированнаяСтрока(
ШаблонШтрихкоды, ?(Штрихкоды.Количество() > 0,
СтрСоединить(Штрихкоды),
ШаблонНетИнформации)));
КонецЕсли;
РосаккредитацияДетальнаяИнформация.УстановитьФорматированнуюСтроку(Новый ФорматированнаяСтрока(НаборИнформации));
КонецПроцедуры
&НаСервере
Функция ЗаполнитьПоДаннымРосаккредитацииНаСервере()
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ТНВЭД.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТКодыТНВЭД
|ИЗ
| Справочник.КлассификаторТНВЭД КАК ТНВЭД
|ГДЕ
| ТНВЭД.Код В (&КодыТНВЭДРосаккредитации)
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|ВЫБРАТЬ
| Набор.Номенклатура КАК Номенклатура,
| Набор.ХарактеристикиИспользуются КАК ХарактеристикиИспользуются,
| Набор.СерииИспользуются КАК СерииИспользуются,
| Набор.ВидНоменклатуры КАК ВидНоменклатуры,
| Набор.Характеристика КАК Характеристика
|ИЗ
| (
| ВЫБРАТЬ
| Номенклатура.Ссылка КАК Номенклатура,
| Номенклатура.ИспользованиеХарактеристик В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры),
| ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры),
| ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры )
| ) КАК ХарактеристикиИспользуются,
| Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
| Номенклатура.ВидНоменклатуры.ИспользоватьСерии КАК СерииИспользуются,
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
| ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТКодыТНВЭД КАК ВыбранныеКодыТНВЭД
| ПО ВыбранныеКодыТНВЭД.Ссылка = Номенклатура.КодТНВЭД
| ГДЕ
| Номенклатура.ВестиУчетСертификатовНоменклатуры
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК Номенклатура,
| ВидыНоменклатуры.ИспользованиеХарактеристик В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры),
| ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры),
| ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры )
| ) КАК ХарактеристикиИспользуются,
| ВидыНоменклатуры.Ссылка КАК ВидНоменклатуры,
| ВидыНоменклатуры.ИспользоватьСерии КАК СерииИспользуются,
| ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК Характеристика
| ИЗ
| Справочник.ВидыНоменклатуры КАК ВидыНоменклатуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТКодыТНВЭД КАК ВыбранныеКодыТНВЭД
| ПО ВыбранныеКодыТНВЭД.Ссылка = ВидыНоменклатуры.КодТНВЭД
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| Штрихкоды.Номенклатура КАК Номенклатура,
| Штрихкоды.Номенклатура.ИспользованиеХарактеристик В (
| ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ИндивидуальныеДляНоменклатуры),
| ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеДляВидаНоменклатуры),
| ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.ОбщиеСДругимВидомНоменклатуры )
| ) КАК ХарактеристикиИспользуются,
| Штрихкоды.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
| Штрихкоды.Номенклатура.ВидНоменклатуры.ИспользоватьСерии КАК СерииИспользуются,
| Штрихкоды.Характеристика КАК Характеристика
| ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК Штрихкоды
| ГДЕ
| Штрихкоды.Штрихкод В (&ШтрихкодыРосаккредитации)
| И Штрихкоды.Номенклатура.КодТНВЭД В (&КодыТНВЭДРосаккредитации)
| И Штрихкоды.Номенклатура.ВестиУчетСертификатовНоменклатуры
| ) КАК Набор
|";
Запрос.УстановитьПараметр("КодыТНВЭДРосаккредитации", ТНВЭДПоДаннымРосаккредитации.ВыгрузитьЗначения());
Запрос.УстановитьПараметр("ШтрихкодыРосаккредитации", ШтрихкодыПоДаннымРосаккредитации.ВыгрузитьЗначения());
ДанныеДляЗаполнения = Запрос.Выполнить().Выгрузить();
ЗаполненКонкретныйТовар = ВариантОбластиДействия = "КонкретныйТовар" И ЗначениеЗаполнено(Номенклатура);
ЗаполненВидНоменклатуры = ВариантОбластиДействия = "ВидНоменклатуры" И ЗначениеЗаполнено(ВидНоменклатуры);
ШаблонКонкретныйТоварОтличаетсяНоменклатура = НСтр("ru='Подобрана номенклатура %1, которая отличается от уже выбранной %2. Переключить область действия на ""список товаров"" и заполнить?'");
ШаблонКонкретныйТоварОтличаетсяХарактеристика = НСтр("ru='Подобрана характеристика %1, которая отличается от уже выбранной %2. Переключить область действия на ""список товаров"" и заполнить?'");
ШаблонВидНоменклатурыОтличаетсяВидНоменклатуры = НСтр("ru='Подобран вид номенклатуры %1, который отличается от выбранного %2. Переключить область действия на ""список товаров"" и заполнить?'");
ШаблонВыбраноНесколькоЗаписей = НСтр("ru='Подобрано несколько записей (%1 шт.). Переключить область действия на ""список товаров"" и заполнить?'");
ТекстСообщения = "";
ДанныеИзменены = Ложь;
Если ДанныеДляЗаполнения.Количество() > 0 Тогда
Если ВариантОбластиДействия = "СписокТоваров" Тогда
ЗаполнитьОбластьДействияНаСервереПоДаннымДляЗаполнения(ДанныеДляЗаполнения);
ДанныеИзменены = Истина;
ИначеЕсли ВариантОбластиДействия = "ВидНоменклатуры" Тогда
Если ЗаполненВидНоменклатуры
И ДанныеДляЗаполнения.Количество() = 1 Тогда
Строка = ДанныеДляЗаполнения[0];
Если Строка.ВидНоменклатуры <> ВидНоменклатуры Тогда
ТекстСообщения = СтрШаблон(ШаблонВидНоменклатурыОтличаетсяВидНоменклатуры, Строка.ВидНоменклатуры, ВидНоменклатуры);
КонецЕсли;
ИначеЕсли Не ЗаполненВидНоменклатуры
И ДанныеДляЗаполнения.Количество() = 1 Тогда
Строка = ДанныеДляЗаполнения[0];
ВидНоменклатуры = Строка.ВидНоменклатуры;
ХарактеристикиИспользуются = Строка.ХарактеристикиИспользуются;
СерииИспользуются = Строка.СерииИспользуются;
ВидНоменклатурыПриИзмененииНаСервере();
ДанныеИзменены = Истина;
Иначе
ТекстСообщения = СтрШаблон(ШаблонВыбраноНесколькоЗаписей, ДанныеДляЗаполнения.Количество());
КонецЕсли;
ИначеЕсли ВариантОбластиДействия = "КонкретныйТовар" Тогда
Если ЗаполненКонкретныйТовар
И ДанныеДляЗаполнения.Количество() = 1 Тогда
Строка = ДанныеДляЗаполнения[0];
Если Строка.Номенклатура <> Номенклатура Тогда
ТекстСообщения = СтрШаблон(ШаблонКонкретныйТоварОтличаетсяНоменклатура, Строка.Номенклатура, Номенклатура);
ИначеЕсли Строка.Номенклатура = Номенклатура
И Строка.Характеристика <> Характеристика Тогда
ТекстСообщения = СтрШаблон(ШаблонКонкретныйТоварОтличаетсяХарактеристика, Строка.Номенклатура, Номенклатура);
КонецЕсли;
ИначеЕсли Не ЗаполненКонкретныйТовар
И ДанныеДляЗаполнения.Количество() = 1 Тогда
Строка = ДанныеДляЗаполнения[0];
Если ЗначениеЗаполнено(Строка.Номенклатура) Тогда
Номенклатура = Строка.Номенклатура;
Характеристика = Строка.Характеристика;
ХарактеристикиИспользуются = Строка.ХарактеристикиИспользуются;
СерииИспользуются = Строка.СерииИспользуются;
НоменклатураПриИзмененииСервер();
ДанныеИзменены = Истина;
ИначеЕсли ЗначениеЗаполнено(Строка.ВидНоменклатуры) Тогда
ВариантОбластиДействия = "ВидНоменклатуры";
ВидНоменклатуры = Строка.ВидНоменклатуры;
ХарактеристикиИспользуются = Строка.ХарактеристикиИспользуются;
СерииИспользуются = Строка.СерииИспользуются;
ВидНоменклатурыПриИзмененииНаСервере();
ДанныеИзменены = Истина;
КонецЕсли;
Иначе
ТекстСообщения = СтрШаблон(ШаблонВыбраноНесколькоЗаписей, ДанныеДляЗаполнения.Количество());
КонецЕсли;
КонецЕсли;
КонецЕсли;
ОтветФункции = Новый Структура();
ОтветФункции.Вставить("ТекстСообщения", ТекстСообщения);
ОтветФункции.Вставить("ДанныеИзменены", ДанныеИзменены);
Если Не ПустаяСтрока(ТекстСообщения) Тогда
АдресРезультатаЗаполненияПоДаннымРосаккредитации = ПоместитьВоВременноеХранилище(ДанныеДляЗаполнения,
УникальныйИдентификатор);
Возврат ОтветФункции;
Иначе
Возврат ОтветФункции;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьПоДаннымРосаккредитацииЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Ответ = РезультатВопроса;
Если Ответ = КодВозвратаДиалога.Да Тогда
ВариантОбластиДействия = "СписокТоваров";
ОбработатьИзменениеВариантаОбластиДействия();
ЗаполнитьОбластьДействияНаСервереПоДаннымВременногоХранилища();
ПоказатьОповещениеПользователя(
НСтр("ru = 'Заполнение завершено'"),
,
,
БиблиотекаКартинок.Информация32);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОбластьДействияНаСервереПоДаннымВременногоХранилища()
ДанныеДляЗаполнения = ПолучитьИзВременногоХранилища(АдресРезультатаЗаполненияПоДаннымРосаккредитации);
ЗаполнитьОбластьДействияНаСервереПоДаннымДляЗаполнения(ДанныеДляЗаполнения);
НоменклатураПриИзмененииСервер();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьОбластьДействияНаСервереПоДаннымДляЗаполнения(ДанныеДляЗаполнения)
Если ДанныеДляЗаполнения.Количество() > 0 Тогда
Для Каждого Строка Из ДанныеДляЗаполнения Цикл
НоваяСтрока = ОбластьДействия.Добавить();
НоваяСтрока.ВидНоменклатуры = Строка.ВидНоменклатуры;
НоваяСтрока.Номенклатура = Строка.Номенклатура;
НоваяСтрока.Характеристика = Строка.Характеристика;
НоваяСтрока.ХарактеристикиИспользуются = Строка.ХарактеристикиИспользуются;
НоваяСтрока.СерииИспользуются = Строка.СерииИспользуются;
КонецЦикла;
ОбластьДействияДляСвертки = ОбластьДействия.Выгрузить();
ОбластьДействияДляСвертки.Свернуть("ВидНоменклатуры, Номенклатура, Характеристика, ХарактеристикиИспользуются, Серия, СерииИспользуются");
ОбластьДействия.Загрузить(ОбластьДействияДляСвертки);
СтрокиКУдалению = ОбластьДействия.НайтиСтроки(Новый Структура("ВидНоменклатуры, Номенклатура",
Справочники.ВидыНоменклатуры.ПустаяСсылка(), Справочники.Номенклатура.ПустаяСсылка()));
Для Каждого Строка Из СтрокиКУдалению Цикл
ОбластьДействия.Удалить(Строка);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбновитьТекстыРосаккредитации()
ШаблонСтатусДействителен = НСтр("ru='<span style=""color: ЦветТекстаУспех; font: ВажнаяНадписьШрифт"">%1</span> (актуально на: %2)'");
ШаблонСтатусНеДействителен = НСтр("ru='<span style=""color: ЦветШрифтаОшибки; font: ВажнаяНадписьШрифт"">%1</span> (актуально на: %2)'");
ШаблонСтатусНетИнформации = НСтр("ru='<span style=""font: ВажнаяНадписьШрифт"">Нет информации</span>'");
ДействительныеСтатусыРосаккредитации = НоменклатураКлиентСерверЛокализация.ДействительныеСтатусыРосаккредитации();
ДатаОбновленияСтатусаРосаккредитацииСтрокой = Формат(Объект.ДатаОбновленияСтатусаРосаккредитации, "ДЛФ=D; ДП=-;");
Если Не ЗначениеЗаполнено(Объект.СтатусРосаккредитации) Тогда
СтатусРосаккредитацияПодробно = СтроковыеФункции.ФорматированнаяСтрока(ШаблонСтатусНетИнформации);
ИначеЕсли ДействительныеСтатусыРосаккредитации.Найти(Объект.СтатусРосаккредитации) <> Неопределено Тогда
СтатусРосаккредитацияПодробно = СтроковыеФункции.ФорматированнаяСтрока(ШаблонСтатусДействителен, Объект.СтатусРосаккредитации, ДатаОбновленияСтатусаРосаккредитацииСтрокой);
Иначе
СтатусРосаккредитацияПодробно = СтроковыеФункции.ФорматированнаяСтрока(ШаблонСтатусНеДействителен, Объект.СтатусРосаккредитации, ДатаОбновленияСтатусаРосаккредитацииСтрокой);
КонецЕсли;
ШаблонПерейтиНаСтраницуСертификата = НСтр("ru='перейти на страницу сертификата'");
ШаблонПерейтиНаСтраницуДекларации = НСтр("ru='перейти на страницу декларации'");
Элементы.ГиперссылкаНаСертификатРосаккредитации.Заголовок = ?(Объект.ТипСертификата = НСтр("ru = 'Сертификат соответствия'"),
ШаблонПерейтиНаСтраницуСертификата,
ШаблонПерейтиНаСтраницуДекларации);
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьОбработчикОповещенияСтатусРосаккредитации()
Если РезультатЗаданияПолученияДаныыхРосаккредитации <> Неопределено Тогда
ПараметрыОжидания = ДлительныеОперацииКлиент.ПараметрыОжидания(ЭтотОбъект);
ПараметрыОжидания.ВыводитьОкноОжидания = Ложь;
ОповещениеОЗавершении = Новый ОписаниеОповещения("ОбновитьСтатусРосаккредитацииОповещение", ЭтотОбъект);
ДлительныеОперацииКлиент.ОжидатьЗавершение(
РезультатЗаданияПолученияДаныыхРосаккредитации, ОповещениеОЗавершении, ПараметрыОжидания);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьСтатусРосаккредитацииОповещение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = Неопределено Тогда
Возврат;
КонецЕсли;
Если Результат.Статус = "Выполнено" Тогда
ОбновитьСтатусРосаккредитацииРезультатНаСервере();
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#КонецОбласти