Вход | Регистрация


1С:Предприятие ::

Метки:

Вопрос чайника: Как изменить отчет?

Я
   LjudMila
 
02.06.04 - 11:58
Очень прошу помочь! Есть простой отчет, выводящий строки шапки документа и табличной части. Надо изменить ТОЛЬКО ПОРЯДОК вывода строк шапки док-та (упорядочить по определенному полю (РегН, в шапке док-та,(строковое)).Прошу подсказать хотя бы возможные методы решения проблемы, т.к. с 1С-кой опыт = 0. Заранее благодарна откликнувшимся.
 
  Рекламное место пустует
   VladZagorsky
1 - 02.06.04 - 12:03
А можно подробнее?
   lexa
 
2 - 02.06.04 - 12:04
ты бы модуль отчета бы привел
   Bzzzzz
 
3 - 02.06.04 - 12:07
(2) это ОНА ;-)
(0) Нужно узнать каким образом отбираются документы: запросом, просто выборкой, выборкой с помещением в Таб.Значений
   427
 
4 - 02.06.04 - 12:14
Мухобойкой не пробовали?
   lexa
 
5 - 02.06.04 - 12:16
сорри
   LjudMila
 
6 - 02.06.04 - 12:17
Модуль отчета:
//*******************************************

Процедура ПриОткрытии()
    ДатаС = НачГода(ТекущаяДата());
    ДатаПо = ТекущаяДата();
КонецПроцедуры
//*******************************************

Процедура Сформировать()
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Печать");
    Таб.ВывестиСекцию("Заголовок");
    Таб.ВывестиСекцию("Шапка"); 
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);
    Спр = СоздатьОбъект("Справочник.Вернуть");       
    Док = СоздатьОбъект("Документ.ДПост");
    Док.ВыбратьДокументы(); 
    Ном = 0;
    Пока Док.ПолучитьДокумент() = 1 Цикл
           Если (ДатаС <= Док.ДПерВАдм ) И (ДатаПо >= Док.ДПерВАдм) Тогда
            Ном = Ном + 1 ;
               Таб.ВывестиСекцию("Строка");
            Док.ВыбратьСтроки();
            Пока Док.ПолучитьСтроку()=1 Цикл  
                Таб.ВывестиСекцию("Секция_2");
            КонецЦикла;
        КонецЕсли;
    КонецЦикла;
//    Таб.ВывестиСекцию("Подвал");

    Таб.ТолькоПросмотр(1);
    Таб.Показать("Печать","");

КонецПроцедуры
Что делать? Поменять надо только порядок по полю РегН, все остальное оставить. в том же виде.
   SnarkHunter
 
7 - 02.06.04 - 12:21
Выборку доков в ТЗ, ТЗ сортировать, после этого - вывод в Таб...
   Bzzzzz
 
8 - 02.06.04 - 12:27
(7) Нуууууу, крЮЮтооой. Ни одной лишней буквы :-)
   LjudMila
 
9 - 02.06.04 - 12:27
Прости чайника, как в ТЗ ложится шапка док-та - понятно. А что при этом телать с табличной частью, её тоже можно  в ТЗ?
   SnarkHunter
 
10 - 02.06.04 - 12:29
(9)Кроме реквизита, по которому будешь сортировать, сохраняй в ТЗ ссылку на документ -  через него к табличной части достучишься...
 
  Рекламное место пустует
   lexa
 
11 - 02.06.04 - 12:29
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ВыгрузитьТабличнуюЧасть(ТЗ);
   SnarkHunter
 
12 - 02.06.04 - 12:30
(11)Это другое...
   LjudMila
 
12 - 02.06.04 - 12:30
Спасибо огромное! Попробую.
   VladZagorsky
14 - 02.06.04 - 12:34
В ТЗ ложится документ, а не шапка.
   SnarkHunter
 
15 - 02.06.04 - 12:36
Кладется...
   lexa
 
16 - 02.06.04 - 12:37
(12) виноват исправлюсь, а вообще то лучше через запрос делать
   LjudMila
 
17 - 02.06.04 - 12:39
Да.. помаялась я уже с запросом.. Может поможешь?
   lexa
 
18 - 02.06.04 - 12:43
вызываешь конструктор запросов, добавляешь переменые, добавляешь группировки (2 - одна по текщему документу, другу по РегН) и вперед, а в таблице в ячейках Док. меняешь на Запрос.
   LjudMila
 
19 - 02.06.04 - 12:46
Спасибо всем! Обед по-расписанию, а потом попробую.
   SiMazx
 
20 - 02.06.04 - 12:54
Война-войной, а обед по распорядку!!!
   LjudMila
 
21 - 02.06.04 - 15:40
Да.. Что-то опять не в тему  пробовала конструктором запросов,а в отчете кроме заголовков - ничего. В модуле:
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
   //Создание объекта типа Запрос

    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)

    |с ВыбНачПериода по ВыбКонПериода;
    |Документы = Документ.ДПост.ТекущийДокумент;
    |Группировка Документ;
    |Группировка Документы упорядочить по Документы.РегН;
    |//}}ЗАПРОС

    ;

   // Если ошибка в запросе, то выход из процедуры

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

   // Подготовка к заполнению выходных форм данными запроса

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

    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    Пока Запрос.Группировка(1) = 1 Цикл
       // Заполнение полей Документ

        Таб.ВывестиСекцию("Документ");
        Пока Запрос.Группировка(2) = 1 Цикл
           // Заполнение полей Документы

            Таб.ВывестиСекцию("Документы");
        КонецЦикла;
    КонецЦикла;
   // Вывод заполненной формы

    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры
Пробовала разные варианнты, но...
Подскажите, пожалуйста, где моя ошибка?
Честно г-ря - никак не могу понять смысл переменых в запросе.
   lexa
 
22 - 02.06.04 - 15:45
А РегН - это что?
   LjudMila
 
23 - 02.06.04 - 15:50
Это поле в шапке док-та ДПост (строка), понему и должно идти упорядочивание
   LjudMila
 
24 - 02.06.04 - 15:51
Это поле в шапке док-та ДПост (строка), по нему и должно идти упорядочивание
   GrayT
 
25 - 02.06.04 - 15:52
А зачем две группировки? Достаточно с упорядочиванием и все.
И выбор строк документов где?
Док = Запрос.Документ;
Док.ВыбратьСтроки().... и далее как в првом
И условия по датам
   lexa
 
26 - 02.06.04 - 15:58
Процедура Сформировать() 
   Перем Запрос, ТекстЗапроса, Таб; 
  //Создание объекта типа Запрос 

   Запрос = СоздатьОбъект("Запрос"); 
   ТекстЗапроса = 
   "//{{ЗАПРОС(Сформировать) 

   |с ВыбНачПериода по ВыбКонПериода; 
   |Документы = Документ.ДПост.ТекущийДокумент;
   |Товар = Документ.ДПост.Номенклатура;
   |Количество = Документ.ДПост.Количество;
   |Группировка Документы упорядочить по Документы.РегН; 
   |Группировка Товар; 
   |//}}ЗАПРОС 

   ; 
 ; 

  // Если ошибка в запросе, то выход из процедуры 

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

  // Подготовка к заполнению выходных форм данными запроса 

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

   Таб.ВывестиСекцию("Заголовок"); 
   Состояние("Заполнение выходной таблицы..."); 
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); 
   Пока Запрос.Группировка(1) = 1 Цикл 
      // Заполнение полей Документ 

       Таб.ВывестиСекцию("Документ"); 
       Пока Запрос.Группировка(2) = 1 Цикл 
          // Заполнение полей Документы 

           Таб.ВывестиСекцию("Товар"); 
       КонецЦикла; 
   КонецЦикла; 
  // Вывод заполненной формы 

   Таб.ТолькоПросмотр(1); 
   Таб.Показать("Сформировать", ""); 
КонецПроцедуры
   GrayT
 
27 - 02.06.04 - 16:00
Что-нить типа:
ТекДок = Документ.ДПост.ТекущийДокумент;
ДПерВАдм = Документ.ДПост.ДПерВАдм ;
Группировка ТекДок упорядочить по ТекДок.РегН;
Условие((ДПерВАдм >= ДатаС) И (ДПерВАдм <= ДатаПО));
   lexa
 
28 - 02.06.04 - 16:01
Для формирования и выполнения запросов к документам, справочникам, регистрам, журналам расчетов, планам счетов, бухгалтерским операциям и проводкам в системе используется специальный агрегатный тип данных — «Запрос». Возможности работы со справочниками, документами и журналами расчетов предоставляют достаточно мощные средства получения различной информации об этих объектах. Однако, существует также необходимость в получении информации, сгруппированной определенным образом, которую невозможно или очень сложно получить непосредственно работая с документами, справочниками, регистрами или журналами расчетов. Для получения такой информации и существует механизм запросов.

Одним из классических примеров его применения может служить сводка по состоянию регистра на конкретный момент времени. В более сложных запросах возможно получение сгруппированной информации по справочникам, журналам расчетов и документам.

Кроме того, механизм запросов позволяет легко получать информацию в различных временных разрезах.

Контекст работы с запросами
Во всех программных модулях доступ к атрибутам и методам запросов может выполняться только через переменную, созданную функцией СоздатьОбъект. Чтобы вызвать атрибут или метод объекта, имя этого атрибута, метода (с указанием необходимых параметров) пишется через точку после имени переменной.

При создании объекта типа «Запрос» в качестве параметра функции СоздатьОбъект используется ключевое слово Запрос .

Англоязычный синоним ключевого слова Запрос — Query.

Пример:

Запрос = СоздатьОбъект("Запрос");

Структура запросов и методика их использования
Использование запросов позволяет легко строить простые отчеты и облегчает построение сложных отчетов. При построении сложных отчетов использование запросов может существенно снизить трафик сети, т.к. однажды выбранная лри исполнении запроса информация, хранящаяся во временном наборе данных на локальном компьютере, может многократно использоваться.

Запросы можно использовать не только для построения отчетов, но и для реализации других процедур конфигурации, требующих получения из БД некой сводной информации. Например, реализация алгоритма списания стоимости товара по методам FIFO или LIFO.

Работа с запросами предполагает следующий порядок:

·         при помощи функции СоздатьОбъект создается объект типа «Запрос» и ссылка на него присваивается какой-либо переменной. Далее обращение к запросу производится посредством этой ссылки.

·         после создания переменной типа «Запрос» следует обращение к методу Выполнить, которому в качестве параметра передается текст запроса, написанный на специальном языке запросов (см. главу «Язык запросов»). Метод Выполнить анализирует текст запроса, выполняет в соответствии с ним выборку данных и формирует временный выходной набор данных (выборку).

·         после этого организуется циклическая обработка сформированного временного набора данных (выборки) с целью получения требуемого отчета.

В данном разделе мы рассмотрим структуру создаваемого запросом временного набора данных и работу методов запросов по выборке информации из этого временного набора.

Дальнейшее описание проведем на простом примере: необходимо получить отчет о количестве товаров, хранящихся на складах. Текст процедуры, выполняющей эту операцию приведен ниже.

Пример:

НашЗапрос = СоздатьОбъект("Запрос");

ТекстЗапроса =

"//{{ЗАПРОС(Сформировать)


|СКЛАД = Регистр.ТоварныйЗапас.Склад;

|ТОВАР = Регистр.ТоварныйЗапас.Товар;

|КОЛИЧЕСТВО = Регистр.ТоварныйЗапас.Количество;

|Группировка ТОВАР Упорядочить По ТОВАР.Код;

|Группировка СКЛАД Упорядочить По СКЛАД.Код;

|Функция КОЛ = КонОст(КОЛИЧЕСТВО);

|//}}ЗАПРОС


;

// Если ошибка в запросе, то выход из процедуры


Если НашЗапрос.Выполнить(ТекстЗапроса) = 0 Тогда

   Возврат;

КонецЕсли;
   GrayT
 
29 - 02.06.04 - 16:02
Можно и товары в группировку засунуть, но тогда таблицу придется переделывать скорее всего
   SnarkHunter
 
30 - 02.06.04 - 16:03
Может сразу все ЖКК сюда скопировать, включая руководсива пользователей и по установке...
   lexa
 
31 - 02.06.04 - 16:14
(30)вырежут



Список тем форума
Рекламное место пустует  
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует