7.7 вывести все материалы

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем MisterMVP, 19 мар 2013.

  1. TopicStarter Overlay
    MisterMVP
    Offline

    MisterMVP

    Регистрация:
    27 май 2011
    Сообщения:
    34
    Симпатии:
    0
    Баллы:
    1
    Есть код выводящий информацию по выбраному в поле "ВыбМатериалы" материалу. Нужно сделать так чтобы при пустом поле выводилась информация по всем материалам справочника, то есть цикл прописать. Помогите пожалуйста с кодом.

    Код:
    Процедура Сформировать()
    ТаблицаПоставщик = СоздатьОбъект("Таблица");
    ТаблицаПоставщик.ИсходнаяТаблица("Поставшики");
    Нпп=1;
    // НаимМат=ВыбМатериалы;
    НаимМат=ВыбМатериалы;
    КодМат=ВыбМатериалы.Код;
    ЕдИзм=ВыбМатериалы.ЕдиницаИзмерения;
    ЦенаУчП=ВыбМатериалы.Цена;
    //Дат1=ТекущаяДата();
    //Дат2=ТекущаяДата();
    ТаблицаПоставщик.ВывестиСекцию("Шапка");
    ТаблицаПоставщик.ВывестиСекцию("Ордера");
    ВыбДокументы=СоздатьОбъект("Документ."+"ПоступлениеМатериалов");  //Проверяем по приходным ордерам
    ВыбДокументы.ОбратныйПорядок(1);
    ВыбДокументы.ВыбратьДокументы();
    Есть=0;
    Пока ВыбДокументы.ПолучитьДокумент()=1 Цикл
    НаимПост=ВыбДокументы.Контрагент;
    КодПост=ВыбДокументы.Контрагент.Код;
    ДатаД=ВыбДокументы.ДатаДок;
    Номер=ВыбДокументы.НомерДок;
    ВыбДокументы.ВыбратьСтроки();
    Пока ВыбДокументы.ПолучитьСтроку()=1 Цикл
    Если ВыбДокументы.Материал=ВыбМатериалы Тогда
    
    КолВо=ВыбДокументы.Количество;
    Цен1=ВыбДокументы.Цена;
    Цен2=ВыбДокументы.НДС/ВыбДокументы.Количество+Цен1;
    ТаблицаПоставщик.ВывестиСекцию("Строка");
    Нпп=Нпп+1;
    Есть=1;
    КонецЕсли;
    КонецЦикла;
    
    КонецЦикла;
    Если Есть=0 Тогда
    ТаблицаПоставщик.ВывестиСекцию("НетОрдеров");
    КонецЕсли;
    ВыбДокументы=СоздатьОбъект("Документ."+"АвансовыйОтчет");  //Проверяем по Авансовым отчетам
    ВыбДокументы.ОбратныйПорядок(1);
    ВыбДокументы.ВыбратьДокументы();
    Нпп=1;
    Есть=0;
    ТаблицаПоставщик.ВывестиСекцию("Авансовые");
    Пока ВыбДокументы.ПолучитьДокумент()=1 Цикл
    НаимСотр=ВыбДокументы.Сотрудник;
    КодСотр=ВыбДокументы.Сотрудник.Код;
    ДатаДа=ВыбДокументы.ДатаДок;
    НомерА=ВыбДокументы.НомерДок;
    ВыбДокументы.ВыбратьСтроки();
    Пока ВыбДокументы.ПолучитьСтроку()=1 Цикл
    Если ТипЗначения(ВыбДокументы.Субконто1)<10 Тогда
    Сообщить("Не агрегат Документ № "+НомерА+" от "+ДатаДа);
    Продолжить
    КонецЕсли;
    Если (ВыбДокументы.Субконто1.Вид() ="Материалы") и (ВыбДокументы.Субконто1=ВыбМатериалы) Тогда		   // и (ВыбДокументы.Субконто1.Материал=ВыбМатериалы)
    
    КолВо=ВыбДокументы.Количество;
    Цен1=ВыбДокументы.Сумма/Колво;
    Цен2=ВыбДокументы.СуммаПоОтчету/ВыбДокументы.Количество;
    ТаблицаПоставщик.ВывестиСекцию("Строка");
    Нпп=Нпп+1;
    Есть=1;
    КонецЕсли;
    КонецЦикла;
    
    КонецЦикла;
    Если Есть=0 Тогда
    ТаблицаПоставщик.ВывестиСекцию("НетАванс");
    КонецЕсли;
    ТаблицаПоставщик.Показать()
    КонецПроцедуры
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    ВыбДокументы=СоздатьОбъект("Документ."+"ПоступлениеМатериалов");
    Спр=СоздатьОбъект("Справочник.Материалы")
    Спр.ВыбратьЭлементы();
    Пока Спр. ПолучитьЭлемент()=1 Цикл
    Если Спр.ЭтоГруппа()=1 Тогда
    Продолжить;
    КонецЕсли;
    Нашли=0;
    ВыбДокументы.ВыбратьДокументы();
    Пока ВыбДокументы.ПолучитьДокумент()=1 Цикл
    ВыбДокументы.ВыбратьСтроки();
    Пока ВыбДокументы.ПолучитьСтроку()=1 Цикл
    Если ВыбДокументы.Материал=Спр.ТекущийЭлемент() Тогда
    Нашли=1;
    //тут что то делаем. выводим в макет или заполняем ТЗ
    Прервать;
    КонецЕсли;
    КонецЦикла;
    Если Нашли=1 Тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;
    
    Будет быстрее если весь справочник выгрузить в ТЗ и работать уже с ней

Поделиться этой страницей