gifts2017

Загрузка данных из Excel в ЗУП 3.0

Опубликовал Oxana Coffeeholic (perepetulichka) в раздел Обработки - Обработка документов

Загрузка данных из Excel в документы "Премии", "Разовые начисления", "Начальная задолженность по зарплате", "Начисление зарплаты", "Ведомость на выплату зарплаты в кассу".

Подходит также для данных в формате "Иванов И.И." без указания табельного номера.
А также для данных в формате "Иванов Иван Иванович", также без указания (или с указанием) табельного номера.

Если совпадающих сотрудников будет несколько, то строка не заполнится, и после прочтения файла сотрудника можно будет подобрать вручную.

 

1. Файл с данными выглядит вот так:

 

 

2. Создайте пустой документ Премии, укажите Вид премии, Организацию, запишите и выберите документ в обработке.

ВидПремии должен быть фиксированной суммой (при другом виде премии работу обработки не проверяла)!

 

 

3. Настройте обработку, кликнув по ссылке "Настройка".

Прочитайте и загрузите Премию.

 

 

То же самое с документами "Разовые начисления" и "Начальная задолженность по зарплате".

 

В документ "Начисления зарплаты" данные дописываются (документ не очищается), если документ заполнен.

 

Удобное средство для параллельного внесения данных в ЗУП 3.0.

Скачать файлы

Наименование Файл Версия Размер
Загрузка данных из Excel (новая) 72
.epf 14,86Kb
22.05.15
72
.epf v 1.1 14,86Kb Скачать
ЗагрузкаИзExcel.epf 16
.epf 9,75Kb
14.05.15
16
.epf O.o 9,75Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Иван иванов (Willforre) 04.03.15 11:23
1. как происходит сопоставление сотрудника?
2. как обработка ведет себя в случае совместительства?
3, что за интригующий заголовок колонки "значение 1" в типовом документе?
2. Oxana Coffeeholic (perepetulichka) 04.03.15 13:56
(1) Willforre,

1. в кратце: если совпадений больше чем одно, то поле "Сотрудник" при прочтении файла остается пустым. Сумма заполняется.

