Несколько ошибок ЗУП 3.1.2.121

Публикация № 601485

Администрирование - Администрирование данных 1С - Тестирование и исправление

исправление типовая ошибка

Лечение ошибок типовой базы

При создании документа Увольнение появляется сообщение "значение не является значением объектного типа (ИспользованиеПериода).

В случае, если документ создается не из журнала документов, форма документа при этом не открывается.

Ошибка возникет по сотрудникам, у которых есть дополнительный ежегодный отпуск (северный).

В этом случае начисление при создании документа не определено и выбирается после заполнения документа.

В алгоритме 1С этот момент был упущен, что приводило к ошибке.

Лечение:

Общий модуль.РасчетЗарплатыРасширенный, с 253 строки вставить условие:

//ошибка при попадании северного доп отпуска начисление не определено
        если ЗначениеЗаполнено(Строка.Начисление) тогда
            //ошибка    
            Если РеквизитыНачислений[Строка.Начисление].ИспользованиеПериода <> Перечисления.ВариантыИспользованияПериодаНачисления.ПериодДействия Тогда
                Если НоваяСтрока.ПериодДействияНачало < НачалоМесяца Или НоваяСтрока.ПериодДействияНачало > КонецМесяца Тогда
                    НоваяСтрока.ПериодДействияНачало = НачалоМесяца;
                КонецЕсли;
                Если НоваяСтрока.ПериодДействияКонец < НачалоМесяца Или НоваяСтрока.ПериодДействияКонец > КонецМесяца Тогда
                    НоваяСтрока.ПериодДействияКонец = КонецМесяца;
                КонецЕсли;
            КонецЕсли;
            //ошибка при попадании северного доп отпуска начисление не определено
        КонецЕсли;
        //ошибка


и ниже на 12 строк:

// - если не переопределяется
        Если Не БазовыйПериодПереопределен Тогда
            //ошибка при попадании северного доп отпуска начисление не определено
            если ЗначениеЗаполнено(Строка.Начисление) тогда
                //ошибка    
                
                РеквизитыНачисления = РеквизитыНачислений[Строка.Начисление];
                Если РеквизитыНачисления.ИспользованиеПериода = Перечисления.ВариантыИспользованияПериодаНачисления.БазовыйПериод Тогда
                    БазовыйПериод = РасчетЗарплатыРасширенныйКлиентСервер.БазовыйПериодНачисления(
                    Месяц, РеквизитыНачисления.ПериодРасчетаБазовыхНачислений, РеквизитыНачисления.КоличествоМесяцевБазовогоПериода, РеквизитыНачисления.СдвигБазовогоПериода);
                    НоваяСтрока.БазовыйПериодНачало = БазовыйПериод.ДатаНачала;
                    НоваяСтрока.БазовыйПериодКонец = БазовыйПериод.ДатаОкончания;
                КонецЕсли;
                //ошибка при попадании северного доп отпуска начисление не определено
            КонецЕсли;
            //ошибка
            
        КонецЕсли;

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. корум 284 23.03.17 17:57 Сейчас в теме
ещё одна ошибка:
в форме списка Сотрудники выводятся некорректные данные по окладу, ФОТ, авансу.

Лечение:
Общий модуль СотрудникиФормыРасширенный
Функция ТекстыЗапросовФормыВыбораСотрудников()

строка 3644, заменяем в запросе:

						//|			И КОНЕЦПЕРИОДА(ДанныеДляПодбора.Начало, День) МЕЖДУ ДанныеОбОплатеТрудаДляПодбора.Период И  ДанныеОбОплатеТрудаДляПодбора.ДатаОкончания}
						|			И (ДанныеОбОплатеТрудаДляПодбора.ДатаОкончания = ДАТАВРЕМЯ(3999, 12, 31, 23, 59, 59))}
3. корум 284 25.03.17 15:34 Сейчас в теме
(1) дополнение: на 2 строки ниже нужно заменить такое же условие по авансам.
2. корум 284 24.03.17 16:59 Сейчас в теме
Ошибка в документе Изменение плановых начислений.

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

Лечение:
ФормаДокумента ИзменениеПлановыхНачислений, в модуле формы заменить процедуру

ПрименитьИзмененияВДокументеКПлановымПоказателямСотрудников

на

&НаСервере
Процедура ПрименитьИзмененияВДокументеКПлановымПоказателямСотрудников(НачисленияПоказателиСотрудников, ФильтрСотрудников = Неопределено)
	//ошибка в показателях начислений выдается ересь при редактировании,
	// но в документе значения правильные
	фильтрСотр = "";	
	//ошибка
	ПоказателиСотрудниковВДокументе = Объект.ПоказателиСотрудников.Выгрузить();
	Для каждого СтрокаСотрудника Из Объект.Сотрудники Цикл
		
		Если ФильтрСотрудников <> Неопределено Тогда
			
			СтрокиФильтра = ФильтрСотрудников.НайтиСтроки(Новый Структура("ИдентификаторСтрокиСотрудника", СтрокаСотрудника.ИдентификаторСтрокиСотрудника));
			Если СтрокиФильтра.Количество() = 0 Тогда
				Продолжить;
			КонецЕсли;
			
		КонецЕсли;
		//ошибка в показателях начислений выдается ересь при редактировании,
		// но в документе значения правильные
		фильтрсотр = СтрокаСотрудника.ИдентификаторСтрокиСотрудника;
		//ошибка
		РеквизитФормыВПоказателиСотрудника(ПоказателиСотрудниковВДокументе, СтрокаСотрудника); 
		
	КонецЦикла;
	
	НачисленияПоказателиСотрудников.ПоказателиСотрудников.Индексы.Добавить("ИдентификаторСтрокиСотрудника, Показатель, ДокументОснование");
	
	Отбор = Новый Структура("ИдентификаторСтрокиСотрудника, Показатель, ДокументОснование");
	
	Для каждого Строка Из ПоказателиСотрудниковВДокументе Цикл
		
		Отбор.Показатель = Строка.Показатель;
		Отбор.ДокументОснование = Строка.ДокументОснование;
		Отбор.ИдентификаторСтрокиСотрудника = Строка.ИдентификаторСтрокиСотрудника;
		
		СтрокиПоказателей = НачисленияПоказателиСотрудников.ПоказателиСотрудников.НайтиСтроки(Отбор);
		Если СтрокиПоказателей.Количество() > 0 Тогда
			СтрокиПоказателей[0].Значение = Строка.Значение; 
		Иначе 
			//ошибка в показателях начислений выдается ересь при редактировании,
			// но в документе значения правильные
			если не (фильтрсотр = "") тогда
				//естьфильтр
				если Строка.ИдентификаторСтрокиСотрудника <> фильтрсотр тогда
					//и фильтр не пройден
					продолжить;
				КонецЕсли;
				//если фильтра нет, работаем как было
			КонецЕсли;
			//ошибка
			СтрокиПоказателей = НачисленияПоказателиСотрудников.ПоказателиСотрудников.Добавить();
			СтрокиПоказателей.ИдентификаторСтрокиСотрудника = Строка.ИдентификаторСтрокиСотрудника;
			СтрокиПоказателей.Показатель = Строка.Показатель;
			СтрокиПоказателей.ДокументОснование = Строка.ДокументОснование;
			СтрокиПоказателей.Значение = Строка.Значение; 
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры
Показать
4. корум 284 27.03.17 12:00 Сейчас в теме
(0) поправка:
Общий модуль.РасчетЗарплатыРасширенный, строка 225 (перед началом цикла)

вставить
идСтроки = 0;


Общий модуль.РасчетЗарплатыРасширенный, с 253 строки вставить условие:

//ошибка при попадании северного доп отпуска начисление не определено
        если ЗначениеЗаполнено(Строка.Начисление) тогда
            //ошибка    
            Если РеквизитыНачислений[Строка.Начисление].ИспользованиеПериода <> Перечисления.ВариантыИспользованияПериодаНачисления.ПериодДействия Тогда
                Если НоваяСтрока.ПериодДействияНачало < НачалоМесяца Или НоваяСтрока.ПериодДействияНачало > КонецМесяца Тогда
                    НоваяСтрока.ПериодДействияНачало = НачалоМесяца;
                КонецЕсли;
                Если НоваяСтрока.ПериодДействияКонец < НачалоМесяца Или НоваяСтрока.ПериодДействияКонец > КонецМесяца Тогда
                    НоваяСтрока.ПериодДействияКонец = КонецМесяца;
                КонецЕсли;
            КонецЕсли;
            //ошибка при попадании северного доп отпуска начисление не определено

            //!!! дополнение
            иначе
			Движения.Начисления.удалить(идСтроки);
			продолжить;

        КонецЕсли;
        //ошибка
Показать


Перед концом цикла вставить

		идСтроки = идСтроки+1;
5. корум 284 28.03.17 09:08 Сейчас в теме
ВедомостьНаВыплатуЗарплатыВбанк имеет интересную логику работы с полем НомерРеестра.
Новый номер реестра присваивается всем документам, а в регистр записываются только проведённые.
Причём уникальность номеров при этом не проверяется.

Минимальная заплатка, чтобы было меньше ошибок:

Форма документа

&НаСервере
Процедура ПриЗакрытииНаСервере()
	//не ошибка, но обнулим номер реестра в непроведенных документах.
	если не объект.проведен тогда
		Объект.номерРеестра=0;
		Записать();
	КонецЕсли;
	//не ошибка
КонецПроцедуры
Показать
6. teller 30.03.17 08:14 Сейчас в теме
На hotline написал?
или пираткой пользуешься?
7. корум 284 30.03.17 09:10 Сейчас в теме
(6) странное противопоставление.
есть люди, которые живут с лицензией, но в хлине письма не пишут.
(да и смысл невелик, когда уже 154 выложен, и завтра будет ещё более свежий...)
8. teller 31.03.17 05:45 Сейчас в теме
(7) странно что ты выложил в виде публикации, сам же написал комментарии, а разработчикам ничего не написал.
Исходя из чего 1с по твоему исправляет ошибки?
посмотри на bugboard.
Оставьте свое сообщение