fox186
09.02.2017, 11:12
Необходимо вывести на печать табличную часть, исключив Эталон. Создал функцию, которая выполняет запрос, поиска эталона, затем вызвал функцию при выводе табличной части на печать, чтобы если в табличной части есть эталон, то он не отображался в табличном документе.
Помогите! Не могу разобраться почему в табличном документе На печать не исключается Эталон, всегда выдает таблицу вместе с Эталоном.
Функция ПроверкаНаЭталон(Ном) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийЭлемент", ЭтотОбъект.Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| АналогиНоменклатура.Этало� �,
| СпецификацииНоменклатурыИ сходныеКомплектующие.Номе� �клатура
|ИЗ
| Справочник.АналогиНоменкл� �тура КАК АналогиНоменклатура,
| Справочник.СпецификацииНо� �енклатуры.ИсходныеКомплек тующие КАК СпецификацииНоменклатурыИ сходныеКомплектующие
|ГДЕ
| СпецификацииНоменклатурыИ сходныеКомплектующие.Номе� �клатура = АналогиНоменклатура.Этало� �";
Выборка = Запрос.Выполнить().Выбрать() ;
Пока Выборка.Следующий() = Истина Цикл
Возврат Истина;
Прервать;
КонецЦикла;
Возврат ложь
КонецФункции
Функция ПечатьБезАналогов()
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметров� �ечати = "ПАРАМЕТРЫ_ПЕЧАТИ_БезАналог ов";
Макет = ПолучитьМакет("БезАналогов");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаб");
ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаб");
ОбластьШапка.Параметры.Наи менованиеСпецификации = Наименование;
ОбластьШапка.Параметры.Код Спецификации = Код;
ТабДокумент.Вывести(Област ьШапка);
ТабДокумент.Вывести(Област ьШапкаТаблицы);
Для Каждого СтрокаИсходныеКомпл Из ИсходныеКомплектующие Цикл
Если ПроверкаНаЭталон(СтрокаИс� �одныеКомпл.Номенклатура) И НЕ СтрокаИсходныеКомпл.Помет� �аНаУдаление Тогда
ОбластьСтрокаТаблицы.Пара� �етры.Код = СтрокаИсходныеКомпл.Номен� �латура.Артикул;
ОбластьСтрокаТаблицы.Пара� �етры.Наименование = СтрокаИсходныеКомпл.Номен� �латура.Наименование;
ОбластьСтрокаТаблицы.Пара� �етры.КолВИзд = СтрокаИсходныеКомпл.Колич� �ство;
ОбластьСтрокаТаблицы.Пара� �етры.ПоНорме = СтрокаИсходныеКомпл.Норма;
ОбластьСтрокаТаблицы.Пара� �етры.ЕдИзм = СтрокаИсходныеКомпл.Едини� �аИзмерения.ЕдиницаПоКласс ификатору.Наименование;
ТабДокумент.Вывести(Област ьСтрокаТаблицы);
//ОбщегоНазначения.Сообщени� �("1", СтатусСообщения.Важное);
Иначе
//ОбщегоНазначения.Сообщени� �("0", СтатусСообщения.Важное);
ОбластьСтрокаТаблицы.Пара� �етры.Код = NULL;
ОбластьСтрокаТаблицы.Пара� �етры.Наименование = NULL;;
ОбластьСтрокаТаблицы.Пара� �етры.КолВИзд = NULL;
ОбластьСтрокаТаблицы.Пара� �етры.ПоНорме = NULL;
ОбластьСтрокаТаблицы.Пара� �етры.ЕдИзм = NULL;
ТабДокумент.Вывести(Област ьСтрокаТаблицы);
КонецЕсли;
КонецЦикла;
Возврат ТабДокумент;
КонецФункции
Помогите! Не могу разобраться почему в табличном документе На печать не исключается Эталон, всегда выдает таблицу вместе с Эталоном.
Функция ПроверкаНаЭталон(Ном) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийЭлемент", ЭтотОбъект.Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| АналогиНоменклатура.Этало� �,
| СпецификацииНоменклатурыИ сходныеКомплектующие.Номе� �клатура
|ИЗ
| Справочник.АналогиНоменкл� �тура КАК АналогиНоменклатура,
| Справочник.СпецификацииНо� �енклатуры.ИсходныеКомплек тующие КАК СпецификацииНоменклатурыИ сходныеКомплектующие
|ГДЕ
| СпецификацииНоменклатурыИ сходныеКомплектующие.Номе� �клатура = АналогиНоменклатура.Этало� �";
Выборка = Запрос.Выполнить().Выбрать() ;
Пока Выборка.Следующий() = Истина Цикл
Возврат Истина;
Прервать;
КонецЦикла;
Возврат ложь
КонецФункции
Функция ПечатьБезАналогов()
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметров� �ечати = "ПАРАМЕТРЫ_ПЕЧАТИ_БезАналог ов";
Макет = ПолучитьМакет("БезАналогов");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаб");
ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаб");
ОбластьШапка.Параметры.Наи менованиеСпецификации = Наименование;
ОбластьШапка.Параметры.Код Спецификации = Код;
ТабДокумент.Вывести(Област ьШапка);
ТабДокумент.Вывести(Област ьШапкаТаблицы);
Для Каждого СтрокаИсходныеКомпл Из ИсходныеКомплектующие Цикл
Если ПроверкаНаЭталон(СтрокаИс� �одныеКомпл.Номенклатура) И НЕ СтрокаИсходныеКомпл.Помет� �аНаУдаление Тогда
ОбластьСтрокаТаблицы.Пара� �етры.Код = СтрокаИсходныеКомпл.Номен� �латура.Артикул;
ОбластьСтрокаТаблицы.Пара� �етры.Наименование = СтрокаИсходныеКомпл.Номен� �латура.Наименование;
ОбластьСтрокаТаблицы.Пара� �етры.КолВИзд = СтрокаИсходныеКомпл.Колич� �ство;
ОбластьСтрокаТаблицы.Пара� �етры.ПоНорме = СтрокаИсходныеКомпл.Норма;
ОбластьСтрокаТаблицы.Пара� �етры.ЕдИзм = СтрокаИсходныеКомпл.Едини� �аИзмерения.ЕдиницаПоКласс ификатору.Наименование;
ТабДокумент.Вывести(Област ьСтрокаТаблицы);
//ОбщегоНазначения.Сообщени� �("1", СтатусСообщения.Важное);
Иначе
//ОбщегоНазначения.Сообщени� �("0", СтатусСообщения.Важное);
ОбластьСтрокаТаблицы.Пара� �етры.Код = NULL;
ОбластьСтрокаТаблицы.Пара� �етры.Наименование = NULL;;
ОбластьСтрокаТаблицы.Пара� �етры.КолВИзд = NULL;
ОбластьСтрокаТаблицы.Пара� �етры.ПоНорме = NULL;
ОбластьСтрокаТаблицы.Пара� �етры.ЕдИзм = NULL;
ТабДокумент.Вывести(Област ьСтрокаТаблицы);
КонецЕсли;
КонецЦикла;
Возврат ТабДокумент;
КонецФункции