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

Помогите заставить работать отчёт

Автор joystik, 01 июн 2012, 06:52

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

joystik

Доброго времени суток! Программа 1с 7.7 ПУБ 329. Есть внешний отчёт от которого требуется делать запрос с 2х документов, и выводить по контрагентам или по подразделениям. Проблемма: не получается выдернуть информацию о подразделении из документа "Авансы торгового дома" (документ самописный в эксплуотации давно) по причине "неопределённого" типа данных реквизита хранящего информацию о подразделении. (СубконтоКред1 и СубконтоКред2 имеют неопределённый тип данных)
Перем Запрос, ТекстЗапроса, Таб, Справочник, Договор, СубконтоКред1, СубконтоКред2;
//*******************************************
// Процедура генерации запроса Сформировать.
//
   
Процедура Сформировать()
ПериодДляШапкиОтчета = ПериодСтр(ВыбНачПериода, ВыбКонПериода);
    Заголовок="";

    // Выводим заголовок "ПОДРАЗДЕЛЕНИЯ", если идет отбор по Подразделению.
    Если ВыбПодразделение.Выбран()=1 Тогда
   
// оао "пмцз" --------------------------------------------------------- 
     // Заголовок=Заголовок+"По подразделению:"+ВыбПодразделение;
        Заголовок=Заголовок+"По подразделению:"+" "+ВыбПодразделение;

    // Выводим заголовок "КОНТРАГЕНТА", если идет отбор по Контрагенту.
ИначеЕсли ВыбКонтрагент.Выбран()=1 Тогда
Заголовок=Заголовок+"По контрагенту:"+" "+ВыбКонтрагент;
КонецЕсли;

    // Выводим заголовок "ПОДРАЗДЕЛЕНИЯ и КОНТРАГЕНТА", если идет отбор по Подразделению и Контрагенту.
Если (ВыбПодразделение.Выбран()=1) и (ВыбКонтрагент.Выбран()=1) тогда
    Заголовок=Заголовок+" "+" "+" "+" "+" "+"По контрагенту:"+" "+ВыбКонтрагент;
КонецЕсли;

     
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
    |Контрагент = Документ.АвансыТорговогоДома.СубконтоКред1,Документ.СписаниеДенежныхСредствРасчеты.Контрагент;
    |ДатаДок = Документ.АвансыТорговогоДома.ДатаДок,Документ.СписаниеДенежныхСредствРасчеты.ДатаДок;
    |Сумма = Документ.АвансыТорговогоДома.Сумма,Документ.СписаниеДенежныхСредствРасчеты.Сумма;
|ПП = Документ.АвансыТорговогоДома.ТекущийДокумент,Документ.СписаниеДенежныхСредствРасчеты.ТекущийДокумент;
|НазначениеПлатежа = Документ.СписаниеДенежныхСредствРасчеты.НазначениеПлатежа,Документ.АвансыТорговогоДома.НазначениеПлатежа;
|Договор = Документ.АвансыТорговогоДома.СубконтоКред2,Документ.СписаниеДенежныхСредствРасчеты.Договор;
    |Подразделение = Документ.АвансыТорговогоДома.СубконтоКред2.Подразделение,Документ.СписаниеДенежныхСредствРасчеты.Договор.Подразделение;
|Функция СуммаСумма = Сумма(Сумма);
// оао "пмцз" ---------------------------------------------------------
|Группировка Контрагент без групп; 
    |Группировка ПП  без групп;
                      //упорядочить по ПП.Комментарий;
   
// конец. оао "пмцз" --------------------------------------------------
|
|";
       
    // Выводим информацию по выбранному Подразделению.
Если ВыбПодразделение.Выбран()=1 Тогда

ТекстЗапроса =  ТекстЗапроса+
"Условие(Подразделение = ВыбПодразделение);
|"//}}ЗАПРОС
;   
// оао "пмцз" ---------------------------------------------------------
    // Выводим информацию по выбранному Контрагенту.
ИначеЕсли ВыбКонтрагент.Выбран()=1 Тогда

ТекстЗапроса =  ТекстЗапроса+
"Условие(Контрагент = ВыбКонтрагент);
|"//}}ЗАПРОС
;
    КонецЕсли;

    // Выводим информацию по выбранным Подразделению и Контрагенту.
    Если (ВыбПодразделение.Выбран()=1) и (ВыбКонтрагент.Выбран()=1) тогда

ТекстЗапроса =  ТекстЗапроса+
"Условие(Подразделение = ВыбПодразделение);
|"//}}ЗАПРОС
"Условие(Контрагент = ВыбКонтрагент);
|"//}}ЗАПРОС
        ;   
// конец. оао "пмцз" ---------------------------------------------------

    КонецЕсли;

// Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;

// Подготовка к заполнению выходных форм данными запроса
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Сформировать");
// Заполнение полей "Заголовок"
Таб.ВывестиСекцию("Заголовок");
Состояние("Заполнение выходной таблицы...");
Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);


Если ВыбКонтрагент.Выбран()=1 Тогда
Пока Запрос.Группировка(1) = 1 Цикл 
Пока Запрос.Группировка(2) = 1 Цикл
Таб.ВывестиСекцию("Контрагент");
КонецЦикла;
    КонецЦикла;
Иначе
Пока Запрос.Группировка(1) = 1 Цикл
Таб.ВывестиСекцию("Посумме");
  Пока Запрос.Группировка(2) = 1 Цикл
   Таб.ВывестиСекцию("Контрагент");
  КонецЦикла;
    КонецЦикла;
КонецЕсли;

// Заполнение полей "Итого"
Таб.ВывестиСекцию("Итого");
// Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
Таб.Показать("Сформировать", "");
КонецПроцедуры

Процедура ПриОткрытии()
  //****ОАО ПМЦЗ( Проверка прав *************** 
//Кому можно формировать:
СписокПрав = СоздатьОбъект("СписокЗначений");
СписокПрав.ДобавитьЗначение("Администратор");
СписокПрав.ДобавитьЗначение("Аудит");
СписокПрав.ДобавитьЗначение("ЗамГлБухгалтера");
СписокПрав.ДобавитьЗначение("ЗамНачальникаФО"); 
СписокПрав.ДобавитьЗначение("НачальникФО");
СписокПрав.ДобавитьЗначение("ЭкономистФО1");
СписокПрав.ДобавитьЗначение("ЭкономистФО2");
СписокПрав.ДобавитьЗначение("ЭкономистФО3");

ПраваТекущПользователя = НазваниеНабораПрав();

Если СписокПрав.НайтиЗначение (ПраваТекущПользователя) = 0  Тогда
        Предупреждение("У Вас нет прав на формирование данного отчета.");
      Форма.Закрыть(0);     
КонецЕсли;
//****)ОАО ПМЦЗ******************
КонецПроцедуры

Теги:

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

Рейтинг@Mail.ru

Поиск