Загрузка электронного больничного из файла в ЗУП 3.1. Исправление ошибки

17.11.20

Учетные задачи - Зарплата

При попытке загрузки электронного больничного пишет: Не заполнено поле LN_HASH или Не заполнено поле LN_STATE. Готовое расширение, исправление для типовой конфигурации ЗУП 3.1.

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

Наименование Файл Версия Размер
ЗУП 3.1 загрузка электронного больничного из файла. Исправление ошибки.:
.cfe 6,19Kb
29
.cfe 1.0 6,19Kb 29 Скачать

Данная проблема возникает при попытке загрузить электронный больничный из файла, полученного, например, из СБИС или Контур.

Так вот, формат реализован согласно спецификации версии 1.1 Источник на сайте ФСС..

Согласно этой спецификации LN_HASH не обязательный реквизит, однако у 1С другая логика. По логике программы этот реквизит должен быть обязательно представлен, что не совсем корректно. Эта же логика относится и к LN_STATE.

Для того что бы исправить данный недочет необходимо внести исправление всего в одном модуле ОбменЛисткамиНетрудоспособностиФСС в функцию СтруктураОтветаСервисаПолученияЭЛН

Привожу код исправления:
 

&Вместо("ОтветСервисаПолученияЭЛН")
Функция FSSFix_ОтветСервисаПолученияЭЛН(LN_ROW, Отказ)
    ИменаПолейИзСервиса = 
    "APPROVE1,
    |APPROVE2,
    |BASE_AVG_DAILY_SAL,
    |BASE_AVG_SAL,
    |BIRTHDAY,
    |BOZ_FLAG,
    |CALC_CONDITION1,
    |CALC_CONDITION2,
    |CALC_CONDITION3,
    |CALC_CONDITION4,
    |DATE1,
    |DATE2,
    |DT1_LN,
    |DT2_LN,
    |DUPLICATE_FLAG,
    |EMPL_FLAG,
    |EMPL_PARENT_NO,
    |EMPL_PAYMENT,
    |EMPL_REG_NO,
    |EMPL_REG_NO2,
    |EMPLOYER,
    |FORM1_DT,
    |FSS_PAYMENT,
    |GENDER,
    |HOSPITAL_BREACH,
    |HOSPITAL_DT1,
    |HOSPITAL_DT2,
    |INN_PERSON,
    |INSUR_MM,
    |INSUR_YY,
    |LN_CODE,
    |LN_DATE,
    |LN_HASH,
    |LN_RESULT,
    |LN_STATE,
    |LPU_ADDRESS,
    |LPU_EMPL_FLAG,
    |LPU_EMPLOYER,
    |LPU_NAME,
    |LPU_OGRN,
    |MSE_DT1,
    |MSE_DT2,
    |MSE_DT3,
    |MSE_INVALID_GROUP,
    |NAME,
    |NOT_INSUR_MM,
    |NOT_INSUR_YY,
    |PARENT_CODE,
    |PATRONIMIC,
    |PAYMENT,
    |PREGN12W_FLAG,
    |PREV_LN_CODE,
    |PRIMARY_FLAG,
    |REASON1,
    |REASON2,
    |REASON3,
    |RETURN_DATE_EMPL,
    |SERV1_AGE,
    |SERV1_FIO,
    |SERV1_MM,
    |SERV1_RELATION_CODE,
    |SERV2_AGE,
    |SERV2_FIO,
    |SERV2_MM,
    |SERV2_RELATION_CODE,
    |SNILS,
    |SURNAME,
    |VOUCHER_NO,
    |VOUCHER_OGRN";
    
    ДанныеИзСервиса = Новый Структура(ИменаПолейИзСервиса);
    
    ЗаполнитьЗначенияСвойств(ДанныеИзСервиса, LN_ROW);
    
    //++ Начало исправления
    Если НЕ ЗначениеЗаполнено(ДанныеИзСервиса["LN_STATE"]) Тогда
        ДанныеИзСервиса["LN_STATE"]="010";        
    КонецЕсли;
    //-- Конец исправления

    ДанныеИзСервиса.Вставить("ТаблицаПолныхПериодов", СериализацияБЗК.СписокXDTO(LN_ROW, "TREAT_PERIODS.TREAT_FULL_PERIOD"));
    ДанныеИзСервиса.Вставить("СНИЛС", "");
    
    Если ТипЗнч(ДанныеИзСервиса.SNILS) = Тип("Строка") И ЗначениеЗаполнено(ДанныеИзСервиса.SNILS) Тогда
        ДанныеИзСервиса.СНИЛС = УчетПособийСоциальногоСтрахованияКлиентСервер.СНИЛСВФорматеИБ(ДанныеИзСервиса.SNILS);
    КонецЕсли;
    
    ДанныеИзСервиса.Вставить("ЯвляетсяПродолжениемБолезни", Не СериализацияБЗК.ЗначениеXML(ДанныеИзСервиса.PRIMARY_FLAG, Тип("Булево")));
    ДанныеИзСервиса.Вставить("НомерПервичногоЛисткаНетрудоспособности", Строка(ДанныеИзСервиса.PREV_LN_CODE));
    
    // Базовые проверки спецификации.
    // БазовыеПоля = СтрРазделить("SNILS, LN_CODE, LN_HASH", ", ", Ложь);
    БазовыеПоля = СтрРазделить("SNILS, LN_CODE", ", ", Ложь); // Убираем LN_HASH из базовых полей 
    Для Каждого ИмяПоля Из БазовыеПоля Цикл
        Если Не ЗначениеЗаполнено(ДанныеИзСервиса[ИмяПоля]) Тогда
            ТекстОшибки = СтрШаблон(НСтр("ru = 'Файл не соответствует спецификации: Не заполнено поле ""%1"".'"), ИмяПоля);
            ЗарплатаКадрыОтображениеОшибок.СообщитьОбОшибке(Отказ, ТекстОшибки, ИмяПоля);
        КонецЕсли;
    КонецЦикла;
    
    СостояниеЭЛНВФСС = Перечисления.СостоянияЭЛНВФСС.НайтиПоКодуФСС(ДанныеИзСервиса.LN_STATE);
    ДанныеИзСервиса.Вставить("СостояниеЭЛНВФСС", СостояниеЭЛНВФСС);
    
    Возврат ДанныеИзСервиса;
