8.х ОБМЕН помогите начинающему

Тема в разделе "Обмен данными в "1С:Предприятие 8"", создана пользователем bannov, 5 янв 2009.

  1. TopicStarter Overlay
    bannov
    Offline

    bannov Опытный в 1С

    Регистрация:
    17 дек 2008
    Сообщения:
    185
    Симпатии:
    0
    Баллы:
    26
    написал отчёт. всё работает. Есть одно "но". на форме есть два поля для выбора номеклатуры и склада, ну т.е. чтобы только по ним выбор шёл. Если их задаёшь то выводит конкретно по ним данные в отчёт, если пустые поля на форме оставляешь(чтобы все данные вывел), то ничего не вылазеет. Как сделать чтобы при пустых значениях выходили все данные. Если кому не лень напишите пожалуйста конкретно что в коде писать, а то я не пойму если примерно ход действий говорить.
    Код:
    Процедура КнопкаСформироватьНажатие(Кнопка)
    
    Процедура КнопкаСформироватьНажатие(Кнопка)
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |	ЦенНом.Номенклатура.Код как Код,
    |	ЦенНом.Номенклатура как номенклатура,
    | ТовОргОст.Номенклатура.СерияМ как серия,
    |  ЦенНом.Номенклатура.КатегорияМ как подкатегория,
    |	ЦенНом.Цена,
    |	ТовОргОст.Склад,
    | ЦенНом.Период как период,
    |	ТовОргОст.КоличествоОстаток как Остаток,
    |	ЦенНом.ПроцентСкидкиНаценки,
    |	ЦенНом.Номенклатура.КрепостьМ как Крепость,
    |	ЦенНом.Номенклатура.ПроизводительМ как Производитель
    |ИЗ
    |	РегистрСведений.ЦеныНоменклатуры КАК ЦенНом
    | Соединение РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТовОргОст
    |По ТовОргОст.Номенклатура = ЦенНом.Номенклатура
    |Где  	
    |склад.Ссылка = &складпар и ЦенНом.номенклатура = &номен 
    |Упорядочить ПО подкатегория, Производитель, ТовОргОст.СерияНоменклатуры, номенклатура"; 
    запрос.УстановитьПараметр("Складпар",Склад);
    запрос.УстановитьПараметр("номен",Номенклатура);
    результат = Запрос.Выполнить().Выгрузить();
    элементыФормы.Результат.СоздатьКолонки();
    
    
    ФормаОтчета =  Новый ТабличныйДокумент;
    макет = ПолучитьМакет("макет");
    область = макет.ПолучитьОбласть("заголовок");
    область.Параметры.РабочаяДат = Лев(ТекущаяДата(),10);
    
    
    формаОтчета.вывести(область);
    область = макет.ПолучитьОбласть("Шапка");
    формаОтчета.Вывести(область);
    
    
    производитель = "";
    серия = "";
    областьСтрана = макет.ПолучитьОбласть("Страна");
    областьСерия = макет.ПолучитьОбласть("Серия");
    область = макет.ПолучитьОбласть("строка");
    
    Для каждого результатстр из результат цикл
    Если не результатстр.производитель = производитель  тогда
    производитель = результатстр.производитель;
    серия="";
    областьСтрана.Параметры.производитель=результатстр.производитель;
    ФормаОтчета.Вывести(областьСтрана);
    ИначеЕсли не серия= результатстр.серия тогда
    серия= результатстр.серия;
    областьСерия.Параметры.серия=результатстр.серия;
    ФормаОтчета.Вывести(областьсерия);
    
    конецесли;
    
    область.Параметры.код = результатстр.код;
    область.Параметры.номенклатура = результатстр.номенклатура;
    область.Параметры.подкатегория = результатстр.подкатегория;
    областьСтрана.Параметры.производитель = результатстр.производитель;
    областьСерия.Параметры.серия = результатстр.серия;
    область.Параметры.цена = результатстр.цена;
    область.Параметры.склад = результатстр.склад; 
    область.Параметры.остаток = результатстр.остаток;
    область.Параметры.крепость = результатстр.крепость;
    
    формаОтчета.Вывести(область);
    
    
    конеццикла;
    формаОтчета.Показать();
    
    
    
    КонецПроцедуры
    
  2. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    Если тупо, то так:
    Код:
    Процедура КнопкаСформироватьНажатие(Кнопка)
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    | ЦенНом.Номенклатура.Код как Код,
    | ЦенНом.Номенклатура как номенклатура,
    | ТовОргОст.Номенклатура.СерияМ как серия,
    | ЦенНом.Номенклатура.КатегорияМ как подкатегория,
    | ЦенНом.Цена,
    | ТовОргОст.Склад,
    | ЦенНом.Период как период,
    | ТовОргОст.КоличествоОстаток как Остаток,
    | ЦенНом.ПроцентСкидкиНаценки,
    | ЦенНом.Номенклатура.КрепостьМ как Крепость,
    | ЦенНом.Номенклатура.ПроизводительМ как Производитель
    |ИЗ
    | РегистрСведений.ЦеныНоменклатуры КАК ЦенНом
    | Соединение РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТовОргОст
    |По ТовОргОст.Номенклатура = ЦенНом.Номенклатура";
    Если (ЗначениеЗаполнено(Склад)) и (ЗначениеЗаполнено(Номенклатура)) Тогда
    Запрос.Текст = Запрос.Текст+ 
    "|Где (склад.Ссылка = &складпар) и (ЦенНом.номенклатура = &номен)"; 
    ИначеЕсли ЗначениеЗаполнено(Склад) Тогда
    Запрос.Текст = Запрос.Текст+ 
    "|Где склад.Ссылка = &складпар"; 
    ИначеЕсли ЗначениеЗаполнено(Номенклатура) Тогда
    Запрос.Текст = Запрос.Текст+ 
    "|Где ЦенНом.номенклатура = &номен"; 
    КонецЕсли;	
    Запрос.Текст = Запрос.Текст+ 
    "|Упорядочить ПО подкатегория, Производитель, ТовОргОст.СерияНоменклатуры, номенклатура"; 
    запрос.УстановитьПараметр("Складпар",Склад);
    запрос.УстановитьПараметр("номен",Номенклатура);
    результат = Запрос.Выполнить().Выгрузить();
    элементыФормы.Результат.СоздатьКолонки();
    ФормаОтчета = Новый ТабличныйДокумент;
    макет = ПолучитьМакет("макет");
    область = макет.ПолучитьОбласть("заголовок");
    область.Параметры.РабочаяДат = Лев(ТекущаяДата(),10);
    формаОтчета.вывести(область);
    область = макет.ПолучитьОбласть("Шапка");
    формаОтчета.Вывести(область);
    производитель = "";
    серия = "";
    областьСтрана = макет.ПолучитьОбласть("Страна");
    областьСерия = макет.ПолучитьОбласть("Серия");
    область = макет.ПолучитьОбласть("строка");
    Для каждого результатстр из результат цикл
    Если не результатстр.производитель = производитель тогда
    производитель = результатстр.производитель;
    серия="";
    областьСтрана.Параметры.производитель=результатстр.производитель;
    ФормаОтчета.Вывести(областьСтрана);
    ИначеЕсли не серия= результатстр.серия тогда
    серия= результатстр.серия;
    областьСерия.Параметры.серия=результатстр.серия;
    ФормаОтчета.Вывести(областьсерия);
    конецесли;
    область.Параметры.код = результатстр.код;
    область.Параметры.номенклатура = результатстр.номенклатура;
    область.Параметры.подкатегория = результатстр.подкатегория;
    областьСтрана.Параметры.производитель = результатстр.производитель;
    областьСерия.Параметры.серия = результатстр.серия;
    область.Параметры.цена = результатстр.цена;
    область.Параметры.склад = результатстр.склад; 
    область.Параметры.остаток = результатстр.остаток;
    область.Параметры.крепость = результатстр.крепость;
    формаОтчета.Вывести(область);
    конеццикла;
    формаОтчета.Показать();
    КонецПроцедуры
    
    

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