Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 ноя 2024, 15:47

Отчет

Автор ls600, 15 июн 2012, 07:28

0 Пользователей и 3 гостей просматривают эту тему.

ls600

Добрый день. Появилась проблема с отчетом. Попросили в отчет добавить еще одну колонку. В запросе добавил из какой таблицы взять данные.

Подскажите Что еще нужно добавить для вывода данных.
1С:Предприятие 8.2 (8.2.15.301) Конфигурация Бухгалтерия для Казахстана, редакция 2.0

Процедура КнопкаСформироватьНажатие(Кнопка)
ТабДок = Новый ТабличныйДокумент();
ТабДок.ОтображатьСетку = Ложь;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
Макет = ПолучитьМакет("Макет");

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

Область = Макет.ПолучитьОбласть("Дата");
Область.Параметры.ДатаС = ПолеВвода1;
Область.Параметры.ДатаПо = ПолеВвода2;
ТабДок.Вывести(Область);

Область = Макет.ПолучитьОбласть("ШапкаТаблицы");
ТабДок.Вывести(Область);

ОбластьИтоги = Макет.ПолучитьОбласть("Итоги");

Область1 = Макет.ПолучитьОбласть("СтрокаТаблицы");
Область2 = Макет.ПолучитьОбласть("СтрокаТаблицы");

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

Запрос.УстановитьПараметр("Дата1", НачалоДня(ПолеВвода1));
Запрос.УстановитьПараметр("Дата2", КонецДня(ПолеВвода2));
Запрос.УстановитьПараметр("Счет",ПолеВвода3);

    Тригер = 0; ФактДобавления = 0; ОбластьНужноВывести = 0; НуженВывод = 0;
Результат = Запрос.Выполнить();

Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл

Попытка
Если (Выборка.ДО.СчетУчетаРасчетовСКонтрагентом=ПолеВВода3) ИЛИ
(СтрДлина(ПолеВВода3)<2) Тогда

Область1.Параметры.Заполнить(Выборка);
Область1.Параметры.ДатаСФ = Выборка.ДатаСФ;
Область1.Параметры.Номер = Выборка.Номер;
Область1.Параметры.Дата = Выборка.Дата;

Область2.Параметры.Заполнить(Выборка);
Область2.Параметры.ДатаСФ = Выборка.ДатаСФ;
Область2.Параметры.Номер = Выборка.Номер;
Область2.Параметры.Дата = Выборка.Дата;
Область2.Параметры.КолВо = 0;
Область2.Параметры.Сумма = 0;
Область2.Параметры.НДС = 0;


ВыводОбщих = 0; НуженВывод = 0;
Для Каждого Стр ИЗ Выборка.Ссылка.Товары Цикл
    Вывел = 0;

Область1.Параметры.КодТНВЭД = Стр.Номенклатура.Код;
Область1.Параметры.Номенклатура = Стр.Номенклатура.Наименование;
Область1.Параметры.КолВо = Стр.Количество;
Область1.Параметры.Ед = Стр.ЕдиницаИзмерения;
Область1.Параметры.Сумма = Стр.Сумма;
Область1.Параметры.НДС = Стр.СуммаНДС;
Область1.Параметры.Цена = Стр.Цена/1.12;

Если (Область1.Параметры.КодТНВЭД=Область2.Параметры.КодТНВЭД) Тогда
Область2.Параметры.Ед = Область1.Параметры.Ед;
Область2.Параметры.КодТНВЭД = Область1.Параметры.КодТНВЭД;
Область2.Параметры.Номенклатура = Область1.Параметры.Номенклатура;
Область2.Параметры.КолВо = Область2.Параметры.КолВо + Область1.Параметры.КолВо;
Область2.Параметры.Сумма = Область2.Параметры.Сумма + Область1.Параметры.Сумма;
Область2.Параметры.НДС = Область2.Параметры.НДС + Область1.Параметры.НДС;
Область2.Параметры.Цена = (Область2.Параметры.Сумма/Область2.Параметры.КолВо)/1.12;
НуженВывод = 0; ВыводОбщих = 1;
Иначе
Если ВыводОбщих = 1 Тогда
Область2.Параметры.Сумма = Область2.Параметры.Сумма-Область2.Параметры.НДС;
ТабДок.Вывести(Область2);НуженВывод = 0;
КонецЕсли;
Если (НуженВывод=1) Тогда
Область2.Параметры.Сумма = Область2.Параметры.Сумма-Область2.Параметры.НДС;
ТабДок.Вывести(Область2); Вывел = 1; НуженВывод = 0;
КонецЕсли;
Область2.Параметры.Ед = Область1.Параметры.Ед;
Область2.Параметры.КодТНВЭД = Область1.Параметры.КодТНВЭД;
Область2.Параметры.Номенклатура = Область1.Параметры.Номенклатура;
Область2.Параметры.КолВо = Область1.Параметры.КолВо;
Область2.Параметры.Сумма =  Область1.Параметры.Сумма;
Область2.Параметры.НДС = Область1.Параметры.НДС;
Область2.Параметры.Цена = Область1.Параметры.Цена/1.12;
НуженВывод = 1; Вывел = 0;
КонецЕсли;