КонецФункции

Применив это исправление, файлы прекрасно грузятся.

Проверял на релизах : 3.1.15.96

 

При использовании расширения галочка "Безопасный режим" должна быть снята !.

ЗУП ФСС Электронный Больничный Загрузка LN_HASH LN_STATE

См. также

Обновление для КА 1.1, ЗУП 2.5, БУХ 2.0: НДС, ЕФС-1, Расчет страховых взносов, Мобилизация, Статистика, Электронные трудовые книжки, 2-НДФЛ, Регламентированная отчетность, Кадровый учет, Прослеживаемость импортных товаров

Зарплата Регламентированный учет и отчетность Кадровый учет Обновление 1С Платформа 1С v8.3 Сложные периодические расчеты 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Зарплата и Управление Персоналом 2.5 Бухгалтерский учет Налоговый учет Управленческий учет Акцизы ЕНВД ЕСН Земельный налог ИП, ПБОЮЛ, КФХ Налог на имущество Налог на прибыль НДС НДФЛ ФОМС, ЕФС Транспортный налог УСН ПСН (патентная система налогообложения) Платные (руб)

Обновления для конфигураций: КА 1.1; ЗУП 2.5; БУХ 2.0; КА 1.1 Комплексная автоматизация торговли алкогольной продукцией; КА 1.1 Комплексный учет сельскохозяйственного предприятия

19900 руб.

01.04.2020    140614    678    352    

232

Перенос данных из Парус 8 в ЗГУ 3

Зарплата Внешние источники данных Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    22447    19    1    

22

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9207    9    8    

10

SALE! 20%

Перенос данных из Камин 3.5 (5.5) в ЗиКГУ 3.х

Обмен между базами 1C Зарплата Бюджетный учет Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет зарплаты для бюджетных учреждений 3.5» и «КАМИН:Зарплата для бюджетных учреждений 5.5» на конфигурацию «Зарплата и кадры государственного учреждения».

12000 9600 руб.

28.07.2016    57077    140    139    

115

Запрет доступа к данным по зарплате для БП 3.0 и КА 2.5

Зарплата Роли и права Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

5700 руб.

27.05.2021    32726    204    89    

165

Исправление в 1С:ЗУП/ЗКГУ ошибок по НДФЛ и взаиморасчетам с сотрудниками на начало расчетного года.

Корректировка данных Зарплата Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ Платные (руб)

Обработка исправляет технические ошибки по НДФЛ, взаиморасчетам с сотрудниками в 1С:ЗУП (1С:ЗКГУ) на начало года. Фактически все ошибки, которые проявляются в ведомостях на выплату, расчетных листках, при заполнении ведомостей на выплату и отчетах 6-НДФЛ и т.д. нужно начинать исправлять с начала расчетного года. Это позволит быть уверенными, что после завершения расчетов предыдущего года, начали работать с «чистого листа» без ошибочных остатков.

4800 руб.

06.10.2023    2317    29    15    

33

Устранение сальдо прошлых периодов в ведомостях ЗУП 3.1, КА, ЗиКГУ 3.1

Зарплата Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

При заполнении ведомости на выплату зарплаты вылазят задолженности прошлых периодов, которых быть не должно? Наша обработка позволяется убрать эти доходы прошлых периодов за пару секунд. Больше не нужно тратить часы на анализ каждого такого случая.

15600 руб.

14.09.2022    12589    60    22    

62
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Kiber_ 14.05.20 15:53 Сейчас в теме
1. Еще ни разу не встречал ЭЛН с пустым LN_HASH.
2. Согласно спецификации ФСС поле LN_STATE обязательно к заполнению.

Данная доработка вредна, т.к. дает возможность под видом ЭЛН загружать всякую фигню.
Например, можно будет загрузить реестр прямых выплат, что не соответствует методике учета в 1С.
Сначала надо загрузить ЭЛН (настоящий!), рассчитать больничный, ввести заявление, а только затем выгрузить реестр прямых выплат.

Настоящий ЭЛН всегда содержит LN_STATE и LN_HASH, это его родовой признак.
Более того, ФСС требует корректный LN_HASH, т.к. только так вы можете подтвердить что отправляете данные опираясь на последнюю версию ЭЛН.

Приложенный код в LN_HASH заполняет "мусором" и такой ЭЛН ФСС не примет и хорошо что 1С не принимает.
2. Sergeevich 36 14.05.20 20:26 Сейчас в теме
(1)
Настоящий ЭЛН всегда содержит LN_STATE и LN_HASH, это его родо

При чем тут "можно будет загрузить реестр прямых выплат" кто об этом говорит ?
Я прямо указал спецификацию на сайте ФСС и там реквизит LN_HASH НЕ ОБЯЗАТЕЛЬНЫЙ какие могут быть претензии.
Я оперировал с файлами которые выдавал SBIS и Контур и там не было этих полей и файлы не загружались в 1С.
Полагаю что ФСС генерирует этот хэш каждый раз по определенному алгоритму и потому не считает поле
обязательным. Если вам лично что то не нравиться вы можете переписать код под себя, он открыт.

Что касается выгрузки реестра то
В процедуре выгрузки ВыгрузитьЗапросДляОтправкиРеестраЭЛН есть строка
УстановитьЗначениеЕслиЗаполнено(ROW.LN_HASH, РегистрыСведений.СведенияОбЭЛН.ПрочитатьХеш(ДанныеЛН.НомерЛисткаНетрудоспособности));
как вы догадываетесь это значит что выгружать его если он заполнен.
Получается загружать ЭЛН без LN_HASH нельзя ,а выгружать можно, довольно противоречиво.

В любом случае статья показывает один из вариантов исправления, не нравится пишите свой.
9. blackjack666 15 18.01.21 15:05 Сейчас в теме
(1) ещё как бывают и без хэша, и без lnState.
3. Kiber_ 15.05.20 11:11 Сейчас в теме
Основная претензия в том, что вы предлагаете вредоносный код (либо по неполноте знаний, либо умышленно).
Вторая в том, что вы отказываетесь понять насколько вреден этот код.

Полагаю что ФСС генерирует этот хэш каждый раз по определенному алгоритму и потому не считает поле
обязательным.


Вывод не верен.
Хеш обязателен для передачи реестров ЭЛН. См. спецификацию на сайте ФСС: http://cabinets.fss.ru/Спецификация_ЭЛН_Страхователь_v_1_1_20191211.doc
Корректный Хеш выдает ФСС, только у них есть алгоритм его формирования.
И, о чудо, единственный способ его получить - загрузить ЭЛН из сервиса.

SBIS и Контур это прекрасно знают и у них есть способы выгрузить настоящий ЭЛН с Состоянием и Хешем.
Добивайте их поддержку чтобы они выносили эти возможности на видное место.
4. Sergeevich 36 16.05.20 18:50 Сейчас в теме
Мне смешно читать ваши комментарии. Видимо это ради зароботка SM. Я предлагаю вам ознакомиться со спецификацией в том числе с той которую вы прикрепили к комментарию. В ней поле LN_HASH указано как не обязательное, о чем говорит 0 в колонке обязательно.
Что касается того, что вы не разу не видели ни разу файла без LN_HASH так это не значит что так и есть. На момент публикации названные сервисы выдавали файлы без этого реквизита.
И в обще я все описал в предыдущем комменте.
Не нравится не пользуйтесь, пишите свое, не надо писать ложных утверждении.
5. VasilyErmak 210 05.11.20 14:11 Сейчас в теме
Исправления уже устарели. Править надо другую функцию в этом же модуле.
6. Sergeevich 36 06.11.20 13:51 Сейчас в теме
(5)
Исправления уже устарели. Править надо другую функцию в этом же модуле.

Да вы правы, я давно не обновлял публикацию.

Под рукой сейчас только Зарплата и управление персоналом, редакция 3.1 (3.1.14.183)
Для неё надо править функцию ОтветСервисаПолученияЭЛН

