Использую вашу обработку уже 2 месяца, немного допилив в некоторых местах. Для примера заполнения выкладываю файл. Важно обратите внимание на ПериодДействияКонец, что там указывается время 23:59:59, иначе одного дня не будет хватать. Также Важно задавать периодНачало и периодКонец - по этим значениям вычисляется количество дней для расчета среднего, а не из колонки ОтработаноДней, как может показаться на первый взгляд.
Для тех кто не знает куда вносить данные:
Верхнее Меню - Операции-Документы-ПереносДанных. Там создать документ-регистратор с Регистром расчета - "Основные начисления сотрудникам организации". Заполнить Период регистрации: я ставил последний месяц отчетного года. т.е. выгружая данные за 2012 год, я ставлю период регистрации: Декабрь 2012 года. И ввожу дату документа 31.12.2012.
Затем открыть обработку, выбрать созданный документ в качестве Документа регистратора. Далее выбрать Дополнительные функции - Сформировать Шапку документа. После чего скопировать из ексель данные по среднему и вставить со второй строки в таблицу обработки. Затем выполнить инициализацию и загрузку данных.
От себя я добавил кнопку удалить неполные строки, для удаления строк с пустым физлицом или сотрудником. Это бывает когда в справочниках в 1С нет загружаемых сотрудников, тогда обработка может вылететь на половине загрузки и придется искать на ком она остановилась и начинать новую загрузку с этого места.
Процедура КоманднаяПанельТабличногоДокумента1УдалитьНеполныеСтроки(Кнопка)
ВсегоСтрок = Источник.Количество();
ВсегоУдалено = 0;
///////////////// Индикатор /////////////////
ЭлементыФормы.Индикатор.Значение = 0;
ЭлементыФормы.Индикатор.МинимальноеЗначение = 0;
ЭлементыФормы.Индикатор.МаксимальноеЗначение = ВсегоСтрок;
/////////////////////////////////////////////
Для Счетчик = 1 По ВсегоСтрок Цикл
НомерСтроки = ВсегоСтрок - Счетчик;
Строка = Источник[НомерСтроки];
Если (НЕ ЗначениеЗаполнено(Строка.Сотрудник)) или (НЕ ЗначениеЗаполнено(Строка.ФизЛицо)) Тогда
Источник.Удалить(Строка);
КонецЕсли;
ЭлементыФормы.Индикатор.Значение = ЭлементыФормы.Индикатор.Значение + 1;
#Если Клиент Тогда
ОбработкаПрерыванияПользователя();
#КонецЕсли
КонецЦикла;
НомерСтроки = 0;
Для Каждого Строка Из Источник Цикл
НомерСтроки = НомерСтроки + 1;
Строка.НомерСтроки = НомерСтроки;
КонецЦикла;
КонецПроцедуры
Показать
Замечания по работе обработки. При переносе данных свыше 1000 записей Обработка вначале загружает достаточно быстро, но спустя какое то время замедляется, так что оставшиеся 10-20% могут занять несколько часов. Поэтому быстрее будет идти загрузка если разбивать данные, например по подразделениям, и вносить по отдельности в разные документы переноса.