Ошибка при загрузке лицевого счета в ЗУП 2.5 из Сбербанка в формате xml
ЗУП 2.5 (2.5.118.1), Платформа 1С:Предприятие 8.3 (8.3.10.2252)
Загружаю по инструкции лицевые счета сотрудников через обработку Импорт / Экспорт операций по лицевым счетам, при нажатии на кнопку Загрузить выходит ошибка:
{Обработка.ИмпортЭкспортОперацийПоЛицевымСчетамРаботников.Форма.Форма.Форма(964)}: Ошибка при вызове конструктора (УникальныйИдентификатор)
ПервичныйДокумент = Документы.ЗаявкаНаОткрытиеСчетов.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаГУИД));
по причине:
Недопустимое значение параметра (параметр номер '1')
Подскажите, что за проблема???
Файл и обработка в приложении
Загружаю по инструкции лицевые счета сотрудников через обработку Импорт / Экспорт операций по лицевым счетам, при нажатии на кнопку Загрузить выходит ошибка:
{Обработка.ИмпортЭкспортОперацийПоЛицевымСчетамРаботников.Форма.Форма.Форма(964)}: Ошибка при вызове конструктора (УникальныйИдентификатор)
ПервичныйДокумент = Документы.ЗаявкаНаОткрытиеСчетов.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаГУИД));
по причине:
Недопустимое значение параметра (параметр номер '1')
Подскажите, что за проблема???
Файл и обработка в приложении
Процедура КоманднаяПанельФайлыДляИмпортаЗагрузить(Кнопка)
Для каждого СтрокаСФайлом из ФайлыДляИмпорта Цикл
Если НЕ СтрокаСФайлом.Загрузить Тогда
Продолжить;
КонецЕсли;
КаталогИмпортаДанных = КаталогИмпорта;
ТочкаВхода = ПолучитьДеревоИзФайла(СтрокаСФайлом.Файл);
Если ТочкаВхода = Неопределено Тогда
ПроцедурыУправленияПерсоналом.СообщитьОбОшибкеОбработки("Импорт из файла " + СтрокаСФайлом.Файл, "Нарушена структура данных!");
Продолжить;
КонецЕсли;
СчетаПК = ПолучитьСчетаПК(ТочкаВхода, СтрокаСФайлом.Файл);
СтрокаГУИД = СчетаПК.ИдПервичногоДокумента;
СтадияОбработки = "Анализ данных " + СтрокаСФайлом.Файл;
ПервичныйДокумент = Документы.ЗаявкаНаОткрытиеСчетов.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаГУИД));
ЭлементыИмпорта = "РезультатОткрытияСчетов";
Если НЕ ЗначениеЗаполнено(ПервичныйДокумент.Дата) Тогда
ПервичныйДокумент = Документы.ПлатежноеПоручениеИсходящее.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаГУИД));
Если НЕ ЗначениеЗаполнено(ПервичныйДокумент.Дата) Тогда
ПервичныйДокумент = Документы.ЗарплатаКВыплатеОрганизаций.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаГУИД));
Если НЕ ЗначениеЗаполнено(ПервичныйДокумент.Дата) Тогда
ПроцедурыУправленияПерсоналом.СообщитьОбОшибкеОбработки(СтадияОбработки, "Не найден первичный документ!");
Продолжить;
КонецЕсли;
КонецЕсли;
ЭлементыИмпорта = "РезультатЗачисленияЗарплаты";
КонецЕсли;
МенеджерЗаписиПротокола = РегистрыСведений.ПротоколыОбменаСБанком.СоздатьМенеджерЗаписи();
МенеджерЗаписиПротокола.Документ = ПервичныйДокумент;
МенеджерЗаписиПротокола.Дата = ТекущаяДата();
МенеджерЗаписиПротокола.Содержание = ТекстXML;
МенеджерЗаписиПротокола.Записать();
Если ЭлементыИмпорта = "РезультатОткрытияСчетов" Тогда
// записываем текст в первичный документ и проводим его
ОбъектДокумента = ПервичныйДокумент.ПолучитьОбъект();
Если ОбъектДокумента <> Неопределено Тогда
ТекстПодтверждения = ОбъектДокумента.ТекстПодтверждения;
Попытка
ИсходноеДерево = ЗначениеИзСтрокиВнутр(ОбъектДокумента.ТекстПодтверждения);
Исключение
ИсходноеДерево = СоздатьДеревоЭкспорта();
КонецПопытки;
Если ТипЗнч(ИсходноеДерево) <> Тип("ДеревоЗначений") Тогда
ИсходноеДерево = СоздатьДеревоЭкспорта();
КонецЕсли;
Для каждого ОперацияПодтверждения из СчетаПК.Содержимое.СТроки Цикл
НоваяОперация = ИсходноеДерево.Строки.Добавить();
СкопироватьСодержание(ОперацияПодтверждения, НоваяОперация);
КонецЦикла;
ОбъектДокумента.ТекстПодтверждения = ЗначениеВСтрокуВнутр(ИсходноеДерево);
Попытка
ОбъектДокумента.ДополнительныеСвойства.Вставить("ОчиститьТекстПодтверждения", Ложь);
ОбъектДокумента.Записать(РежимЗаписиДокумента.Проведение);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ЛицевыеСчетаРаботниковОрганизации.НомерЛицевогоСчета,
| ЛицевыеСчетаРаботниковОрганизации.ФизЛицо
|ИЗ
| РегистрСведений.ЛицевыеСчетаРаботниковОрганизации КАК ЛицевыеСчетаРаботниковОрганизации
|ГДЕ
| ЛицевыеСчетаРаботниковОрганизации.Документ = &ДокументСсылка";
Запрос.УстановитьПараметр("ДокументСсылка", ОбъектДокумента.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить("Записана информация о лицевом счете " + Выборка.НомерЛицевогоСчета + " (сотрудник " + Выборка.ФизЛицо + " )");
КонецЦикла;
Исключение
Сообщить("Загрузка данных отменена!");
КонецПопытки;
Иначе
ПроцедурыУправленияПерсоналом.СообщитьОбОшибкеОбработки(СтадияОбработки, "Не найден первичный документ!");
КонецЕсли;
КонецЕсли;
Если ЭлементыИмпорта = "РезультатЗачисленияЗарплаты" Тогда
// получаем массив операций
МассивОпераций = ПроцедурыУправленияПерсоналом.ПолучитьОперацииПоЛицевымСчетамРаботников(СчетаПК.Содержимое, ЭлементыИмпорта);
// для ППИ создаем ордер
Если ТипЗнч(ПервичныйДокумент) = Тип("ДокументСсылка.ПлатежноеПоручениеИсходящее") Тогда
Ордер = Документы.ПлатежныйОрдерСписаниеДенежныхСредств.СоздатьДокумент();
Ордер.ДокументОснование = ПервичныйДокумент;
Ордер.Организация = ПервичныйДокумент.Организация;
ТаблицаПередачи = Новый ТаблицаЗначений;
ТаблицаПередачи.Колонки.Добавить("Ведомость");
ТаблицаПередачи.Колонки.Добавить("ФизЛицо");
ТаблицаПередачи.Колонки.Добавить("СуммаПлатежа");
ЗапросВедомостей = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ПлатежноеПоручениеИсходящее.ПеречислениеЗаработнойПлаты.(
| Ведомость
| ),
| ПлатежноеПоручениеИсходящее.Ссылка
|ИЗ
| Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее
|ГДЕ
| ПлатежноеПоручениеИсходящее.Ссылка = &Платежка");
ЗапросВедомостей.УстановитьПараметр("Платежка", ПервичныйДокумент);
СписокВедомостей = Новый СписокЗначений();
ВыборкаПлатежек = ЗапросВедомостей.Выполнить().Выбрать();
СоответствиеРаботников = Новый Соответствие;
Если ВыборкаПлатежек.Следующий() Тогда
ВыборкаВедомостей = ВыборкаПлатежек.ПеречислениеЗаработнойПлаты.Выбрать();
Пока ВыборкаВедомостей.Следующий() Цикл
СписокВедомостей.Добавить(ВыборкаВедомостей.Ведомость);
КонецЦикла;
ЗапросРаботников = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ЗарплатаКВыплатеОрганизаций.Ссылка,
| ЗарплатаКВыплатеОрганизаций.Зарплата.(
| Физлицо
| )
|ИЗ
| Документ.ЗарплатаКВыплатеОрганизаций КАК ЗарплатаКВыплатеОрганизаций
|ГДЕ
| ЗарплатаКВыплатеОрганизаций.Ссылка В (&СписокВедомостей)");
ЗапросРаботников.УстановитьПараметр("СписокВедомостей", СписокВедомостей);
НоваяВыборкаВедомостей = ЗапросРаботников.Выполнить().Выбрать();
Пока НоваяВыборкаВедомостей.Следующий() Цикл
ВыборкаРаботников = НоваяВыборкаВедомостей.Зарплата.Выбрать();
Пока ВыборкаРаботников.Следующий() Цикл
СоответствиеРаботников.Вставить(ВыборкаРаботников.ФизЛицо, НоваяВыборкаВедомостей.Ссылка);
КонецЦикла;
КонецЦикла;
КонецЕсли;
СписокСотрудниковСНезачисленнойЗарплатой = "";
Для каждого ОперацияПодтверждения из МассивОпераций Цикл
Если НРег(ОперацияПодтверждения.Результат) = "зачислено" Тогда
СтрокаПередачи = ТаблицаПередачи.Добавить();
СтрокаПередачи.ФизЛицо = ОперацияПодтверждения.Сотрудник;
СтрокаПередачи.СуммаПлатежа = ОперацияПодтверждения.Сумма;
СтрокаПередачи.Ведомость = СоответствиеРаботников[ОперацияПодтверждения.Сотрудник];
Иначе
СписокСотрудниковСНезачисленнойЗарплатой = СписокСотрудниковСНезачисленнойЗарплатой + Символы.ПС + " " + Строка(ОперацияПодтверждения.Сотрудник) + " " + ОперацияПодтверждения.Результат;
КонецЕсли;
КонецЦикла;
Ордер.Дата = ТекущаяДата();
Ордер.ДатаВыписки = Ордер.Дата;
Ордер.ЗаполнитьПеречислениеЗППоОбменуСБанком(ТаблицаПередачи, ПервичныйДокумент);
ЗаполнениеДокументовПереопределяемый.ЗаполнитьШапкуДокумента(Ордер, глЗначениеПеременной("глТекущийПользователь"));
Ордер.Записать();
Если СписокСотрудниковСНезачисленнойЗарплатой <> "" Тогда
ОбщегоНазначенияЗК.СообщитьОбОшибке("Следующим сотрудникам деньги не зачислены на счет в банке: " + СписокСотрудниковСНезачисленнойЗарплатой, Истина, Строка(Ордер));
КонецЕсли;
Если МенеджерЗаписиПротокола.Документ = Неопределено Тогда
МенеджерЗаписиПротокола.Документ = Ордер.Ссылка;
МенеджерЗаписиПротокола.Записать();
КонецЕсли;
Ордер.ПолучитьФорму().Открыть();
КонецЕсли;
Если ТипЗнч(ПервичныйДокумент) = Тип("ДокументСсылка.ЗарплатаКВыплатеОрганизаций") Тогда
ОбработкаКомментариев = глЗначениеПеременной("глОбработкаСообщений");
ОбработкаКомментариев.УдалитьСообщения();
Ведомость = ПервичныйДокумент.ПолучитьОбъект();
Зарплата = Ведомость.Зарплата.Выгрузить(, "Физлицо, Сумма, КомпенсацияЗаЗадержкуЗарплаты");
ТаблицаПередачи = Новый ТаблицаЗначений;
ТаблицаПередачи.Колонки.Добавить("Ведомость");
ТаблицаПередачи.Колонки.Добавить("ФизЛицо");
ТаблицаПередачи.Колонки.Добавить("СуммаПлатежа");
СписокСотрудниковСНезачисленнойЗарплатой = Новый Массив;
СписокСотрудниковСНесовпадающейЗарплатой = Новый Массив;
Для каждого ОперацияПодтверждения из МассивОпераций Цикл
СтрокаЗарплаты = Зарплата.Найти(ОперацияПодтверждения.Сотрудник, "Физлицо");
Если СтрокаЗарплаты <> Неопределено Тогда
Если НРег(ОперацияПодтверждения.Результат) <> "зачислено" Тогда
СписокСотрудниковСНезачисленнойЗарплатой.Добавить(Строка(ОперацияПодтверждения.Сотрудник));
ИначеЕсли ОперацияПодтверждения.Сумма <> СтрокаЗарплаты.Сумма + СтрокаЗарплаты.КомпенсацияЗаЗадержкуЗарплаты Тогда
СписокСотрудниковСНесовпадающейЗарплатой.Добавить(Строка(ОперацияПодтверждения.Сотрудник));
КонецЕсли;
Зарплата.Удалить(СтрокаЗарплаты);
КонецЕсли;
КонецЦикла;
// Оставшиеся строки в ТЗ Зарплата - это те, на кого вообще ничего не пришло
Для Каждого СтрокаЗарплаты Из Зарплата Цикл
СписокСотрудниковСНезачисленнойЗарплатой.Добавить(Строка(СтрокаЗарплаты.Физлицо));
КонецЦикла;
Если МенеджерЗаписиПротокола.Документ = Неопределено Тогда
МенеджерЗаписиПротокола.Документ = ПервичныйДокумент.Ссылка;
МенеджерЗаписиПротокола.Записать();
КонецЕсли;
ЕстьПроблемы = СписокСотрудниковСНезачисленнойЗарплатой.Количество() > 0
ИЛИ СписокСотрудниковСНесовпадающейЗарплатой.Количество() > 0;
ПредставлениеВедомости = "Зарплата к выплате №" + Ведомость.Номер + " от " + Ведомость.Дата;
Расшифровка = Новый Массив;
Расшифровка.Добавить(Новый Структура("Представление, Расшифровка", "Открыть", Ведомость));
Если ЕстьПроблемы Тогда
РодительскаяСтрока = ОбработкаКомментариев.ДобавитьСообщение(ПредставлениеВедомости, Перечисления.ВидыСообщений.Ошибка, Расшифровка);
Если СписокСотрудниковСНезачисленнойЗарплатой.Количество() > 0 Тогда
КореньСообщения = ОбработкаКомментариев.ДобавитьСообщение("Следующим сотрудникам деньги не зачислены на счет в банке:",,,РодительскаяСтрока);
Для Каждого Сотрудник Из СписокСотрудниковСНезачисленнойЗарплатой Цикл
ОбработкаКомментариев.ДобавитьСообщение(Сотрудник,,,КореньСообщения);
КонецЦикла;
КонецЕсли;
Если СписокСотрудниковСНесовпадающейЗарплатой.Количество() > 0 Тогда
КореньСообщения = ОбработкаКомментариев.ДобавитьСообщение("Следующим сотрудникам деньги зачислены не в полном объеме:",,,РодительскаяСтрока);
Для Каждого Сотрудник Из СписокСотрудниковСНесовпадающейЗарплатой Цикл
ОбработкаКомментариев.ДобавитьСообщение(Сотрудник,,,КореньСообщения);
КонецЦикла;
КонецЕсли;
Иначе
ОбработкаКомментариев.ДобавитьСообщение(ПредставлениеВедомости + " перечислена успешно. ", Перечисления.ВидыСообщений.Информация, Расшифровка);
КонецЕсли;
ОбработкаКомментариев.ПоказатьСообщения();
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьПрикрепленные файлы:
ИмпортЭкспортОперацийПоЛицевымСчетамРаботников.epf
009-01n.xml
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот