Разработка и внедрение новых форм отчётности в 1С:Предприятие 7.7.

Автор работы: Пользователь скрыл имя, 03 Мая 2012 в 17:37, практическая работа

Краткое описание

Для создания внешнего отчёта нужно запустить 1С: Предприятие 7.7. в режиме конфигуратора, для этого в диалоговом окне (рис 2.1.) выбираем режим конфигуратор.

Прикрепленные файлы: 1 файл

практика(чист).doc

— 688.50 Кб (Скачать документ)

  2. Разработка и внедрение новых форм отчётности

  в 1С:Предприятие 7.7. 

  2.1 Создание внешнего отчёта «свод по заработной плате» 

      Для создания внешнего отчёта нужно запустить 1С: Предприятие 7.7. в режиме конфигуратора, для этого в диалоговом окне (рис 2.1.) выбираем режим конфигуратор.

  

  рис.2.1. Запуск 1С:Предприятия

  Далее во вкладке меню конструкторы выбираем «новый отчёт» (рис 2.2.)

  

  рис 2.2 Интерфейс диалогового окна конфигуратора

  

  

  После этого в появившемся диалоговом окне «Конструктор отчёта», ставим маркер напротив надписи «внешний отчёт», а ниже прописываем имя файла для нашего отчёта. В моём случае я назвал его «свод» (рис 2.1.3.), а также убираем галочку  со строки использования конструктора для создания новых объектов и нажимаем кнопку далее.

  

  рис 2.3 Интерфейс конструктора отчётов

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

  

  

  

  

  рис2.4 Интерфейс диалогового окна разработки внешнего отчёта. 

  2.2. Добавление кнопок, полей со списком, полей ввода, а также надписей. 

  Прежде  чем мы займемся кнопками, , рассмотрим кнопки, созданные самой программой. Начнем с кнопки «Закрыть». Откроем окно ее свойств – щелкнем по ней правой кнопкой мышки и выберем пункт «Свойства». Выделим закладку «Дополнительно» и увидим окно, представленное ниже.

  

  

  

  Для кнопок существуют три предопределенных команды: закрыть, записать, провести. Одну из этих команд мы видим в поле «Формула». Так же мы видим, что перед командой стоит знак «#», он означает, что за ним должна следовать одна из вышеперечисленных команд. Если этот знак убрать, 1С не поймет команду.

  Поле  «Формула» служит для ввода команды  или формулы, состоящей из операторов языка 1С. А так же для указания процедуры, которая будут выполняться  при щелчке по этой кнопке.

  Откроем окно свойств для кнопки «Сформировать».

        Видим, в поле «Формула» указано имя процедуры «Сформировать()». Закроем окно и перейдите на вкладку «Модуль» в окне редактирования.

  

   В тексте модуля мы так же видим процедуру «Выполнить()». Она связана с кнопкой «Выполнить» и будет исполняться каждый раз при щелчке по ней. Правда, процедура эта пока пуста, в ней нет ни одного оператора, но мы скоро займемся ей.

  

  Аналогично  мы добавляем на форму другие кнопки и так же прописывая для каждой кнопки идентификатор, заголовок и формулу для выполнения.

  После добавлени всех кнопок мы получаем диалоговое окно показанное ниже на рисунке.

    

  2.3.Написание модуля программы. 

  В начале мы объявляем переменные, которые  нам необходимы для работы:

  Перем ДатаАктуальности; // дата актуальности периода отчета

  Перем гДатаНачала;

  Перем гЭтоКомплекснаяКонфигурация;

  Перем гРежим, Жен, ПолЖ, ЖР;

  Перем СписокФизЛиц, ВидНач;

  Перем ТаблицаДляРасшифровок, ТСотрудников2, ТСотрудников3;

  Перем Запрос;

  Перем СуммаФЗП, СуммаИзПр, СуммаФЗП1, СуммаИзПр1;

   Для обработки  нажатия кнопки сальдо используется следующая процедура:

  Процедура Сальдо()

        Перем Номер;

  

        глСтатусСтрока(Контекст,"Подготовка данных о сальдо на конец предыдущего  месяца");

        ТаблицаСальдо = СоздатьОбъект("ТаблицаЗначений");

        ТаблицаСальдо.НоваяКолонка("Сотрудник");

        ТаблицаСальдо.НоваяКолонка("СальдоКон");

        ТаблицаСальдо.НоваяКолонка("СальдоНач");          

        НомерПП=0;

         //сначала конечное  сальдо за прошлый месяц

        НачПериода = ЖР.НачалоПериодаПоДате(ДобавитьМесяц(ДатаАктуальности,-1));

        КонПериода = ЖР.КонецПериодаПоДате(ДобавитьМесяц(ДатаАктуальности,-1));

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

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

        "//{{ЗАПРОС(СальдоКон)

        |Период с НачПериода  по КонПериода;

        |Сотрудник    = ЖурналРасчетов.Зарплата.Объект.ОсновнойЭлемент;

        |Расчет     = ЖурналРасчетов.Зарплата.ВидРасч;

        |Результат    = ЖурналРасчетов.Зарплата.Результат;

        |Функция СальдоНач   = Сумма(Результат) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.НачальноеСальдо)=1);

        |Функция ВсегоНачислено  = Сумма(Результат) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1);

    |Функция ВсегоУдержано  = Сумма(Результат) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеУдержания)=1);

        |Функция Выплачено     = Сумма(Результат) когда (Расчет=ВидРасчета.ВыплатаЗарплаты);

  

        |Функция Возвращено   = Сумма(Результат) когда (Расчет=ВидРасчета.Возврат);

        |Группировка Сотрудник  без групп;

        |"//}}ЗАПРОС

        ;

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

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

              Возврат;

        КонецЕсли;

        Пока Запрос.Группировка(1)=1 Цикл  //Запрос.СальдоНач   

              НомерПП=НомерПП+1;  

              СальдоКон = Запрос.СальдоНач + Запрос.ВсегоНачислено - Запрос.ВсегоУдержано -Запрос.Выплачено +Запрос.Возвращено;

              ТаблицаСальдо.НоваяСтрока(НомерПП);

        ТаблицаСальдо.УстановитьЗначение(НомерПП,1,Запрос.Сотрудник);

              ТаблицаСальдо.УстановитьЗначение(НомерПП,2,СальдоКон);

              ТаблицаСальдо.УстановитьЗначение(НомерПП,3,0);  

        КонецЦикла;    

        //сальдо начальное за текущий период

        глСтатусСтрока(Контекст,"Подготовка данных о сальдо на начало текущего месяца");

        НачПериода = ЖР.НачалоПериодаПоДате(ДатаАктуальности);

        КонПериода = ЖР.КонецПериодаПоДате(ДатаАктуальности);

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

        "//{{ЗАПРОС(СальдоНач)

    |Период с  НачПериода по КонПериода;

        |Сотрудник    = ЖурналРасчетов.Зарплата.Объект.ОсновнойЭлемент;

        |Расчет     = ЖурналРасчетов.Зарплата.ВидРасч;

  

        |Результат    = ЖурналРасчетов.Зарплата.Результат;

        |Функция СальдоНач   = Сумма(Результат) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.НачальноеСальдо)=1);

        |Функция ВсегоНачислено  = Сумма(Результат) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1);

        |Функция ВсегоУдержано  = Сумма(Результат) когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеУдержания)=1);

        |Функция Выплачено     = Сумма(Результат) когда (Расчет=ВидРасчета.ВыплатаЗарплаты);

        |Функция Возвращено   = Сумма(Результат) когда (Расчет=ВидРасчета.Возврат);

        |Группировка Сотрудник  без групп; 

        |"//}}ЗАПРОС

        ;

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

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

              Возврат;

        КонецЕсли;

        Пока Запрос.Группировка(1)=1 Цикл  //Запрос.СальдоНач   

              НомСтр="";

              Если ТаблицаСальдо.НайтиЗначение(Запрос.Сотрудник,НомСтр,1)=1 Тогда

                    Номер=НомСтр;  

              Иначе

      Номер=ТаблицаСальдо.КоличествоСтрок()+1;

                    ТаблицаСальдо.НоваяСтрока(Номер);  

        ТаблицаСальдо.УстановитьЗначение(Номер,1,Запрос.Сотрудник);

              КонецЕсли; 

        ТаблицаСальдо.УстановитьЗначение(Номер,3,Запрос.СальдоНач);   

  

        КонецЦикла;

      глСтатусСтрока(Контекст,"Вывод  отчета по ненулевым");

        Таблица=СоздатьОбъект("Таблица");

        Таблица.ИсходнаяТаблица("Сальдо");

        Таблица.ВывестиСекцию("Шапка");      

        ИтогоСальдоНач=0;

        ИтогоСальдоКон=0;     

        ТаблицаСальдо.Сортировать(1);

        ТаблицаСальдо.выбратьСтроки();

        Пока ТаблицаСальдо.ПолучитьСтроку()=1 Цикл

              НомСтр=ТаблицаСальдо.НомерСтроки;    

              Сотрудник=ТаблицаСальдо.ПолучитьЗначение(НомСтр,1);

              СальдоКон=ТаблицаСальдо.ПолучитьЗначение(НомСтр,2); 

              СальдоНач=ТаблицаСальдо.ПолучитьЗначение(НомСтр,3);   

              ИтогоСальдоНач=ИтогоСальдоНач+СальдоНач;

              ИтогоСальдоКон=ИтогоСальдоКон+СальдоКон;

              Если НЕ(Число(СальдоКон)-Число(СальдоНач) = 0) Тогда

                    Таблица.ВывестиСекцию("Строка");

              КонецЕсли; 

        КонецЦикла;                        

        Таблица.ВывестиСекцию("Итог");

        Таблица.Опции(0,0,0,0);

        Таблица.Показать("Сальдо");

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

  Аналогично  прописываем процедуры для других объектов диалогового окна. Полный исходный текст представлен в приложении А. 

Информация о работе Разработка и внедрение новых форм отчётности в 1С:Предприятие 7.7.