Помощь - Поиск - Пользователи - Календарь
Полная версия: помогите начинающему
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 8.x" > (8.х) Обмен данными
bannov
написал отчёт. всё работает. Есть одно "но". на форме есть два поля для выбора номеклатуры и склада, ну т.е. чтобы только по ним выбор шёл. Если их задаёшь то выводит конкретно по ним данные в отчёт, если пустые поля на форме оставляешь(чтобы все данные вывел), то ничего не вылазеет. Как сделать чтобы при пустых значениях выходили все данные. Если кому не лень напишите пожалуйста конкретно что в коде писать, а то я не пойму если примерно ход действий говорить.
Код
Процедура КнопкаСформироватьНажатие(Кнопка)

Процедура КнопкаСформироватьНажатие(Кнопка)

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЦенНом.Номенклатура.Код как Код,
| ЦенНом.Номенклатура как номенклатура,
| ТовОргОст.Номенклатура.СерияМ как серия,
| ЦенНом.Номенклатура.КатегорияМ как подкатегория,
| ЦенНом.Цена,
| ТовОргОст.Склад,
| ЦенНом.Период как период,
| ТовОргОст.КоличествоОстаток как Остаток,
| ЦенНом.ПроцентСкидкиНаценки,
| ЦенНом.Номенклатура.КрепостьМ как Крепость,
| ЦенНом.Номенклатура.ПроизводительМ как Производитель
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦенНом
| Соединение РегистрНакопления.ТоварыОрганизаций.Остатки КАК ТовОргОст
|По ТовОргОст.Номенклатура = ЦенНом.Номенклатура
|Где
|склад.Ссылка = &складпар и ЦенНом.номенклатура = &номен
|Упорядочить ПО подкатегория, Производитель, ТовОргОст.СерияНоменклатуры, номенклатура";
запрос.УстановитьПараметр("Складпар",Склад);
запрос.УстановитьПараметр("номен",Номенклатура);
результат = Запрос.Выполнить().Выгрузить();
элементыФормы.Результат.СоздатьКолонки();


ФормаОтчета = Новый ТабличныйДокумент;
макет = ПолучитьМакет("макет");
область = макет.ПолучитьОбласть("заголовок");
область.Параметры.РабочаяДат = Лев(ТекущаяДата(),10);


формаОтчета.вывести(область);
область = макет.ПолучитьОбласть("Шапка");
формаОтчета.Вывести(область);


производитель = "";
серия = "";
областьСтрана = макет.ПолучитьОбласть("Страна");
областьСерия = макет.ПолучитьОбласть("Серия");
область = макет.ПолучитьОбласть("строка");

Для каждого результатстр из результат цикл
Если не результатстр.производитель = производитель тогда
производитель = результатстр.производитель;
серия="";
областьСтрана.Параметры.производитель=результатстр.производитель;
ФормаОтчета.Вывести(областьСтрана);
ИначеЕсли не серия= результатстр.серия тогда
серия= результатстр.серия;
областьСерия.Параметры.серия=результатстр.серия;
ФормаОтчета.Вывести(областьсерия);

конецесли;

область.Параметры.код = результатстр.код;
область.Параметры.номенклатура = результатстр.номенклатура;
область.Параметры.подкатегория = результатстр.подкатегория;
областьСтрана.Параметры.производитель = результатстр.производитель;
областьСерия.Параметры.серия = результатстр.серия;
область.Параметры.цена = результатстр.цена;
область.Параметры.склад = результатстр.склад;
область.Параметры.остаток = результатстр.остаток;
область.Параметры.крепость = результатстр.крепость;

формаОтчета.Вывести(область);


конеццикла;
формаОтчета.Показать();



КонецПроцедуры
sergey
Если тупо, то так:
Код

Процедура КнопкаСформироватьНажатие(Кнопка)

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

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.