&Вместо("ОтветСервисаПолученияЭЛН")
Функция FSSFix_ОтветСервисаПолученияЭЛН(LN_ROW, Отказ)
	ИменаПолейИзСервиса = 
	"APPROVE1,
	|APPROVE2,
	|BASE_AVG_DAILY_SAL,
	|BASE_AVG_SAL,
	|BIRTHDAY,
	|BOZ_FLAG,
	|CALC_CONDITION1,
	|CALC_CONDITION2,
	|CALC_CONDITION3,
	|CALC_CONDITION4,
	|DATE1,
	|DATE2,
	|DT1_LN,
	|DT2_LN,
	|DUPLICATE_FLAG,
	|EMPL_FLAG,
	|EMPL_PARENT_NO,
	|EMPL_PAYMENT,
	|EMPL_REG_NO,
	|EMPL_REG_NO2,
	|EMPLOYER,
	|FORM1_DT,
	|FSS_PAYMENT,
	|GENDER,
	|HOSPITAL_BREACH,
	|HOSPITAL_DT1,
	|HOSPITAL_DT2,
	|INN_PERSON,
	|INSUR_MM,
	|INSUR_YY,
	|LN_CODE,
	|LN_DATE,
	|LN_HASH,
	|LN_RESULT,
	|LN_STATE,
	|LPU_ADDRESS,
	|LPU_EMPL_FLAG,
	|LPU_EMPLOYER,
	|LPU_NAME,
	|LPU_OGRN,
	|MSE_DT1,
	|MSE_DT2,
	|MSE_DT3,
	|MSE_INVALID_GROUP,
	|NAME,
	|NOT_INSUR_MM,
	|NOT_INSUR_YY,
	|PARENT_CODE,
	|PATRONIMIC,
	|PAYMENT,
	|PREGN12W_FLAG,
	|PREV_LN_CODE,
	|PRIMARY_FLAG,
	|REASON1,
	|REASON2,
	|REASON3,
	|RETURN_DATE_EMPL,
	|SERV1_AGE,
	|SERV1_FIO,
	|SERV1_MM,
	|SERV1_RELATION_CODE,
	|SERV2_AGE,
	|SERV2_FIO,
	|SERV2_MM,
	|SERV2_RELATION_CODE,
	|SNILS,
	|SURNAME,
	|VOUCHER_NO,
	|VOUCHER_OGRN";
	
	ДанныеИзСервиса = Новый Структура(ИменаПолейИзСервиса);
	
	ЗаполнитьЗначенияСвойств(ДанныеИзСервиса, LN_ROW);
	
	//ВС ++ Начало исправления
	Если НЕ ЗначениеЗаполнено(ДанныеИзСервиса["LN_STATE"]) Тогда
		ДанныеИзСервиса["LN_STATE"]="010";		
	КонецЕсли;
	//ВС -- Конец исправления

	ДанныеИзСервиса.Вставить("ТаблицаПолныхПериодов", СериализацияБЗК.СписокXDTO(LN_ROW, "TREAT_PERIODS.TREAT_FULL_PERIOD"));
	ДанныеИзСервиса.Вставить("СНИЛС", "");
	
	Если ТипЗнч(ДанныеИзСервиса.SNILS) = Тип("Строка") И ЗначениеЗаполнено(ДанныеИзСервиса.SNILS) Тогда
		ДанныеИзСервиса.СНИЛС = УчетПособийСоциальногоСтрахованияКлиентСервер.СНИЛСВФорматеИБ(ДанныеИзСервиса.SNILS);
	КонецЕсли;
	
	ДанныеИзСервиса.Вставить("ЯвляетсяПродолжениемБолезни", Не ЗначениеИзСтрокиXMLПоТипу(ДанныеИзСервиса.PRIMARY_FLAG, Тип("Булево")));
	ДанныеИзСервиса.Вставить("НомерПервичногоЛисткаНетрудоспособности", Строка(ДанныеИзСервиса.PREV_LN_CODE));
	
	// Базовые проверки спецификации.
	БазовыеПоля = СтрРазделить("SNILS, LN_CODE", ", ", Ложь);  // Убираем LN_HASH из базовых полей   СтрРазделить("SNILS, LN_CODE, LN_HASH", ", ", Ложь);
	Для Каждого ИмяПоля Из БазовыеПоля Цикл
		Если Не ЗначениеЗаполнено(ДанныеИзСервиса[ИмяПоля]) Тогда
			ТекстОшибки = СтрШаблон(НСтр("ru = 'Файл не соответствует спецификации: Не заполнено поле ""%1"".'"), ИмяПоля);
			ЗарплатаКадрыОтображениеОшибок.СообщитьОбОшибке(Отказ, ТекстОшибки, ИмяПоля);
		КонецЕсли;
	КонецЦикла;
	
	СостояниеЭЛНВФСС = Перечисления.СостоянияЭЛНВФСС.НайтиПоКодуФСС(ДанныеИзСервиса.LN_STATE);
	ДанныеИзСервиса.Вставить("СостояниеЭЛНВФСС", СостояниеЭЛНВФСС);
	
	Возврат ДанныеИзСервиса;
КонецФункции
Показать
7. TrinitronOTV 14 18.11.20 06:32 Сейчас в теме
Непонятно, так вреден этот код или полезен?
8. Sergeevich 36 18.11.20 18:40 Сейчас в теме
(7) Если посмотрите то увидите что просто данное поле LN_HASH пропускается при загрузке ЭЛН и не более. Никакого вреда тут нет. К тому же выше всё уже и так описано и есть ссылка не спецификацию. А если детально посмотрите код 1С то при обмене LN_HASH выгружается только если он заполнен, в текущей версии исправления он пустой, что допустимо.
10. alegon 27.01.21 18:09 Сейчас в теме
А в техподдержку 1С или СБИС никто не пробовал обращаться? Есть официальная версия?
11. DimitrievEvg 29.01.21 10:38 Сейчас в теме
Лучше не стоит этого делать, так как тогда придётся исправлять и логику макета заявления для подписания сотрудником:
Если не заполнен Хэш база считает, что это бумажный больничный и в соответствующих полях проставляет метки..
А учитывая, что они каждый раз что-то меняют в регламентированное не стоит лезть(ИМХО)..
От тех. поддержки пока не добился вразумительного ответа - Хеш приходит от ФСС при загрузки больничного, а они "заняты" постоянно..
Оставьте свое сообщение