Имя: Пароль:
1C
 
Универсализация составного типа данных
0 pro3ri
 
12.11.15
08:20
ДОбрый день!
В доке начисление зп есть реквизит составного типа данных. https://s.mail.ru/ktbswJFELyG5/img-2015-11-12-10-17-10.png
Предварительную запись делает такой механизм:

Процедура ОбработкаПроведения(Отказ, РежимПроведения)
    Для каждого СтрокаТЧ Из Начисление Цикл
    
        Если ПланыВидовРасчета.ОсновныеНачисления.НайтиПоНаименованию(Строка(СтрокаТЧ.ВидРасчета))<>ПланыВидовРасчета.ОсновныеНачисления.ПустаяСсылка() Тогда
            ПроводимОсновныеНачисления = Истина;
        Иначе
            ПроводимОсновныеНачисления = Ложь;
        КонецЕсли;
        
        Если ПланыВидовРасчета.ДополнительныеНачисления.НайтиПоНаименованию(Строка(СтрокаТЧ.ВидРасчета))<>ПланыВидовРасчета.ДополнительныеНачисления.ПустаяСсылка() Тогда
            ПроводимДополнительныеНачисления = Истина;
        Иначе
            ПроводимДополнительныеНачисления = Ложь;
        КонецЕсли;

    КонецЦикла;
    
    Если ПроводимОсновныеНачисления Тогда
        Для Каждого ТекСтрокаНачисление Из Начисление Цикл
            // регистр ОсновныеНачисления
            Движение = Движения.ОсновныеНачисления.Добавить();
            Движение.Сторно = Ложь;
            Движение.ВидРасчета = ТекСтрокаНачисление.ВидРасчета;
            Движение.ПериодДействияНачало = ТекСтрокаНачисление.ДатаНачала;
            Движение.ПериодДействияКонец = КонецДня(ТекСтрокаНачисление.ДатаОкончания);
            Движение.ПериодРегистрации = ПериодРегистрации;
            Движение.БазовыйПериодНачало = ТекСтрокаНачисление.ДатаНачала;
            Движение.БазовыйПериодКонец = КонецДня(ТекСтрокаНачисление.ДатаОкончания);
            Движение.Сотрудник = ТекСтрокаНачисление.Сотрудник;
            Движение.Подразделение = ТекСтрокаНачисление.Подразделение;
            Движение.Сторно = ТекСтрокаНачисление.Сторно;
            //Движение.Результат = 1;
            Движение.ТипГрафика = ТекСтрокаНачисление.ТипГрафика;
            Движение.Размер = ТекСтрокаНачисление.Размер;
        КонецЦикла;    
        Движения.ОсновныеНачисления.Записать();
    КонецЕсли;
    
    Если ПроводимДополнительныеНачисления Тогда
    
        Для Каждого ТекСтрокаНачисление Из Начисление Цикл    
            // регистр ДополнительныеНачисления
            Движение = Движения.ДополнительныеНачисления.Добавить();
            Движение.Сторно = Ложь;
            Движение.ВидРасчета = ТекСтрокаНачисление.ВидРасчета;
            Движение.ПериодРегистрации = ПериодРегистрации;
            Движение.БазовыйПериодНачало = ПериодРегистрации;
            Движение.БазовыйПериодКонец = ПериодРегистрации;
            Движение.Сторно = ТекСтрокаНачисление.Сторно;
            Движение.Сотрудник = ТекСтрокаНачисление.Сотрудник;
            Движение.Подразделение = ТекСтрокаНачисление.Подразделение;
            //Движение.Результат = 1;
            Движение.Размер = ТекСтрокаНачисление.Размер;
        КонецЦикла;
        Движения.ДополнительныеНачисления.Записать();
    КонецЕсли;

А как бы сделал это профи?
1 cw014
 
12.11.15
08:25
Если ПланыВидовРасчета.ОсновныеНачисления.НайтиПоНаименованию(Строка(СтрокаТЧ.ВидРасчета))<>ПланыВидовРасчета.ОсновныеНачисления.ПустаяСсылка() Тогда

Что это?
2 cw014
 
12.11.15
08:27
ПроводимОсновныеНачисления = (ТипЗнч(СтрокаТЧ.ВидРасчета) = Тип("ПланВидовРасчета.ОсновныеНачисления"));
ПроводимДополнительныеНачисления = (ТипЗнч(СтрокаТЧ.ВидРасчета) = Тип("ПланВидовРасчета.ДополнительныеНачисления"));
3 pro3ri
 
12.11.15
08:37
(2) благодарю!