Главная » 1С Предприятие » СВЕДЕНИЯ ДЛЯ БУХГАЛТЕРСКОГО УЧЕТА ЗАРПЛАТЫ

0

Эти  сведения нам  предоставит запрос,  вычисляющий в  заданном периоде  для каждой    хозяйственной  операции   суммарные  значения   результатов   относящихся к ней  расчетов.

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

// Формирует и выполняет запрос по хозяйственным операциям,

// суммируя относящиеся к ним результаты

// Параметр зХозОп типа Запрос является входным/выходным

функция ЗапрХозОп(зХозОп)

перем  текстЗапХозОп;            //                Содержание запроса перем жз, нтп, ктп;

жз = СоздатьОбъект("ЖурналРасчетов.Зарплата_2");

// Начало и конец текущего периода ЖЗ нтп  =  жз.НачалоТекущегоПериода(); ктп = жз.КонецТекущегоПериода(); текстЗапХозОп = "

| период с нтп по ктп;                  //          Период запроса

// Переменные запроса

| хозОп  = журналРасчетов.Зарплата_2.ХозОп;

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

// Функция запроса

| функция сумХозОп = сумма(рез);

// Задаем порядок выборки данных

| группировка хозОп  упорядочить по хозОп.Наименование;";

// Выполняем запрос  и возвращаем 1 в случае удачи, или 0, если есть проблемы возврат зХозОп.Выполнить(текстЗапХозОп);

конецфункции // ЗапрХозОп

// Запускает запрос зХозОп о хозяйственных операциях и выгружает

// его результат для последующего просмотра в таблицу значений тЗнач

процедура Выполнить()                     //              Связана с кнопкой Пуск  обработки Проба  перем зХозОп, тЗнач;

// Создаем объекты зХозОп и тЗнач  зХозОп = СоздатьОбъект("Запрос"); если ЗапрХозОп(зХозОп) = 0 тогда

возврат;                             //                 Запрос не выполнен

конецЕсли;

// Создаем объект тЗнач для промежуточной демонстрации выборки запроса тЗнач = СоздатьОбъект("ТаблицаЗначений");

// Выгружаем все переменные запроса в таблицу значений тЗнач

// для его предварительного просмотра зХозОп.Выгрузить(тЗнач,  1);

// Просмотр .таблицы значений

тЗнач.ВыбратьСтроку(, "Запрос  о хозяйственных операциях в таблице значений");  конецПроцедуры // Выполнить

Результат  приведен на рис. 7.82.

Рис. 7.82. Распределение расчетов по хозяйственным операциям

Имеющаяся в тексте  запроса строка-функция

| функция сумХозОп = сумма(рез);

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

Код, повторяющий действия функции сумХозОп, может  быть таким:

// Возвращает в заданном периоде для заданной хозяйственной операции хозОп

// сумму результатов относящихся к ней расчетов функция сумХозОп2(хозОп, жз, нтп)

жз.ВыбратьПериод(нтп);

схо = 0;                                  //                     Искомый результат пока жз.ПолучитьЗапись() = 1 цикл

если жз.ХозОп = хозОп тогда

схо = схо + жз.Результат; конецЕсли;

конецЦикла; // пока возврат схо;

конецФункции // сумХозОп2

Запустим  функцию  сумХозОп2  для  всех хозяйственных  операций  текущего  расчетного периода из обработки Проба. Перечень хозяйственных операций  нам даст запрос  зХозОп.

// Формирует список использованных в текущем периоде ЖЗ хозяйственных операций

// Вызывает затем функцию сумХозОп2 для каждой хозяйственной операции

// и печатает возвращенный функцией результат

процедура Выполнить(  )                      //             Связана с кнопкой Пуск  обработки Проба перем  зХозОп, текстЗапХ;               //          Содержание  запроса

перем жз, нтп, ктп, сумРез; ОчиститьОкноСообщений();

// Создаем объекты зХозОп и жз

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

жз = СоздатьОбъект("ЖурналРасчетов.Зарплата_2");

// Начало и конец  текущего периода ЖЗ нтп  = жз.НачалоТекущегоПериода(); ктп жз.КонецТекущегоПериода(); текстЗапХ  = "

| период с нтп  по ктп;                 //          Период запроса

// Переменная запроса

[ хозОп = журналРасчетов.Зарплата_2.ХозОп;

| группировка хозОп упорядочить по хозОп.Наименование;";

// Выполняем запрос и возвращаем 1 в случае удачи, или 0, если есть проблемы если зХозОп.Выполнить(текстЗапХ) = 0 тогда

возврат;                            //                 Запрос не выполнен конецЕсли;

всего = 0;

пока зХозОп.Группировка("хозОп") = 1 цикл

сумРез = сумХозОп2(зХозОп.хозОп, жз, нтп); всего = всего + сумРез;

Сообщить("Сумма результатов по операции " + СокрП(зХозОп.хозОп) + " равна " + символТабуляции + сумРез);

конецЦикла; // пока

Сообщить("Всего по всем операциям:  " + всего); конецПроцедуры // Выполнить

Результат:

Сумма  результатов по операции 2013000 равна

5.5

Сумма  результатов по операции 2013001  равна

61793

Сумма  результатов по операции 2017002 равна

13642.6

Сумма  результатов по операции 2300100 равна

91301

Сумма  результатов по операции 2300111  равна

33550

Сумма  результатов по операции 2300112 равна

9600

Всего по всем операциям:  209892.1

Если  нужно   просмотреть  отдельные  составляющие  каждой  группы   с  указанием объекта, текст  запроса нужно  сформировать  следующим образом:

текстЗапХозОп ="

| период с нтп  по ктп;                 //          Период запроса

// Переменные запроса; добавляем переменную сотр

| сотр = журналРасчетов.Зарплата_2.Объект;

| хозОп  = журналРасчетов.Зарплата_2.ХозОп;

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

// Функция запроса

| функция сумХозОп = сумма(рез);

// Задаем порядок выборки данных

| группировка хозОп  упорядочить по хозОп.Наименование;

| группировка рез;";       //   Добавленная строка

Тогда в таблице результатов мы будем наблюдать приведенные на рис. 7.83 данные.

Рис. 7.84. Новый расчетный период

Вспомним, что архивные записи ЖЗ  (кроме фиксированных)  имеют иной цвет фона сопровождающих  их  иконок  голубой. Изменяется и  фон  иконок  в  журнале  документов:  иконки,  сопровождающие документы,  соответствующие  архивным расчетам, располагаются на темно-синем фоне.

В  новом  периоде  нет  пока  что  ни  одного  расчета. Но  не  следует торопиться  с их вводом, поскольку период открывает  новый год и скорее  всего для него  не определены используемые справочником  Сотрудники_2  календари  и  праздники.  Поэтому предварим ввод расчетов  заданием  праздников,  а вслед  выполним  автозаполнение  календарей.   Все   необходимые  средства  для   выполнения   этих  действий  у  нас   есть,  доступ  к ним осуществляется  посредством  пунктов  Календари  и  Праздники, расположенных в колонке Календари меню  интерфейса Ученик.

7.13.     ВЫВОДЫ

1.           ЖР  состоит из записей, называемых  расчетами; они попадают в журнал  в результате проведения соответствующих документов.

2.           Расчеты  могут быть  обязательными, дополнительными, вытесняющими, длинными, перерасчетами, зависимыми и обычными.  Полезно контролировать, имеют ли объекты  ЖЗ все обязательные расчеты.

3.             Длинные расчеты  могут существовать только  в документах. В ЖЗ длинный расчет разбивается на соответствующее число обычных  расчетов.

4.            В описание группы  ВР следует помещать информацию о программах, в которых  группа используется.

5.            Перенос данных  в  1С из других программ можно  выполнить, употребляя объекты  типа XBase.

6.             Основное  назначение  объектов типа Календарь и Праздники предоставлять данные для вычисления числа рабочих часов и дней в заданном временном интервале.

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

8.             В  окне  задания  свойств  документа,  вводящего расчеты,  нужно  активизировать флажок Расчет.

9.             Методы  ВвестиРасчет и ЗаписатьРасчет могут быть вызваны только  в модулях документов, вводящих расчеты.  Вызвать эти  методы  в модулях  иных  объектов, например в модуле формы списка ЖЗ или в модуле отчета (обработки), нельзя.

10.      Расчеты одного объекта располагаются в ЖЗ в порядке очередности их исполнения;

11.      Команда проведения документа при выполнении перепроведения  отслеживает все возможные произошедшие в документе изменения.

12.       Для обновления самовытесняющего расчета  при его повторном  вводе другим документом вместо метода ЗаписатьРасчет используется  метод ВвестиРасчет.

13.      Правила перерасчета обнуляют значение атрибута Рассчитана у зависимых расчетов.

14.        Правила перерасчета  не  срабатывают  при  расчете   записи  в  результате  выбора пункта меню Рассчитать запись.

15.       Разбивая длинный  расчет  на  части,  1С  сохраняет вычисленный  в  соответствии с документом, порождающим  расчет, результат для каждой  из частей разбиения.

16.     Если в результате  вытеснения расчет разбивается на к частей, то каждая  из этих частей  наследует общий результат, то есть общий результат  исходного расчета увеличивается в к раз, что входит в противоречие с документом; создавшим расчет.

17.       Предопределенные процедуры модуля  формы ЖР  позволяют  эффективно  управлять правами доступа пользователей.

8.       ПОВЫШЕНИЕ   ЭФФЕКТИВНОСТИ ФУНКЦИОНИРОВАНИЯ СИСТЕМЫ

8.1.          КРИТЕРИИ ЭФФЕКТИВНОСТИ

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

На первый взгляд мы не можем повлиять на эти характеристики, поскольку они заложены в систему ее разработчиками. Это действительно так, если эксплуатировать систему как она есть. Но теперь, когда мы понимаем ее узкие звенья, знаем, как их преобразовать, и умеем делать это, некоторые параметры эффективности можно улучшить.

8.2.          УВЕЛИЧЕНИЕ БЫСТРОДЕЙСТВИЯ

Частично  эта  задача  решена. Так, программы расчета  зарплаты,  формирования расчетных листков и ведомостей  перечислений в банк, которые мы разместили в модуле формы списка ЖЗ Зарплата_2 и привели  разд. 7.17.1-7.17.3, работают  существенно быстрее, чем аналогичные  встроенные  в  1С процедуры. Это достигнуто за счет утраты универсальности, но нам она в нашей  задаче и не нужна.

В этом  направлении  заинтересованные пользователи  могут  сделать  и  иные  продуктивные шаги.

Иной способ  повышения быстродействия  удаление из конфигурации ненужных вам объектов.  Сразу  это может  не получиться.  Так, если вы хотите удалить ВР ОплатаБЛ_Северн (больничный для  северных регионов),  то система выдаст предупреждение "Объект не может быть удален", а в окне сообщений выведет следующие текст:

Данный объект использован в: ПравилоПерерасчета.ОсновныеУдержания ПравилоПерерасчета.БольничныеЛисты ПравилоПерерасчета.НДФЛ_по_13

Однако после  устранения  объекта  из этих правил удаление ВР ОплатаБЛСеверн станет возможным.

Источник: Бартеньев О. В. 1С:Предприятие:  программирование для  всех.  Базовые объекты и расчеты на одной дискете. М.: Диалог-МИФИ, 2005. 464 с.

По теме:

  • Комментарии