КонецЦикла;
Если (Вывел=0) Тогда
Область2.Параметры.Сумма = Область2.Параметры.Сумма-Область2.Параметры.НДС;
ТабДок.Вывести(Область2); Вывел = 1;
КонецЕсли;


Для Каждого Стр ИЗ Выборка.Ссылка.Услуги Цикл
Область1.Параметры.КодТНВЭД = Стр.Номенклатура.Код;
Область1.Параметры.Номенклатура = Стр.Номенклатура;
Область1.Параметры.КолВо = Стр.Количество;
Область1.Параметры.Ед = "";
Область1.Параметры.Цена = Стр.Цена/1.12;
Область1.Параметры.Сумма = Стр.Сумма;
Область1.Параметры.НДС = Стр.СуммаНДС;
ТабДок.Вывести(Область1);
КонецЦикла;

Для Каждого Стр ИЗ Выборка.Ссылка.ОС Цикл
Область1.Параметры.КодТНВЭД = Стр.ОсновноеСредство.Код;
Область1.Параметры.Номенклатура = Стр.ОсновноеСредство.Наименование;
Область1.Параметры.КолВо = "";
Область1.Параметры.Ед = "";
Область1.Параметры.Цена = "";
Область1.Параметры.Сумма = Стр.Сумма;
Область1.Параметры.НДС = Стр.СуммаНДС;
ТабДок.Вывести(Область1);
КонецЦикла;

Для Каждого Стр ИЗ Выборка.Ссылка.НМА Цикл
Область1.Параметры.КодТНВЭД = Стр.НематериальныйАктив.Код;
Область1.Параметры.Номенклатура = Стр.НематериальныйАктив.Наименование;
Область1.Параметры.КолВо = "";
Область1.Параметры.Ед = "";
Область1.Параметры.Цена = "";
Область1.Параметры.Сумма = Стр.Сумма;
Область1.Параметры.НДС = Стр.СуммаНДС;
ТабДок.Вывести(Область1);
КонецЦикла;

КонецЕсли;
Исключение
КонецПопытки;
КонецЦикла;

КонецПроцедуры




ls600

Процедура КнопкаСформироватьНажатие(Кнопка)
   ТабДок = Новый ТабличныйДокумент();
   ТабДок.ОтображатьСетку = Ложь;
   ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
   Макет = ПолучитьМакет("Макет");

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

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

СветланаCC

Нужно в макете счета фактуры еще добавить колонку для вывода способа отправки
Тазовод)

СветланаCC

и объясните как связываются между собой
СчетФактураВыданный и РегистрНакопления.РЦ_РеализацияЦемента
я Вашем запросе связи не вижу, и еще в запросе не вижу

Запрос.УстановитьПараметр("СпособОтправки",СпособОтправки);

и зачем вот это

Запрос.УстановитьПараметр("Счет",ПолеВвода3);
Тазовод)

ls600

В макете добавил!
Объясню зачем Запрос.УстановитьПараметр("Счет",ПолеВвода3);
Формируется отчет по счету 1211. т.е выбор счета

СветланаCC

А как связываются РегистрНакопления.РЦ_РеализацияЦемента
и СчетФактураВыданный
Тазовод)

СветланаCC

И почему отбор по счету не вставить в запрос?
Тазовод)

ls600

Ни как)), добавил таблицу в запросе и взял какие данные нужны.

ls600

может лучше для наглядности отчет скинуть посмотрите!!!

СветланаCC

так нельзя.... какие у них есть общие поля? нужно связать счет фактуру и регистр по каким то параметрам...в регистре какие данные хранятся?
Тазовод)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск