Функции, запросы
X

Привет дорогой друг

Наш сайт существует и развиваетется за счет рекламы. Пожалуйста, отключите блокировку рекламы AdBlock или подобное, для нашего сайта. Спасибо!
Показано с 1 по 9 из 9
  1. #1
    Гость форума

    Регистрация
    09.02.2017
    Сообщений
    5
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях

    Post Функции, запросы

    Необходимо вывести на печать табличную часть, исключив Эталон. Создал функцию, которая выполняет запрос, поиска эталона, затем вызвал функцию при выводе табличной части на печать, чтобы если в табличной части есть эталон, то он не отображался в табличном документе.

    Помогите! Не могу разобраться почему в табличном документе На печать не исключается Эталон, всегда выдает таблицу вместе с Эталоном.

    PHP код:
    Функция ПроверкаНаЭталон(НомЭкспорт
        Запрос 
    Новый Запрос;
        
    Запрос.УстановитьПараметр("ТекущийЭлемент"ЭтотОбъект.Ссылка);                   
                           
    Запрос.Текст "ВЫБРАТЬ
                       |    АналогиНоменклатура.Эталон,
                       |    СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура
                       |ИЗ
                       |    Справочник.АналогиНоменклатура КАК АналогиНоменклатура,
                       |    Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
                       |ГДЕ
                       | СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = АналогиНоменклатура.Эталон"
    ;
            
    Выборка Запрос.Выполнить().Выбрать();
     
    Пока Выборка.Следующий() = Истина Цикл
      Возврат Истина
    ;
    Прервать;
    КонецЦикла;
      
    Возврат ложь

    КонецФункции


    Функция ПечатьБезАналогов
    ()
        
    ТабДокумент Новый ТабличныйДокумент;
        
    ТабДокумент.ИмяПараметровПечати "ПАРАМЕТРЫ_ПЕЧАТИ_БезАналогов";

        
    Макет ПолучитьМакет("БезАналогов");
        
    ОбластьШапка Макет.ПолучитьОбласть("Шапка");
        
    ОбластьШапкаТаблицы Макет.ПолучитьОбласть("ШапкаТаб");
        
    ОбластьСтрокаТаблицы Макет.ПолучитьОбласть("СтрокаТаб");
        
        
    ОбластьШапка.Параметры.НаименованиеСпецификации Наименование;
        
    ОбластьШапка.Параметры.КодСпецификации Код;
        
    ТабДокумент.Вывести(ОбластьШапка);
        
        
    ТабДокумент.Вывести(ОбластьШапкаТаблицы);
     
        
    Для Каждого СтрокаИсходныеКомпл Из ИсходныеКомплектующие Цикл
            Если ПроверкаНаЭталон
    (СтрокаИсходныеКомпл.НоменклатураИ НЕ СтрокаИсходныеКомпл.ПометкаНаУдаление Тогда
                ОбластьСтрокаТаблицы
    .Параметры.Код СтрокаИсходныеКомпл.Номенклатура.Артикул;
                
    ОбластьСтрокаТаблицы.Параметры.Наименование СтрокаИсходныеКомпл.Номенклатура.Наименование;
                
    ОбластьСтрокаТаблицы.Параметры.КолВИзд СтрокаИсходныеКомпл.Количество;
                
    ОбластьСтрокаТаблицы.Параметры.ПоНорме СтрокаИсходныеКомпл.Норма;
                
    ОбластьСтрокаТаблицы.Параметры.ЕдИзм СтрокаИсходныеКомпл.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Наименование;
                
    ТабДокумент.Вывести(ОбластьСтрокаТаблицы);
                
    //ОбщегоНазначения.Сообщение("1", СтатусСообщения.Важное);
            
    Иначе
                
    //ОбщегоНазначения.Сообщение("0", СтатусСообщения.Важное);
                
    ОбластьСтрокаТаблицы.Параметры.Код NULL;
                
    ОбластьСтрокаТаблицы.Параметры.Наименование NULL;;
                
    ОбластьСтрокаТаблицы.Параметры.КолВИзд NULL;
                
    ОбластьСтрокаТаблицы.Параметры.ПоНорме NULL;
                
    ОбластьСтрокаТаблицы.Параметры.ЕдИзм NULL;
                
    ТабДокумент.Вывести(ОбластьСтрокаТаблицы);
            
    КонецЕсли;
        
    КонецЦикла;
        
    Возврат ТабДокумент;
    КонецФункции 

  2. #2
    Гордость форума PRO

    Регистрация
    29.01.2010
    Сообщений
    1212
    Сказал(а) спасибо
    30
    Поблагодарили 261 раз(а) в 245 сообщениях

    По умолчанию Re: Функции, запросы

    Мля... Выполнение запроса в цикле - охринеть.. За такое при сдаче в 1С ставят сразу двойку и выгоняют с экзамена

    ПыСы. у тебя вызов ПроверкаНаЭталон(Ном)
    значит Текущая номенклатура у тебя находится в переменной Ном

    Так?
    А в запрос ты устанавливаешь ЭтотОбъект.Ссылка - Запрос.УстановитьПараметр( "ТекущийЭлемент", ЭтотОбъект.Ссылка);
    Как это связано с НомИ?

    Или

  3. #3
    Гость форума

    Регистрация
    09.02.2017
    Сообщений
    5
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Re: Функции, запросы

    Цитата Сообщение от avm3110 Посмотреть сообщение
    А в запрос ты устанавливаешь ЭтотОбъект.Ссылка - Запрос.УстановитьПараметр( "ТекущийЭлемент", ЭтотОбъект.Ссылка);
    Как это связано с НомИ?
    Или
    Если я правильно понял нужно сделать так:
    PHP код:
     Запрос.УстановитьПараметр("ТекущийЭлемент"Ном); 
    Результат не изменился, так же выдает на печать все элементы без исключения

  4. #4
    Гордость форума PRO

    Регистрация
    29.01.2010
    Сообщений
    1212
    Сказал(а) спасибо
    30
    Поблагодарили 261 раз(а) в 245 сообщениях

    По умолчанию Re: Функции, запросы

    Цитата Сообщение от fox186 Посмотреть сообщение
    Результат не изменился, так же выдает на печать все элементы без исключения
    Ну е-е-е.. неужели нужно "все разжевывать, а не слегка подсказывать"? :blush:

    Ну хорошо... Параметр установлен правильно, а теперь следующий вопрос - а где в запросе этот параметр используется?
    Где в запросе есть &ТекущийЭлемент ?

  5. #5
    Гость форума

    Регистрация
    09.02.2017
    Сообщений
    5
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Re: Функции, запросы

    Цитата Сообщение от avm3110 Посмотреть сообщение
    Ну е-е-е.. неужели нужно "все разжевывать, а не слегка подсказывать"? :blush:

    Ну хорошо... Параметр установлен правильно, а теперь следующий вопрос - а где в запросе этот параметр используется?
    Где в запросе есть &ТекущийЭлемент ?
    Я уже в конец запутался) насколько я понял вы имели ввиду это:

    PHP код:
        Запрос Новый Запрос;
            
    Запрос.УстановитьПараметр("ТекущийЭлемент"ЭтотОбъект.Ссылка);  
            
    Запрос.Текст "ВЫБРАТЬ
                       |    АналогиНоменклатура.Эталон,
                       |    СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура
                       |ИЗ
                       |    Справочник.АналогиНоменклатура КАК АналогиНоменклатура,
                       |    Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
                       |ГДЕ
                       | СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = АналогиНоменклатура.Эталон
                       | И    СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура = &ТекущийЭлемент
                       | "

    Но теперь выдает пустую таблицу.

  6. #6
    Гордость форума PRO

    Регистрация
    29.01.2010
    Сообщений
    1212
    Сказал(а) спасибо
    30
    Поблагодарили 261 раз(а) в 245 сообщениях

    По умолчанию Re: Функции, запросы

    Цитата Сообщение от fox186 Посмотреть сообщение
    Но теперь выдает пустую таблицу.
    Это потому что в запросе "взаимоисключающие требования" (это с одной стороны). С другой - сам запрос абсолютно неправильный :-)

    Поэтому и не работает

  7. #7
    Гость форума

    Регистрация
    09.02.2017
    Сообщений
    5
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Re: Функции, запросы

    :) очень "помогли"

  8. #8
    Гость форума

    Регистрация
    09.02.2017
    Сообщений
    5
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях

    Post Re: Функции, запросы

    Разобрался, все было очень просто. Может кому-то пригодится)

    PHP код:
    Функция ПроверкаНаЭталон(НомЭкспорт
        
            Запрос 
    Новый Запрос;
               
    Запрос.Текст ="ВЫБРАТЬ
        |    АналогиНоменклатура.Эталон
        |ИЗ
        |    Справочник.АналогиНоменклатура КАК АналогиНоменклатура
        |ГДЕ
        |    АналогиНоменклатура.Эталон = &Ном"
    ;
            
    Запрос.УстановитьПараметр("Ном"Ном);
                
        
    Выборка Запрос.Выполнить().Выбрать();
     
    Пока Выборка.Следующий() Цикл

      Возврат Истина
    ;
    Прервать;
    КонецЦикла;
      
    Возврат Ложь
      
        КонецФункции


    Функция ПечатьБезАналогов
    ()
        
    ТабДокумент Новый ТабличныйДокумент;
        
    ТабДокумент.ИмяПараметровПечати "ПАРАМЕТРЫ_ПЕЧАТИ_БезАналогов";

        
    Макет ПолучитьМакет("БезАналогов");
        
    ОбластьШапка Макет.ПолучитьОбласть("Шапка");
        
    ОбластьШапкаТаблицы Макет.ПолучитьОбласть("ШапкаТаб");
        
    ОбластьСтрокаТаблицы Макет.ПолучитьОбласть("СтрокаТаб");
        
        
    ОбластьШапка.Параметры.НаименованиеСпецификации Наименование;
        
    ОбластьШапка.Параметры.КодСпецификации Код;
        
    ТабДокумент.Вывести(ОбластьШапка);
        
        
    ТабДокумент.Вывести(ОбластьШапкаТаблицы);
        
        
    Для Каждого СтрокаИсходныеКомпл Из ИсходныеКомплектующие Цикл
     
            Если ПроверкаНаЭталон
    (СтрокаИсходныеКомпл.НоменклатураИ НЕ СтрокаИсходныеКомпл.ПометкаНаУдаление Тогда

            Иначе
                
                ОбластьСтрокаТаблицы
    .Параметры.Код СтрокаИсходныеКомпл.Номенклатура.Артикул;
                
    ОбластьСтрокаТаблицы.Параметры.Наименование СтрокаИсходныеКомпл.Номенклатура.Наименование;
                
    ОбластьСтрокаТаблицы.Параметры.КолВИзд СтрокаИсходныеКомпл.Количество;
                
    ОбластьСтрокаТаблицы.Параметры.ПоНорме СтрокаИсходныеКомпл.Норма;
                
    ОбластьСтрокаТаблицы.Параметры.ЕдИзм СтрокаИсходныеКомпл.ЕдиницаИзмерения.ЕдиницаПоКлассификатору.Наименование;
                
    ТабДокумент.Вывести(ОбластьСтрокаТаблицы);
            
    КонецЕсли;
        
    КонецЦикла;
        
    Возврат ТабДокумент;
    КонецФункции 

  9. #9
    Гордость форума PRO

    Регистрация
    29.01.2010
    Сообщений
    1212
    Сказал(а) спасибо
    30
    Поблагодарили 261 раз(а) в 245 сообщениях

    По умолчанию Re: Функции, запросы

    Ну видишь. Все настолько просто :blush:, что даже не понятно как "помогать" :confused:

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •