// Выполняет копирование документа.
//
// Параметры:
// Приемник - Объект - Документ, в который копируются данные.
// Источник - Ссылка - Документ, из которого копируются данные.
// ИсключаемыеСвойства - Строка - Имена свойств, разделенные запятыми, которые необходимо исключить из заполнения.
// ИсключаемыеТабличныеЧасти - Строка - Имена табличных частей, разделенные запятыми, которые необходимо исключить из заполнения.
// ДанныеЗаполнения - Структура - Значение параметра процедуры ОбработкаЗаполнения, используется как основание для заполнения документа.
//
Процедура СкопироватьДокумент(Приемник, Источник, ИсключаемыеСвойства = "", ИсключаемыеТабличныеЧасти = "", ДанныеЗаполнения = Неопределено) Экспорт
ДанныеДокумента = Источник.Скопировать();
МетаданныеДокумента = Приемник.Метаданные();
ЗаполнитьЗначенияСвойств(Приемник, ДанныеДокумента, , ИсключаемыеСвойства);
// ЗарплатаКадрыПодсистемы.КадровыйУчет.ЭлектронныеТрудовыеКнижки
ЭлектронныеТрудовыеКнижкиРасширенный.ПриЗаполненииДокументаИсправления(Приемник, Источник);
// Конец ЗарплатаКадрыПодсистемы.КадровыйУчет.ЭлектронныеТрудовыеКнижки
Если ИсключаемыеТабличныеЧасти = "" Тогда
ИменаИсключаемыхТабличныхЧастей = Новый Массив;
Иначе
ИменаИсключаемыхТабличныхЧастей = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ИсключаемыеТабличныеЧасти, , , Истина);
КонецЕсли;
Для каждого ТабличнаяЧастьДокумента Из МетаданныеДокумента.ТабличныеЧасти Цикл
Если ИменаИсключаемыхТабличныхЧастей.Найти(ТабличнаяЧастьДокумента.Имя) <> Неопределено Тогда
Продолжить;
КонецЕсли;
Для Каждого СтрокаДокумента Из Источник[ТабличнаяЧастьДокумента.Имя] Цикл
НоваяСтрока = Приемник[ТабличнаяЧастьДокумента.Имя].Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаДокумента);
КонецЦикла;
КонецЦикла;
Если ДанныеЗаполнения = Неопределено Тогда
ДанныеЗаполнения = Новый Структура;
ИсправлениеВТекущемПериоде = Ложь;
Иначе
ИсправлениеВТекущемПериоде = ДанныеЗаполнения.Свойство("ДопустимоИсправлениеВТекущемПериоде")
И ДанныеЗаполнения.ДопустимоИсправлениеВТекущемПериоде
И ВозможноИсправлениеТекущимПериодом(Источник);
КонецЕсли;
Если Не ИсправлениеВТекущемПериоде Тогда
// Период регистрации документа исправления необходимо увеличить.
Если ДанныеЗаполнения.Свойство("ИмяПериодРегистрации") Тогда
ИмяПериодРегистрации = ДанныеЗаполнения.ИмяПериодРегистрации;
ПериодРегистрацииИсправленногоДокумента = ДанныеЗаполнения.ПериодРегистрацииИсправленногоДокумента;
Иначе
МетаданныеРеквизита = МетаданныеДокумента.Реквизиты.Найти("ПериодРегистрации");
Если МетаданныеРеквизита = Неопределено Тогда
МетаданныеРеквизита = МетаданныеДокумента.Реквизиты.Найти("МесяцНачисления");
КонецЕсли;
Если МетаданныеРеквизита <> Неопределено Тогда
ИмяПериодРегистрации = МетаданныеРеквизита.Имя;
ПериодРегистрацииИсправленногоДокумента = ДанныеДокумента[ИмяПериодРегистрации];
Иначе
ИмяПериодРегистрации = Неопределено;
ПериодРегистрацииИсправленногоДокумента = Дата(1, 1, 1);
КонецЕсли;
КонецЕсли;
Если ИмяПериодРегистрации <> Неопределено Тогда
Значения = Новый Структура("Месяц");
ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(Значения);
Приемник[ИмяПериодРегистрации] = Макс(ДобавитьМесяц(ПериодРегистрацииИсправленногоДокумента, 1), Значения.Месяц);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Выполнить копирование документа
Скопировать содержимое документа из Источник в Приемник
Функции копирования настроек компоновки данных