#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
РасчетЗарплатыРасширенныйФормы.ДокументыПриСозданииНаСервере(ЭтаФорма);
Если Параметры.Ключ.Пустая() Тогда
ЗначенияДляЗаполнения = Новый Структура;
ЗначенияДляЗаполнения.Вставить("Ответственный", "Объект.Ответственный");
Если Параметры.ЗначенияЗаполнения.Свойство("Организация")
И ЗначениеЗаполнено(Параметры.ЗначенияЗаполнения.Организация) Тогда
Объект.Организация = Параметры.ЗначенияЗаполнения.Организация;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
ЗначенияДляЗаполнения.Вставить("Организация", "Объект.Организация");
КонецЕсли;
Если ПолучитьФункциональнуюОпцию("ВыполнятьРасчетЗарплатыПоПодразделениям") Тогда
ЗначенияДляЗаполнения.Вставить("Подразделение", "Объект.Подразделение");
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.ДатаНачала) Тогда
ЗначенияДляЗаполнения.Вставить("ДатаСобытия", "Объект.ДатаНачала");
КонецЕсли;
ЗарплатаКадры.ЗаполнитьПервоначальныеЗначенияВФорме(ЭтаФорма, ЗначенияДляЗаполнения);
ПриПолученииДанныхНаСервере();
КонецЕсли;
ВерсионированиеОбъектов.ПриСозданииНаСервере(ЭтаФорма);
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначения.ОбщийМодуль("ГосударственнаяСлужбаФормы");
Модуль.УстановитьПараметрыВыбораСотрудников(ЭтаФорма, "СотрудникиСотрудник");
КонецЕсли;
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
МодульПроцессыОбработкиДокументовЗарплата.ПриСозданииНаСервере(ЭтотОбъект, Объект);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтеграцияС1СДокументооборотом") Тогда
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность = ОбщегоНазначения.ОбщийМодуль(
"ИнтеграцияС1СДокументооборотБазоваяФункциональность");
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "ИзмененыНачисления" И Источник = ЭтаФорма Тогда
ЗаполнитьДанныеСотрудникаИзВРеменногоХранилища(Параметр.АдресВХранилище);
КонецЕсли;
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
ДатыЗапретаИзменения.ОбъектПриЧтенииНаСервере(ЭтаФорма, ТекущийОбъект);
ПриПолученииДанныхНаСервере();
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
МодульПроцессыОбработкиДокументовЗарплата.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
ПриПолученииДанныхНаСервере();
ПерерасчетЗарплаты.РегистрацияПерерасчетовПоПредварительнымДаннымВФоне(ТекущийОбъект.Ссылка);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
МодульПроцессыОбработкиДокументовЗарплата.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
Оповестить("Запись_ИзменениеМестРаботы", ПараметрыЗаписи, Объект.Ссылка);
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
МодульПроцессыОбработкиДокументовЗарплата.ПередЗакрытием(ЭтотОбъект, Объект, Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
МодульПроцессыОбработкиДокументовЗарплата.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи, Отказ);
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("ИнтеграцияС1СДокументооборотом") Тогда
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность = ОбщегоНазначения.ОбщийМодуль(
"ИнтеграцияС1СДокументооборотБазоваяФункциональность");
МодульИнтеграцияС1СДокументооборотБазоваяФункциональность.ПередЗаписьюНаСервере(
ЭтотОбъект,
ТекущийОбъект,
ПараметрыЗаписи);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
ЗарплатаКадрыРасширенныйКлиент.КлючевыеРеквизитыЗаполненияФормыОчиститьТаблицы(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура ДатаНачалаПриИзменении(Элемент)
ДатаНачалаПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьДокументыВведенныеПозже(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗарплатаКадрыРасширенныйКлиент.ОткрытьВведенныеНаДатуДокументы(ЭтотОбъект.ДокументыВведенныеПозже);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОткрытьРанееВведенныеДокументы(Элемент, НавигационнаяСсылка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ЗарплатаКадрыРасширенныйКлиент.ОткрытьВведенныеНаДатуДокументы(ЭтотОбъект.РанееВведенныеДокументы);
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСотрудники
&НаКлиенте
Процедура СотрудникиСотрудникПриИзменении(Элемент)
ЗаполнитьДанныеСотрудника();
КонецПроцедуры
&НаКлиенте
Процедура СотрудникиМестоРаботыПриИзменении(Элемент)
ЗаполнитьДанныеСотрудника();
КонецПроцедуры
&НаКлиенте
Процедура СотрудникиВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
Если Поле.Имя = "СотрудникиФОТ"
Или Поле.Имя = "СотрудникиНачисления" Тогда
ТекущиеДанные = Элементы.Сотрудники.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.Сотрудник) И ЗначениеЗаполнено(ТекущиеДанные.МестоРаботы) Тогда
ПараметрыОткрытия = Новый Структура;
ПараметрыОткрытия.Вставить("АдресВХранилище", АдресВХранилищеНачисленийИУдержаний(ТекущиеДанные.ПолучитьИдентификатор()));
ПараметрыОткрытия.Вставить("ТолькоПросмотр", ТолькоПросмотр);
ЗарплатаКадрыРасширенныйКлиент.ОткрытьФормуРедактированияСоставаНачисленийИУдержаний(ПараметрыОткрытия, ЭтаФорма);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СотрудникиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
НоваяСтрока = Объект.Сотрудники.Добавить();
Если Копирование И Элемент.ТекущиеДанные <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(НоваяСтрока, Элемент.ТекущиеДанные, "МестоРаботы");
КонецЕсли;
МаксимальныйИдентификаторСтрокиСотрудника = МаксимальныйИдентификаторСтрокиСотрудника + 1;
НоваяСтрока.ИдентификаторСтрокиСотрудника = МаксимальныйИдентификаторСтрокиСотрудника;
Элемент.ТекущаяСтрока = НоваяСтрока.ПолучитьИдентификатор();
Отказ = Истина;
КонецПроцедуры
&НаКлиенте
Процедура СотрудникиПередУдалением(Элемент, Отказ)
ТекущиеДанные = Элементы.Сотрудники.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено И ЗначениеЗаполнено(ТекущиеДанные.Сотрудник) Тогда
ИдентификаторТекущейСтрокиСотрудника = ТекущиеДанные.ИдентификаторСтрокиСотрудника;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СотрудникиПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
ТекущиеДанные = Элементы.Сотрудники.ТекущиеДанные;
Если ТекущиеДанные <> Неопределено Тогда
ИдентификаторТекущейСтрокиСотрудника = ТекущиеДанные.ИдентификаторСтрокиСотрудника;
Иначе
ИдентификаторТекущейСтрокиСотрудника = 0;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СотрудникиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
СотрудникиОбработкаВыбораНаСервере(ВыбранноеЗначение);
КонецПроцедуры
&НаКлиенте
Процедура СотрудникиПослеУдаления(Элемент)
Если ЗначениеЗаполнено(ИдентификаторТекущейСтрокиСотрудника) Тогда
УдалитьДанныеПоСотрудникам(ИдентификаторТекущейСтрокиСотрудника);
ИдентификаторТекущейСтрокиСотрудника = 0;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено, СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
#Область ОбработчикиСобытийПроцессыОбработкиДокументов
&НаКлиенте
Процедура Подключаемый_ВыполнитьЗадачуПоОбработкеДокумента(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
МодульПроцессыОбработкиДокументовЗарплата.ВыполнитьЗадачу(ЭтотОбъект, Команда, Объект)
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьЗадачуПоОбработкеДокументаОповещение(Контекст, ДополнительныеПараметры) Экспорт
ВыполнитьЗадачуПоОбработкеДокументаНаСервере(Контекст);
ВыполнитьОбработкуОповещения(ДополнительныеПараметры, Контекст);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьЗадачуПоОбработкеДокументаНаСервере(Контекст)
Если ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначения.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплата");
МодульПроцессыОбработкиДокументовЗарплата.ВыполнитьЗадачу(ЭтотОбъект, Контекст, Объект);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомментарийНаправившегоОткрытие(Элемент, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
МодульПроцессыОбработкиДокументовЗарплата.КомментарийНаправившегоОткрытие(ЭтотОбъект, Элемент, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_КомментарийСледующемуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ПроцессыОбработкиДокументовЗарплата") Тогда
МодульПроцессыОбработкиДокументовЗарплата = ОбщегоНазначенияКлиент.ОбщийМодуль("ПроцессыОбработкиДокументовЗарплатаКлиент");
МодульПроцессыОбработкиДокументовЗарплата.КомментарийСледующемуНачалоВыбора(ЭтотОбъект, Элемент, ДанныеВыбора, СтандартнаяОбработка);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.ВыполнитьКоманду(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаСервере
Процедура Подключаемый_ВыполнитьКомандуНаСервере(Контекст, Результат) Экспорт
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, Контекст, Объект, Результат);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
&НаКлиенте
Процедура ПодборСотрудников(Команда)
ПараметрыОткрытия = Неопределено;
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ЗарплатаКадрыПриложения.ГосударственнаяСлужба") Тогда
Модуль = ОбщегоНазначенияКлиент.ОбщийМодуль("ГосударственнаяСлужбаКлиент");
Модуль.УточнитьПараметрыОткрытияФормыВыбораСотрудников(ПараметрыОткрытия);
КонецЕсли;
КадровыйУчетКлиент.ВыбратьСотрудниковРаботающихВПериодеПоПараметрамОткрытияФормыСписка(
Элементы.Сотрудники,
Объект.Организация,
Объект.Подразделение,
Объект.ДатаНачала,
Объект.ДатаОкончания,
Истина,
АдресСпискаПодобранныхСотрудников(),
ПараметрыОткрытия);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ВыполнитьКомандуИнтеграции(Команда)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("ИнтеграцияС1СДокументооборотом") Тогда
МодульИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль(
"ИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент");
МодульИнтеграцияС1СДокументооборотБазоваяФункциональностьКлиент.ВыполнитьПодключаемуюКомандуИнтеграции(
Команда,
ЭтотОбъект,
Объект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаСервере
Процедура ДатаНачалаПриИзмененииНаСервере()
ПрочитатьВремяРегистрации();
УстановитьОтображениеНадписей();
КонецПроцедуры
&НаСервере
Процедура СотрудникиОбработкаВыбораНаСервере(ВыбранныеСотрудники)
Если ТипЗнч(ВыбранныеСотрудники) = Тип("СправочникСсылка.Сотрудники") Тогда
СписокСотрудников = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ВыбранныеСотрудники);
Иначе
СписокСотрудников = ВыбранныеСотрудники;
КонецЕсли;
СотрудникиКЗаполнению = Новый Массив;
Для каждого ВыбранныйСотрудник Из СписокСотрудников Цикл
Если Объект.Сотрудники.НайтиСтроки(Новый Структура("Сотрудник", ВыбранныйСотрудник)).Количество() = 0 Тогда
СотрудникиКЗаполнению.Добавить(ВыбранныйСотрудник);
КонецЕсли;
КонецЦикла;
ДобавитьДанныеПоСотрудникам(СотрудникиКЗаполнению);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьДанныеСотрудника()
Если Элементы.Сотрудники.ТекущаяСтрока <> Неопределено Тогда
ТекущиеДанные = Объект.Сотрудники.НайтиПоИдентификатору(Элементы.Сотрудники.ТекущаяСтрока);
ТекущиеДанные.ВремяРегистрации = ЗарплатаКадрыРасширенный.ВремяРегистрацииСотрудникаДокумента(Объект.Ссылка, ТекущиеДанные.Сотрудник, Объект.ДатаНачала);
Если ЗначениеЗаполнено(ТекущиеДанные.Сотрудник) Тогда
ДобавитьДанныеПоСотрудникам(ТекущиеДанные.Сотрудник);
Иначе
УстановитьПредставлениеНачисленийСтрокиСотрудников(ТекущиеДанные);
КонецЕсли;
Если ЗначениеЗаполнено(ИдентификаторТекущейСтрокиСотрудника) И ИдентификаторТекущейСтрокиСотрудника <> ТекущиеДанные.ИдентификаторСтрокиСотрудника Тогда
УдалитьДанныеПоСотрудникам(ИдентификаторТекущейСтрокиСотрудника);
КонецЕсли;
ИдентификаторТекущейСтрокиСотрудника = ТекущиеДанные.ИдентификаторСтрокиСотрудника;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДобавитьДанныеПоСотрудникам(СотрудникКДобавлению)
Если ТипЗнч(СотрудникКДобавлению) = Тип("СправочникСсылка.Сотрудники") Тогда
СписокСотрудников = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(СотрудникКДобавлению);
Иначе
СписокСотрудников = СотрудникКДобавлению;
КонецЕсли;
СотрудникиКЗаполнениюНачислений = Новый Массив;
ИдентификаторыСтрокСотрудников = Новый Массив;
ИдентификаторыОчищаемыхСтрокСотрудников = Новый Массив;
КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, СписокСотрудников, "СовокупнаяТарифнаяСтавка,ВидСовокупнойТарифнойСтавки", Объект.ДатаНачала);
Для каждого ДанныеСотрудника Из КадровыеДанныеСотрудников Цикл
СтрокиСотрудника = Объект.Сотрудники.НайтиСтроки(Новый Структура("Сотрудник", ДанныеСотрудника.Сотрудник));
Если СтрокиСотрудника.Количество() > 0 Тогда
СтрокаСотрудника = СтрокиСотрудника[0];
Если ЗначениеЗаполнено(СтрокаСотрудника.МестоРаботы) Тогда
СотрудникиКЗаполнениюНачислений.Добавить(СтрокаСотрудника);
ИдентификаторыОчищаемыхСтрокСотрудников.Добавить(СтрокаСотрудника.ИдентификаторСтрокиСотрудника);
КонецЕсли;
Иначе
МаксимальныйИдентификаторСтрокиСотрудника = МаксимальныйИдентификаторСтрокиСотрудника + 1;
СтрокаСотрудника = Объект.Сотрудники.Добавить();
СтрокаСотрудника.ИдентификаторСтрокиСотрудника = МаксимальныйИдентификаторСтрокиСотрудника;
КонецЕсли;
ИдентификаторыСтрокСотрудников.Добавить(СтрокаСотрудника.ИдентификаторСтрокиСотрудника);
ЗаполнитьЗначенияСвойств(СтрокаСотрудника, ДанныеСотрудника);
СтрокаСотрудника.ВидТарифнойСтавки = ДанныеСотрудника.ВидСовокупнойТарифнойСтавки;
КонецЦикла;
УдалитьДанныеПоСотрудникам(ИдентификаторыОчищаемыхСтрокСотрудников, Ложь);
Если СотрудникиКЗаполнениюНачислений.Количество() > 0 Тогда
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Период", Объект.ДатаНачала);
Запрос.УстановитьПараметр("СотрудникиКЗаполнениюНачислений", Объект.Сотрудники.Выгрузить(СотрудникиКЗаполнениюНачислений));
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
| &Период КАК Период,
| СотрудникиКЗаполнениюНачислений.Сотрудник,
| СотрудникиКЗаполнениюНачислений.ИдентификаторСтрокиСотрудника
|ПОМЕСТИТЬ ВТСотрудникиПериоды
|ИЗ
| &СотрудникиКЗаполнениюНачислений КАК СотрудникиКЗаполнениюНачислений";
Запрос.Выполнить();
ОписаниеФильтра = ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра("ВТСотрудникиПериоды", "Сотрудник");
ПараметрыПостроения = ЗарплатаКадрыОбщиеНаборыДанных.ПараметрыПостроенияДляСоздатьВТИмяРегистраСрез();
ПараметрыПостроенияФОТ = ЗарплатаКадрыОбщиеНаборыДанных.ПараметрыПостроенияДляСоздатьВТИмяРегистраСрез();
ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор(ПараметрыПостроения.Отборы, "Регистратор", "<>", Объект.Ссылка);
ЗарплатаКадрыОбщиеНаборыДанных.СоздатьВТИмяРегистраСрезПоследних(
"ПлановыеНачисления",
Запрос.МенеджерВременныхТаблиц,
Истина,
ОписаниеФильтра,
ПараметрыПостроения);
ЗарплатаКадрыОбщиеНаборыДанных.СоздатьВТИмяРегистраСрезПоследних(
"ПлановыйФОТ",
Запрос.МенеджерВременныхТаблиц,
Истина,
ОписаниеФильтра,
ПараметрыПостроенияФОТ);
ЗарплатаКадрыОбщиеНаборыДанных.СоздатьВТИмяРегистраСрезПоследних(
"ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников",
Запрос.МенеджерВременныхТаблиц,
Истина,
ОписаниеФильтра,
ПараметрыПостроения);
Запрос.Текст =
"ВЫБРАТЬ
| СотрудникиПериоды.Сотрудник,
| СотрудникиПериоды.ИдентификаторСтрокиСотрудника,
| ПлановыеНачисления.Начисление,
| ПлановыеНачисления.ДокументОснование,
| ВЫБОР
| КОГДА ПлановыйФОТ.ВкладВФОТ ЕСТЬ NULL
| ТОГДА ПлановыеНачисления.Размер
| ИНАЧЕ ПлановыйФОТ.ВкладВФОТ
| КОНЕЦ КАК Размер
|ПОМЕСТИТЬ ВТНачисления
|ИЗ
| ВТСотрудникиПериоды КАК СотрудникиПериоды
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТПлановыеНачисленияСрезПоследних КАК ПлановыеНачисления
| ЛЕВОЕ СОЕДИНЕНИЕ ВТПлановыйФОТСрезПоследних КАК ПлановыйФОТ
| ПО ПлановыеНачисления.Сотрудник = ПлановыйФОТ.Сотрудник
| И ПлановыеНачисления.Начисление = ПлановыйФОТ.Начисление
| И ПлановыеНачисления.ДокументОснование = ПлановыйФОТ.ДокументОснование
| ПО СотрудникиПериоды.Сотрудник = ПлановыеНачисления.Сотрудник
|ГДЕ
| ПлановыеНачисления.Используется
|;
|
|
|ВЫБРАТЬ
| Начисления.Сотрудник,
| Начисления.ИдентификаторСтрокиСотрудника,
| Начисления.Начисление,
| Начисления.ДокументОснование,
| Начисления.Размер КАК ТекущийРазмер,
| Начисления.Размер
|ИЗ
| ВТНачисления КАК Начисления";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(Объект.Начисления.Добавить(), Выборка);
КонецЦикла;
Запрос.Текст =
"ВЫБРАТЬ
| НачисленияСотрудников.Сотрудник,
| НачисленияСотрудников.ИдентификаторСтрокиСотрудника,
| НачисленияПоказатели.Показатель,
| ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.ДокументОснование,
| ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Значение
|ИЗ
| ВТНачисления КАК НачисленияСотрудников
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовРасчета.Начисления.Показатели КАК НачисленияПоказатели
| ПО НачисленияСотрудников.Начисление = НачисленияПоказатели.Ссылка
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудниковСрезПоследних КАК ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников
| ПО НачисленияСотрудников.Сотрудник = ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Сотрудник
| И НачисленияСотрудников.ДокументОснование = ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.ДокументОснование
| И (НачисленияПоказатели.Показатель = ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Показатель)
|ГДЕ
| ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников.Значение <> 0";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ЗаполнитьЗначенияСвойств(Объект.Показатели.Добавить(), Выборка);
КонецЦикла;
КонецЕсли;
КонецЕсли;
ПрименитьИзменениеНачисленийПоМестамРаботы(ИдентификаторыСтрокСотрудников);
ПолучитьБухучетНачислений(СотрудникиКЗаполнениюНачислений);
КонецПроцедуры
&НаСервере
Процедура ПолучитьБухучетНачислений(СотрудникиКЗаполнениюНачислений)
СотрудникиПериоды = Объект.Сотрудники.Выгрузить(СотрудникиКЗаполнениюНачислений);
СотрудникиПериоды.Колонки.ВремяРегистрации.Имя = "Период";
ТаблицаСотрудников = СотрудникиПериоды.СкопироватьКолонки("Сотрудник,Период");
ТаблицаСотрудников.Колонки.Добавить("Начисление", Новый ОписаниеТипов("ПланВидовРасчетаСсылка.Начисления"));
ТаблицаСотрудников.Колонки.Добавить("ДокументОснование", Метаданные.ОпределяемыеТипы.РегистраторыБухучетаНачисленийСотрудников.Тип);
Отбор = Новый Структура("ИдентификаторСтрокиСотрудника");
Для каждого СтрокаСотрудника Из СотрудникиПериоды Цикл
Отбор.ИдентификаторСтрокиСотрудника = СтрокаСотрудника.ИдентификаторСтрокиСотрудника;
НачисленияСотрудника = Объект.Начисления.НайтиСтроки(Отбор);
Для каждого СтрокаНачислений Из НачисленияСотрудника Цикл
НоваяСтрока = ТаблицаСотрудников.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаСотрудника);
НоваяСтрока.Начисление = СтрокаНачислений.Начисление;
Если ЗначениеЗаполнено(СтрокаНачислений.ДокументОснование) Тогда
НоваяСтрока.ДокументОснование = СтрокаНачислений.ДокументОснование;
КонецЕсли;
КонецЦикла;
КонецЦикла;
БухучетНачислений = ОтражениеЗарплатыВБухучетеРасширенный.БухучетНачисленийСотрудников(ТаблицаСотрудников, Объект.Ссылка);
Отбор = Новый Структура("Сотрудник");
Для каждого СтрокаСотрудника Из СотрудникиПериоды Цикл
Отбор.Сотрудник = СтрокаСотрудника.Сотрудник;
НайденныеСтроки = БухучетНачислений.НайтиСтроки(Отбор);
Для каждого СтрокаБухучет Из НайденныеСтроки Цикл
НоваяСтрока = Объект.БухучетНачислений.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаБухучет);
НоваяСтрока.ИдентификаторСтрокиСотрудника = СтрокаСотрудника.ИдентификаторСтрокиСотрудника;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ПрименитьИзменениеНачисленийПоМестамРаботы(ИдентификаторыСтрокСотрудников)
Если ТипЗнч(ИдентификаторыСтрокСотрудников) = Тип("Массив") Тогда
СписокИдентификаторовСтрокСотрудников = ИдентификаторыСтрокСотрудников;
Иначе
СписокИдентификаторовСтрокСотрудников = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ИдентификаторыСтрокСотрудников);
КонецЕсли;
СтрокиКОбновлению = Новый Массив;
Для каждого ИдентификаторСтрокиСотрудника Из СписокИдентификаторовСтрокСотрудников Цикл
НайденныеСтроки = Объект.Сотрудники.НайтиСтроки(Новый Структура("ИдентификаторСтрокиСотрудника", ИдентификаторСтрокиСотрудника));
Если НайденныеСтроки.Количество() > 0 Тогда
СтрокаСотрудников = НайденныеСтроки[0];
СтрокиКОбновлению.Добавить(СтрокаСотрудников);
Если ЗначениеЗаполнено(СтрокаСотрудников.МестоРаботы) Тогда
ПрименитьИзменениеНачисленийПоМестамРаботыСтрокиСотрудника(СтрокаСотрудников);
КонецЕсли;
КонецЕсли;
КонецЦикла;
РассчитатьФОТП(СтрокиКОбновлению);
УстановитьПредставленияНачислений(СтрокиКОбновлению);
КонецПроцедуры
&НаСервере
Процедура ПрименитьИзменениеНачисленийПоМестамРаботыСтрокиСотрудника(СтрокаСотрудников)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", СтрокаСотрудников.МестоРаботы);
Запрос.Текст =
"ВЫБРАТЬ
| МестаРаботыНачисления.Начисление КАК Начисление,
| МестаРаботыПоказатели.Показатель КАК Показатель,
| ЕСТЬNULL(МестаРаботыПоказатели.Значение, 0) КАК Значение,
| МестаРаботыНачисления.Начисление.РеквизитДопУпорядочивания КАК НачислениеПорядок,
| МестаРаботыПоказатели.Показатель.РеквизитДопУпорядочивания КАК ПоказательПорядок
|ИЗ
| Справочник.МестаРаботы.Начисления КАК МестаРаботыНачисления
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.МестаРаботы.Показатели КАК МестаРаботыПоказатели
| ПО МестаРаботыНачисления.Ссылка = МестаРаботыПоказатели.Ссылка
| И МестаРаботыНачисления.ИдентификаторСтрокиВидаРасчета = МестаРаботыПоказатели.ИдентификаторСтрокиВидаРасчета
|ГДЕ
| МестаРаботыНачисления.Ссылка = &Ссылка
|
|УПОРЯДОЧИТЬ ПО
| НачислениеПорядок,
| Начисление,
| ПоказательПорядок,
| Показатель";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
СтруктураПоиска = Новый Структура("ИдентификаторСтрокиСотрудника", СтрокаСотрудников.ИдентификаторСтрокиСотрудника);
НачисленияСотрудника = Объект.Начисления.Выгрузить(СтруктураПоиска);
ПоказателиСотрудника = Объект.Показатели.Выгрузить(СтруктураПоиска);
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.СледующийПоЗначениюПоля("Начисление") Цикл
ОтменитьНачисление = Ложь;
Пока Выборка.Следующий() Цикл
Если Выборка.Значение = 0 Тогда
ОтменитьНачисление = Истина;
Иначе
СтрокаПоказателей = ПоказателиСотрудника.Найти(Выборка.Показатель, "Показатель");
Если СтрокаПоказателей = Неопределено Тогда
СтрокаПоказателей = ПоказателиСотрудника.Добавить();
СтрокаПоказателей.ИдентификаторСтрокиСотрудника = СтрокаСотрудников.ИдентификаторСтрокиСотрудника;
СтрокаПоказателей.Показатель = Выборка.Показатель;
КонецЕсли;
СтрокаПоказателей.Значение = Выборка.Значение;
КонецЕсли;
КонецЦикла;
СтрокаНачислений = НачисленияСотрудника.Найти(Выборка.Начисление, "Начисление");
Если ОтменитьНачисление И СтрокаНачислений <> Неопределено Тогда
СтрокаНачислений.Действие = Перечисления.ДействияСНачислениямиИУдержаниями.Отменить;
ИначеЕсли СтрокаНачислений = Неопределено Тогда
СтрокаНачислений = НачисленияСотрудника.Добавить();
СтрокаНачислений.ИдентификаторСтрокиСотрудника = СтрокаСотрудников.ИдентификаторСтрокиСотрудника;
СтрокаНачислений.Начисление = Выборка.Начисление;
СтрокаНачислений.Действие = Перечисления.ДействияСНачислениямиИУдержаниями.Утвердить;
КонецЕсли;
КонецЦикла;
УдалитьДанныеПоСотрудникам(СтрокаСотрудников.ИдентификаторСтрокиСотрудника, Ложь);
Для каждого СтрокаНачислений Из НачисленияСотрудника Цикл
ЗаполнитьЗначенияСвойств(Объект.Начисления.Добавить(), СтрокаНачислений);
КонецЦикла;
Для каждого СтрокаПоказателей Из ПоказателиСотрудника Цикл
ЗаполнитьЗначенияСвойств(Объект.Показатели.Добавить(), СтрокаПоказателей);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура РассчитатьФОТП(СтрокиСотрудников = Неопределено)
Если Не ЗначениеЗаполнено(Объект.ДатаНачала) Тогда
Возврат;
КонецЕсли;
Если СтрокиСотрудников = Неопределено Тогда
СтрокиСотрудников = Объект.Сотрудники;
КонецЕсли;
СоответствиеСотрудниковПериодовИдентификаторам = Новый Соответствие;
ГоловнаяОрганизация = ЗарплатаКадры.ГоловнаяОрганизация(Объект.Организация);
ТаблицаНачислений = ПлановыеНачисленияСотрудников.ТаблицаНачисленийДляРасчетаВторичныхДанных();
ТаблицаПоказателей = ПлановыеНачисленияСотрудников.ТаблицаИзвестныеПоказатели();
РассчитываемыеОбъекты = Новый Соответствие;
ОтборПоСотруднику = Новый Структура("ИдентификаторСтрокиСотрудника");
Для Каждого СтрокаСотрудника Из СтрокиСотрудников Цикл
СоответствиеПериодаИдентификатору = СоответствиеСотрудниковПериодовИдентификаторам[СтрокаСотрудника.Сотрудник];
Если СоответствиеПериодаИдентификатору = Неопределено Тогда
СоответствиеПериодаИдентификатору = Новый Соответствие;
СоответствиеСотрудниковПериодовИдентификаторам.Вставить(СтрокаСотрудника.Сотрудник, СоответствиеПериодаИдентификатору);
КонецЕсли;
СоответствиеПериодаИдентификатору.Вставить(СтрокаСотрудника.ВремяРегистрации, СтрокаСотрудника.ИдентификаторСтрокиСотрудника);
ОтборПоСотруднику.Вставить("ИдентификаторСтрокиСотрудника", СтрокаСотрудника.ИдентификаторСтрокиСотрудника);
СтрокиПоСотруднику = Объект.Начисления.НайтиСтроки(ОтборПоСотруднику);
Для Каждого СтрокаНачисления Из СтрокиПоСотруднику Цикл
Если СтрокаНачисления.Действие = Перечисления.ДействияСНачислениямиИУдержаниями.Отменить Тогда
Продолжить;
КонецЕсли;
ДанныеНачисления = ТаблицаНачислений.Добавить();
ДанныеНачисления.Сотрудник = СтрокаСотрудника.Сотрудник;
ДанныеНачисления.ГоловнаяОрганизация = ГоловнаяОрганизация;
ДанныеНачисления.Период = СтрокаСотрудника.ВремяРегистрации;
ДанныеНачисления.Начисление = СтрокаНачисления.Начисление;
ДанныеНачисления.ДокументОснование = СтрокаНачисления.ДокументОснование;
ДанныеНачисления.Размер = СтрокаНачисления.Размер;
КонецЦикла;
СтрокиПоСотруднику = Объект.Показатели.НайтиСтроки(ОтборПоСотруднику);
Для Каждого СтрокаПоказателя Из СтрокиПоСотруднику Цикл
ДанныеПоказателя = ТаблицаПоказателей.Добавить();
ДанныеПоказателя.Сотрудник = СтрокаСотрудника.Сотрудник;
ДанныеПоказателя.ГоловнаяОрганизация = ГоловнаяОрганизация;
ДанныеПоказателя.Период = СтрокаСотрудника.ВремяРегистрации;
ДанныеПоказателя.Показатель = СтрокаПоказателя.Показатель;
ДанныеПоказателя.ДокументОснование = СтрокаПоказателя.ДокументОснование;
ДанныеПоказателя.Значение = СтрокаПоказателя.Значение;
КонецЦикла;
КонецЦикла;
УстановитьПривилегированныйРежим(Истина);
РассчитанныеДанные = ПлановыеНачисленияСотрудников.РассчитатьВторичныеДанныеПлановыхНачислений(ТаблицаНачислений, ТаблицаПоказателей);
УстановитьПривилегированныйРежим(Ложь);
РассчитанныеДанные.ТарифныеСтавки.Колонки.Добавить("ИдентификаторСтрокиСотрудника");
Для Каждого СтрокаТарифнойСтавки Из РассчитанныеДанные.ТарифныеСтавки Цикл
СтрокаТарифнойСтавки.ИдентификаторСтрокиСотрудника = СоответствиеСотрудниковПериодовИдентификаторам[СтрокаТарифнойСтавки.Сотрудник][СтрокаТарифнойСтавки.Период];
КонецЦикла;
РассчитанныеДанные.ПлановыйФОТ.Колонки.Добавить("ИдентификаторСтрокиСотрудника");
Для Каждого СтрокаНачисления Из РассчитанныеДанные.ПлановыйФОТ Цикл
СтрокаНачисления.ИдентификаторСтрокиСотрудника = СоответствиеСотрудниковПериодовИдентификаторам[СтрокаНачисления.Сотрудник][СтрокаНачисления.Период];
КонецЦикла;
Для каждого ОписаниеНачисления Из РассчитанныеДанные.ПлановыйФОТ Цикл
Отбор = Новый Структура("ИдентификаторСтрокиСотрудника, Начисление, ДокументОснование");
Отбор.Вставить("ИдентификаторСтрокиСотрудника", ОписаниеНачисления.ИдентификаторСтрокиСотрудника);
Отбор.Вставить("Начисление", ОписаниеНачисления.Начисление);
Отбор.Вставить("ДокументОснование", ОписаниеНачисления.ДокументОснование);
СтрокиНачисления = Объект.Начисления.НайтиСтроки(Отбор);
Для каждого СтрокаНачисления Из СтрокиНачисления Цикл
Если СтрокаНачисления.Действие = Перечисления.ДействияСНачислениямиИУдержаниями.Отменить Тогда
Продолжить;
КонецЕсли;
СтрокаНачисления.Размер = ОписаниеНачисления.Размер;
КонецЦикла;
КонецЦикла;
ЗаполнитьЗначенияСовокупныхТарифныхСтавокСотрудников(СтрокиСотрудников, РассчитанныеДанные.ТарифныеСтавки);
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьЗначенияСовокупныхТарифныхСтавокСотрудников(СтрокиСотрудников, ЗначенияСовокупныхТарифныхСтавок)
Для каждого СтрокаСотрудника Из СтрокиСотрудников Цикл
СтрокаСотрудника.СовокупнаяТарифнаяСтавка = 0;
СтрокаСотрудника.ВидТарифнойСтавки = Неопределено;
КонецЦикла;
Для каждого СтрокаСотрудника Из СтрокиСотрудников Цикл
ДанныеСотрудника = ЗначенияСовокупныхТарифныхСтавок.НайтиСтроки(Новый Структура("Период, Сотрудник", СтрокаСотрудника.ВремяРегистрации, СтрокаСотрудника.Сотрудник));
Если ДанныеСотрудника.Количество() > 0 Тогда
СтрокаСотрудника.СовокупнаяТарифнаяСтавка = ДанныеСотрудника[0].СовокупнаяТарифнаяСтавка;
СтрокаСотрудника.ВидТарифнойСтавки = ДанныеСотрудника[0].ВидТарифнойСтавки;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УдалитьДанныеПоСотрудникам(ИдентификаторыСтрокСотрудников, УдалятьСтрокиСотрудников = Истина)
Если ТипЗнч(ИдентификаторыСтрокСотрудников) = Тип("Массив") Тогда
ИдентификаторыСтрок = ИдентификаторыСтрокСотрудников;
Иначе
ИдентификаторыСтрок = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ИдентификаторыСтрокСотрудников);
КонецЕсли;
Для каждого ИдентификаторСтрокиСотрудника Из ИдентификаторыСтрок Цикл
СтруктураПоиска = Новый Структура("ИдентификаторСтрокиСотрудника", ИдентификаторСтрокиСотрудника);
СтрокиКУдалению = Объект.Начисления.НайтиСтроки(СтруктураПоиска);
Для каждого СтрокаКУдалению Из СтрокиКУдалению Цикл
Объект.Начисления.Удалить(СтрокаКУдалению);
КонецЦикла;
СтрокиКУдалению = Объект.Показатели.НайтиСтроки(СтруктураПоиска);
Для каждого СтрокаКУдалению Из СтрокиКУдалению Цикл
Объект.Показатели.Удалить(СтрокаКУдалению);
КонецЦикла;
СтрокиКУдалению = Объект.БухучетНачислений.НайтиСтроки(СтруктураПоиска);
Для каждого СтрокаКУдалению Из СтрокиКУдалению Цикл
Объект.БухучетНачислений.Удалить(СтрокаКУдалению);
КонецЦикла;
Если УдалятьСтрокиСотрудников Тогда
СтрокиКУдалению = Объект.Сотрудники.НайтиСтроки(СтруктураПоиска);
Для каждого СтрокаКУдалению Из СтрокиКУдалению Цикл
Объект.Сотрудники.Удалить(СтрокаКУдалению);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура УстановитьПредставленияНачисленийСотрудников(СотрудникиКУстановкеПредставлений)
Если ТипЗнч(СотрудникиКУстановкеПредставлений) = Тип("Массив") Тогда
СписокИдентификаторовСтрокСотрудников = СотрудникиКУстановкеПредставлений;
Иначе
СписокИдентификаторовСтрокСотрудников = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(СотрудникиКУстановкеПредставлений);
КонецЕсли;
СтрокиКОбновлению = Новый Массив;
Для каждого ИдентификаторСтрокиСотрудника Из СписокИдентификаторовСтрокСотрудников Цикл
НайденныеСтроки = Объект.Сотрудники.НайтиСтроки(Новый Структура("ИдентификаторСтрокиСотрудника", ИдентификаторСтрокиСотрудника));
Если НайденныеСтроки.Количество() > 0 Тогда
СтрокиКОбновлению.Добавить(НайденныеСтроки[0]);
КонецЕсли;
КонецЦикла;
УстановитьПредставленияНачислений(СтрокиКОбновлению);
УстановитьОтображениеНадписей();
КонецПроцедуры
&НаСервере
Процедура УстановитьПредставленияНачислений(СтрокиСотрудников = Неопределено)
Если СтрокиСотрудников = Неопределено Тогда
СтрокиСотрудников = Объект.Сотрудники
КонецЕсли;
Если СтрокиСотрудников.Количество() > 0 Тогда
Для каждого СтрокаСотрудников Из СтрокиСотрудников Цикл
УстановитьПредставлениеНачисленийСтрокиСотрудников(СтрокаСотрудников);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьПредставлениеНачисленийСтрокиСотрудников(СтрокаСотрудников)
ФОТСотрудника = 0;
ПредставлениеНачислений = "";
Если ЗначениеЗаполнено(СтрокаСотрудников.Сотрудник) Тогда
Если Не ЗначениеЗаполнено(СтрокаСотрудников.МестоРаботы) Тогда
ПредставлениеНачислений = НСтр("ru='Не выбрано место работы'");
Иначе
НачисленияСотрудника = Объект.Начисления.НайтиСтроки(Новый Структура("ИдентификаторСтрокиСотрудника", СтрокаСотрудников.ИдентификаторСтрокиСотрудника));
Если НачисленияСотрудника.Количество() = 0 Тогда
ПредставлениеНачислений = НСтр("ru='Ввести'");
Иначе
ТаблицаНачислений = Новый ТаблицаЗначений;
ТаблицаНачислений.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
ТаблицаНачислений.Колонки.Добавить("Размер", Новый ОписаниеТипов("Число"));
ТаблицаНачислений.Колонки.Добавить("РеквизитДопУпорядочивания", Новый ОписаниеТипов("Число"));
РеквизитыНачислений = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(
Объект.Начисления.Выгрузить(НачисленияСотрудника, "Начисление").ВыгрузитьКолонку("Начисление"), "Наименование,РеквизитДопУпорядочивания");
Для каждого СтрокаНачислений Из НачисленияСотрудника Цикл
Если СтрокаНачислений.Действие = Перечисления.ДействияСНачислениямиИУдержаниями.Отменить Тогда
Продолжить;
КонецЕсли;
НоваяСтрокаНачислений = ТаблицаНачислений.Добавить();
НоваяСтрокаНачислений.Размер = СтрокаНачислений.Размер;
РеквизитыНачисления = РеквизитыНачислений.Получить(СтрокаНачислений.Начисление);
Если РеквизитыНачисления <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(НоваяСтрокаНачислений, РеквизитыНачисления);
КонецЕсли;
КонецЦикла;
ТаблицаНачислений.Сортировать("РеквизитДопУпорядочивания");
Для каждого СтрокаТаблицы Из ТаблицаНачислений Цикл
ФОТСотрудника = ФОТСотрудника + СтрокаТаблицы.Размер;
Если Не ПустаяСтрока(ПредставлениеНачислений) Тогда
ПредставлениеНачислений = ПредставлениеНачислений + ", ";
КонецЕсли;
ПредставлениеНачислений = ПредставлениеНачислений + СтрокаТаблицы.Наименование;
Если СтрокаТаблицы.Размер <> 0 Тогда
ПредставлениеНачислений = ПредставлениеНачислений + "=" + СтрокаТаблицы.Размер;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецЕсли;
СтрокаСотрудников.ФОТ = ФОТСотрудника;
СтрокаСотрудников.НачисленияПредставление = ПредставлениеНачислений;
КонецПроцедуры
&НаСервере
Процедура ПриПолученииДанныхНаСервере()
МаксимальныйИдентификаторСтрокиСотрудника = ЗарплатаКадрыРасширенный.МаксимальныйИдентификаторСтроки(
Объект.Сотрудники, "ИдентификаторСтрокиСотрудника");
ЗаполнитьТекущиеРазмеры();
УстановитьПредставленияНачислений();
ПрочитатьВремяРегистрации();
ЗарплатаКадрыРасширенный.ОформлениеНесколькихДокументовНаОднуДатуДополнитьФорму(ЭтотОбъект);
ЗарплатаКадры.КлючевыеРеквизитыЗаполненияФормыЗаполнитьПредупреждения(ЭтаФорма);
ЗарплатаКадрыКлиентСервер.КлючевыеРеквизитыЗаполненияФормыУстановитьОтображениеПредупреждения(ЭтаФорма);
УстановитьОтображениеНадписей();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьТекущиеРазмеры()
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ИзменениеМестРаботыНачисления.Ссылка.ДатаНачала КАК Период,
| ИзменениеМестРаботыСотрудники.Сотрудник,
| ИзменениеМестРаботыНачисления.ИдентификаторСтрокиСотрудника,
| ИзменениеМестРаботыНачисления.Начисление,
| ИзменениеМестРаботыНачисления.ДокументОснование
|ПОМЕСТИТЬ ВТСотрудникиНачисления
|ИЗ
| Документ.ИзменениеМестРаботы.Начисления КАК ИзменениеМестРаботыНачисления
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ИзменениеМестРаботы.Сотрудники КАК ИзменениеМестРаботыСотрудники
| ПО ИзменениеМестРаботыНачисления.Ссылка = ИзменениеМестРаботыСотрудники.Ссылка
| И ИзменениеМестРаботыНачисления.ИдентификаторСтрокиСотрудника = ИзменениеМестРаботыСотрудники.ИдентификаторСтрокиСотрудника
|ГДЕ
| ИзменениеМестРаботыНачисления.Ссылка = &Ссылка
| И НЕ ИзменениеМестРаботыНачисления.Начисление.Рассчитывается
|;
|
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| СотрудникиНачисления.Период
|ИЗ
| ВТСотрудникиНачисления КАК СотрудникиНачисления";
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ОписаниеФильтра = ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра("ВТСотрудникиНачисления", "Сотрудник,Начисление");
ПараметрыПостроения = ЗарплатаКадрыОбщиеНаборыДанных.ПараметрыПостроенияДляСоздатьВТИмяРегистраСрез();
ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор(ПараметрыПостроения.Отборы, "Регистратор", "<>", Объект.Ссылка);
ЗапросПлановыеНачисления = ЗарплатаКадрыОбщиеНаборыДанных.ЗапросВТИмяРегистраСрез(
"ПлановыеНачисления",
Истина,
ОписаниеФильтра,
ПараметрыПостроения,
Истина,
"");
ЗапросПлановыеНачисления.МенеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц;
Выборка = ЗапросПлановыеНачисления.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Используется Тогда
СтруктураПоиска = Новый Структура("ИдентификаторСтрокиСотрудника,Начисление,ДокументОснование");
ЗаполнитьЗначенияСвойств(СтруктураПоиска, Выборка);
СтрокиСотрудника = Объект.Начисления.НайтиСтроки(СтруктураПоиска);
Если СтрокиСотрудника.Количество() > 0 Тогда
СтрокиСотрудника[0].ТекущийРазмер = Выборка.Размер;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура УстановитьОтображениеНадписей()
УстановитьПривилегированныйРежим(Истина);
СотрудникиДаты = Объект.Сотрудники.Выгрузить(, "ВремяРегистрации, Сотрудник");
ЗарплатаКадрыРасширенный.УстановитьТекстНадписиОКонкурирующихДокументахПлановыхНачислений(ЭтотОбъект, СотрудникиДаты, Объект.Ссылка);
КонецПроцедуры
&НаСервере
Процедура ПрочитатьВремяРегистрации()
СотрудникиДаты = Новый ТаблицаЗначений;
СотрудникиДаты.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
СотрудникиДаты.Колонки.Добавить("ДатаСобытия", Новый ОписаниеТипов("Дата"));
Для Каждого СтрокаСотрудника Из Объект.Сотрудники Цикл
НоваяСтрока = СотрудникиДаты.Добавить();
НоваяСтрока.ДатаСобытия = Объект.ДатаНачала;
НоваяСтрока.Сотрудник = СтрокаСотрудника.Сотрудник;
КонецЦикла;
ВремяРегистрацииДокумента = ЗарплатаКадрыРасширенный.ЗначенияВремениРегистрацииДокумента(Объект.Ссылка, СотрудникиДаты);
ВремяРегистрацииСотрудников = ВремяРегистрацииДокумента.Получить(Объект.ДатаНачала);
Для Каждого СтрокаСотрудника Из Объект.Сотрудники Цикл
СтрокаСотрудника.ВремяРегистрации = ВремяРегистрацииСотрудников.Получить(СтрокаСотрудника.Сотрудник);
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция АдресСпискаПодобранныхСотрудников()
Возврат ПоместитьВоВременноеХранилище(СотрудникиДокумента(), УникальныйИдентификатор);
КонецФункции
&НаСервере
Функция СотрудникиДокумента()
Возврат Объект.Сотрудники.Выгрузить(,"Сотрудник").ВыгрузитьКолонку("Сотрудник");
КонецФункции
&НаСервере
Функция АдресВХранилищеНачисленийИУдержаний(ИдентификаторСтроки)
ТекущиеДанные = Объект.Сотрудники.НайтиПоИдентификатору(ИдентификаторСтроки);
ПараметрыОткрытия = ЗарплатаКадрыРасширенныйКлиентСервер.ПараметрыРедактированияСоставаНачисленийИУдержаний();
ПараметрыОткрытия.ВладелецНачисленийИУдержаний = ТекущиеДанные.Сотрудник;
ПараметрыОткрытия.ДатаРедактирования = ТекущиеДанные.ВремяРегистрации;
ПараметрыОткрытия.Организация = Объект.Организация;
ПараметрыОткрытия.РежимРаботы = 3;
ПараметрыОткрытия.РедактироватьБухучетНачислений = ПолучитьФункциональнуюОпцию("РегистрироватьБухучетПлановыхНачислений");
ДополнитьСтруктуруНачислениямиИПоказателями(ПараметрыОткрытия, ТекущиеДанные);
Возврат ПоместитьВоВременноеХранилище(ПараметрыОткрытия, УникальныйИдентификатор);
КонецФункции
&НаСервере
Процедура ЗаполнитьДанныеСотрудникаИзВРеменногоХранилища(АдресВХранилище)
ДанныеИзХранилища = ПолучитьИзВременногоХранилища(АдресВХранилище);
Если ДанныеИзХранилища <> Неопределено Тогда
Сотрудник = ДанныеИзХранилища.ВладелецНачисленийИУдержаний;
СтрокиСотрудников =Объект.Сотрудники.НайтиСтроки(Новый Структура("Сотрудник", Сотрудник));
Если СтрокиСотрудников.Количество() > 0 Тогда
СтрокаСотрудника = СтрокиСотрудников[0];
УдалитьДанныеПоСотрудникам(СтрокаСотрудника.ИдентификаторСтрокиСотрудника, Ложь);
Для каждого НачислениеСотрудника Из ДанныеИзХранилища.Начисления Цикл
НоваяСтрока = Объект.Начисления.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, НачислениеСотрудника);
НоваяСтрока.ИдентификаторСтрокиСотрудника = СтрокаСотрудника.ИдентификаторСтрокиСотрудника;
КонецЦикла;
Для каждого ПоказательСотрудника Из ДанныеИзХранилища.Показатели Цикл
НоваяСтрока = Объект.Показатели.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, ПоказательСотрудника);
НоваяСтрока.ИдентификаторСтрокиСотрудника = СтрокаСотрудника.ИдентификаторСтрокиСотрудника;
КонецЦикла;
Для каждого БухучетНачисленияСотрудника Из ДанныеИзХранилища.БухучетНачислений Цикл
Если ЗначениеЗаполнено(БухучетНачисленияСотрудника.БухучетНачисления) Тогда
Для каждого СтрокаБухучет Из БухучетНачисленияСотрудника.БухучетНачисления Цикл
НоваяСтрока = Объект.БухучетНачислений.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаБухучет);
ЗаполнитьЗначенияСвойств(НоваяСтрока, БухучетНачисленияСотрудника);
НоваяСтрока.ИдентификаторСтрокиСотрудника = СтрокаСотрудника.ИдентификаторСтрокиСотрудника;
КонецЦикла;
КонецЕсли;
КонецЦикла;
УстановитьПредставленияНачисленийСотрудников(СтрокаСотрудника.ИдентификаторСтрокиСотрудника);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ДополнитьСтруктуруНачислениямиИПоказателями(ПараметрыОткрытия, ТекущиеДанные)
МассивНачислений = Новый Массив;
МассивПоказателей = Новый Массив;
ИдентификаторСтрокиВидаРасчета = 1;
СтруктураПоиска = Новый Структура("ИдентификаторСтрокиСотрудника", ТекущиеДанные.ИдентификаторСтрокиСотрудника);
ТаблицаНачислений = Объект.Начисления.Выгрузить(СтруктураПоиска);
ТаблицаПоказателей = Объект.Показатели.Выгрузить(СтруктураПоиска);
ИзмеренияДаты = Новый ТаблицаЗначений;
ИзмеренияДаты.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата"));
ИзмеренияДаты.Колонки.Добавить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
ИзмеренияДаты.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
СтрокаИзмеренияДаты = ИзмеренияДаты.Добавить();
СтрокаИзмеренияДаты.Период = Объект.ДатаНачала;
СтрокаИзмеренияДаты.Организация = Объект.Организация;
СтрокаИзмеренияДаты.Сотрудник = ТекущиеДанные.Сотрудник;
ПараметрыПостроения = ЗарплатаКадрыОбщиеНаборыДанных.ПараметрыПостроенияДляСоздатьВТИмяРегистраСрез();
ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор(ПараметрыПостроения.Отборы, "Регистратор", "<>", Объект.Ссылка);
Запрос = ЗарплатаКадрыОбщиеНаборыДанных.ЗапросВТИмяРегистраСрез(
"ЗначенияПериодическихПоказателейРасчетаЗарплатыСотрудников",
Истина,
ЗарплатаКадрыОбщиеНаборыДанных.ОписаниеФильтраДляСоздатьВТИмяРегистра(ИзмеренияДаты),
ПараметрыПостроения,
Истина,
"");
ТекущиеЗначенияПоказателей = Запрос.Выполнить().Выгрузить();
ПоказателиНачислений = Новый Массив();
Для Каждого СтрокаНачислений Из ТаблицаНачислений Цикл
СтруктураНачисления = Новый Структура("Начисление,ИдентификаторСтрокиВидаРасчета,ДокументОснование,Размер,Действие,ТекущийРазмер");
ЗаполнитьЗначенияСвойств(СтруктураНачисления, СтрокаНачислений);
Если СтрокаНачислений.ИдентификаторСтрокиВидаРасчета = 0 Тогда
СтруктураНачисления.ИдентификаторСтрокиВидаРасчета = ИдентификаторСтрокиВидаРасчета;
КонецЕсли;
МассивНачислений.Добавить(СтруктураНачисления);
ИнфоОВидеРасчета = ЗарплатаКадрыРасширенныйПовтИсп.ПолучитьИнформациюОВидеРасчета(СтрокаНачислений.Начисление);
Если ИнфоОВидеРасчета.Рассчитывается Тогда
Для каждого ОписаниеПоказателя Из ИнфоОВидеРасчета.Показатели Цикл
Если ОписаниеПоказателя.ЗапрашиватьПриВводе Тогда
СтруктураПоказателя = Новый Структура("Показатель,ИдентификаторСтрокиВидаРасчета,Значение,ТекущееЗначение");
СтруктураПоказателя.Показатель = ОписаниеПоказателя.Показатель;
СтруктураПоказателя.ИдентификаторСтрокиВидаРасчета = СтруктураНачисления.ИдентификаторСтрокиВидаРасчета;
Отбор = Новый Структура("Показатель,ИдентификаторСтрокиВидаРасчета,ДокументОснование",
СтруктураПоказателя.Показатель, СтрокаНачислений.ИдентификаторСтрокиВидаРасчета, СтруктураНачисления.ДокументОснование);
ДанныеПоказателя = ТаблицаПоказателей.НайтиСтроки(Отбор);
Если ДанныеПоказателя.Количество() > 0 Тогда
СтруктураПоказателя.Значение = ДанныеПоказателя[0].Значение;
КонецЕсли;
Отбор.Удалить("ИдентификаторСтрокиВидаРасчета");
ДанныеПоказателя = ТекущиеЗначенияПоказателей.НайтиСтроки(Отбор);
Если ДанныеПоказателя.Количество() > 0 Тогда
СтруктураПоказателя.ТекущееЗначение = ДанныеПоказателя[0].Значение;
КонецЕсли;
МассивПоказателей.Добавить(СтруктураПоказателя);
ПоказателиНачислений.Добавить(СтруктураПоказателя.Показатель);
КонецЕсли;
КонецЦикла;
Иначе
СтруктураПоказателя = Новый Структура("Показатель,ИдентификаторСтрокиВидаРасчета,Значение,ТекущееЗначение");
СтруктураПоказателя.ИдентификаторСтрокиВидаРасчета = СтруктураНачисления.ИдентификаторСтрокиВидаРасчета;
СтруктураПоказателя.Показатель = Справочники.ПоказателиРасчетаЗарплаты.ПустаяСсылка();
СтруктураПоказателя.ТекущееЗначение = СтрокаНачислений.Размер;
МассивПоказателей.Добавить(СтруктураПоказателя);
КонецЕсли;
ИдентификаторСтрокиВидаРасчета = ИдентификаторСтрокиВидаРасчета + 1;
КонецЦикла;
Для Каждого ДанныеПокзаателя Из ТаблицаПоказателей Цикл
Если ПоказателиНачислений.Найти(ДанныеПокзаателя.Показатель) <> Неопределено Тогда
Продолжить;
КонецЕсли;
СтруктураПоказателя = Новый Структура("Показатель,ИдентификаторСтрокиВидаРасчета,Значение,ТекущееЗначение");
СтруктураПоказателя.Показатель = ДанныеПокзаателя.Показатель;
СтруктураПоказателя.ИдентификаторСтрокиВидаРасчета = 0;
СтруктураПоказателя.Значение = ДанныеПокзаателя.Значение;
ДанныеПоказателя = ТекущиеЗначенияПоказателей.НайтиСтроки(Новый Структура("Показатель", ДанныеПокзаателя.Показатель));
Если ДанныеПоказателя.Количество() > 0 Тогда
СтруктураПоказателя.ТекущееЗначение = ДанныеПоказателя[0].Значение;
КонецЕсли;
МассивПоказателей.Добавить(СтруктураПоказателя);
КонецЦикла;
ДобавитьБухучетНачислений(ИзмеренияДаты, МассивНачислений, ТекущиеДанные.ИдентификаторСтрокиСотрудника);
ПараметрыОткрытия.ОписаниеТаблицыНачислений.Используется = Истина;
ПараметрыОткрытия.ОписаниеТаблицыНачислений.Таблица = МассивНачислений;
ПараметрыОткрытия.ОписаниеТаблицыНачислений.ИзменятьСоставВидовРасчета = Истина;
ПараметрыОткрытия.ОписаниеТаблицыНачислений.ИзменятьЗначенияПоказателей = Истина;
ПараметрыОткрытия.ОписаниеТаблицыНачислений.НомерТаблицы = 1;
ПараметрыОткрытия.ОписаниеТаблицыНачислений.ПоказатьФОТ = НЕ Истина;
ПараметрыОткрытия.Показатели = МассивПоказателей;
КонецПроцедуры
&НаСервере
Процедура ДобавитьБухучетНачислений(ИзмеренияДаты, МассивНачислений, ИдентификаторСтрокиСотрудника)
Если Не ЗначениеЗаполнено(МассивНачислений) Тогда
Возврат;
КонецЕсли;
СотрудникиДаты = ИзмеренияДаты.Скопировать(,"Сотрудник,Период");
ТаблицаБухучетНачислений = Объект.БухучетНачислений.Выгрузить(Новый Структура("ИдентификаторСтрокиСотрудника", ИдентификаторСтрокиСотрудника));
ОтражениеЗарплатыВБухучетеРасширенный.ДополнитьСтрокиНачисленийБухучетом(МассивНачислений, ТаблицаБухучетНачислений, СотрудникиДаты, Объект.Ссылка);
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
ТекущийОбъект = РеквизитФормыВЗначение("Объект");
Если Не ТекущийОбъект.ПроверитьЗаполнение() Тогда
Отказ = Истина;
КонецЕсли;
ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Объект"));
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
КонецПроцедуры
#Область КлючевыеРеквизитыЗаполненияФормы
&НаСервере
Функция КлючевыеРеквизитыЗаполненияФормыТаблицыОчищаемыеПриИзменении() Экспорт
Массив = Новый Массив;
Массив.Добавить("Объект.Сотрудники");
Массив.Добавить("Объект.Начисления");
Массив.Добавить("Объект.Показатели");
Возврат Массив;
КонецФункции
&НаСервере
Функция КлючевыеРеквизитыЗаполненияФормыОписаниеКлючевыхРеквизитов() Экспорт
Массив = Новый Массив;
Массив.Добавить(Новый Структура("ЭлементФормы, Представление", "Организация", НСтр("ru = 'организации'")));
Возврат Массив
КонецФункции
#КонецОбласти
#КонецОбласти