Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Янв 2018, 10:46
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Отчет  (Прочитано 7297 раз)

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

Оффлайн ls600

  • ****
  • Сообщений: 324
  • РЕПУТАЦИЯ: 21
  • КПД: 6%
  • Регистрация: 2012-05-14
  • Сайт: 
  • Профессия: Программист 1С
Отчет
« Первое сообщение: 15 Июн 2012, 07:28 »
Добрый день. Появилась проблема с отчетом. Попросили в отчет добавить еще одну колонку. В запросе добавил из какой таблицы взять данные.

Подскажите Что еще нужно добавить для вывода данных.
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

  • ****
  • Сообщений: 324
  • РЕПУТАЦИЯ: 21
  • КПД: 6%
  • Регистрация: 2012-05-14
  • Сайт: 
  • Профессия: Программист 1С
Re: Отчет
« Ответ #1: 15 Июн 2012, 07:30 »
Процедура КнопкаСформироватьНажатие(Кнопка)
   ТабДок = Новый ТабличныйДокумент();
   ТабДок.ОтображатьСетку = Ложь;
   ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
   Макет = ПолучитьМакет("Макет");

   Область = Макет.ПолучитьОбласть("Шапка");
   ТабДок.Вывести(Область);
   
   Область = Макет.ПолучитьОбласть("Дата");
   Область.Параметры.ДатаС = ПолеВвода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

  • Модератор
  • *****
  • Сообщений: 295
  • РЕПУТАЦИЯ: 46
  • КПД: 16%
  • Я человек творческий, что хочу - то и творю))
  • Регистрация: 2010-11-03
  • Сайт: 
  • Профессия: Программист 1С
Re: Отчет
« Ответ #2: 15 Июн 2012, 08:04 »
Нужно в макете счета фактуры еще добавить колонку для вывода способа отправки
Тазовод)

Оффлайн СветланаCC

  • Модератор
  • *****
  • Сообщений: 295
  • РЕПУТАЦИЯ: 46
  • КПД: 16%
  • Я человек творческий, что хочу - то и творю))
  • Регистрация: 2010-11-03
  • Сайт: 
  • Профессия: Программист 1С
Re: Отчет
« Ответ #3: 15 Июн 2012, 08:10 »
и объясните как связываются между собой
СчетФактураВыданный 
и
РегистрНакопления.РЦ_РеализацияЦемента
я Вашем запросе связи не вижу, и еще в запросе не вижу
Запрос.УстановитьПараметр("СпособОтправки",СпособОтправки); 
и зачем вот это
Запрос.УстановитьПараметр("Счет",ПолеВвода3);
Тазовод)

Оффлайн ls600

  • ****
  • Сообщений: 324
  • РЕПУТАЦИЯ: 21
  • КПД: 6%
  • Регистрация: 2012-05-14
  • Сайт: 
  • Профессия: Программист 1С
Re: Отчет
« Ответ #4: 15 Июн 2012, 08:17 »
В макете добавил!
Объясню зачем Запрос.УстановитьПараметр("Счет",ПолеВвода3);
Формируется отчет по счету 1211. т.е выбор счета

Оффлайн СветланаCC

  • Модератор
  • *****
  • Сообщений: 295
  • РЕПУТАЦИЯ: 46
  • КПД: 16%
  • Я человек творческий, что хочу - то и творю))
  • Регистрация: 2010-11-03
  • Сайт: 
  • Профессия: Программист 1С
Re: Отчет
« Ответ #5: 15 Июн 2012, 08:19 »
А как связываются РегистрНакопления.РЦ_РеализацияЦемента
и СчетФактураВыданный
Тазовод)

Оффлайн СветланаCC

  • Модератор
  • *****
  • Сообщений: 295
  • РЕПУТАЦИЯ: 46
  • КПД: 16%
  • Я человек творческий, что хочу - то и творю))
  • Регистрация: 2010-11-03
  • Сайт: 
  • Профессия: Программист 1С
Re: Отчет
« Ответ #6: 15 Июн 2012, 08:22 »
И почему отбор по счету не вставить в запрос?
Тазовод)

Оффлайн ls600

  • ****
  • Сообщений: 324
  • РЕПУТАЦИЯ: 21
  • КПД: 6%
  • Регистрация: 2012-05-14
  • Сайт: 
  • Профессия: Программист 1С
Re: Отчет
« Ответ #7: 15 Июн 2012, 08:22 »
Ни как)), добавил таблицу в запросе и взял какие данные нужны.

Оффлайн ls600

  • ****
  • Сообщений: 324
  • РЕПУТАЦИЯ: 21
  • КПД: 6%
  • Регистрация: 2012-05-14
  • Сайт: 
  • Профессия: Программист 1С
Re: Отчет
« Ответ #8: 15 Июн 2012, 08:25 »
может лучше для наглядности отчет скинуть посмотрите!!!

Оффлайн СветланаCC

  • Модератор
  • *****
  • Сообщений: 295
  • РЕПУТАЦИЯ: 46
  • КПД: 16%
  • Я человек творческий, что хочу - то и творю))
  • Регистрация: 2010-11-03
  • Сайт: 
  • Профессия: Программист 1С
Re: Отчет
« Ответ #9: 15 Июн 2012, 08:26 »
так нельзя.... какие у них есть общие поля? нужно связать счет фактуру и регистр по каким то параметрам...в регистре какие данные хранятся?
Тазовод)


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
106 Сообщений
AIFrame
105 Сообщений
alex0402
28 Сообщений
kiksi
17 Сообщений
alexandr_ll
17 Сообщений
andron81_81
16 Сообщений
pavl_vs
13 Сообщений
LexaK
13 Сообщений
BuhRust
13 Сообщений
Artibon
12 Сообщений

* Кто онлайн

  • Точка Гостей: 979
  • Точка Скрытых: 0
  • Точка Пользователей: 13
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal