Дипломная работа: Автоматизация управления садового товарищества «Дружба»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
87
РаботаСДиалогами. УстановитьПодменюПечати (мПодменюПечати,
ЭлементыФормы. ОсновныеДействияФормы, мДеревоМакетов. Строки. Количество () >
0);
РаботаСДиалогами. УстановитьПечатьПоУмолчанию (мПечатьПоУмолчанию,
ЭлементыФормы. ОсновныеДействияФормы, мДеревоМакетов, Метаданные (). Имя,
Новый Действие ("ОсновныеДействияФормыПечатьПоУмолчанию"));
Если Не мПодменюПечати = Неопределено Тогда
РаботаСДиалогами. СформироватьПодменю (мДеревоМакетов, мПодменюПечати,
Истина, Истина);
КонецЕсли;
КонецПроцедуры // УстановитьКнопкиПечати ()
// В зависимости от видимости колонок подпись "Итого: " вписывается
колонке, предшествующей колонке Результат
Процедура УстановитьТекстИтого ()
КоллекцияКолонок = ЭлементыФормы. Начисления. Колонки;
ИндексКолонкиРезультат = КоллекцияКолонок. Индекс (КоллекцияКолонок.
Результат);
// очищаем текст подвала всех колонок
Для каждого Колонка Из КоллекцияКолонок Цикл
Если Колонка. Имя <> "Результат" Тогда
Колонка. ТекстПодвала = ""
КонецЕсли;
КонецЦикла;
// вписывать надпись будем только тогда, когда слева от результатов
есть еще одна колонка
Если ИндексКолонкиРезультат > 0 Тогда
ИндексПредшествующейКолонки = ИндексКолонкиРезультат - 1;
// ищем предшествующую видимую колонку
Пока ИндексПредшествующейКолонки >= 0 Цикл
Колонка = КоллекцияКолонок. Получить (ИндексПредшествующейКолонки);
Если Колонка. Видимость Тогда
Прервать;
КонецЕсли;
ИндексПредшествующейКолонки = ИндексПредшествующейКолонки - 1;
КонецЦикла;
// вписывать надпись можем не в любую колонку, а только в некоторые
Если ИндексПредшествующейКолонки >= 0 Тогда
ИмяПредшествующейКолонки = Колонка. Имя;
Если ИмяПредшествующейКолонки = "Авторасчет"
Или ИмяПредшествующейКолонки = "Председатель"
Или ИмяПредшествующейКолонки = "Размер" Тогда
Колонка. ТекстПодвала = "Итого: "
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры // УстановитьТекстИтого ()
// Выставляет автоотметку незаполненного базового периода, если это
требуется и
// переписывает название колонки в т.п.
Процедура УправлениеВнешнимВидомФормы (ПриОткрытии = Ложь)
ЭтоПремияПроцентом = ВидРасчета. СпособРасчета = Перечисления.
СпособыРасчетаОплатыТруда. Процентом;
НеобходимБазовыйПериод = ЭтоПремияПроцентом Или ВидРасчета. ВидПремии
= Перечисления. ВидыПремии. ГодоваяПремия;
ЭлементыФормы. Начисления. Колонки. Размер. ТекстШапки =?
(ЭтоПремияПроцентом,"Процент","Сумма");
Если Не ПриОткрытии или Не ЭтоПремияПроцентом Тогда
ЭлементыФормы. Начисления. Колонки. Размер. Видимость =
ЭтоПремияПроцентом;
КонецЕсли;
ЭлементыФормы. ДатаНачалаБП. АвтоОтметкаНезаполненного=
НеобходимБазовыйПериод;
88
ЭлементыФормы. ДатаНачалаБП. ОтметкаНезаполненного= ЭлементыФормы.
ДатаНачалаБП. АвтоОтметкаНезаполненного И НЕ ЗначениеЗаполнено
(ДатаНачалаБП);
ЭлементыФормы. ДатаОкончанияБП. АвтоОтметкаНезаполненного=
НеобходимБазовыйПериод;
ЭлементыФормы. ДатаОкончанияБП. ОтметкаНезаполненного= ЭлементыФормы.
ДатаОкончанияБП. АвтоОтметкаНезаполненного И НЕ ЗначениеЗаполнено
(ДатаОкончанияБП);
УстановитьТекстИтого ();
КонецПроцедуры // УправлениеВнешнимВидомФормы ()
// Удаляет кнопку из набора кнопок, если она существует
Процедура УдалитьКнопкуИзНабора (ИмяКнопки, НаборКнопок)
Кнопка = НаборКнопок. Найти (ИмяКнопки);
Если Кнопка <> Неопределено Тогда
НаборКнопок. Удалить (НаборКнопок. Индекс (Кнопка));
КонецЕсли;
КонецПроцедуры // УдалитьКнопкуИзНабора ()
// Управляет видимостью элементов формы, зависящих от наличия
перерассчитываемого документа
Процедура ОбновитьВидимостьПоПерерассчитываемомуДокументу ()
// Заполнение команд подменю "Заполнить"
КнопкиЗаполнить = ЭлементыФормы. ДействияФормы. Кнопки.
ПодменюЗаполнить. Кнопки;
ДействиеПоКнопке = Новый Действие ("ДействияФормыЗаполнить");
Если ЗначениеЗаполнено (ПерерассчитываемыйДокумент) Тогда
УдалитьКнопкуИзНабора ("СписокЧленовСНТ", КнопкиЗаполнить);
Если КнопкиЗаполнить. Найти ("ПоПерерассчитываемомуДокументу") =
Неопределено Тогда
КнопкиЗаполнить. Вставить (0, "ПоПерерассчитываемомуДокументу",
ТипКнопкиКоманднойПанели. Действие,"По перерассчитываемому документу",
ДействиеПоКнопке);
КонецЕсли;
Иначе
УдалитьКнопкуИзНабора ("ПоПерерассчитываемомуДокументу",
КнопкиЗаполнить);
Если КнопкиЗаполнить. Найти ("СписокЧленовСНТ") = Неопределено Тогда
КнопкиЗаполнить. Вставить (0, "СписокЧленовСНТ",
ТипКнопкиКоманднойПанели. Действие,"Списком работников", ДействиеПоКнопке);
КонецЕсли;
КонецЕсли;
КонецПроцедуры // ОбновитьВидимостьПоПерерассчитываемомуДокументу ()
// Активизирует строки табличных частей документа после заполнения
Процедура УстановитьТекущуюСтрокуТабличнойЧасти ()
мСтароеФизлицо = Справочники. ФизическиеЛица. ПустаяСсылка ();
// активизируем во всех табличных частях 1-ю строку
Если Начисления. Количество () > 0 Тогда
СтрокаТЧ = Начисления. Получить (0);
ЭлементыФормы. Начисления. ТекущаяСтрока = СтрокаТЧ;
КонецЕсли;
КонецПроцедуры // УстановитьТекущуюСтрокуТабличнойЧасти ()
// // // // // // // // // // // // // // // // // // // // // // //
// // // // // // // // // // // // // // // // //
// ПРОЦЕДУРЫ - ОБРАБОТЧИКИ СОБЫТИЙ ФОРМЫ
// Процедура - обработчик события "ПередОткрытием" формы.
Процедура ПередОткрытием (Отказ, СтандартнаяОбработка)
// Установка кнопок печати
УстановитьКнопкиПечати ();
// Установка кнопок заполнение ТЧ
УстановитьКнопкиПодменюЗаполненияТЧ ();
КонецПроцедуры // ПередОткрытием ()
Процедура ПриОткрытии ()
Если ЭтоНовый () Тогда // проверить объект на то, что он еще не внесен
в ИБ
// Заполнить реквизиты значениями по умолчанию.
89
ОбщегоНазначения. ЗаполнитьШапкуДокумента (ЭтотОбъект,
глЗначениеПеременной ("глТекущийПользователь"));
// АБС
ВидРасчета = ВосстановитьЗначение ("ВидРасчетаПремияКРО");
ПоправочныйКоэффициент = 1;
ЧислоМесяцев = 1;
ПриСменеПериодаРегистрации ();
// -АБС
КонецЕсли;
// АБС
НачисленоПремии = ПолучитьПремиюВсего ();
Если НачисленоПремии>0 Тогда
ПоправочныйКоэффициент = Окр (СуммаКРаспределению/НачисленоПремии,4);
ЭлементыФормы. ТекстКоэффициента. Заголовок = "Справочно: коэффициент
пересчета = " + ПоправочныйКоэффициент;
Иначе
ПоправочныйКоэффициент = 1;
ЭлементыФормы. ТекстКоэффициента. Заголовок = "";
КонецЕсли;
// -АБС
РаботаСДиалогами. УстановитьДоступностьПоляВводаНомера (Метаданные (),
ЭтаФорма, ЭлементыФормы. ДействияФормы. Кнопки. Подменю1, ЭлементыФормы.
Номер);
// Заполним реквизит формы МесяцСтрока.
МесяцСтрока = РаботаСДиалогами. ДатаКакМесяцПредставление
(ПериодРегистрации);
СтруктураКолонок = Новый Структура ();
// Установить колонки, видимостью которых пользователь управлять не
может.
СтруктураКолонок. Вставить ("Председатель");
СтруктураКолонок. Вставить ("Размер");
// Установить ограничение - изменять видимость колонок для табличной
части Начисления
ОбработкаТабличныхЧастей. УстановитьИзменятьВидимостьКолонокТабЧасти
(ЭлементыФормы. Начисления. Колонки, СтруктураКолонок);
// Активизируем табличную часть
ТекущийЭлемент = ЭлементыФормы. Начисления;
// Вывести в заголовке формы статус документа (новый, не проведен,
проведен).
РаботаСДиалогами. УстановитьЗаголовокФормыДокумента (, ЭтотОбъект,
ЭтаФорма);
// Запомнить текущие значения реквизитов формы.
мТекущаяДатаДокумента = Дата;
// Получим и запомним ссылку на головную организацию
мЕдиничнаяОрганизация = ОбщегоНазначения. ЕдиничнаяОрганизация
(Организация);
// Установим видимость реквизитов в зависимости от уч. политики по
персоналу организаций
мМассивЭУ = Новый Массив ();
мМассивЭУ. Добавить (ЭлементыФормы. Начисления. Колонки.
ТабельныйНомерСтрока);
РаботаСДиалогами. УстановитьВидимостьЭУПоУчетнойПолитикеПоПерсоналу
(мМассивЭУ, глЗначениеПеременной ("глУчетнаяПолитикаПоПерсоналуОрганизации"),
Организация);
УправлениеВнешнимВидомФормы (Истина);
// Установим видимость в зависимости от наличия перерассчитываемого
документа
ОбновитьВидимостьПоПерерассчитываемомуДокументу ();
// Установить активный реквизит.
Если Не РаботаСДиалогами. АктивизироватьРеквизитВФорме (ЭтотОбъект,
ЭтаФорма) Тогда
ТекущийЭлемент = ЭлементыФормы. Начисления;
КонецЕсли;
КонецПроцедуры // ПриОткрытии ()
90
Процедура ПослеЗаписи ()
// Установка кнопок печати
УстановитьКнопкиПечати ();
// Вывести в заголовке формы статус документа (новый, не проведен,
проведен).
РаботаСДиалогами. УстановитьЗаголовокФормыДокумента (, ЭтотОбъект,
ЭтаФорма);
РаботаСДиалогами. ОбновитьПодсказкуКодНомерОбъекта (ЭтотОбъект.
Метаданные (), ЭлементыФормы. ДействияФормы. Кнопки. Подменю1, ЭлементыФормы.
Номер);
// АБС
СохранитьЗначение ("ВидРасчетаПремияКРО", ВидРасчета);
// -АБС
КонецПроцедуры // ПослеЗаписи ()
// Процедура - обработчик события "ОбработкаВыбора" формы.
Процедура ОбработкаВыбора (ЗначениеВыбора, Источник)
Если ТипЗнч (ЗначениеВыбора) = Тип ("Структура") Тогда
Команда = "";
Реквизиты = "";
Если ЗначениеВыбора. Свойство ("Команда", Команда) и Команда =
"ЗаполнитьСписокЧленовСНТ" Тогда
ВременнаяТаблица = ЗначениеВыбора. Данные. Выгрузить ();
Если ЗначениеВыбора. Свойство ("Реквизиты",Реквизиты) Тогда
ИмяКолонки =? (ВидРасчета. СпособРасчета = Перечисления.
СпособыРасчетаОплатыТруда. Процентом,"Размер","Результат");
ВременнаяТаблица. Колонки. Добавить (ИмяКолонки);
ВременнаяТаблица. ЗаполнитьЗначения (Реквизиты. Размер, ИмяКолонки);
КонецЕсли;
ВременнаяТаблица. Колонки. Добавить ("Авторасчет");
ВременнаяТаблица. ЗаполнитьЗначения (Истина,"Авторасчет");
// АБС
ВременнаяТаблица. Колонки. Добавить ("КТУ");
ВременнаяТаблица. ЗаполнитьЗначения (1,"КТУ");
ВременнаяТаблица. ЗаполнитьЗначения (100,"Размер");
// -АБС
Начисления. Загрузить (ВременнаяТаблица);
КонецЕсли;
КонецЕсли;
КонецПроцедуры // ОбработкаВыбора ()
// ПРОЦЕДУРЫ - ДЕЙСТВИЯ КОМАНДНЫХ ПАНЕЛЕЙ ФОРМЫ
// Процедура вызывается при выборе пункта подменю "Движения документа
по регистрам" // меню "Перейти" командной панели формы. Процедура
отрабатывает печать движений // документа по регистрам.
Процедура ДействияФормыДвиженияДокументаПоРегистрам (Кнопка)
РаботаСДиалогами. НапечататьДвиженияДокумента (Ссылка);
КонецПроцедуры // ДействияФормыДвиженияДокументаПоРегистрам ()
// Процедура-обработчик события нажатия кнопки "Рассчитать"
Процедура ДействияФормыРассчитатьВсе (Кнопка)
Если СуммаКРаспределению=0 Тогда
Предупреждение ("Не задана сумма к распределению. Расчет невозможен");
Возврат;
КонецЕсли;
Если ВидРасчета. СпособРасчета = Перечисления.
СпособыРасчетаОплатыТруда. Процентом Тогда
Если НЕ РаботаСДиалогами.
ЗаписатьДокументОтменивПроведениеПередВыполнениемДействия (ДокументОбъект,
ЭтаФорма, "рассчитать") Тогда
Возврат;
КонецЕсли;
ОбработкаКомментариев = глЗначениеПеременной ("глОбработкаСообщений");
ОбработкаКомментариев. УдалитьСообщения ();
РассчитатьПремию ();
ОбработкаКомментариев. ПоказатьСообщения ();
// АБС
91
НачисленоПремии = ПолучитьПремиюВсего ();
Если НачисленоПремии>0 Тогда
ПоправочныйКоэффициент = Окр (СуммаКРаспределению/НачисленоПремии,4);
ЭлементыФормы. ТекстКоэффициента. Заголовок = "Справочно: коэффициент
пересчета = " + ПоправочныйКоэффициент;
Для каждого СтрТЧ Из Начисления Цикл
СтрТЧ. Результат = Окр (СтрТЧ. База*СтрТЧ. КТУ*ПоправочныйКоэффициент,
2);
КонецЦикла;
Разность = СуммаКРаспределению-Начисления. Итог ("Результат");
Если Разность<>0 Тогда // разницу из-за ошибок округления отнесем на
последнюю строку
ПоследняяСтрока = Начисления [Начисления. Количество () - 1];
ПоследняяСтрока. Результат = ПоследняяСтрока. Результат + Разность;
КонецЕсли;
КонецЕсли;
// -АБС
ТекущаяСтрока = ЭлементыФормы. Начисления. ТекущаяСтрока;
Если ТекущаяСтрока <> Неопределено Тогда
мСтарыйРезультат = ТекущаяСтрока. Результат;
КонецЕсли;
Иначе
Сообщить ("Для премий, установленных в фиксированных суммах, расчет не
производится!")
КонецЕсли;
КонецПроцедуры // ДействияФормыРассчитатьВсе ()
// Процедура - вызывается при нажатии на кнопку "Заполнить"
Процедура ДействияФормыЗаполнить (Кнопка)
Если Начисления. Количество () > 0 Тогда
ТекстВопроса = "Перед заполнением табличные части будут очищены.
Заполнить?";
Ответ = Вопрос (ТекстВопроса, РежимДиалогаВопрос. ДаНет,,
КодВозвратаДиалога. Да,);
Если Ответ <> КодВозвратаДиалога. Да Тогда
Возврат;
КонецЕсли;
Начисления. Очистить ();
КонецЕсли;
Если Кнопка. Имя = "СписокЧленовСНТ" Тогда
ПроцедурыУправленияПерсоналом. ОткрытьФормуОтбораСпискаРаботников
(ЭтаФорма, ПериодРегистрации,, Организация,,,,"ПремииРаботниковОрганизаций",
Новый Структура ("Размер",100));
ИначеЕсли Кнопка. Имя = "ПоПерерассчитываемомуДокументу" Тогда
Если Не ЗаполнитьПоПерерассчитываемомуДокументу () Тогда
Сообщить ("Нет необходимости перерассчитывать заданный документ. Для
получения списка документов, подлежащих перерасчету, необходимо использовать:
пункт Перерасчет зарплаты меню Расчет зарплаты");
КонецЕсли;
КонецЕсли;
УстановитьТекущуюСтрокуТабличнойЧасти ();
КонецПроцедуры // ДействияФормыЗаполнить ()
Процедура ДействияФормыБезНалогов (Кнопка)
Док = Документы. ЗарплатаКВыплатеОрганизаций. СоздатьДокумент ();
Док. Заполнить (Новый Структура ("Ссылка, СпособРасчета",
Ссылка,"ЗаВычетомНалога"));
Док. ПолучитьФорму (). Открыть ();
КонецПроцедуры // ДействияФормыБезНалогов ()
Процедура ДействияФормыСНалогами (Кнопка)
Док = Документы. ЗарплатаКВыплатеОрганизаций. СоздатьДокумент ();
Док. Заполнить (Новый Структура ("Ссылка, СпособРасчета",
Ссылка,"ВсяНачисленнаяСумма"));
Док. ПолучитьФорму (). Открыть ();
КонецПроцедуры // ДействияФормыСНалогами ()
// Процедура выполняет открытие формы работы со свойствами документа
Источник: https://baza.diplomsite.ru/previewfile/814