Имя: Пароль:
1C
1С v8
проверка заполнения документа
0 starV
 
09.06.14
09:10
Всем привет!!!
Народ как проверит при заполнении документа, мне подсказали что код будет примерна так:
  Процедура РасчетПериодаНачисления(ТекстЗапроса, ПериодыДействияМассив, Отказ, Заголовок)
    
    Регистратор = Отбор.Регистратор.Значение;
    Запрос = Новый Запрос(ТекстЗапроса);
    Запрос.УстановитьПараметр("Регистратор", Регистратор);
    Запрос.УстановитьПараметр("ПериодыДействия", ПериодыДействияМассив);
    
    МассивВидовВремени = Новый Массив;
    МассивВидовВремени.Добавить(Перечисления.ВидыВремени.ЧасовоеНеотработанное);
    Запрос.УстановитьПараметр("ВнутрисменныеВидыРасчета", МассивВидовВремени);
    
    Выборка = Запрос.Выполнить().Выбрать();
    ТекущийСотрудник              = Неопределено;
    ТекущийПериодДействия           = Неопределено;
    ОрганизацияТекущегоСотрудника = Неопределено;
    
    ПериодыНачисления = Новый ТаблицаЗначений;
    ПериодыНачисления.Колонки.Добавить("ДатаНачала");
    ПериодыНачисления.Колонки.Добавить("ДатаОкончания");
    
    НаборЗаписей = РегистрыСведений.ПериодыНачисленийСотрудников.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Сотрудник.Использование        = Истина;
    НаборЗаписей.Отбор.ПериодДействия.Использование = Истина;
    НаборЗаписей.Отбор.Организация.Использование    = Истина;
    
    Пока Выборка.Следующий() Цикл
        Если Выборка.Сотрудник <> ТекущийСотрудник
                ИЛИ Выборка.ПериодДействия <> ТекущийПериодДействия
                ИЛИ Выборка.Организация <> ОрганизацияТекущегоСотрудника Тогда
            Если ТекущийСотрудник <> Неопределено Тогда
                ПеренестиПериодыНачисленияВНаборЗаписей(ПериодыНачисления, НаборЗаписей, ТекущийСотрудник, ОрганизацияТекущегоСотрудника, ТекущийПериодДействия);
                НаборЗаписей.Отбор.Сотрудник.Значение       = ТекущийСотрудник;
                НаборЗаписей.Отбор.ПериодДействия.Значение = ТекущийПериодДействия;
                НаборЗаписей.Отбор.Организация.Значение       = ОрганизацияТекущегоСотрудника;
                НаборЗаписей.Записать();
                НаборЗаписей.Очистить();
            КонецЕсли;
            ТекущийСотрудник               = Выборка.Сотрудник;
            ОрганизацияТекущегоСотрудника = Выборка.Организация;
            ТекущийПериодДействия           = Выборка.ПериодДействия;
        КонецЕсли;
        Если Выборка.ПериодДействияНачало <> NULL Тогда
            Если Выборка.Сторно Тогда
                УдалитьПериод(ПериодыНачисления, Выборка.ПериодДействияНачало, Выборка.ПериодДействияКонец);
            Иначе
                ДобавитьПериод(ПериодыНачисления, Выборка.ПериодДействияНачало, Выборка.ПериодДействияКонец, Истина, Выборка.СотрудникНаименование + ": обнаружено повторное начисление за период ", Отказ, Заголовок);
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
    Если ТекущийСотрудник <> Неопределено Тогда
        ПеренестиПериодыНачисленияВНаборЗаписей(ПериодыНачисления, НаборЗаписей, ТекущийСотрудник, ОрганизацияТекущегоСотрудника, ТекущийПериодДействия);
        НаборЗаписей.Отбор.Сотрудник.Значение         = ТекущийСотрудник;
        НаборЗаписей.Отбор.ПериодДействия.Значение    = ТекущийПериодДействия;
        НаборЗаписей.Отбор.Организация.Значение     = ОрганизацияТекущегоСотрудника;
        НаборЗаписей.Записать();
        НаборЗаписей.Очистить();
    КонецЕсли;
    
КонецПроцедуры
1 starV
 
09.06.14
09:11
код самом начале
Регистратор = Отбор.Регистратор.Значение;
не понимаю откуда как