helpf.pro
Регистрация

v8: Исключить строки при печати документа 1с 8.1

NeProf
25.01.2017 09:20Прочитано: 1393

Добрый день! Имеется справочник "АналогиНоменклатура", который содержит Эталон и Аналоги(элементы которые, аналогичны Эталону, содержатся в табличной части). Пытаюсь реализовать возможность, чтобы при выводе на печать табличнй части "ИсходныеКомплектующие" справочника "СпецификацииНоменклатуры", исключались аналоги, если они есть.

Написал часть кода, проверки только на Эталон, выдает на печать пустой документ.

Код 1C v 8.х
 Функция ПроверкаНаЭталон(Эталон)
   
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТекущийЭлемент", ЭтотОбъект.Ссылка);
    Запрос.Текст = "ВЫБРАТЬ
                   |    АналогиНоменклатура.Эталон,
                   |    СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура
                   |ИЗ
                   |    Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие,
                   |    Справочник.АналогиНоменклатура КАК АналогиНоменклатура
                   |ГДЕ
                   |    СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = АналогиНоменклатура.Эталон
                   | ИЛИ СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = АналогиНоменклатура.Аналоги.Аналог";
     
       Выборка = Запрос.Выполнить().Выбрать();
     Пока Выборка.Следующий() = Истина Цикл
        Эталон =  Выборка.Эталон;
        Прервать;
    КонецЦикла;
    Возврат Эталон
   
    КонецФункции
 
 
Функция ПечатьБезАналогов()
   
    ТабДокумент = Новый ТабличныйДокумент;
    ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_БезАналогов";
 
    Макет = ПолучитьМакет("БезАналогов");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаб");
    ОбластьСтрокаТаблицы = Макет.ПолучитьОбласть("СтрокаТаб");
   
    ОбластьШапка.Параметры.НаименованиеСпецификации = Наименование;
    ОбластьШапка.Параметры.КодСпецификации = Код;
    ТабДокумент.Вывести(ОбластьШапка);
   
    ТабДокумент.Вывести(ОбластьШапкаТаблицы);
       
    Для Каждого СтрокаИсходныеКомпл Из ИсходныеКомплектующие Цикл
       
        Если  ПроверкаНаЭталон(СтрокаИсходныеКомпл.Номенклатура)= Истина Тогда
           
            ОбластьСтрокаТаблицы.Параметры.Номенклатура = СтрокаИсходныеКомпл.Номенклатура;
            ОбластьСтрокаТаблицы.Параметры.Код = СтрокаИсходныеКомпл.Номенклатура.Артикул;
            ОбластьСтрокаТаблицы.Параметры.Наименование = СтрокаИсходныеКомпл.Номенклатура.Наименование;
            ОбластьСтрокаТаблицы.Параметры.КолВИзд = СтрокаИсходныеКомпл.Количество;
            ОбластьСтрокаТаблицы.Параметры.ПоНорме = СтрокаИсходныеКомпл.Норма;
            ОбластьСтрокаТаблицы.Параметры.ЕдИзм = СтрокаИсходныеКомпл.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Наименование;
            ТабДокумент.Вывести(ОбластьСтрокаТаблицы);     
        Иначе          
        КонецЕсли;
    КонецЦикла;
    Возврат ТабДокумент;
КонецФункции
Yandex
Возможно, вас также заинтересует
Реклама на портале
all4cf
25.01.2017 15:57Ответ № 1

у вас возвращается из проверки ссыка, а в условии вы проверяете как Булево

вот так надо

Код 1C v 8.3
 Пока Выборка.Следующий() = Истина Цикл
//Эталон = Выборка.Эталон;
Истина;
Прервать;
КонецЦикла;
Возврат Ложь:
NeProf
26.01.2017 07:03Ответ № 2

По прежнему выдает пустое значение, 

all4cf
27.01.2017 14:32Ответ № 3

ох, забыл написать возврат ) ,  вот так надо:

Код 1C v 8.2 УП
  Пока Выборка.Следующий() = Истина Цикл
//Эталон = Выборка.Эталон;
Возврат Истина;
Прервать;
КонецЦикла;
Возврат Ложь:  
Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или .
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.