Функция ПолучитьСотрудника(СтрокаФИО)
	
	Сотрудник = Справочники.Сотрудники.ПустаяСсылка();
	
	Если СтрЧислоВхождений(СтрокаФИО, ".")>0 Тогда
	
		ПозицияПробела = Найти(СтрокаФИО," ");		
		ФамилияИ = Лев(СтрокаФИО,ПозицияПробела+1);  		
		ДлинаФамилииИ = СтрДлина(ФамилияИ); 		
		ПозицияТочки = Найти(СтрокаФИО,".");	
		Отчество = Сред(СтрокаФИО,ПозицияТочки+1,1);  		  	
		
	    Запрос = Новый Запрос;
		Запрос.Текст = 
			"ВЫБРАТЬ
			|	КадроваяИсторияСотрудниковСрезПоследних.Сотрудник,
			|	КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо,
			|	КадроваяИсторияСотрудниковСрезПоследних.Организация
			|ИЗ
			|	РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних
			|ГДЕ
			|	ПОДСТРОКА(КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Наименование, 1, &ДлинаФамилииИ) = &ФамилияИ
			|	И КадроваяИсторияСотрудниковСрезПоследних.ВидСобытия <> ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)";
			
		Запрос.УстановитьПараметр("ДлинаФамилииИ", ДлинаФамилииИ);
		Запрос.УстановитьПараметр("ФамилияИ", ФамилияИ);  		
		РезультатЗапроса = Запрос.Выполнить();                            		
		ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();              
			
		Если ВыборкаДетальныеЗаписи.Количество()=1 Тогда    		
			Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 				
				Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
				ФизическоеЛицо =  ВыборкаДетальныеЗаписи.ФизическоеЛицо;
				Организация  =  ВыборкаДетальныеЗаписи.Организация;
			КонецЦикла;
		ИначеЕсли ВыборкаДетальныеЗаписи.Количество()>1 Тогда    		
			Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 								
				СотрудникЗапрос = ВыборкаДетальныеЗаписи.Сотрудник;
				ДлинаСотрудника = СтрДлина(СотрудникЗапрос);
				ПозицияПробела = Найти(СотрудникЗапрос," ");
				СотрудникЗапрос = СокрЛП(Прав(СотрудникЗапрос,ДлинаСотрудника-ПозицияПробела));
				ПозицияПробела = Найти(СотрудникЗапрос," ");
				ОтчествоЗапрос = Сред(СотрудникЗапрос, ПозицияПробела+1, 1);	
				
				Если ОтчествоЗапрос = Отчество Тогда					
					Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
					ФизическоеЛицо =  ВыборкаДетальныеЗаписи.ФизическоеЛицо;
					Организация  =  ВыборкаДетальныеЗаписи.Организация;
				КонецЕсли;
			КонецЦикла;  
		ИначеЕсли ВыборкаДетальныеЗаписи.Количество()=0 Тогда 			
			ФамилияИ=СтрЗаменить(ФамилияИ,"е","ё");			
			Запрос = Новый Запрос;
			Запрос.Текст = 
				"ВЫБРАТЬ
				|	КадроваяИсторияСотрудниковСрезПоследних.Сотрудник,
				|	КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо,
				|	КадроваяИсторияСотрудниковСрезПоследних.Организация
				|ИЗ
				|	РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних
				|ГДЕ
				|	ПОДСТРОКА(КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Наименование, 1, &ДлинаФамилииИ) = &ФамилияИ
				|	И КадроваяИсторияСотрудниковСрезПоследних.ВидСобытия <> ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)";
				
			Запрос.УстановитьПараметр("ДлинаФамилииИ", ДлинаФамилииИ);
			Запрос.УстановитьПараметр("ФамилияИ", ФамилияИ);  		
			РезультатЗапроса = Запрос.Выполнить();                            		
			ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();              
				
			Если ВыборкаДетальныеЗаписи.Количество()=1 Тогда    		
				Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 				
					Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
					ФизическоеЛицо =  ВыборкаДетальныеЗаписи.ФизическоеЛицо;
					Организация  =  ВыборкаДетальныеЗаписи.Организация;
				КонецЦикла;
			ИначеЕсли ВыборкаДетальныеЗаписи.Количество()>1 Тогда    		
				Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 								
					СотрудникЗапрос = ВыборкаДетальныеЗаписи.Сотрудник;
					ДлинаСотрудника = СтрДлина(СотрудникЗапрос);
					ПозицияПробела = Найти(СотрудникЗапрос," ");
					СотрудникЗапрос = СокрЛП(Прав(СотрудникЗапрос,ДлинаСотрудника-ПозицияПробела));
					ПозицияПробела = Найти(СотрудникЗапрос," ");
					ОтчествоЗапрос = Сред(СотрудникЗапрос, ПозицияПробела+1, 1);	
					
					Если ОтчествоЗапрос = Отчество Тогда					
						Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
						ФизическоеЛицо =  ВыборкаДетальныеЗаписи.ФизическоеЛицо;
						Организация  =  ВыборкаДетальныеЗаписи.Организация;
					КонецЕсли;
				КонецЦикла;
			КонецЕсли;			
		КонецЕсли;
	
	Иначе 		
		Запрос = Новый Запрос;
		Запрос.Текст = 
			"ВЫБРАТЬ
			|	КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо,
			|	КадроваяИсторияСотрудниковСрезПоследних.Организация,
			|	КадроваяИсторияСотрудниковСрезПоследних.Сотрудник
			|ИЗ
			|	РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(, ФизическоеЛицо.Наименование = &СтрокаФИО) КАК КадроваяИсторияСотрудниковСрезПоследних
			|ГДЕ
			|	КадроваяИсторияСотрудниковСрезПоследних.ВидСобытия <> ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)";
		
		Запрос.УстановитьПараметр("СтрокаФИО", СтрокаФИО);  		
		РезультатЗапроса = Запрос.Выполнить();                            		
		ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();              
		
		Если ВыборкаДетальныеЗаписи.Количество()=1 Тогда    		
			Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 				
				ФизическоеЛицо =  ВыборкаДетальныеЗаписи.ФизическоеЛицо;
				Организация  =  ВыборкаДетальныеЗаписи.Организация;
				Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
			КонецЦикла;
		КонецЕсли;	
		
	КонецЕсли;
	
	Возврат Сотрудник;   	
	
КонецФункции
...Показать Скрыть


2. Если сотрудники идентичны - сотрудник не заполнится, его придется после загрузки подобрать вручную.
Если сотрудники в ЗУП 3.0 различаются как "Иванов Иван Иванович" и "Иванов Иван Иванович (осн)", и в загружаемом файле сотрудник указан как "Иванов Иван Иванович (осн)", то сотрудник будет найден.

3. Премия - фиксированной суммой. Документ "Премия" в ЗУП 3.0 содержит 2 табличные части "Начисления" и "Показатели". Значение1 - показатель. Если его оставить пустым - ничего страшного не будет, но если поправить по сотруднику сумму - колонка без интригующего названия - "Премия", то активизируется кнопка "Пересчитать" и при проведении документа произойдет обнуление колонки "Премия".
3. Oleg (Rebel2007) 21.07.15 21:14
На закладке "Премии" нет поля "ДокументПремии".
Почему?
4. Oleg (Rebel2007) 22.07.15 00:10
Вопрос отпал!

Нужно было в начислениях завести хотя бы одно, которое вводилось бы документом "Премия"
Малость податтачил для себя:
- добавил возможность загрузки Доходов в натуральной форме
- подправил, чтобы в запросе при поиске сотрудника срез брался на дату месяца начисления или регистрации, указанного в загружаемом документе (иначе не попадали уволенные сотрудники, несмотря на то, что в загружаемом файле они присутствуют).
А так все работает и огромное поле для расширения возможностей;)
Спасибо.
5. Oleg (Rebel2007) 22.07.15 00:13
Ах, да - добавил возможность поиска сотрудника по реквизиту "СтраховойНомерПФР"
6. Oxana Coffeeholic (perepetulichka) 22.07.15 10:18
(4) Rebel2007, здорово! Мы просто уже давно на 2.5 вернулись, а так обычно тоже постоянно что-то дотачиваю по мере необходимости.
7. NPMar (NPMar) 08.02.16 15:31
Очень давно не была на http://infostart.ru. Мне очень нужна эта обработка. А как за нее заплатить, не знаю. Раньше у меня были баллы. А сейчас нужно какой-то абонемент покупать. А где и как, не знаю. Самый дешевый 1200, но мне больше ничего не нужно. За одну обработку дороговато.
8. Oxana Coffeeholic (perepetulichka) 08.02.16 16:02
(7) NPMar, так а чего же почту не написали? Пишите в личку!
9. Альберт Кадымов (sword444) 10.03.16 20:39
для загрузки в ЗКГУ 3,0 подойдет обработочка?
10. Oxana Coffeeholic (perepetulichka) 11.03.16 11:11
(9) sword444, не подскажу. С ЗКГУ не приходилось работать, так что не знаю насколько различается структура этих систем.
11. Альберт Кадымов (sword444) 11.03.16 20:37
структура аналогична ЗБУ, т.е. бюджет
12. Альберт Кадымов (sword444) 11.03.16 21:31
Запустил обработку. Выдает ошибку "Произошла исключительная ошибка (0х800а03ес)". Где копать?
13. Oxana Coffeeholic (perepetulichka) 12.03.16 00:44
(12) sword444, по коду ошибки гугл выдает, что проблема в Excel.
Если база серверная, то Excel должен быть установлен на сервере. И файл нужно располагать в папке, доступной серверу как минимум на чтение.
14. Альберт Кадымов (sword444) 13.03.16 07:40
Не база файловая. Каталог базы данных располагается на локальной машине. А можно скинуть образец файла Exce, может я чего попутал
15. Oxana Coffeeholic (perepetulichka) 13.03.16 21:40
16. Алла Елютина (alika) 11.05.16 10:39

Добрый день, подскажите, пожалуйста, чем отличаются обработки Загрузка данных из Excel (новая) и ЗагрузкаИзExcel.epf?
17. Oxana Coffeeholic (perepetulichka) 11.05.16 11:37
(16) alika, обработка с пометкой (новая) загружает в документы: "Премии", "Разовые начисления", "Начальная задолженность по зарплате", "Начисление зарплаты", "Ведомость на выплату зарплаты в кассу".

А обработка без пометки - только в документ "Премии".