Ошибка при загрузке лицевого счета в ЗУП 2.5 из Сбербанка в формате xml

1. Matveev_VS 160 18.05.17 17:05 Сейчас в теме
ЗУП 2.5 (2.5.118.1), Платформа 1С:Предприятие 8.3 (8.3.10.2252)
Загружаю по инструкции лицевые счета сотрудников через обработку Импорт / Экспорт операций по лицевым счетам, при нажатии на кнопку Загрузить выходит ошибка:
{Обработка.ИмпортЭкспортОперацийПоЛицевымСчетамРаботников.Форма.Форма.Форма(964)}: Ошибка при вызове конструктора (УникальныйИдентификатор)
ПервичныйДокумент = Документы.ЗаявкаНаОткрытиеСчетов.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаГУИД));
по причине:
Недопустимое значение параметра (параметр номер '1')

Подскажите, что за проблема???

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

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

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

				КонецЕсли;	
				
				ОбработкаКомментариев.ПоказатьСообщения();

			КонецЕсли;
			
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры
Показать
Прикрепленные файлы:
ИмпортЭкспортОперацийПоЛицевымСчетамРаботников.epf
009-01n.xml
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex_dor 4 22.08.19 13:14 Сейчас в теме
есть "закон о защите персональных данных "

ничего наверное страшного у вас в теме выложены паспортные данные и счета сотрудников ....
sergathome; +1 Ответить
3. sergathome 4 22.08.19 13:19 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот