8.х ОТчет

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем r-d-v2008, 13 ноя 2010.

  1. TopicStarter Overlay
    r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    Добрый всем день! Вопрос такой:
    В обработке задан период за два года
    пример отчета
    документ | дата | количество | сумма
    реализация товаров и услуг | 03.08.2009 20.30.35 | 8 | 364
    -
    -
    -
    -
    как мне подбить количество и сумму за год
    я понимаю что нужно поставить условие по году, но как это сделать :angry:
    Помогите пожалуйста!
  2. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Запрос покажите
    А так, Вам надо использовать конструкцию ИТОГИ ПЕРИОДАМИ
  3. TopicStarter Overlay
    r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    Вот текст обработки:


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

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


    Запрос.УстановитьПараметр("ДатаНач", ДатаНач);
    Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон));

    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();

    ТабДокумент = Новый ТабличныйДокумент;

    // Зададим параметры макета
    ТабДокумент.ПолеСверху = 0;
    ТабДокумент.ПолеСлева = 5;
    ТабДокумент.ПолеСнизу = 0;
    ТабДокумент.ПолеСправа = 5;
    ТабДокумент.РазмерКолонтитулаСверху = 0;
    ТабДокумент.РазмерКолонтитулаСнизу = 0;
    ТабДокумент.АвтоМасштаб = Истина;
    ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    ТабДокумент.ИмяПараметровПечати = "Отчет";
    Макет = ПолучитьМакет("Отчет");



    Пока Выборка.Следующий() Цикл
    Если ( проект=Выборка.Номенклатура)
    или (проект=Справочники.Номенклатура.ПустаяСсылка()) тогда
    дата=Формат(Выборка.дата,Конецгода(Выборка.дата));

    СтрокаТаблицы = ТабЗнач.Добавить();
    СтрокаТаблицы.Документ=Выборка.Ссылка;
    СтрокаТаблицы.Количество=Выборка.Количество;
    Если Выборка.Ссылка.СуммаВключаетНДС тогда
    СтрокаТаблицы.Сумма=Выборка.сумма;
    Иначе
    СтрокаТаблицы.Сумма=Выборка.Сумма+Выборка.СуммаНДС;
    КонецЕсли;
    Если Выборка.Ссылка.Грузополучатель=Справочники.Контрагенты.ПустаяСсылка() тогда
    СтрокаТаблицы.Грузополучатель=Выборка.Ссылка.Контрагент;
    Иначе
    СтрокаТаблицы.Грузополучатель=Выборка.Ссылка.Грузополучатель;
    КонецЕсли;

    КонецЕсли;
    КонецЦикла;

    Запрос = Новый Запрос;

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

    Если ( проект=Выборка.Номенклатура)
    или (проект=Справочники.Номенклатура.ПустаяСсылка()) тогда
    ДокументПост=Выборка.ссылка;
    Контрагент=выборка.контрагент;
    колво=выборка.колво;
    серия=выборка.серия;
    Если Выборка.Ссылка.СуммаВключаетНДС тогда
    Суммапост=Выборка.суммапост;
    Иначе
    Суммапост=Выборка.Суммапост+Выборка.СуммаНДС;
    КонецЕсли;
    конецесли;
    конеццикла;


    ОбластьСтрока1=Макет.ПолучитьОбласть("Строка1");
    ОбластьГр=Макет.ПолучитьОбласть("Гр");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьШапка1 = Макет.ПолучитьОбласть("Шапка1");
    ОбластьШапка2 = Макет.ПолучитьОбласть("Шапка2");
    ОбластьСтрока1.Параметры.ДокументПост=ДокументПост;
    ОбластьСтрока1.Параметры.Контрагент=Контрагент;
    ОбластьСтрока1.Параметры.колво=колво;
    Областьстрока1.Параметры.суммапост=суммапост;
    Областьстрока1.Параметры.серия=серия;
    ОбластьШапка.Параметры.ДатаНач = Формат(ДатаНач, "ДФ='дд.ММ.гггг ""г.""'");
    ОбластьШапка.Параметры.ДатаКон = Формат(ДатаКон, "ДФ='дд.ММ.гггг ""г.""'");
    ОбластьШапка.Параметры.Договор = проект;
    ТабДокумент.Вывести(ОбластьШапка);
    ТабДокумент.Вывести(ОбластьШапка1);
    ТабДокумент.Вывести(ОбластьСтрока1);

    ТабДокумент.Вывести(ОбластьШапка2);
    ОбластьМакета = Макет.ПолучитьОбласть("Строка");
    ОбластьПодвала = Макет.ПолучитьОбласть("Подвал");
    ном=0;
    ИтогоСумма=0;
    ИтогоКоличество=0;
    ИтогоКоличествоПост=0;
    ИтогоСуммаПост=0;
    //стараядата=("2009,12,31,10,15,34");
    КолГР=0;
    СуммГР=0;
    k=0;
    ТабЗнач.Сортировать("Дата");
    ТекГрузополучатель = Неопределено;
    ИтогоГрузополучатель = 0;
    ТабДокумент.Вывести(ОбластьМакета, 2);
    ТабДокумент.НачатьАвтогруппировкуСтрок();
    Для каждого ТекСтрока из ТабЗнач Цикл
    ном=ном+1;
    ТекДата = ТекСтрока.Дата;
    докгр= текстрока.документ;
    ОбластьМакета.Параметры.Заполнить(ТекСтрока);
    если k=0 тогда
    // стараядата=текстрока.дата;
    k=1;
    конецесли;

    Если стараядата<= текстрока.дата тогда
    ном=1;
    СуммГР=СуммГр+текстрока.сумма;
    КолГр=КолГр+текстрока.количество;
    ОбластьГр.Параметры.Суммгр=СуммГР;
    ОбластьГр.Параметры.КолГр=КолГр;
    ОбластьГР.Параметры.докгр=докгр;
    ТабДокумент.Вывести(ОбластьГр);
    КолГР=0;
    СуммГР=0;
    стараядата=текстрока.дата;
    конецесли;
    ТабДокумент.Вывести(ОбластьМакета, 2);
    ИтогоСумма = ИтогоСумма + ТекСтрока.Сумма;
    ИтогоКоличество= ИтогоКоличество + Текстрока.Количество;
    ИтогоКоличествоПост=колво - ИтогоКоличество;
    ИтогоСуммаПост=суммапост-ИтогоСумма;
    КонецЦикла;
    ТабДокумент.ЗакончитьАвтогруппировкуСтрок();
    СуммГР=СуммГр+текстрока.сумма;
    КолГр=КолГр+текстрока.количество;
    ОбластьГр.Параметры.Суммгр=СуммГР;
    ОбластьГр.Параметры.КолГр=КолГр;
    ОбластьГР.Параметры.докгр=докгр;
    //ТабДокумент.Вывести(ОбластьГр);
    ОбластьПодвала.Параметры.ИтогоСумма = ОбщегоНазначения.ФорматСумм(ИтогоСумма);
    ОбластьПодвала.Параметры.Итогоколичество=Итогоколичество;
    ОбластьПодвала.Параметры.ИтогоколичествоПост=ИтогоколичествоПост;
    ОбластьПодвала.Параметры.ИтогосуммаПост=ИтогосуммаПост;
    ТабДокумент.Вывести(ОбластьПодвала, 1);

    ТабДокумент.Показать("Отчет по продажам");
    КонецФункции

    Процедура ВыбПериодНажатие(Элемент)
    НастройкаПериода = Новый НастройкаПериода;
    НастройкаПериода.УстановитьПериод(ДатаНач, ?(ДатаКон='0001-01-01', ДатаКон, КонецДня(ДатаКон)));
    НастройкаПериода.РедактироватьКакИнтервал = Истина;
    НастройкаПериода.РедактироватьКакПериод = Истина;
    НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период;
    Если НастройкаПериода.Редактировать() Тогда
    ДатаНач = НастройкаПериода.ПолучитьДатуНачала();
    ДатаКон = НастройкаПериода.ПолучитьДатуОкончания();
    КонецЕсли;
    КонецПроцедуры
  4. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Например так:
    Код:
    Запрос.Текст ="ВЫБРАТЬ
    |	ПоступлениеТоваровУслугТовары.Ссылка,
    |	ПоступлениеТоваровУслугТовары.Количество КАК колво,
    |	ПоступлениеТоваровУслугТовары.Сумма КАК суммапост,
    |	ПоступлениеТоваровУслугТовары.СуммаНДС КАК СуммаНДС,
    |	ПоступлениеТоваровУслугТовары.Номенклатура,
    |	ПоступлениеТоваровУслугТовары.Ссылка.Контрагент,
    |	ПоступлениеТоваровУслугТовары.Ссылка.НомерВходящегоДокумента
    |ИЗ
    |	Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
    |ИТОГИ
    |	СУММА(колво),
    |	СУММА(суммапост),
    |	СУММА(СуммаНДС)
    |ПО
    |	ПоступлениеТоваровУслугТовары.Ссылка.Дата ПЕРИОДАМИ(ГОД, &НачалоПериода, &КонецПериода)";
    
    ЗЫ пользуйтесь кнопочкой код (Правая в панели) для оформления кода.
  5. TopicStarter Overlay
    r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    С этим понятно как теперь проверку сделать
  6. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Проверку чего?
  7. TopicStarter Overlay
    r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    Вы не поняли мне нужно подбить итоги
    я выбрал товар из номенклатуры, выбрал дату за два года
    по этой товару он сформировал реализацию
    в конце отчета я подбиваю сколько осталось на складе и сумма не проданного
    но так как товар поступил в 2009 году
    мне нужно подбить сколько его оставалось в 2009 году и соответственно сколько его осталось на конечную дату выборки


    Вот сама обработка

    Вложения:

  8. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Остатки выбираются из регистра ТоварыНаСкладах
    Код:
    ВЫБРАТЬ
    ТоварыНаСкладахОстатки.КоличествоОстаток
    ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатка, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстатки
    
  9. TopicStarter Overlay
    r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    Куда это вставить?
  10. TopicStarter Overlay
    r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    что-то этот запрос не работает выдает ошибку

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