#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция СформироватьСписокВыбораТиповСертификатов() Экспорт
ТаблицаТиповСертификата = Новый ТаблицаЗначений;
ТаблицаТиповСертификата.Колонки.Добавить("ТипСертификата", Новый ОписаниеТипов("Строка",,Новый КвалификаторыСтроки(50)));
НоваяСтрока = ТаблицаТиповСертификата.Добавить();
НоваяСтрока.ТипСертификата = НСтр("ru = 'Сертификат соответствия'");
НоваяСтрока = ТаблицаТиповСертификата.Добавить();
НоваяСтрока.ТипСертификата = НСтр("ru = 'Гигиенический сертификат'");
НоваяСтрока = ТаблицаТиповСертификата.Добавить();
НоваяСтрока.ТипСертификата = НСтр("ru = 'Пожарный сертификат'");
НоваяСтрока = ТаблицаТиповСертификата.Добавить();
НоваяСтрока.ТипСертификата = НСтр("ru = 'Декларация о соответствии'");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТаблицаТиповСертификата.ТипСертификата КАК ТипСертификата
|ПОМЕСТИТЬ ТаблицаПредопределенныхТипов
|ИЗ
| &ТаблицаТиповСертификата КАК ТаблицаТиповСертификата
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СертификатыНоменклатуры.ТипСертификата КАК ТипСертификата
|ИЗ
| Справочник.СертификатыНоменклатуры КАК СертификатыНоменклатуры
|ГДЕ
| СертификатыНоменклатуры.ЭтоГруппа = ЛОЖЬ
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ТаблицаПредопределенныхТипов.ТипСертификата
|ИЗ
| ТаблицаПредопределенныхТипов КАК ТаблицаПредопределенныхТипов
|
|УПОРЯДОЧИТЬ ПО
| ТипСертификата";
Запрос.УстановитьПараметр("ТаблицаТиповСертификата",ТаблицаТиповСертификата);
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ТипСертификата");
КонецФункции
Функция АвтоПодборТиповСертификатов(Текст = "") Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| СертификатыНоменклатуры.ТипСертификата КАК ТипСертификата
|ИЗ
| Справочник.СертификатыНоменклатуры КАК СертификатыНоменклатуры
|ГДЕ
| СертификатыНоменклатуры.ЭтоГруппа = ЛОЖЬ" +
?(ЗначениеЗаполнено(Текст), " И СертификатыНоменклатуры.ТипСертификата ПОДОБНО &Текст ","") +"
|
|УПОРЯДОЧИТЬ ПО
| ТипСертификата";
Запрос.УстановитьПараметр("Текст",Текст);
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ТипСертификата");
КонецФункции
Функция УстановитьСтатусСертификатовНоменклатуры(ПараметрыЗаполнения) Экспорт
ОписаниеЗамера = ОценкаПроизводительности.НачатьЗамерДлительнойОперации(
"Справочник.СертификатыНоменклатуры.МодульМенеджера.УстановитьСтатусСертификатовНоменклатуры");
КоличествоДанныхКОбработке = 0;
СписокСертификатов = Новый Массив;
ИзмененныеСертификаты = Новый Массив;
НоменклатураЛокализация.ДополнитьПараметрыУстановкиСтатусаСертификатовНоменклатуры(ПараметрыЗаполнения);
Для Каждого ОбрабатываемаяСтрока Из ПараметрыЗаполнения.ДанныеКОбработке Цикл
Если ТипЗнч(ОбрабатываемаяСтрока) = Тип("РегистрСведенийКлючЗаписи.ОбластиДействияСертификатовНоменклатуры") Тогда
ОбрабатываемыйСертификат = ОбрабатываемаяСтрока.СертификатНоменклатуры;
Если СписокСертификатов.Найти(ОбрабатываемыйСертификат) = Неопределено Тогда
СписокСертификатов.Добавить(ОбрабатываемыйСертификат);
КоличествоДанныхКОбработке = КоличествоДанныхКОбработке + 1;
Иначе
Продолжить;
КонецЕсли;
ИначеЕсли ТипЗнч(ОбрабатываемаяСтрока) = Тип("СправочникСсылка.СертификатыНоменклатуры") Тогда
ОбрабатываемыйСертификат = ОбрабатываемаяСтрока;
КоличествоДанныхКОбработке = КоличествоДанныхКОбработке + 1;
Иначе
Продолжить;
КонецЕсли;
ОбработатьОбъект = Истина;
СертификатОбъект = ОбрабатываемыйСертификат.ПолучитьОбъект();
Попытка
СертификатОбъект.Заблокировать();
Исключение
ОбработатьОбъект = Ложь;
ИмяСобытия = НСтр("ru = 'Изменение статусов сертификатов номенклатуры'", ОбщегоНазначения.КодОсновногоЯзыка());
ТекстСообщения = НСтр("ru = 'Не удалось обработать объект: ""%1"" по причине: %2'");
ТекстСообщения = СтрШаблон(ТекстСообщения,
Строка(ОбрабатываемыйСертификат),
ОбработкаОшибок.ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ИмяСобытия,
УровеньЖурналаРегистрации.Предупреждение,
ОбрабатываемыйСертификат.Метаданные(),
ОбрабатываемыйСертификат,
ТекстСообщения);
КонецПопытки;
НоменклатураЛокализация.УстановитьСтатусСертификатовНоменклатуры(СертификатОбъект,
ПараметрыЗаполнения,
ОбработатьОбъект);
Если ОбработатьОбъект
И СертификатОбъект.Статус = ПараметрыЗаполнения.Статус Тогда
ОбработатьОбъект = Ложь;
ТекстСообщения = НСтр("ru = 'Статус сертификата ""%1"" не изменен, т.к. сертификат уже находится в статусе ""%2""'");
ТекстСообщения = СтрШаблон(ТекстСообщения,
Строка(ОбрабатываемыйСертификат),
Строка(ПараметрыЗаполнения.Статус));
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ОбрабатываемыйСертификат);
КонецЕсли;
Если Не ОбработатьОбъект Тогда
Продолжить;
КонецЕсли;
СертификатОбъект.Статус = ПараметрыЗаполнения.Статус;
Попытка
СертификатОбъект.Записать();
ИзмененныеСертификаты.Добавить(ОбрабатываемыйСертификат);
Исключение
ОбщегоНазначения.СообщитьПользователю(ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()),
ОбрабатываемыйСертификат);
КонецПопытки;
КонецЦикла;
КоличествоИзмененныхДанных = ИзмененныеСертификаты.Количество();
РезультатОбработки = Новый Структура;
РезультатОбработки.Вставить("КоличествоДанныхКОбработке", КоличествоДанныхКОбработке);
РезультатОбработки.Вставить("КоличествоИзмененныхДанных", КоличествоИзмененныхДанных);
РезультатОбработки.Вставить("Статус", ПараметрыЗаполнения.Статус);
ОценкаПроизводительности.ЗакончитьЗамерДлительнойОперации(ОписаниеЗамера, КоличествоДанныхКОбработке);
Возврат РезультатОбработки;
КонецФункции
Функция СертификатыНоменклатурыДокумента(МассивОбъектов) Экспорт
УстановитьПривилегированныйРежим(Истина);
СертификатыНоменклатуры = Новый Массив;
Если ТипЗнч(МассивОбъектов[0]) = Тип("ДокументСсылка.ЗаданиеНаПеревозку") Тогда
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапросаПолученияСпискаНакладныхИзЗаданийНаПеревозку();
Запрос.УстановитьПараметр("ЗаданияНаПеревозку",МассивОбъектов);
МассивОбъектовДляЗапроса = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Распоряжение");
Иначе
МассивОбъектовДляЗапроса = МассивОбъектов;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапросаСертификатовНоменклатурыДокумента() + "
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТоварыССертификатами.СертификатНоменклатуры КАК СертификатНоменклатуры,
| ТоварыССертификатами.ТипСертификата КАК ТипСертификата,
| ТоварыССертификатами.ПриоритетСертификата КАК ПриоритетСертификата,
| ТоварыССертификатами.СтатусРосаккредитации КАК СтатусРосаккредитации,
| ТоварыССертификатами.ДатаОбновленияСтатусаРосаккредитации КАК ДатаОбновленияСтатусаРосаккредитации
|ИЗ
| ДокументТовары КАК ДокументТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыССертификатами КАК ТоварыССертификатами
| ПО ДокументТовары.Номенклатура = ТоварыССертификатами.Номенклатура
| И ДокументТовары.Характеристика = ТоварыССертификатами.Характеристика
| И ДокументТовары.Серия = ТоварыССертификатами.Серия
| И ДокументТовары.Дата >= ТоварыССертификатами.НачалоСрокаДействия
| И ДокументТовары.Дата <= ТоварыССертификатами.ОкончаниеСрокаДействия
|ГДЕ
| ДокументТовары.Номенклатура.ВестиУчетСертификатовНоменклатуры = ИСТИНА
| И НЕ ТоварыССертификатами.СертификатНоменклатуры ЕСТЬ NULL
|
|СГРУППИРОВАТЬ ПО
| ТоварыССертификатами.СертификатНоменклатуры,
| ТоварыССертификатами.ТипСертификата,
| ТоварыССертификатами.ПриоритетСертификата,
| ТоварыССертификатами.СтатусРосаккредитации,
| ТоварыССертификатами.ДатаОбновленияСтатусаРосаккредитации";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектовДляЗапроса);
МассивРезультатов = Запрос.ВыполнитьПакет();
КоличествоРезультатов = МассивРезультатов.Количество();
РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 1];
ВыборкаПоДокументам = РезультатЗапроса.Выбрать();
Пока ВыборкаПоДокументам.Следующий() Цикл
СертификатыНоменклатуры.Добавить(ВыборкаПоДокументам.СертификатНоменклатуры);
КонецЦикла;
Возврат СертификатыНоменклатуры;
КонецФункции
#КонецОбласти
#КонецЕсли
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
#Область Печать
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.МенеджерПечати = "Справочник.СертификатыНоменклатуры";
КомандаПечати.Идентификатор = "СертификатыНоменклатурыИзображения";
КомандаПечати.Представление = НСтр("ru = 'Изображения сертификатов'");
КонецПроцедуры
Процедура Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СертификатыНоменклатурыИзображения") Тогда
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
КоллекцияПечатныхФорм,
"СертификатыНоменклатурыИзображения",
НСтр("ru = 'Изображения сертификатов'"),
СформироватьПечатнуюФормуИзображенияСертификатов(МассивОбъектов, ОбъектыПечати),
,
"Справочник.СертификатыНоменклатуры.ПФ_MXL_ИзображенияСертификатов");
КонецЕсли;
ФормированиеПечатныхФорм.ЗаполнитьПараметрыОтправки(ПараметрыВывода.ПараметрыОтправки, МассивОбъектов, КоллекцияПечатныхФорм);
КонецПроцедуры
Функция СформироватьПечатнуюФормуРеестрСертификатовНоменклатуры(МассивОбъектов, ОбъектыПечати) Экспорт
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СертификатыНоменклатуры_РеестрСертификатов";
Если ТипЗнч(МассивОбъектов[0]) = Тип("ДокументСсылка.ЗаданиеНаПеревозку") Тогда
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапросаПолученияСпискаНакладныхИзЗаданийНаПеревозку();
Запрос.УстановитьПараметр("ЗаданияНаПеревозку",МассивОбъектов);
МассивОбъектовДляЗапроса = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Распоряжение");
Иначе
МассивОбъектовДляЗапроса = МассивОбъектов;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапросаСертификатовНоменклатурыДокумента() + "
|//////////////////////////////////////////////////////////////////////////////// 10
|ВЫБРАТЬ
| ДокументыУчетСертификатов.Ссылка КАК Ссылка,
| ДокументыУчетСертификатов.ВестиУчетСертификатовНоменклатуры КАК ВестиУчетСертификатовНоменклатуры
|ИЗ
| ДокументыУчетСертификатов КАК ДокументыУчетСертификатов
|ГДЕ
| НЕ ДокументыУчетСертификатов.ВестиУчетСертификатовНоменклатуры
|;
|
|//////////////////////////////////////////////////////////////////////////////// 11
|ВЫБРАТЬ
| ВсеДокументы.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ВсеДокументы.Ссылка) КАК ПредставлениеСсылки,
| ПРЕДСТАВЛЕНИЕ(ВсеДокументы.ХозяйственнаяОперация) КАК ПредставлениеХозяйственнойОперации
|ИЗ
| ВсеДокументы КАК ВсеДокументы
|ГДЕ
| ВсеДокументы.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПереходПраваСобственности)
|;
|
|//////////////////////////////////////////////////////////////////////////////// 12
|ВЫБРАТЬ
| ДокументТовары.Ссылка КАК Ссылка,
| ДокументТовары.НомерСтроки КАК НомерСтроки,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Номенклатура.НаименованиеПолное КАК НаименованиеНоменклатуры,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.Характеристика.НаименованиеПолное КАК НаименованиеХарактеристики,
| ДокументТовары.Серия КАК Серия,
| ДокументТовары.Номенклатура.ВестиУчетСертификатовНоменклатуры КАК ВестиУчетСертификатовНоменклатуры,
| ВЫБОР
| КОГДА ДокументТовары.Номенклатура.ВестиУчетСертификатовНоменклатуры
| ТОГДА
| ВЫБОР
| КОГДА ТоварыССертификатами.СертификатНоменклатуры ЕСТЬ NULL
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НетДействующихСертификатов,
| ВЫБОР
| КОГДА ДокументТовары.Номенклатура.ВестиУчетСертификатовНоменклатуры
| ТОГДА ЕСТЬNULL(ТоварыССертификатами.СертификатНоменклатуры, ЗНАЧЕНИЕ(Справочник.СертификатыНоменклатуры.ПустаяСсылка))
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СертификатыНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК СертификатНоменклатуры,
| ЕСТЬNULL(ТоварыССертификатами.ТипСертификата, """") КАК ТипСертификата,
| ЕСТЬNULL(ТоварыССертификатами.ПриоритетСертификата, 4) КАК ПриоритетСертификата,
| ВЫБОР
| КОГДА ДокументТовары.Номенклатура.ВестиУчетСертификатовНоменклатуры
| ТОГДА
| ВЫБОР
| КОГДА ТоварыССертификатами.СертификатНоменклатуры ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ
| ВЫБОР
| КОГДА ТоварыССертификатами.ОкончаниеСрокаДействия >= ДокументТовары.Дата
| И ТоварыССертификатами.НачалоСрокаДействия <= ДокументТовары.Дата
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СертификатДействует,
| ТоварыССертификатами.СтатусРосаккредитации КАК СтатусРосаккредитации,
| ТоварыССертификатами.ДатаОбновленияСтатусаРосаккредитации КАК ДатаОбновленияСтатусаРосаккредитации
|ИЗ
| ДокументТовары КАК ДокументТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыССертификатами КАК ТоварыССертификатами
| ПО ДокументТовары.Номенклатура = ТоварыССертификатами.Номенклатура
| И ДокументТовары.Характеристика = ТоварыССертификатами.Характеристика
| И ДокументТовары.Серия = ТоварыССертификатами.Серия
| И ДокументТовары.Дата >= ТоварыССертификатами.НачалоСрокаДействия
| И ДокументТовары.Дата <= ТоварыССертификатами.ОкончаниеСрокаДействия
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| НомерСтроки,
| Номенклатура,
| Характеристика,
| ТипСертификата УБЫВ,
| Серия,
| СертификатДействует УБЫВ,
| ПриоритетСертификата
|
|ИТОГИ ПО
| Ссылка,
| НомерСтроки,
| Номенклатура,
| Характеристика,
| ТипСертификата,
| Серия
|;
|
|//////////////////////////////////////////////////////////////////////////////// 13
|ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеРеализации.Номер КАК Номер,
| ДанныеРеализации.Дата КАК Дата,
| НЕОПРЕДЕЛЕНО КАК НомерИсправляемогоДокумента,
| НЕОПРЕДЕЛЕНО КАК ДатаИсправляемогоДокумента,
| ДанныеРеализации.Представление КАК Представление
|ИЗ
| ДокументыПоКоторымВедетсяУчетСертификатов КАК ДанныеДокументов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК ДанныеРеализации
| ПО ДанныеДокументов.Ссылка = ДанныеРеализации.Ссылка
|ГДЕ
| ДанныеДокументов.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеКорректировки.Номер КАК Номер,
| ДанныеКорректировки.Дата КАК Дата,
| НЕОПРЕДЕЛЕНО КАК НомерИсправляемогоДокумента,
| НЕОПРЕДЕЛЕНО КАК ДатаИсправляемогоДокумента,
| ДанныеКорректировки.Представление КАК Представление
|ИЗ
| ДокументыПоКоторымВедетсяУчетСертификатов КАК ДанныеДокументов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КорректировкаРеализации КАК ДанныеКорректировки
| ПО ДанныеДокументов.Ссылка = ДанныеКорректировки.Ссылка
|ГДЕ
| ДанныеДокументов.Ссылка ССЫЛКА Документ.КорректировкаРеализации
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеОтгрузки.Номер КАК Номер,
| ДанныеОтгрузки.Дата КАК Дата,
| НЕОПРЕДЕЛЕНО КАК НомерИсправляемогоДокумента,
| НЕОПРЕДЕЛЕНО КАК ДатаИсправляемогоДокумента,
| ДанныеОтгрузки.Представление КАК Представление
|ИЗ
| ДокументыПоКоторымВедетсяУчетСертификатов КАК ДанныеДокументов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтгрузкаТоваровКлиенту КАК ДанныеОтгрузки
| ПО ДанныеДокументов.Ссылка = ДанныеОтгрузки.Ссылка
|ГДЕ
| ДанныеДокументов.Ссылка ССЫЛКА Документ.ОтгрузкаТоваровКлиенту
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеПеремещения.Номер КАК Номер,
| ДанныеПеремещения.Дата КАК Дата,
| ДанныеПеремещения.ИсправляемыйДокумент.Номер КАК НомерИсправляемогоДокумента,
| ДанныеПеремещения.ИсправляемыйДокумент.Дата КАК ДатаИсправляемогоДокумента,
| ДанныеПеремещения.Представление КАК Представление
|ИЗ
| ДокументыПоКоторымВедетсяУчетСертификатов КАК ДанныеДокументов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров КАК ДанныеПеремещения
| ПО ДанныеДокументов.Ссылка = ДанныеПеремещения.Ссылка
|ГДЕ
| ДанныеДокументов.Ссылка ССЫЛКА Документ.ПеремещениеТоваров
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеПередачи.Номер КАК Номер,
| ДанныеПередачи.Дата КАК Дата,
| НЕОПРЕДЕЛЕНО КАК НомерИсправляемогоДокумента,
| НЕОПРЕДЕЛЕНО КАК ДатаИсправляемогоДокумента,
| ДанныеПередачи.Представление КАК Представление
|ИЗ
| ДокументыПоКоторымВедетсяУчетСертификатов КАК ДанныеДокументов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПередачаТоваровХранителю КАК ДанныеПередачи
| ПО ДанныеДокументов.Ссылка = ДанныеПередачи.Ссылка
|ГДЕ
| ДанныеДокументов.Ссылка ССЫЛКА Документ.ПередачаТоваровХранителю
|
|УПОРЯДОЧИТЬ ПО
| Ссылка";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектовДляЗапроса);
МассивРезультатов = Запрос.ВыполнитьПакет();
КоличествоРезультатов = МассивРезультатов.Количество();
РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 1];
ДанныеПечати = РезультатЗапроса.Выбрать();
РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 2];
ВыборкаПоДокументам = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 3];
ВыборкаОшибкиХозяйственнаяОперация = РезультатЗапроса.Выбрать();
РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 4];
ВыборкаПоДокументамБезУчетаСертификатов = РезультатЗапроса.Выбрать();
Макет = УправлениеПечатью.МакетПечатнойФормы("Справочник.СертификатыНоменклатуры.ПФ_MXL_РеестрСертификатов");
ПервыйДокумент = Истина;
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
ПараметрыПроверкиСтатусов = Новый Структура;
НоменклатураЛокализация.ДополнитьПараметрыПроверкиСоответствияСтатусовСертификатаНоменклатуры(
ПараметрыПроверкиСтатусов);
Пока ДанныеПечати.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
Область = Макет.ПолучитьОбласть("Шапка");
ШтрихкодированиеПечатныхФорм.ВывестиШтрихкодВТабличныйДокумент(ТабличныйДокумент, Макет, Область, ДанныеПечати.Ссылка);
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("ТекстЗаголовка",
НСтр("ru='Реестр сертификатов номенклатуры'", ОбщегоНазначения.КодОсновногоЯзыка()));
Область.Параметры.Заполнить(СтруктураПараметров);
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("Документ");
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("ПредставлениеДокумента",
ОбщегоНазначенияУТКлиентСервер.СформироватьЗаголовокДокумента(ДанныеПечати));
Область.Параметры.Заполнить(СтруктураПараметров);
ТабличныйДокумент.Вывести(Область);
МассивВыводимыхОбластей = Новый Массив;
ОбластьЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("НомерСтраницы", "Страница " + 1);
ОбластьЗаголовокТаблицы.Параметры.Заполнить(СтруктураПараметров);
ТабличныйДокумент.Вывести(ОбластьЗаголовокТаблицы);
Область = Макет.ПолучитьОбласть("ШапкаТаблицы|НачалоСтроки");
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаТоваров");
ТабличныйДокумент.Присоединить(Область);
Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаСертификатов");
ТабличныйДокумент.Присоединить(Область);
НомерСтраницы = 2;
НомерСтроки = 1;
ОбластьПерваяСтрокаКолонкаТоваров = Неопределено;
ОбластьПерваяСтрокаНачалоСтроки = Неопределено;
СтруктураПоиска = Новый Структура("Ссылка", ДанныеПечати.Ссылка);
ВыборкаПоДокументам.НайтиСледующий(СтруктураПоиска);
ВыборкаПоНомеруСтроки = ВыборкаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоНомеруСтроки.Следующий() Цикл
ВывестиСтрокиДляПозицииТоваров(
ТабличныйДокумент,
Макет,
ОбластьПерваяСтрокаКолонкаТоваров,
НомерСтраницы,
НомерСтроки,
МассивВыводимыхОбластей);
ВыборкаПоНоменклатуре = ВыборкаПоНомеруСтроки.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоНоменклатуре.Следующий() Цикл
ВыборкаПоХарактеристике = ВыборкаПоНоменклатуре.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоХарактеристике.Следующий() Цикл
ОбластьПерваяСтрокаНачалоСтроки = Макет.ПолучитьОбласть("СтрокаТаблицы|НачалоСтроки");
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("НомерСтроки",НомерСтроки);
ОбластьПерваяСтрокаНачалоСтроки.Параметры.Заполнить(СтруктураПараметров);
ОбластьПерваяСтрокаКолонкаТоваров = Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаТоваров");
ОбластьПерваяСтрокаКолонкаТоваров.Параметры.Заполнить(ВыборкаПоХарактеристике);
ПредставлениеНоменклатуры = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ВыборкаПоХарактеристике.НаименованиеНоменклатуры,
ВыборкаПоХарактеристике.НаименованиеХарактеристики,
,
,
ДопПараметрыПредставлениеНоменклатуры);
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Товар",ПредставлениеНоменклатуры);
ОбластьПерваяСтрокаКолонкаТоваров.Параметры.Заполнить(СтруктураПараметров);
ВыборкаПоТипуСертификата = ВыборкаПоХарактеристике.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоТипуСертификата.Следующий() Цикл
МассивСертификатов = Новый Массив;
ПрерватьВыборкуПоСериям = Ложь;
ВыборкаПоСериям = ВыборкаПоТипуСертификата.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСериям.Следующий() Цикл
Выборка = ВыборкаПоСериям.Выбрать();
ПрерватьВыборку = Ложь;
ДействующийСертификатДляСерииДобавлен = Ложь;
Пока Выборка.Следующий() Цикл
ТекстПримечания = "";
Если Не Выборка.ВестиУчетСертификатовНоменклатуры Тогда
ОбластьСертификат = Макет.ПолучитьОбласть(
"СтрокаТаблицыСертификат|КолонкаСертификатов");
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Сертификат",
НСтр("ru='<Учет сертификатов не ведется>'", ОбщегоНазначения.КодОсновногоЯзыка()));
ОбластьСертификат.Параметры.Заполнить(СтруктураПараметров);
ПрерватьВыборкуПоСериям = Истина;
ПрерватьВыборку = Истина;
ИначеЕсли Выборка.НетДействующихСертификатов Тогда
ОбластьСертификат = Макет.ПолучитьОбласть(
"СтрокаТаблицыСертификатЖирный|КолонкаСертификатов");
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Сертификат",
НСтр("ru='<Нет действующих сертификатов>'", ОбщегоНазначения.КодОсновногоЯзыка()));
ОбластьСертификат.Параметры.Заполнить(СтруктураПараметров);
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для товара %1 отсутствуют зарегистрированные сертификаты. Требуется указать сертификаты номенклатуры.'"),
ПредставлениеНоменклатуры);
ОбщегоНазначения.СообщитьПользователю(
Текст,
Выборка.Номенклатура);
ПрерватьВыборкуПоСериям = Истина;
ПрерватьВыборку = Истина;
ИначеЕсли Не Выборка.СертификатДействует Тогда
Если ДействующийСертификатДляСерииДобавлен Тогда
Прервать;
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.Серия) Тогда
ТекстОшибки = НСтр("ru='<%ТипСертификата%: нет действующих сертификатов для серии %Серия%>'");
ПредставлениеНоменклатурыССерией = НоменклатураКлиентСервер.ПредставлениеНоменклатуры(
ВыборкаПоХарактеристике.НаименованиеНоменклатуры,
ВыборкаПоХарактеристике.НаименованиеХарактеристики,
,
Выборка.Серия);
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для товара %1 нет действующих сертификатов (%2). Требуется зарегистрировать действующий сертификат.'"),
ПредставлениеНоменклатурыССерией,
Выборка.ТипСертификата);
Иначе
ТекстОшибки = НСтр("ru='<%ТипСертификата%: нет действующих сертификатов>'");
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для товара %1 нет действующих сертификатов (%2). Требуется зарегистрировать действующий сертификат.'"),
ПредставлениеНоменклатуры,
Выборка.ТипСертификата);
КонецЕсли;
ПрерватьВыборку = Истина;
ТекстОшибки = СтрЗаменить(ТекстОшибки,"%ТипСертификата%",Выборка.ТипСертификата);
ТекстОшибки = СтрЗаменить(ТекстОшибки,"%Серия%",Выборка.Серия);
ОбластьСертификат = Макет.ПолучитьОбласть(
"СтрокаТаблицыСертификатЖирный|КолонкаСертификатов");
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Сертификат",ТекстОшибки);
ОбластьСертификат.Параметры.Заполнить(СтруктураПараметров);
ОбщегоНазначения.СообщитьПользователю(
Текст,
Выборка.Номенклатура);
Иначе
Если МассивСертификатов.Найти(Выборка.СертификатНоменклатуры) <> Неопределено Тогда
Продолжить;
КонецЕсли;
НоменклатураЛокализация.ПроверитьСоответствиеСтатусовСертификатаНоменклатуры(
Выборка,
ТекстПримечания,
ПараметрыПроверкиСтатусов);
ОбластьСертификат = Макет.ПолучитьОбласть(
"СтрокаТаблицыСертификат|КолонкаСертификатов");
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Сертификат", Выборка.СертификатНоменклатуры);
СтруктураПараметров.Вставить("СертификатНоменклатуры", Выборка.СертификатНоменклатуры);
ОбластьСертификат.Параметры.Заполнить(СтруктураПараметров);
МассивСертификатов.Добавить(Выборка.СертификатНоменклатуры);
ДействующийСертификатДляСерииДобавлен = Истина;
КонецЕсли;
МассивВыводимыхОбластей.Добавить(ОбластьСертификат);
Если Не ПустаяСтрока(ТекстПримечания) Тогда
ОбластьПримечание = Макет.ПолучитьОбласть(
"СтрокаТаблицыПримечание|КолонкаСертификатов");
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("Примечание", ТекстПримечания);
ОбластьПримечание.Параметры.Заполнить(СтруктураПараметров);
МассивВыводимыхОбластей.Добавить(ОбластьПримечание);
КонецЕсли;
Если ПрерватьВыборку Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Если ПрерватьВыборкуПоСериям Тогда
Прервать;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ВывестиСтрокиДляПозицииТоваров(
ТабличныйДокумент,
Макет,
ОбластьПерваяСтрокаКолонкаТоваров,
НомерСтраницы,
НомерСтроки,
МассивВыводимыхОбластей);
Область = Макет.ПолучитьОбласть("ПодвалТаблицы|НачалоСтроки");
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров");
ТабличныйДокумент.Присоединить(Область);
Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаСертификатов");
ТабличныйДокумент.Присоединить(Область);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
КонецЦикла;
Пока ВыборкаПоДокументамБезУчетаСертификатов.Следующий() Цикл
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В документе %1 отсутствуют товары, для которых ведется учет сертификатов. Печать реестра сертификатов номенклатуры не требуется.'"),
Строка(ВыборкаПоДокументамБезУчетаСертификатов.Ссылка));
ОбщегоНазначения.СообщитьПользователю(
Текст,
ВыборкаПоДокументамБезУчетаСертификатов.Ссылка);
КонецЦикла;
СообщитьОРезультатахПроверкиХозяйственнойОперацииДокумента(ВыборкаОшибкиХозяйственнаяОперация);
ТабличныйДокумент.АвтоМасштаб = Истина;
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции
Процедура ВывестиСтрокиДляПозицииТоваров(ТабличныйДокумент,Макет,ОбластьПерваяСтрокаКолонкаТоваров,НомерСтраницы,НомерСтроки,МассивВыводимыхОбластей)
Если ОбластьПерваяСтрокаКолонкаТоваров <> Неопределено Тогда
ПерваяСтрока = Истина;
ВыводитьРазделитель = Ложь;
Если НЕ ТабличныйДокумент.ПроверитьВывод(МассивВыводимыхОбластей) Тогда
ВыводитьРазделитель = Истина;
КонецЕсли;
Если ВыводитьРазделитель Тогда
Область = Макет.ПолучитьОбласть("ПодвалТаблицы|НачалоСтроки");
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров");
ТабличныйДокумент.Присоединить(Область);
Область = Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаСертификатов");
ТабличныйДокумент.Присоединить(Область);
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ОбластьЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы");
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("НомерСтраницы", "Страница " + НомерСтраницы);
ОбластьЗаголовокТаблицы.Параметры.Заполнить(СтруктураПараметров);
ТабличныйДокумент.Вывести(ОбластьЗаголовокТаблицы);
НомерСтраницы = НомерСтраницы + 1;
Область = Макет.ПолучитьОбласть("ШапкаТаблицы|НачалоСтроки");
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаТоваров");
ТабличныйДокумент.Присоединить(Область);
Область = Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаСертификатов");
ТабличныйДокумент.Присоединить(Область);
КонецЕсли;
Для Каждого ОбластьСертификат Из МассивВыводимыхОбластей Цикл
Если ПерваяСтрока Тогда
ОбластьПерваяСтрокаНачалоСтроки = Макет.ПолучитьОбласть("СтрокаТаблицы|НачалоСтроки");
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("НомерСтроки", НомерСтроки);
ОбластьПерваяСтрокаНачалоСтроки.Параметры.Заполнить(СтруктураПараметров);
ТабличныйДокумент.Вывести(ОбластьПерваяСтрокаНачалоСтроки);
ТабличныйДокумент.Присоединить(ОбластьПерваяСтрокаКолонкаТоваров);
ПерваяСтрока = Ложь;
Иначе
Область = Макет.ПолучитьОбласть("СтрокаТаблицыСертификат|НачалоСтроки");
ТабличныйДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("СтрокаТаблицыСертификат|КолонкаТоваров");
ТабличныйДокумент.Присоединить(Область);
КонецЕсли;
ТабличныйДокумент.Присоединить(ОбластьСертификат);
КонецЦикла;
МассивВыводимыхОбластей.Очистить();
НомерСтроки = НомерСтроки + 1;
КонецЕсли;
КонецПроцедуры
Функция СформироватьПечатнуюФормуИзображенияСертификатовИзДокументов(МассивОбъектов, ОбъектыПечати) Экспорт
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СертификатыНоменклатуры_ИзображенияСертификатовИзДокументов";
Если ТипЗнч(МассивОбъектов[0]) = Тип("ДокументСсылка.ЗаданиеНаПеревозку") Тогда
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапросаПолученияСпискаНакладныхИзЗаданийНаПеревозку();
Запрос.УстановитьПараметр("ЗаданияНаПеревозку",МассивОбъектов);
МассивОбъектовДляЗапроса = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Распоряжение");
Иначе
МассивОбъектовДляЗапроса = МассивОбъектов;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапросаСертификатовНоменклатурыДокумента() + "
|//////////////////////////////////////////////////////////////////////////////// 10
|ВЫБРАТЬ
| ДокументТовары.Ссылка КАК Ссылка,
| ДокументТовары.НомерСтроки КАК НомерСтроки,
| ВЫБОР
| КОГДА ДокументТовары.Номенклатура.ВестиУчетСертификатовНоменклатуры
| ТОГДА ЕСТЬNULL(ТоварыССертификатами.СертификатНоменклатуры, ЗНАЧЕНИЕ(Справочник.СертификатыНоменклатуры.ПустаяСсылка))
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СертификатыНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК СертификатНоменклатуры,
| ЕСТЬNULL(ТоварыССертификатами.ТипСертификата, """") КАК ТипСертификата,
| ВЫБОР
| КОГДА ДокументТовары.Номенклатура.ВестиУчетСертификатовНоменклатуры
| ТОГДА ВЫБОР
| КОГДА ТоварыССертификатами.СертификатНоменклатуры ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыССертификатами.ОкончаниеСрокаДействия >= ДокументТовары.Дата
| И ТоварыССертификатами.НачалоСрокаДействия <= ДокументТовары.Дата
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СертификатДействует,
| ЕСТЬNULL(ТоварыССертификатами.ПриоритетСертификата, 4) КАК ПриоритетСертификата
|ПОМЕСТИТЬ СертификатыНоменклатуры
|ИЗ
| ДокументТовары КАК ДокументТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыССертификатами КАК ТоварыССертификатами
| ПО ДокументТовары.Номенклатура = ТоварыССертификатами.Номенклатура
| И ДокументТовары.Характеристика = ТоварыССертификатами.Характеристика
| И ДокументТовары.Серия = ТоварыССертификатами.Серия
|ГДЕ
| ВЫБОР
| КОГДА ДокументТовары.Номенклатура.ВестиУчетСертификатовНоменклатуры
| ТОГДА ВЫБОР
| КОГДА ТоварыССертификатами.СертификатНоменклатуры ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыССертификатами.ОкончаниеСрокаДействия >= ДокументТовары.Дата
| И ТоварыССертификатами.НачалоСрокаДействия <= ДокументТовары.Дата
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
|;
|
|//////////////////////////////////////////////////////////////////////////////// 11
|ВЫБРАТЬ
| СертификатыНоменклатурыПрисоединенныеФайлы.Ссылка КАК Ссылка,
| СертификатыНоменклатурыПрисоединенныеФайлы.ВладелецФайла КАК ВладелецФайла
|ПОМЕСТИТЬ СертификатыНоменклатурыПрисоединенныеФайлы
|ИЗ
| СертификатыНоменклатуры КАК СертификатыНоменклатуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СертификатыНоменклатурыПрисоединенныеФайлы КАК СертификатыНоменклатурыПрисоединенныеФайлы
| ПО СертификатыНоменклатуры.СертификатНоменклатуры = СертификатыНоменклатурыПрисоединенныеФайлы.ВладелецФайла
|ГДЕ
| НЕ СертификатыНоменклатурыПрисоединенныеФайлы.ПометкаУдаления
|;
|
|//////////////////////////////////////////////////////////////////////////////// 12
|ВЫБРАТЬ
| ВсеДокументы.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ВсеДокументы.Ссылка) КАК ПредставлениеСсылки,
| ПРЕДСТАВЛЕНИЕ(ВсеДокументы.ХозяйственнаяОперация) КАК ПредставлениеХозяйственнойОперации
|ИЗ
| ВсеДокументы КАК ВсеДокументы
|ГДЕ
| ВсеДокументы.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПереходПраваСобственности)
|;
|
|//////////////////////////////////////////////////////////////////////////////// 13
|ВЫБРАТЬ
| ДокументыУчетСертификатов.Ссылка КАК Ссылка,
| ДокументыУчетСертификатов.ВестиУчетСертификатовНоменклатуры КАК ВестиУчетСертификатовНоменклатуры
|ИЗ
| ДокументыУчетСертификатов КАК ДокументыУчетСертификатов
|ГДЕ
| НЕ ДокументыУчетСертификатов.ВестиУчетСертификатовНоменклатуры
|;
|
|//////////////////////////////////////////////////////////////////////////////// 14
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СертификатыНоменклатуры.Ссылка КАК Ссылка,
| СертификатыНоменклатуры.НомерСтроки КАК НомерСтроки,
| СертификатыНоменклатуры.СертификатНоменклатуры КАК СертификатНоменклатуры,
| СертификатыНоменклатуры.ТипСертификата КАК ТипСертификата,
| СертификатыНоменклатуры.СертификатДействует КАК СертификатДействует,
| СертификатыНоменклатуры.ПриоритетСертификата КАК ПриоритетСертификата,
| СертификатыНоменклатурыПрисоединенныеФайлы.Ссылка КАК ПрисоединенныйФайл,
| ВЫБОР
| КОГДА СертификатыНоменклатурыПрисоединенныеФайлы.Ссылка ЕСТЬ NULL
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НетФайлов
|ИЗ
| СертификатыНоменклатуры КАК СертификатыНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ СертификатыНоменклатурыПрисоединенныеФайлы КАК СертификатыНоменклатурыПрисоединенныеФайлы
| ПО СертификатыНоменклатуры.СертификатНоменклатуры = СертификатыНоменклатурыПрисоединенныеФайлы.ВладелецФайла
|
|УПОРЯДОЧИТЬ ПО
| СертификатыНоменклатуры.Ссылка,
| СертификатыНоменклатуры.НомерСтроки,
| СертификатыНоменклатуры.ТипСертификата УБЫВ,
| СертификатыНоменклатуры.СертификатДействует УБЫВ,
| СертификатыНоменклатуры.ПриоритетСертификата
|
|ИТОГИ ПО
| Ссылка,
| НомерСтроки,
| ТипСертификата,
| СертификатНоменклатуры,
| ПриоритетСертификата
|;
|
|//////////////////////////////////////////////////////////////////////////////// 15
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыССертификатами.Номенклатура КАК Номенклатура,
| ТоварыССертификатами.Номенклатура.НаименованиеПолное КАК НаименованиеНоменклатуры,
| ТоварыССертификатами.Характеристика КАК Характеристика,
| ТоварыССертификатами.Характеристика.НаименованиеПолное КАК НаименованиеХарактеристики,
| ТоварыССертификатами.Серия КАК Серия,
| ТоварыССертификатами.ТипСертификата КАК ТипСертификата
|ИЗ
| ТоварыССертификатами КАК ТоварыССертификатами
| ЛЕВОЕ СОЕДИНЕНИЕ СертификатыНоменклатуры КАК СертификатыНоменклатуры
| ПО ТоварыССертификатами.СертификатНоменклатуры = СертификатыНоменклатуры.СертификатНоменклатуры
|ГДЕ
| СертификатыНоменклатуры.СертификатНоменклатуры ЕСТЬ NULL";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектовДляЗапроса);
МассивРезультатов = Запрос.ВыполнитьПакет();
КоличествоРезультатов = МассивРезультатов.Количество();
РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 4];
ВыборкаОшибкиХозяйственнаяОперация = РезультатЗапроса.Выбрать();
РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 2];
ВыборкаПоДокументам = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 3];
ВыборкаПоДокументамБезУчетаСертификатов = РезультатЗапроса.Выбрать();
РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 1];
ВыборкаПоТоварамБезДействующихСертификатов = РезультатЗапроса.Выбрать();
Макет = УправлениеПечатью.МакетПечатнойФормы("Справочник.СертификатыНоменклатуры.ПФ_MXL_ИзображенияСертификатов");
ПервыйДокумент = Истина;
Пока ВыборкаПоДокументам.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ВыборкаПоНомеруСтроки = ВыборкаПоДокументам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоНомеруСтроки.Следующий() Цикл
ВыборкаПоТипуСертификата = ВыборкаПоНомеруСтроки.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоТипуСертификата.Следующий() Цикл
ВыборкаПоСертификатам = ВыборкаПоТипуСертификата.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСертификатам.Следующий() Цикл
ВыборкаПоПриоритету = ВыборкаПоСертификатам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоПриоритету.Следующий() Цикл
Выборка = ВыборкаПоПриоритету.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.НетФайлов Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В сертификате номенклатуры %1 отсутствуют присоединенные изображения. Требуется прикрепить файл изображения.'"),
Строка(Выборка.СертификатНоменклатуры));
ОбщегоНазначения.СообщитьПользователю(
Текст,
Выборка.СертификатНоменклатуры);
Прервать;
КонецЕсли;
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
Область = Макет.ПолучитьОбласть("Изображение");
Рисунок = Область.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Высота = 297;
Рисунок.Ширина = 210;
Рисунок.ГраницаСверху = Ложь;
Рисунок.ГраницаСнизу = Ложь;
Рисунок.ГраницаСлева = Ложь;
Рисунок.ГраницаСправа = Ложь;
Рисунок.РазмерКартинки = РазмерКартинки.АвтоРазмер;
Рисунок.Картинка = Новый Картинка(РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.ПрисоединенныйФайл));
Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии);
ТабличныйДокумент.Вывести(Область);
КонецЦикла;
Прервать;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);
КонецЦикла;
Пока ВыборкаПоДокументамБезУчетаСертификатов.Следующий() Цикл
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В документе %1 отсутствуют товары, для которых ведется учет сертификатов. Печать изображений сертификатов номенклатуры не требуется.'"),
Строка(ВыборкаПоДокументамБезУчетаСертификатов.Ссылка));
ОбщегоНазначения.СообщитьПользователю(
Текст,
ВыборкаПоДокументамБезУчетаСертификатов.Ссылка);
КонецЦикла;
Если ВыборкаПоТоварамБезДействующихСертификатов.Количество() > 0 Тогда
ТоварыБезДействующихСертификатов = Новый Соответствие;
ПроверяемыеНоменклатуры = Новый Массив;
ПроверяемыеХарактеристики = Новый Массив;
ПроверяемыеСерии = Новый Массив;
ДанныеТовара = ДанныеПоТоваруСНеДействующимиСертификатамиДляПечати();
Пока ВыборкаПоТоварамБезДействующихСертификатов.Следующий() Цикл
ПроверяемыеНоменклатуры.Добавить(ВыборкаПоТоварамБезДействующихСертификатов.Номенклатура);
ПроверяемыеХарактеристики.Добавить(ВыборкаПоТоварамБезДействующихСертификатов.Характеристика);
ПроверяемыеСерии.Добавить(ВыборкаПоТоварамБезДействующихСертификатов.Серия);
ЗаполнитьЗначенияСвойств(ДанныеТовара, ВыборкаПоТоварамБезДействующихСертификатов);
КлючТовара = КлючТовараПоИзмерениямДействияСертификатов(
ВыборкаПоТоварамБезДействующихСертификатов.Номенклатура,
ВыборкаПоТоварамБезДействующихСертификатов.Характеристика,
ВыборкаПоТоварамБезДействующихСертификатов.Серия);
ТоварыБезДействующихСертификатов.Вставить(КлючТовара, ДанныеТовара);
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ОбластиДействияСертификатов.Номенклатура) КАК ПредставлениеНоменклатуры,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ОбластиДействияСертификатов.Характеристика) КАК ПредставлениеХарактеристики,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ОбластиДействияСертификатов.Серия) КАК ПредставлениеСерии
|ИЗ
| РегистрСведений.ОбластиДействияСертификатовНоменклатуры КАК ОбластиДействияСертификатов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СертификатыНоменклатуры КАК СертификатыНоменклатуры
| ПО ОбластиДействияСертификатов.СертификатНоменклатуры = СертификатыНоменклатуры.Ссылка
|ГДЕ
| НЕ СертификатыНоменклатуры.ПометкаУдаления
| И СертификатыНоменклатуры.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСертификатовНоменклатуры.Действующий)
| И ОбластиДействияСертификатов.Номенклатура В (&ПроверяемыеНоменклатуры)
| И ОбластиДействияСертификатов.Характеристика В (&ПроверяемыеХарактеристики)
| И ОбластиДействияСертификатов.Серия В (&ПроверяемыеСерии)";
Запрос.УстановитьПараметр("ПроверяемыеНоменклатуры", ПроверяемыеНоменклатуры);
Запрос.УстановитьПараметр("ПроверяемыеХарактеристики", ПроверяемыеХарактеристики);
Запрос.УстановитьПараметр("ПроверяемыеСерии", ПроверяемыеСерии);
ВыборкаДействующихСертификатовПоТовару = Запрос.Выполнить().Выбрать();
МассивКлючейТоваровСДействующимиСертификатами = Новый Массив();
Пока ВыборкаДействующихСертификатовПоТовару.Следующий() Цикл
МассивКлючейТоваровСДействующимиСертификатами.Добавить(
ВыборкаДействующихСертификатовПоТовару.ПредставлениеНоменклатуры
+ ВыборкаДействующихСертификатовПоТовару.ПредставлениеХарактеристики
+ ВыборкаДействующихСертификатовПоТовару.ПредставлениеСерии);
КонецЦикла;
Для Каждого КлючТовараСДействующимиСертификатами Из МассивКлючейТоваровСДействующимиСертификатами Цикл
ТоварыБезДействующихСертификатов.Удалить(КлючТовараСДействующимиСертификатами);
КонецЦикла;
Если ТоварыБезДействующихСертификатов.Количество() > 0 Тогда
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
КонецЕсли;
Для Каждого КлючИЗначение Из ТоварыБезДействующихСертификатов Цикл
ДанныеТовара = КлючИЗначение.Значение;
ПредставлениеТовара = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ДанныеТовара.НаименованиеНоменклатуры,
ДанныеТовара.НаименованиеХарактеристики,
,
ДанныеТовара.Серия,
ДопПараметрыПредставлениеНоменклатуры);
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для товара %1 нет действующих сертификатов (%2). Требуется зарегистрировать действующий сертификат.'"),
ПредставлениеТовара,
ДанныеТовара.ТипСертификата);
ОбщегоНазначения.СообщитьПользователю(
Текст,
ДанныеТовара.Номенклатура);
КонецЦикла;
КонецЕсли;
СообщитьОРезультатахПроверкиХозяйственнойОперацииДокумента(ВыборкаОшибкиХозяйственнаяОперация);
ТабличныйДокумент.АвтоМасштаб = Истина;
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции
Функция СформироватьПечатнуюФормуИзображенияСертификатов(МассивОбъектов, ОбъектыПечати) Экспорт
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СертификатыНоменклатуры_ИзображенияСертификатов";
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СертификатыНоменклатуры.Ссылка
|ПОМЕСТИТЬ СертификатыНоменклатуры
|ИЗ
| Справочник.СертификатыНоменклатуры КАК СертификатыНоменклатуры
|ГДЕ
| СертификатыНоменклатуры.ЭтоГруппа = ЛОЖЬ
| И (СертификатыНоменклатуры.Ссылка В (&МассивОбъектов)
| ИЛИ СертификатыНоменклатуры.Родитель В (&МассивОбъектов))
|;
|
|
|ВЫБРАТЬ
| СертификатыНоменклатурыПрисоединенныеФайлы.Ссылка,
| СертификатыНоменклатурыПрисоединенныеФайлы.ВладелецФайла
|ПОМЕСТИТЬ СертификатыНоменклатурыПрисоединенныеФайлы
|ИЗ
| Справочник.СертификатыНоменклатурыПрисоединенныеФайлы КАК СертификатыНоменклатурыПрисоединенныеФайлы
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СертификатыНоменклатуры КАК СертификатыНоменклатуры
| ПО СертификатыНоменклатурыПрисоединенныеФайлы.ВладелецФайла = СертификатыНоменклатуры.Ссылка
|ГДЕ
| СертификатыНоменклатурыПрисоединенныеФайлы.ПометкаУдаления = ЛОЖЬ
|;
|
|
|ВЫБРАТЬ
| СертификатыНоменклатуры.Ссылка,
| ЕСТЬNULL(СертификатыНоменклатурыПрисоединенныеФайлы.Ссылка, ЗНАЧЕНИЕ(Справочник.СертификатыНоменклатурыПрисоединенныеФайлы.ПустаяСсылка)) КАК ПрисоединенныйФайл,
| ВЫБОР
| КОГДА СертификатыНоменклатурыПрисоединенныеФайлы.Ссылка ЕСТЬ NULL
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НетФайлов
|ПОМЕСТИТЬ СертификатыНоменклатурыСПрисоединеннымиФайлами
|ИЗ
| СертификатыНоменклатуры КАК СертификатыНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ СертификатыНоменклатурыПрисоединенныеФайлы КАК СертификатыНоменклатурыПрисоединенныеФайлы
| ПО (СертификатыНоменклатурыПрисоединенныеФайлы.ВладелецФайла = СертификатыНоменклатуры.Ссылка)
|;
|
|
|ВЫБРАТЬ
| СертификатыНоменклатурыСПрисоединеннымиФайлами.Ссылка КАК Ссылка,
| СертификатыНоменклатурыСПрисоединеннымиФайлами.ПрисоединенныйФайл
|ИЗ
| СертификатыНоменклатурыСПрисоединеннымиФайлами КАК СертификатыНоменклатурыСПрисоединеннымиФайлами
|ГДЕ
| СертификатыНоменклатурыСПрисоединеннымиФайлами.НетФайлов = ЛОЖЬ
|
|УПОРЯДОЧИТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| СертификатыНоменклатурыСПрисоединеннымиФайлами.Ссылка КАК Ссылка,
| СертификатыНоменклатурыСПрисоединеннымиФайлами.ПрисоединенныйФайл
|ИЗ
| СертификатыНоменклатурыСПрисоединеннымиФайлами КАК СертификатыНоменклатурыСПрисоединеннымиФайлами
|ГДЕ
| СертификатыНоменклатурыСПрисоединеннымиФайлами.НетФайлов = ИСТИНА
|
|УПОРЯДОЧИТЬ ПО
| Ссылка";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
МассивРезультатов = Запрос.ВыполнитьПакет();
РезультатЗапроса = МассивРезультатов[3];
Выборка = РезультатЗапроса.Выбрать();
РезультатЗапроса = МассивРезультатов[4];
ВыборкаПоДокументамБезСертификатов = РезультатЗапроса.Выбрать();
Макет = УправлениеПечатью.МакетПечатнойФормы("Справочник.СертификатыНоменклатуры.ПФ_MXL_ИзображенияСертификатов");
Пока Выборка.Следующий() Цикл
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
Область = Макет.ПолучитьОбласть("Изображение");
Рисунок = Область.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Высота = 297;
Рисунок.Ширина = 210;
Рисунок.ГраницаСверху = Ложь;
Рисунок.ГраницаСнизу = Ложь;
Рисунок.ГраницаСлева = Ложь;
Рисунок.ГраницаСправа = Ложь;
Рисунок.РазмерКартинки = РазмерКартинки.АвтоРазмер;
Рисунок.Картинка = Новый Картинка(РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.ПрисоединенныйФайл));
Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии);
ТабличныйДокумент.Вывести(Область);
КонецЦикла;
Пока ВыборкаПоДокументамБезСертификатов.Следующий() Цикл
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В сертификате номенклатуры %1 отсутствуют присоединенные изображения. Требуется прикрепить файл изображения.'"),
Строка(ВыборкаПоДокументамБезСертификатов.Ссылка));
ОбщегоНазначения.СообщитьПользователю(
Текст,
ВыборкаПоДокументамБезСертификатов.Ссылка);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции
Функция СформироватьПечатнуюФормуИзображенияСертификатовИзДокументовБезДублей(МассивОбъектов, ОбъектыПечати) Экспорт
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_СертификатыНоменклатуры_ИзображенияСертификатовИзДокументовБезДублей";
Если ТипЗнч(МассивОбъектов[0]) = Тип("ДокументСсылка.ЗаданиеНаПеревозку") Тогда
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапросаПолученияСпискаНакладныхИзЗаданийНаПеревозку();
Запрос.УстановитьПараметр("ЗаданияНаПеревозку",МассивОбъектов);
МассивОбъектовДляЗапроса = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Распоряжение");
Иначе
МассивОбъектовДляЗапроса = МассивОбъектов;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапросаСертификатовНоменклатурыДокумента() + "
|//////////////////////////////////////////////////////////////////////////////// 10
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ДокументТовары.Ссылка ССЫЛКА Документ.ПеремещениеТоваров
| ТОГДА ДокументТовары.Ссылка.СкладПолучатель
| ИНАЧЕ ДокументТовары.Ссылка.Контрагент
| КОНЕЦ КАК ГруппировкаСертификатов,
| ВЫБОР
| КОГДА ДокументТовары.Номенклатура.ВестиУчетСертификатовНоменклатуры
| ТОГДА ЕСТЬNULL(ТоварыССертификатами.СертификатНоменклатуры, ЗНАЧЕНИЕ(Справочник.СертификатыНоменклатуры.ПустаяСсылка))
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СертификатыНоменклатуры.ПустаяСсылка)
| КОНЕЦ КАК СертификатНоменклатуры,
| ЕСТЬNULL(ТоварыССертификатами.ТипСертификата, """") КАК ТипСертификата,
| ВЫБОР
| КОГДА ДокументТовары.Номенклатура.ВестиУчетСертификатовНоменклатуры
| ТОГДА ВЫБОР
| КОГДА ТоварыССертификатами.СертификатНоменклатуры ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыССертификатами.ОкончаниеСрокаДействия >= ДокументТовары.Дата
| И ТоварыССертификатами.НачалоСрокаДействия <= ДокументТовары.Дата
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК СертификатДействует,
| ТоварыССертификатами.ПриоритетСертификата КАК ПриоритетСертификата
|ПОМЕСТИТЬ СертификатыНоменклатуры
|ИЗ
| ДокументТовары КАК ДокументТовары
| ЛЕВОЕ СОЕДИНЕНИЕ ТоварыССертификатами КАК ТоварыССертификатами
| ПО ДокументТовары.Номенклатура = ТоварыССертификатами.Номенклатура
| И ДокументТовары.Характеристика = ТоварыССертификатами.Характеристика
| И ДокументТовары.Серия = ТоварыССертификатами.Серия
|ГДЕ
| ВЫБОР
| КОГДА ДокументТовары.Номенклатура.ВестиУчетСертификатовНоменклатуры
| ТОГДА ВЫБОР
| КОГДА ТоварыССертификатами.СертификатНоменклатуры ЕСТЬ NULL
| ТОГДА ЛОЖЬ
| ИНАЧЕ ВЫБОР
| КОГДА ТоварыССертификатами.ОкончаниеСрокаДействия >= ДокументТовары.Дата
| И ТоварыССертификатами.НачалоСрокаДействия <= ДокументТовары.Дата
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
| КОНЕЦ
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ
|;
|
|//////////////////////////////////////////////////////////////////////////////// 11
|ВЫБРАТЬ
| СертификатыНоменклатурыПрисоединенныеФайлы.Ссылка КАК Ссылка,
| СертификатыНоменклатурыПрисоединенныеФайлы.ВладелецФайла КАК ВладелецФайла
|ПОМЕСТИТЬ СертификатыНоменклатурыПрисоединенныеФайлы
|ИЗ
| СертификатыНоменклатуры КАК СертификатыНоменклатуры
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СертификатыНоменклатурыПрисоединенныеФайлы КАК СертификатыНоменклатурыПрисоединенныеФайлы
| ПО СертификатыНоменклатуры.СертификатНоменклатуры = СертификатыНоменклатурыПрисоединенныеФайлы.ВладелецФайла
|ГДЕ
| НЕ СертификатыНоменклатурыПрисоединенныеФайлы.ПометкаУдаления
|;
|
|//////////////////////////////////////////////////////////////////////////////// 12
|ВЫБРАТЬ
| ВсеДокументы.Ссылка КАК Ссылка,
| ПРЕДСТАВЛЕНИЕ(ВсеДокументы.Ссылка) КАК ПредставлениеСсылки,
| ПРЕДСТАВЛЕНИЕ(ВсеДокументы.ХозяйственнаяОперация) КАК ПредставлениеХозяйственнойОперации
|ИЗ
| ВсеДокументы КАК ВсеДокументы
|ГДЕ
| ВсеДокументы.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПереходПраваСобственности)
|;
|
|//////////////////////////////////////////////////////////////////////////////// 13
|ВЫБРАТЬ
| ДокументыУчетСертификатов.Ссылка КАК Ссылка,
| ДокументыУчетСертификатов.ВестиУчетСертификатовНоменклатуры КАК ВестиУчетСертификатовНоменклатуры
|ИЗ
| ДокументыУчетСертификатов КАК ДокументыУчетСертификатов
|ГДЕ
| НЕ ДокументыУчетСертификатов.ВестиУчетСертификатовНоменклатуры
|;
|
|//////////////////////////////////////////////////////////////////////////////// 14
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СертификатыНоменклатуры.ГруппировкаСертификатов КАК Ссылка,
| СертификатыНоменклатуры.СертификатНоменклатуры КАК СертификатНоменклатуры,
| СертификатыНоменклатуры.ТипСертификата КАК ТипСертификата,
| СертификатыНоменклатуры.СертификатДействует КАК СертификатДействует,
| СертификатыНоменклатуры.ПриоритетСертификата КАК ПриоритетСертификата,
| СертификатыНоменклатурыПрисоединенныеФайлы.Ссылка КАК ПрисоединенныйФайл,
| ВЫБОР
| КОГДА СертификатыНоменклатурыПрисоединенныеФайлы.Ссылка ЕСТЬ NULL
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК НетФайлов
|ИЗ
| СертификатыНоменклатуры КАК СертификатыНоменклатуры
| ЛЕВОЕ СОЕДИНЕНИЕ СертификатыНоменклатурыПрисоединенныеФайлы КАК СертификатыНоменклатурыПрисоединенныеФайлы
| ПО СертификатыНоменклатуры.СертификатНоменклатуры = СертификатыНоменклатурыПрисоединенныеФайлы.ВладелецФайла
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| СертификатыНоменклатуры.ТипСертификата УБЫВ,
| СертификатыНоменклатуры.СертификатДействует УБЫВ,
| СертификатыНоменклатуры.ПриоритетСертификата
|
|ИТОГИ ПО
| ГруппировкаСертификатов,
| ТипСертификата,
| СертификатНоменклатуры,
| ПриоритетСертификата
|;
|
|//////////////////////////////////////////////////////////////////////////////// 15
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыССертификатами.Номенклатура КАК Номенклатура,
| ТоварыССертификатами.Номенклатура.НаименованиеПолное КАК НаименованиеНоменклатуры,
| ТоварыССертификатами.Характеристика КАК Характеристика,
| ТоварыССертификатами.Характеристика.НаименованиеПолное КАК НаименованиеХарактеристики,
| ТоварыССертификатами.Серия КАК Серия,
| ТоварыССертификатами.ТипСертификата КАК ТипСертификата
|ИЗ
| ТоварыССертификатами КАК ТоварыССертификатами
| ЛЕВОЕ СОЕДИНЕНИЕ СертификатыНоменклатуры КАК СертификатыНоменклатуры
| ПО ТоварыССертификатами.СертификатНоменклатуры = СертификатыНоменклатуры.СертификатНоменклатуры
|ГДЕ
| СертификатыНоменклатуры.СертификатНоменклатуры ЕСТЬ NULL";
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектовДляЗапроса);
МассивРезультатов = Запрос.ВыполнитьПакет();
КоличествоРезультатов = МассивРезультатов.Количество();
РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 4];
ВыборкаОшибкиХозяйственнаяОперация = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 2];
ВыборкаПоГруппировке = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 3];
ВыборкаПоДокументамБезУчетаСертификатов = РезультатЗапроса.Выбрать();
РезультатЗапроса = МассивРезультатов[КоличествоРезультатов - 1];
ВыборкаПоТоварамБезДействующихСертификатов = РезультатЗапроса.Выбрать();
Макет = УправлениеПечатью.МакетПечатнойФормы("Справочник.СертификатыНоменклатуры.ПФ_MXL_ИзображенияСертификатов");
ПервыйДокумент = Истина;
Пока ВыборкаПоГруппировке.Следующий() Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ВыборкаПоТипуСертификата = ВыборкаПоГруппировке.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоТипуСертификата.Следующий() Цикл
ВыборкаПоСертификатам = ВыборкаПоТипуСертификата.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСертификатам.Следующий() Цикл
ВыборкаПоПриоритету = ВыборкаПоСертификатам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоПриоритету.Следующий() Цикл
Выборка = ВыборкаПоПриоритету.Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.НетФайлов Тогда
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В сертификате номенклатуры %1 отсутствуют присоединенные изображения. Требуется прикрепить файл изображения.'"),
Строка(Выборка.СертификатНоменклатуры));
ОбщегоНазначения.СообщитьПользователю(
Текст,
Выборка.СертификатНоменклатуры);
Прервать;
КонецЕсли;
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
Область = Макет.ПолучитьОбласть("Изображение");
Рисунок = Область.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Высота = 297;
Рисунок.Ширина = 210;
Рисунок.ГраницаСверху = Ложь;
Рисунок.ГраницаСнизу = Ложь;
Рисунок.ГраницаСлева = Ложь;
Рисунок.ГраницаСправа = Ложь;
Рисунок.РазмерКартинки = РазмерКартинки.АвтоРазмер;
Рисунок.Картинка = Новый Картинка(РаботаСФайлами.ДвоичныеДанныеФайла(Выборка.ПрисоединенныйФайл));
Рисунок.Линия = Новый Линия(ТипЛинииРисункаТабличногоДокумента.НетЛинии);
ТабличныйДокумент.Вывести(Область);
КонецЦикла;
Прервать;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Если МассивОбъектовДляЗапроса.Количество() = 1 Тогда
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, МассивОбъектовДляЗапроса[0]);
Иначе
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоГруппировке.Ссылка);
КонецЕсли;
КонецЦикла;
Пока ВыборкаПоДокументамБезУчетаСертификатов.Следующий() Цикл
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В документе %1 отсутствуют товары для которых ведется учет сертификатов.
| Печать изображений сертификатов номенклатуры не требуется.'"),
Строка(ВыборкаПоДокументамБезУчетаСертификатов.Ссылка));
ОбщегоНазначения.СообщитьПользователю(
Текст,
ВыборкаПоДокументамБезУчетаСертификатов.Ссылка);
КонецЦикла;
Если ВыборкаПоТоварамБезДействующихСертификатов.Количество() > 0 Тогда
ТоварыБезДействующихСертификатов = Новый Соответствие;
ПроверяемыеНоменклатуры = Новый Массив;
ПроверяемыеХарактеристики = Новый Массив;
ПроверяемыеСерии = Новый Массив;
ДанныеТовара = ДанныеПоТоваруСНеДействующимиСертификатамиДляПечати();
Пока ВыборкаПоТоварамБезДействующихСертификатов.Следующий() Цикл
ПроверяемыеНоменклатуры.Добавить(ВыборкаПоТоварамБезДействующихСертификатов.Номенклатура);
ПроверяемыеХарактеристики.Добавить(ВыборкаПоТоварамБезДействующихСертификатов.Характеристика);
ПроверяемыеСерии.Добавить(ВыборкаПоТоварамБезДействующихСертификатов.Серия);
ЗаполнитьЗначенияСвойств(ДанныеТовара, ВыборкаПоТоварамБезДействующихСертификатов);
КлючТовара = КлючТовараПоИзмерениямДействияСертификатов(
ВыборкаПоТоварамБезДействующихСертификатов.Номенклатура,
ВыборкаПоТоварамБезДействующихСертификатов.Характеристика,
ВыборкаПоТоварамБезДействующихСертификатов.Серия);
ТоварыБезДействующихСертификатов.Вставить(КлючТовара, ДанныеТовара);
КонецЦикла;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ОбластиДействияСертификатов.Номенклатура) КАК ПредставлениеНоменклатуры,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ОбластиДействияСертификатов.Характеристика) КАК ПредставлениеХарактеристики,
| ПРЕДСТАВЛЕНИЕССЫЛКИ(ОбластиДействияСертификатов.Серия) КАК ПредставлениеСерии
|ИЗ
| РегистрСведений.ОбластиДействияСертификатовНоменклатуры КАК ОбластиДействияСертификатов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СертификатыНоменклатуры КАК СертификатыНоменклатуры
| ПО ОбластиДействияСертификатов.СертификатНоменклатуры = СертификатыНоменклатуры.Ссылка
|ГДЕ
| НЕ СертификатыНоменклатуры.ПометкаУдаления
| И СертификатыНоменклатуры.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСертификатовНоменклатуры.Действующий)
| И ОбластиДействияСертификатов.Номенклатура В (&ПроверяемыеНоменклатуры)
| И ОбластиДействияСертификатов.Характеристика В (&ПроверяемыеХарактеристики)
| И ОбластиДействияСертификатов.Серия В (&ПроверяемыеСерии)";
Запрос.УстановитьПараметр("ПроверяемыеНоменклатуры", ПроверяемыеНоменклатуры);
Запрос.УстановитьПараметр("ПроверяемыеХарактеристики", ПроверяемыеХарактеристики);
Запрос.УстановитьПараметр("ПроверяемыеСерии", ПроверяемыеСерии);
ВыборкаДействующихСертификатовПоТовару = Запрос.Выполнить().Выбрать();
МассивКлючейТоваровСДействующимиСертификатами = Новый Массив();
Пока ВыборкаДействующихСертификатовПоТовару.Следующий() Цикл
МассивКлючейТоваровСДействующимиСертификатами.Добавить(
ВыборкаДействующихСертификатовПоТовару.ПредставлениеНоменклатуры
+ ВыборкаДействующихСертификатовПоТовару.ПредставлениеХарактеристики
+ ВыборкаДействующихСертификатовПоТовару.ПредставлениеСерии);
КонецЦикла;
Для Каждого КлючТовараСДействующимиСертификатами Из МассивКлючейТоваровСДействующимиСертификатами Цикл
ТоварыБезДействующихСертификатов.Удалить(КлючТовараСДействующимиСертификатами);
КонецЦикла;
Если ТоварыБезДействующихСертификатов.Количество() > 0 Тогда
ДопПараметрыПредставлениеНоменклатуры = НоменклатураКлиентСервер.ДополнительныеПараметрыПредставлениеНоменклатурыДляПечати();
ДопПараметрыПредставлениеНоменклатуры.КодОсновногоЯзыка = ОбщегоНазначения.КодОсновногоЯзыка();
КонецЕсли;
Для Каждого КлючИЗначение Из ТоварыБезДействующихСертификатов Цикл
ДанныеТовара = КлючИЗначение.Значение;
ПредставлениеТовара = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(
ДанныеТовара.НаименованиеНоменклатуры,
ДанныеТовара.НаименованиеХарактеристики,
,
ДанныеТовара.Серия,
ДопПараметрыПредставлениеНоменклатуры);
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Для товара %1 нет действующих сертификатов (%2). Требуется зарегистрировать действующий сертификат.'"),
ПредставлениеТовара,
ДанныеТовара.ТипСертификата);
ОбщегоНазначения.СообщитьПользователю(
Текст,
ДанныеТовара.Номенклатура);
КонецЦикла;
КонецЕсли;
СообщитьОРезультатахПроверкиХозяйственнойОперацииДокумента(ВыборкаОшибкиХозяйственнаяОперация);
ТабличныйДокумент.АвтоМасштаб = Истина;
Если ПривилегированныйРежим() Тогда
УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
Возврат ТабличныйДокумент;
КонецФункции
Функция ТекстЗапросаПолученияСпискаНакладныхИзЗаданийНаПеревозку() Экспорт
Возврат
"ВЫБРАТЬ
| ЗаданиеНаПеревозкуРаспоряжения.Распоряжение,
| ЗаданиеНаПеревозкуРаспоряжения.Склад
|ПОМЕСТИТЬ Распоряжения
|ИЗ
| Документ.ЗаданиеНаПеревозку.Распоряжения КАК ЗаданиеНаПеревозкуРаспоряжения
|ГДЕ
| ЗаданиеНаПеревозкуРаспоряжения.Ссылка В(&ЗаданияНаПеревозку)
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокументТовары.Ссылка КАК Распоряжение
|ИЗ
| Распоряжения КАК Распоряжения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК ДокументТовары
| ПО Распоряжения.Распоряжение = ДокументТовары.ЗаказКлиента
| И Распоряжения.Склад = ДокументТовары.Склад
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокументТовары.Ссылка КАК Распоряжение
|ИЗ
| Распоряжения КАК Распоряжения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ДокументТовары
| ПО Распоряжения.Распоряжение = ДокументТовары.ЗаказНаПеремещение
| И Распоряжения.Склад = ДокументТовары.Ссылка.СкладОтправитель
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокументТовары.Ссылка КАК Распоряжение
|ИЗ
| Распоряжения КАК Распоряжения
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПередачаТоваровХранителю.Товары КАК ДокументТовары
| ПО Распоряжения.Распоряжение = ДокументТовары.ЗаказКлиента
| И Распоряжения.Склад = ДокументТовары.Склад
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| Распоряжения.Распоряжение
|ИЗ
| Распоряжения КАК Распоряжения
|ГДЕ
| (Распоряжения.Распоряжение ССЫЛКА Документ.РеализацияТоваровУслуг
| ИЛИ Распоряжения.Распоряжение ССЫЛКА Документ.ПередачаТоваровХранителю
| ИЛИ Распоряжения.Распоряжение ССЫЛКА Документ.ПеремещениеТоваров)
|;
|
|
|";
КонецФункции
Функция ТекстЗапросаСертификатовНоменклатурыДокумента()
ТекстЗапроса =
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.РеализацияПоЗаказам КАК ЕстьРаспоряжения,
| ТаблицаТоваров.ЗаказКлиента КАК Распоряжение,
| МАКСИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия КАК Серия,
| ВЫБОР
| КОГДА ТаблицаТоваров.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК СерияУказанаВНакладной
|ПОМЕСТИТЬ СтрокиТоваров
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК ДанныеДокумента
| ПО ТаблицаТоваров.Ссылка = ДанныеДокумента.Ссылка
|ГДЕ
| ТаблицаТоваров.Ссылка В(&МассивОбъектов)
| И ТаблицаТоваров.Ссылка.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПереходПраваСобственности)
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка,
| ДанныеДокумента.Дата,
| ДанныеДокумента.РеализацияПоЗаказам,
| ТаблицаТоваров.ЗаказКлиента,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ТаблицаТоваров.Серия,
| ВЫБОР
| КОГДА ТаблицаТоваров.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Дата КАК Дата,
| ЛОЖЬ КАК ЕстьРаспоряжения,
| НЕОПРЕДЕЛЕНО КАК Распоряжение,
| МАКСИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка) КАК Серия,
| ЛОЖЬ КАК СерияУказанаВНакладной
|ИЗ
| Документ.КорректировкаРеализации.Товары КАК ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.КорректировкаРеализации КАК ДанныеДокумента
| ПО ТаблицаТоваров.Ссылка = ДанныеДокумента.Ссылка
|ГДЕ
| ТаблицаТоваров.Ссылка В(&МассивОбъектов)
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка,
| ДанныеДокумента.Дата,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.ОтгрузкаПоЗаказам КАК ЕстьРаспоряжения,
| ТаблицаТоваров.ЗаказКлиента КАК Распоряжение,
| МАКСИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия КАК Серия,
| ВЫБОР
| КОГДА ТаблицаТоваров.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК СерияУказанаВНакладной
|ИЗ
| Документ.ОтгрузкаТоваровКлиенту.Товары КАК ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтгрузкаТоваровКлиенту КАК ДанныеДокумента
| ПО ТаблицаТоваров.Ссылка = ДанныеДокумента.Ссылка
|ГДЕ
| ТаблицаТоваров.Ссылка В(&МассивОбъектов)
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка,
| ДанныеДокумента.Дата,
| ДанныеДокумента.ОтгрузкаПоЗаказам,
| ТаблицаТоваров.ЗаказКлиента,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ТаблицаТоваров.Серия,
| ВЫБОР
| КОГДА ТаблицаТоваров.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.ПеремещениеПоЗаказам КАК ЕстьРаспоряжения,
| ТаблицаТоваров.ЗаказНаПеремещение КАК Распоряжение,
| МАКСИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия КАК Серия,
| ВЫБОР
| КОГДА ТаблицаТоваров.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК СерияУказанаВНакладной
|ИЗ
| Документ.ПеремещениеТоваров.Товары КАК ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров КАК ДанныеДокумента
| ПО ТаблицаТоваров.Ссылка = ДанныеДокумента.Ссылка
|ГДЕ
| ТаблицаТоваров.Ссылка В(&МассивОбъектов)
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка,
| ДанныеДокумента.Дата,
| ДанныеДокумента.ПеремещениеПоЗаказам,
| ТаблицаТоваров.ЗаказНаПеремещение,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ТаблицаТоваров.Серия,
| ВЫБОР
| КОГДА ТаблицаТоваров.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.ПередачаПоЗаказам КАК ЕстьРаспоряжения,
| ТаблицаТоваров.ЗаказКлиента КАК Распоряжение,
| МАКСИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика,
| ТаблицаТоваров.Серия КАК Серия,
| ВЫБОР
| КОГДА ТаблицаТоваров.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ КАК СерияУказанаВНакладной
|ИЗ
| Документ.ПередачаТоваровХранителю.Товары КАК ТаблицаТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПередачаТоваровХранителю КАК ДанныеДокумента
| ПО ТаблицаТоваров.Ссылка = ДанныеДокумента.Ссылка
|ГДЕ
| ТаблицаТоваров.Ссылка В(&МассивОбъектов)
|
|СГРУППИРОВАТЬ ПО
| ДанныеДокумента.Ссылка,
| ДанныеДокумента.Дата,
| ДанныеДокумента.ПередачаПоЗаказам,
| ТаблицаТоваров.ЗаказКлиента,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика,
| ТаблицаТоваров.Серия,
| ВЫБОР
| КОГДА ТаблицаТоваров.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА ЛОЖЬ
| ИНАЧЕ ИСТИНА
| КОНЕЦ
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| Распоряжение,
| Номенклатура,
| Характеристика
|;
|
|
|ВЫБРАТЬ
| ТаблицаТоваров.Ссылка КАК Ссылка,
| ТаблицаТоваров.Дата КАК Дата,
| ТаблицаТоваров.ЕстьРаспоряжения КАК ЕстьРаспоряжения,
| ТаблицаТоваров.Распоряжение КАК Распоряжение,
| МАКСИМУМ(ТаблицаТоваров.НомерСтроки) КАК НомерСтроки,
| ТаблицаТоваров.Номенклатура КАК Номенклатура,
| ТаблицаТоваров.Характеристика КАК Характеристика
|ПОМЕСТИТЬ СтрокиТоваровБезСерий
|ИЗ
| СтрокиТоваров КАК ТаблицаТоваров
|
|СГРУППИРОВАТЬ ПО
| ТаблицаТоваров.Ссылка,
| ТаблицаТоваров.Дата,
| ТаблицаТоваров.ЕстьРаспоряжения,
| ТаблицаТоваров.Распоряжение,
| ТаблицаТоваров.Номенклатура,
| ТаблицаТоваров.Характеристика
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| Распоряжение,
| Номенклатура,
| Характеристика
|;
|
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ЛОЖЬ КАК ВестиУчетСертификатовНоменклатуры,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ПОМЕСТИТЬ ВсеДокументы
|ИЗ
| Документ.РеализацияТоваровУслуг КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ЛОЖЬ КАК ВестиУчетСертификатовНоменклатуры,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.КорректировкаРеализации КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ЛОЖЬ КАК ВестиУчетСертификатовНоменклатуры,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ОтгрузкаТоваровКлиенту КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ЛОЖЬ КАК ВестиУчетСертификатовНоменклатуры,
| ДанныеДокумента.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ПеремещениеТоваров КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Ссылка В(&МассивОбъектов)
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПередачаТоваров.Ссылка КАК Ссылка,
| ЛОЖЬ КАК ВестиУчетСертификатовНоменклатуры,
| ПередачаТоваров.ХозяйственнаяОперация КАК ХозяйственнаяОперация
|ИЗ
| Документ.ПередачаТоваровХранителю КАК ПередачаТоваров
|ГДЕ
| ПередачаТоваров.Ссылка В(&МассивОбъектов)
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ВсеДокументы.Ссылка КАК Ссылка,
| МАКСИМУМ(ВсеДокументы.ВестиУчетСертификатовНоменклатуры) КАК ВестиУчетСертификатовНоменклатуры
|ПОМЕСТИТЬ ДокументыУчетСертификатов
|ИЗ
| (ВЫБРАТЬ
| СтрокиТоваров.Ссылка КАК Ссылка,
| ЕСТЬNULL(Товары.ВестиУчетСертификатовНоменклатуры, ЛОЖЬ) КАК ВестиУчетСертификатовНоменклатуры
| ИЗ
| СтрокиТоваров КАК СтрокиТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары
| ПО СтрокиТоваров.Номенклатура = Товары.Ссылка
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ВсеДокументы.Ссылка КАК Ссылка,
| ВсеДокументы.ВестиУчетСертификатовНоменклатуры КАК ВестиУчетСертификатовНоменклатуры
| ИЗ
| ВсеДокументы КАК ВсеДокументы
| ГДЕ
| ВсеДокументы.ХозяйственнаяОперация <> ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ПереходПраваСобственности)
| ) КАК ВсеДокументы
|
|СГРУППИРОВАТЬ ПО
| ВсеДокументы.Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ
| ДокументыУчетСертификатов.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ДокументыПоКоторымВедетсяУчетСертификатов
|ИЗ
| ДокументыУчетСертификатов КАК ДокументыУчетСертификатов
|ГДЕ
| ДокументыУчетСертификатов.ВестиУчетСертификатовНоменклатуры
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СтрокиТоваров.Распоряжение КАК Ссылка
|ИЗ
| ДокументыУчетСертификатов КАК ДокументыУчетСертификатов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ СтрокиТоваров КАК СтрокиТоваров
| ПО ДокументыУчетСертификатов.Ссылка = СтрокиТоваров.Ссылка
|ГДЕ
| ДокументыУчетСертификатов.ВестиУчетСертификатовНоменклатуры
| И СтрокиТоваров.ЕстьРаспоряжения
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокументыУчетаСертификатов.Ссылка КАК Ссылка,
| ТоварыПоРаспоряжениям.Ссылка КАК Ордер
|ПОМЕСТИТЬ РасходныеОрдераСертификатов
|ИЗ
| ДокументыПоКоторымВедетсяУчетСертификатов КАК ДокументыУчетаСертификатов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РасходныйОрдерНаТовары.ТоварыПоРаспоряжениям КАК ТоварыПоРаспоряжениям
| ПО ДокументыУчетаСертификатов.Ссылка = ТоварыПоРаспоряжениям.Распоряжение
|
|ИНДЕКСИРОВАТЬ ПО
| Ордер
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДвиженияСерийТоваров.Ссылка КАК Ссылка,
| ДвиженияСерийТоваров.Номенклатура КАК Номенклатура,
| ДвиженияСерийТоваров.Характеристика КАК Характеристика,
| ДвиженияСерийТоваров.Серия КАК Серия
|ПОМЕСТИТЬ ДвиженияСерийТоваров
|ИЗ
| (ВЫБРАТЬ
| ДвиженияСерийТоваров.Документ КАК Ссылка,
| ДвиженияСерийТоваров.Номенклатура КАК Номенклатура,
| ДвиженияСерийТоваров.Характеристика КАК Характеристика,
| ДвиженияСерийТоваров.Серия КАК Серия
| ИЗ
| ДокументыПоКоторымВедетсяУчетСертификатов КАК ДокументыУчетаСертификатов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияСерийТоваров КАК ДвиженияСерийТоваров
| ПО ДокументыУчетаСертификатов.Ссылка = ДвиженияСерийТоваров.Документ
| ГДЕ
| (ДвиженияСерийТоваров.Документ ССЫЛКА Документ.РеализацияТоваровУслуг
| ИЛИ ДвиженияСерийТоваров.Документ ССЫЛКА Документ.ПередачаТоваровХранителю
| ИЛИ ДвиженияСерийТоваров.Документ ССЫЛКА Документ.ПеремещениеТоваров)
| И (ДокументыУчетаСертификатов.Ссылка ССЫЛКА Документ.РеализацияТоваровУслуг
| ИЛИ ДокументыУчетаСертификатов.Ссылка ССЫЛКА Документ.ПередачаТоваровХранителю
| ИЛИ ДокументыУчетаСертификатов.Ссылка ССЫЛКА Документ.ПеремещениеТоваров)
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ДокументыУчетаСертификатов.Ссылка КАК Ссылка,
| ДвиженияСерийТоваров.Номенклатура КАК Номенклатура,
| ДвиженияСерийТоваров.Характеристика КАК Характеристика,
| ДвиженияСерийТоваров.Серия КАК Серия
| ИЗ
| РасходныеОрдераСертификатов КАК ДокументыУчетаСертификатов
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияСерийТоваров КАК ДвиженияСерийТоваров
| ПО ДокументыУчетаСертификатов.Ордер = ДвиженияСерийТоваров.Документ
| ГДЕ
| ДвиженияСерийТоваров.Документ ССЫЛКА Документ.РасходныйОрдерНаТовары) КАК ДвиженияСерийТоваров
|
|ИНДЕКСИРОВАТЬ ПО
| Ссылка,
| Номенклатура,
| Характеристика
|;
|
|
|ВЫБРАТЬ
| ТоварыДокумента.Ссылка КАК Ссылка,
| МАКСИМУМ(ТоварыДокумента.НомерСтроки) КАК НомерСтроки,
| ТоварыДокумента.Дата КАК Дата,
| ТоварыДокумента.ВидНоменклатуры КАК ВидНоменклатуры,
| ТоварыДокумента.Номенклатура КАК Номенклатура,
| ТоварыДокумента.Характеристика КАК Характеристика,
| ТоварыДокумента.Серия КАК Серия
|ПОМЕСТИТЬ ДокументТовары
|ИЗ
| (ВЫБРАТЬ
| СтрокиТоваров.Ссылка КАК Ссылка,
| СтрокиПоНомерам.НомерСтроки КАК НомерСтроки,
| СтрокиТоваров.Дата КАК Дата,
| ЕСТЬNULL(Товары.ВидНоменклатуры, ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.ПустаяСсылка)) КАК ВидНоменклатуры,
| СтрокиТоваров.Номенклатура КАК Номенклатура,
| СтрокиТоваров.Характеристика КАК Характеристика,
| ЕСТЬNULL(ДвиженияСерийТоваров.Серия, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия
| ИЗ
| СтрокиТоваров КАК СтрокиТоваров
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДвиженияСерийТоваров КАК ДвиженияСерийТоваров
| ПО СтрокиТоваров.Распоряжение = ДвиженияСерийТоваров.Ссылка
| И СтрокиТоваров.Номенклатура = ДвиженияСерийТоваров.Номенклатура
| И СтрокиТоваров.Характеристика = ДвиженияСерийТоваров.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ СтрокиТоваровБезСерий КАК СтрокиПоНомерам
| ПО СтрокиТоваров.Ссылка = СтрокиПоНомерам.Ссылка
| И СтрокиТоваров.Распоряжение = СтрокиПоНомерам.Распоряжение
| И СтрокиТоваров.Номенклатура = СтрокиПоНомерам.Номенклатура
| И СтрокиТоваров.Характеристика = СтрокиПоНомерам.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары
| ПО СтрокиТоваров.Номенклатура = Товары.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыПоКоторымВедетсяУчетСертификатов КАК ДокументыПоКоторымВедетсяУчетСертификатов
| ПО СтрокиТоваров.Ссылка = ДокументыПоКоторымВедетсяУчетСертификатов.Ссылка
| ГДЕ
| СтрокиТоваров.ЕстьРаспоряжения
| И НЕ СтрокиТоваров.СерияУказанаВНакладной
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| СтрокиТоваров.Ссылка КАК Ссылка,
| СтрокиПоНомерам.НомерСтроки КАК НомерСтроки,
| СтрокиТоваров.Дата КАК Дата,
| ЕСТЬNULL(Товары.ВидНоменклатуры, ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.ПустаяСсылка)) КАК ВидНоменклатуры,
| СтрокиТоваров.Номенклатура КАК Номенклатура,
| СтрокиТоваров.Характеристика КАК Характеристика,
| ЕСТЬNULL(ДвиженияСерийТоваров.Серия, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия
| ИЗ
| СтрокиТоваров КАК СтрокиТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ ДвиженияСерийТоваров КАК ДвиженияСерийТоваров
| ПО СтрокиТоваров.Ссылка = ДвиженияСерийТоваров.Ссылка
| И СтрокиТоваров.Номенклатура = ДвиженияСерийТоваров.Номенклатура
| И СтрокиТоваров.Характеристика = ДвиженияСерийТоваров.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ ДвиженияСерийТоваров КАК ДвиженияСерийТоваровПоРаспоряжениям
| ПО СтрокиТоваров.Распоряжение = ДвиженияСерийТоваровПоРаспоряжениям.Ссылка
| И СтрокиТоваров.Номенклатура = ДвиженияСерийТоваровПоРаспоряжениям.Номенклатура
| И СтрокиТоваров.Характеристика = ДвиженияСерийТоваровПоРаспоряжениям.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ СтрокиТоваровБезСерий КАК СтрокиПоНомерам
| ПО СтрокиТоваров.Ссылка = СтрокиПоНомерам.Ссылка
| И СтрокиТоваров.Распоряжение = СтрокиПоНомерам.Распоряжение
| И СтрокиТоваров.Номенклатура = СтрокиПоНомерам.Номенклатура
| И СтрокиТоваров.Характеристика = СтрокиПоНомерам.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары
| ПО СтрокиТоваров.Номенклатура = Товары.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыПоКоторымВедетсяУчетСертификатов КАК ДокументыПоКоторымВедетсяУчетСертификатов
| ПО СтрокиТоваров.Ссылка = ДокументыПоКоторымВедетсяУчетСертификатов.Ссылка
| ГДЕ
| СтрокиТоваров.ЕстьРаспоряжения
| И НЕ СтрокиТоваров.СерияУказанаВНакладной
| И ДвиженияСерийТоваровПоРаспоряжениям.Ссылка ЕСТЬ NULL
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| СтрокиТоваров.Ссылка КАК Ссылка,
| СтрокиПоНомерам.НомерСтроки КАК НомерСтроки,
| СтрокиТоваров.Дата КАК Дата,
| ЕСТЬNULL(Товары.ВидНоменклатуры, ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.ПустаяСсылка)) КАК ВидНоменклатуры,
| СтрокиТоваров.Номенклатура КАК Номенклатура,
| СтрокиТоваров.Характеристика КАК Характеристика,
| ЕСТЬNULL(ДвиженияСерийТоваров.Серия, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия
| ИЗ
| СтрокиТоваров КАК СтрокиТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ ДвиженияСерийТоваров КАК ДвиженияСерийТоваров
| ПО СтрокиТоваров.Ссылка = ДвиженияСерийТоваров.Ссылка
| И СтрокиТоваров.Номенклатура = ДвиженияСерийТоваров.Номенклатура
| И СтрокиТоваров.Характеристика = ДвиженияСерийТоваров.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ СтрокиТоваровБезСерий КАК СтрокиПоНомерам
| ПО СтрокиТоваров.Ссылка = СтрокиПоНомерам.Ссылка
| И СтрокиТоваров.Распоряжение = СтрокиПоНомерам.Распоряжение
| И СтрокиТоваров.Номенклатура = СтрокиПоНомерам.Номенклатура
| И СтрокиТоваров.Характеристика = СтрокиПоНомерам.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары
| ПО СтрокиТоваров.Номенклатура = Товары.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыПоКоторымВедетсяУчетСертификатов КАК ДокументыПоКоторымВедетсяУчетСертификатов
| ПО СтрокиТоваров.Ссылка = ДокументыПоКоторымВедетсяУчетСертификатов.Ссылка
| ГДЕ
| НЕ СтрокиТоваров.ЕстьРаспоряжения
| И НЕ СтрокиТоваров.СерияУказанаВНакладной
| И НЕ СтрокиТоваров.Ссылка ССЫЛКА Документ.КорректировкаРеализации
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| СтрокиТоваров.Ссылка КАК Ссылка,
| СтрокиПоНомерам.НомерСтроки КАК НомерСтроки,
| СтрокиТоваров.Дата КАК Дата,
| ЕСТЬNULL(Товары.ВидНоменклатуры, ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.ПустаяСсылка)) КАК ВидНоменклатуры,
| СтрокиТоваров.Номенклатура КАК Номенклатура,
| СтрокиТоваров.Характеристика КАК Характеристика,
| СтрокиТоваров.Серия КАК Серия
| ИЗ
| СтрокиТоваров КАК СтрокиТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ СтрокиТоваровБезСерий КАК СтрокиПоНомерам
| ПО СтрокиТоваров.Ссылка = СтрокиПоНомерам.Ссылка
| И СтрокиТоваров.Распоряжение = СтрокиПоНомерам.Распоряжение
| И СтрокиТоваров.Номенклатура = СтрокиПоНомерам.Номенклатура
| И СтрокиТоваров.Характеристика = СтрокиПоНомерам.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары
| ПО СтрокиТоваров.Номенклатура = Товары.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыПоКоторымВедетсяУчетСертификатов КАК ДокументыПоКоторымВедетсяУчетСертификатов
| ПО СтрокиТоваров.Ссылка = ДокументыПоКоторымВедетсяУчетСертификатов.Ссылка
| ГДЕ
| СтрокиТоваров.СерияУказанаВНакладной
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| СтрокиТоваров.Ссылка КАК Ссылка,
| СтрокиТоваров.НомерСтроки КАК НомерСтроки,
| СтрокиТоваров.Дата КАК Дата,
| ЕСТЬNULL(Товары.ВидНоменклатуры, ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.ПустаяСсылка)) КАК ВидНоменклатуры,
| СтрокиТоваров.Номенклатура КАК Номенклатура,
| СтрокиТоваров.Характеристика КАК Характеристика,
| ЕСТЬNULL(ДвиженияСерийТоваров.Серия, ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)) КАК Серия
| ИЗ
| СтрокиТоваров КАК СтрокиТоваров
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.КорректировкаРеализации.Товары КАК ДвиженияСерийТоваров
| ПО СтрокиТоваров.Ссылка = ДвиженияСерийТоваров.Ссылка
| И СтрокиТоваров.Номенклатура = ДвиженияСерийТоваров.Номенклатура
| И СтрокиТоваров.Характеристика = ДвиженияСерийТоваров.Характеристика
|
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Товары
| ПО СтрокиТоваров.Номенклатура = Товары.Ссылка
|
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДокументыПоКоторымВедетсяУчетСертификатов КАК ДокументыПоКоторымВедетсяУчетСертификатов
| ПО СтрокиТоваров.Ссылка = ДокументыПоКоторымВедетсяУчетСертификатов.Ссылка
| ГДЕ
| СтрокиТоваров.Ссылка ССЫЛКА Документ.КорректировкаРеализации
|
| ) КАК ТоварыДокумента
|
|СГРУППИРОВАТЬ ПО
| ТоварыДокумента.Ссылка,
| ТоварыДокумента.Дата,
| ТоварыДокумента.ВидНоменклатуры,
| ТоварыДокумента.Номенклатура,
| ТоварыДокумента.Характеристика,
| ТоварыДокумента.Серия
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокументТовары.ВидНоменклатуры КАК ВидНоменклатуры,
| ДокументТовары.Номенклатура КАК Номенклатура,
| ДокументТовары.Характеристика КАК Характеристика,
| ДокументТовары.Серия КАК Серия
|ПОМЕСТИТЬ Товары
|ИЗ
| ДокументТовары КАК ДокументТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ДанныеНоменклатуры
| ПО ДокументТовары.Номенклатура = ДанныеНоменклатуры.Ссылка
|ГДЕ
| ЕСТЬNULL(ДанныеНоменклатуры.ВестиУчетСертификатовНоменклатуры, ЛОЖЬ)
|
|ИНДЕКСИРОВАТЬ ПО
| ВидНоменклатуры,
| Номенклатура,
| Характеристика,
| Серия
|;
|
|
|ВЫБРАТЬ
| Товары.ВидНоменклатуры КАК ВидНоменклатуры,
| Товары.Номенклатура КАК Номенклатура,
| Товары.Характеристика КАК Характеристика,
| Товары.Серия КАК Серия,
| ОбластиДействияСертификатов.СертификатНоменклатуры КАК СертификатНоменклатуры,
| ОбластиДействияСертификатов.СертификатНоменклатуры.ТипСертификата КАК ТипСертификата,
| МИНИМУМ(
| ВЫБОР
| КОГДА ОбластиДействияСертификатов.Серия <> ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| ТОГДА 1
| КОГДА ОбластиДействияСертификатов.Характеристика <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| ТОГДА 2
| КОГДА ОбластиДействияСертификатов.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
| ТОГДА 3
| КОГДА ОбластиДействияСертификатов.СертификатНоменклатуры ЕСТЬ NULL
| ТОГДА 0
| ИНАЧЕ 4
| КОНЕЦ) КАК ПриоритетСертификата,
| ВЫБОР
| КОГДА ОбластиДействияСертификатов.СертификатНоменклатуры.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСертификатовНоменклатуры.Действующий)
| ТОГДА
| ВЫБОР
| КОГДА ОбластиДействияСертификатов.СертификатНоменклатуры.Бессрочный
| ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
| ИНАЧЕ ОбластиДействияСертификатов.СертификатНоменклатуры.ДатаОкончанияСрокаДействия
| КОНЕЦ
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| КОНЕЦ КАК ОкончаниеСрокаДействия,
| ВЫБОР
| КОГДА ОбластиДействияСертификатов.СертификатНоменклатуры.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСертификатовНоменклатуры.Действующий)
| ТОГДА ОбластиДействияСертификатов.СертификатНоменклатуры.ДатаНачалаСрокаДействия
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| КОНЕЦ КАК НачалоСрокаДействия,
| ОбластиДействияСертификатов.СертификатНоменклатуры.СтатусРосаккредитации КАК СтатусРосаккредитации,
| ОбластиДействияСертификатов.СертификатНоменклатуры.ДатаОбновленияСтатусаРосаккредитации КАК ДатаОбновленияСтатусаРосаккредитации
|ПОМЕСТИТЬ ТоварыССертификатами
|ИЗ
| Товары КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОбластиДействияСертификатовНоменклатуры КАК ОбластиДействияСертификатов
| ПО (Товары.ВидНоменклатуры = ОбластиДействияСертификатов.ВидНоменклатуры
| И Товары.Номенклатура = ОбластиДействияСертификатов.Номенклатура
| И Товары.Характеристика = ОбластиДействияСертификатов.Характеристика
| И Товары.Серия = ОбластиДействияСертификатов.Серия)
| ИЛИ (Товары.ВидНоменклатуры = ОбластиДействияСертификатов.ВидНоменклатуры
| И Товары.Номенклатура = ОбластиДействияСертификатов.Номенклатура
| И Товары.Характеристика = ОбластиДействияСертификатов.Характеристика
| И ОбластиДействияСертификатов.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка))
| ИЛИ (Товары.ВидНоменклатуры = ОбластиДействияСертификатов.ВидНоменклатуры
| И Товары.Номенклатура = ОбластиДействияСертификатов.Номенклатура
| И ОбластиДействияСертификатов.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| И ОбластиДействияСертификатов.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка))
| ИЛИ (Товары.ВидНоменклатуры = ОбластиДействияСертификатов.ВидНоменклатуры
| И ОбластиДействияСертификатов.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
| И ОбластиДействияСертификатов.Серия = ЗНАЧЕНИЕ(Справочник.СерииНоменклатуры.ПустаяСсылка)
| И ОбластиДействияСертификатов.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка))
|ГДЕ
| НЕ ОбластиДействияСертификатов.СертификатНоменклатуры.ПометкаУдаления
|
|СГРУППИРОВАТЬ ПО
| Товары.ВидНоменклатуры,
| Товары.Номенклатура,
| Товары.Характеристика,
| Товары.Серия,
| ОбластиДействияСертификатов.СертификатНоменклатуры,
| ОбластиДействияСертификатов.СертификатНоменклатуры.ТипСертификата,
| ВЫБОР
| КОГДА ОбластиДействияСертификатов.СертификатНоменклатуры.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСертификатовНоменклатуры.Действующий)
| ТОГДА
| ВЫБОР
| КОГДА ОбластиДействияСертификатов.СертификатНоменклатуры.Бессрочный
| ТОГДА ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59)
| ИНАЧЕ ОбластиДействияСертификатов.СертификатНоменклатуры.ДатаОкончанияСрокаДействия
| КОНЕЦ
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| КОНЕЦ,
| ВЫБОР
| КОГДА ОбластиДействияСертификатов.СертификатНоменклатуры.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСертификатовНоменклатуры.Действующий)
| ТОГДА ОбластиДействияСертификатов.СертификатНоменклатуры.ДатаНачалаСрокаДействия
| ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
| КОНЕЦ,
| ОбластиДействияСертификатов.СертификатНоменклатуры.СтатусРосаккредитации
|
|ИНДЕКСИРОВАТЬ ПО
| Номенклатура,
| Характеристика,
| Серия
|;
|";
Возврат ТекстЗапроса;
КонецФункции
Функция ДанныеПоТоваруСНеДействующимиСертификатамиДляПечати() Экспорт
ДанныеТовара = Новый Структура;
ДанныеТовара.Вставить("Номенклатура", Справочники.Номенклатура.ПустаяСсылка());
ДанныеТовара.Вставить("НаименованиеНоменклатуры", "");
ДанныеТовара.Вставить("НаименованиеХарактеристики", "");
ДанныеТовара.Вставить("Серия", Справочники.СерииНоменклатуры.ПустаяСсылка());
ДанныеТовара.Вставить("ТипСертификата", "");
Возврат ДанныеТовара;
КонецФункции
Функция КлючТовараПоИзмерениямДействияСертификатов(Номенклатура, Характеристика, Серия) Экспорт
КлючТовара = Строка(Номенклатура) + Строка(Характеристика) + Строка(Серия);
Возврат КлючТовара;
КонецФункции
Процедура СообщитьОРезультатахПроверкиХозяйственнойОперацииДокумента(Выборка)
Пока Выборка.Следующий() Цикл
Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В документе %1 хозяйственная операция %2. Печать сертификатов номенклатуры не требуется.'"),
Выборка.ПредставлениеСсылки,
Выборка.ПредставлениеХозяйственнойОперации);
ОбщегоНазначения.СообщитьПользователю(
Текст,
Выборка.Ссылка);
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#КонецЕсли