как отразить часы в ЖурналеРасчетовЗарплата
Привет Всем!
В ЗиК в док НачисленияУдержанияСписком в табличной части добавил реквизит часы, нужно было отразить для ряда начислений регистрацию времени.
Что нужно сделать чтобы эти часы попали в ЖурналРасчетовЗарплата???
Направте в нужном направлении пожалуйста. Заранее Всем Спасибо!
Добавил в обработке проведения
ЖурналРасчетовЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");
ЖурналРасчетовЗарплата.УстановитьРеквизит("Часы",Ч асы);
ЖурналРасчетовЗарплата.ВвестиРасчет(Сотрудник,Расч ет,Начало,Окончание,Сумма);
Это все вроде понятно но при попытке провести док выдает сообщение, ошибку
ЖурналРасчетовЗарплата.ВвестиРасчет(Сотрудник,Расч ет,Начало,Окончание,Сумма);
{Документ.НачисленияУдержанияСписком.Модуль Документа(271)}: Объект расчета не найден!
Документ не проведен
Перепробовал разные варианты не пойму в чем проблема???
В ЗиК в док НачисленияУдержанияСписком в табличной части добавил реквизит часы, нужно было отразить для ряда начислений регистрацию времени.
Что нужно сделать чтобы эти часы попали в ЖурналРасчетовЗарплата???
Направте в нужном направлении пожалуйста. Заранее Всем Спасибо!
Добавил в обработке проведения
ЖурналРасчетовЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");
ЖурналРасчетовЗарплата.УстановитьРеквизит("Часы",Ч асы);
ЖурналРасчетовЗарплата.ВвестиРасчет(Сотрудник,Расч ет,Начало,Окончание,Сумма);
Это все вроде понятно но при попытке провести док выдает сообщение, ошибку
ЖурналРасчетовЗарплата.ВвестиРасчет(Сотрудник,Расч ет,Начало,Окончание,Сумма);
{Документ.НачисленияУдержанияСписком.Модуль Документа(271)}: Объект расчета не найден!
Документ не проведен
Перепробовал разные варианты не пойму в чем проблема???
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ну НачисленияУдержанияСписком это документ...который помогает внести в ЖурналРасчетовЗарплата запись, какого либо ВИД РАСЧЕТА...
<отразить для ряда начислений регистрацию времени.
??? для расчета чтоль? в смысле для способа расчета по часам?
Непойму что Вы хотите сделать...те более в этом документе...
<ЖурналРасчетовЗарплата.ВвестиРасчет(Сотрудник,Расчет,Начало,Окончание,Сумма);
И как вы вводите расчет ...Сумма то откуда взялась?
передается ВЕЛИЧИНА...покрайней мере в этом документе...а уж "Результат" (В ЖРЗ именно такой реквизит, а не СУММА) ...высчитывается в модуле РАСЧЕТА...
В общем надо подробнее описать что хотите и зачем
<отразить для ряда начислений регистрацию времени.
??? для расчета чтоль? в смысле для способа расчета по часам?
Непойму что Вы хотите сделать...те более в этом документе...
<ЖурналРасчетовЗарплата.ВвестиРасчет(Сотрудник,Расчет,Начало,Окончание,Сумма);
И как вы вводите расчет ...Сумма то откуда взялась?
передается ВЕЛИЧИНА...покрайней мере в этом документе...а уж "Результат" (В ЖРЗ именно такой реквизит, а не СУММА) ...высчитывается в модуле РАСЧЕТА...
В общем надо подробнее описать что хотите и зачем
<ЖурналРасчетовЗарплата.ВвестиРасчет(Сотрудник,Расч ет,Начало,Окончание,Сумма);
<{Документ.НачисленияУдержанияСписком.Модуль Документа(271)}: Объект расчета не найден!
И насчет ошибки ...это многострочный докумет...надо передавать строку документа, не Сотрудника
ЖурналРасчетовЗарплата.УстановитьРеквизит("НомерСтрокиДокумента", НомерСтроки);
<{Документ.НачисленияУдержанияСписком.Модуль Документа(271)}: Объект расчета не найден!
И насчет ошибки ...это многострочный докумет...надо передавать строку документа, не Сотрудника
ЖурналРасчетовЗарплата.УстановитьРеквизит("НомерСтрокиДокумента", НомерСтроки);
Если ПустоеЗначение(Сотрудник)=1 Тогда
Продолжить
КонецЕсли;
Если НерегистрируемоеВНачисленииУдержании = 1 Тогда
ЖурналРасчетовЗарплата = СоздатьОбъект("ЖурналРасчетов."+?(Дополнительный = 1,"Дополнительный","Зарплата"));
ДатаН = ?(Расчет.ВходитВГруппу(ГруппаРасчетов.НерегистрируемыеВНачисленииУдержании)=0,?(Начало=Дата(0),ДатаДок,Начало),ДатаДок);
ДатаК = ?(Расчет.ВходитВГруппу(ГруппаРасчетов.НерегистрируемыеВНачисленииУдержании)=0,?(Окончание=Дата(0),ДатаДок,Окончание),ДатаДок);
Если ЖурналРасчетовЗарплата.ВыбратьПериодПоОбъекту(Сотрудник,ЖурналРасчетовЗарплата.КонецТекущегоПериода()) = 1 Тогда
ЖурналРасчетовЗарплата.УстановитьРеквизит("НомерСтрокиДокумента", НомерСтроки);
ЖурналРасчетовЗарплата.ВвестиРасчет(Сотрудник,Расчет,ДатаН,ДатаК,Сумма);
Иначе
ЖурналРасчетовЗарплата.Новая();
ЖурналРасчетовЗарплата.УстановитьРеквизит("Объект", Сотрудник);
ЖурналРасчетовЗарплата.УстановитьРеквизит("ВидРасч", Расчет);
ЖурналРасчетовЗарплата.УстановитьРеквизит("Документ", ТекущийДокумент());
ЖурналРасчетовЗарплата.УстановитьРеквизит("РодительскийДокумент", ТекущийДокумент());
ЖурналРасчетовЗарплата.УстановитьРеквизит("ДатаНачала", ДатаН);
ЖурналРасчетовЗарплата.УстановитьРеквизит("ДатаОкончания", ДатаК);
ЖурналРасчетовЗарплата.УстановитьРеквизит("Часы", Часы);
ЖурналРасчетовЗарплата.УстановитьРеквизит("НомерСтрокиДокумента", НомерСтроки);
ЖурналРасчетовЗарплата.Записать();
КонецЕсли;
Если Дополнительный = 0 Тогда
Если ОблагаетсяПоСтавке35 = 1 Тогда // ввод записей по другим ставкам
......................
А, что здесь строка не передается?
С ошибкой разобрался, не в том месте добавил вышеизложенные строки, а часы все равно не отображаются в журналеРасчетовЗарплата.
Если кто конкретно знает, подскажите конкретно, а не морочте голову сбивая мысли.
Всем огромное спасибо!
Продолжить
КонецЕсли;
Если НерегистрируемоеВНачисленииУдержании = 1 Тогда
ЖурналРасчетовЗарплата = СоздатьОбъект("ЖурналРасчетов."+?(Дополнительный = 1,"Дополнительный","Зарплата"));
ДатаН = ?(Расчет.ВходитВГруппу(ГруппаРасчетов.НерегистрируемыеВНачисленииУдержании)=0,?(Начало=Дата(0),ДатаДок,Начало),ДатаДок);
ДатаК = ?(Расчет.ВходитВГруппу(ГруппаРасчетов.НерегистрируемыеВНачисленииУдержании)=0,?(Окончание=Дата(0),ДатаДок,Окончание),ДатаДок);
Если ЖурналРасчетовЗарплата.ВыбратьПериодПоОбъекту(Сотрудник,ЖурналРасчетовЗарплата.КонецТекущегоПериода()) = 1 Тогда
ЖурналРасчетовЗарплата.УстановитьРеквизит("НомерСтрокиДокумента", НомерСтроки);
ЖурналРасчетовЗарплата.ВвестиРасчет(Сотрудник,Расчет,ДатаН,ДатаК,Сумма);
Иначе
ЖурналРасчетовЗарплата.Новая();
ЖурналРасчетовЗарплата.УстановитьРеквизит("Объект", Сотрудник);
ЖурналРасчетовЗарплата.УстановитьРеквизит("ВидРасч", Расчет);
ЖурналРасчетовЗарплата.УстановитьРеквизит("Документ", ТекущийДокумент());
ЖурналРасчетовЗарплата.УстановитьРеквизит("РодительскийДокумент", ТекущийДокумент());
ЖурналРасчетовЗарплата.УстановитьРеквизит("ДатаНачала", ДатаН);
ЖурналРасчетовЗарплата.УстановитьРеквизит("ДатаОкончания", ДатаК);
ЖурналРасчетовЗарплата.УстановитьРеквизит("Часы", Часы);
ЖурналРасчетовЗарплата.УстановитьРеквизит("НомерСтрокиДокумента", НомерСтроки);
ЖурналРасчетовЗарплата.Записать();
КонецЕсли;
Если Дополнительный = 0 Тогда
Если ОблагаетсяПоСтавке35 = 1 Тогда // ввод записей по другим ставкам
......................
А, что здесь строка не передается?
С ошибкой разобрался, не в том месте добавил вышеизложенные строки, а часы все равно не отображаются в журналеРасчетовЗарплата.
Если кто конкретно знает, подскажите конкретно, а не морочте голову сбивая мысли.
Всем огромное спасибо!
Во...я морочу голову...надо хотябы немного знать компоненту расчет...я не говорю о ЗиК...
<передается ВЕЛИЧИНА...покрайней мере в этом документе...а уж "Результат" (В ЖРЗ именно такой <реквизит, а не СУММА) ...высчитывается в модуле РАСЧЕТА...
Ну ладно...вот кусок модуля для конкретно ввода...только "в то место добавте вышеуказанные строки"...
//******************************************************************************
// Предопределенная процедура
//
Процедура ПровестиРасчет()
Если Документ.Вид() = "НачисленияУдержанияСписком" Тогда
Если Документ.ПолучитьСтрокуПоНомеру(НомерСтрокиДокумента) > 0 Тогда
Результат = Документ.Величина;
Часы = Документ.Часы;
КонецЕсли;
КонецЕсли;
КонецПроцедуры // ПровестиРасчет
<передается ВЕЛИЧИНА...покрайней мере в этом документе...а уж "Результат" (В ЖРЗ именно такой <реквизит, а не СУММА) ...высчитывается в модуле РАСЧЕТА...
Ну ладно...вот кусок модуля для конкретно ввода...только "в то место добавте вышеуказанные строки"...
//******************************************************************************
// Предопределенная процедура
//
Процедура ПровестиРасчет()
Если Документ.Вид() = "НачисленияУдержанияСписком" Тогда
Если Документ.ПолучитьСтрокуПоНомеру(НомерСтрокиДокумента) > 0 Тогда
Результат = Документ.Величина;
Часы = Документ.Часы;
КонецЕсли;
КонецЕсли;
КонецПроцедуры // ПровестиРасчет
В документе НачисленияУдержанияСписком ...в модуле не надо передавать
ЖурналРасчетовЗарплата.УстановитьРеквизит("Часы", Часы);
..да и вообще снесите что дописывали...оставте поле Часы...
можно дописать условие (в модуле формы отчета)...ну чтоб не на все расчеты показывалась это поле
в расчете который вы ставите в документе ...в его модуле!!!
добавте строку ...где Результат = "какоето выражение";
Часы = Документ.Часы;
если стоит
глВыполнитьПроизвольныйРасчет(Контекст);
или
другое из процедур глобального модуля
то это снести и написать свою..или дописать
Процедура ПровестиРасчет()
**************************
Если (Исправлена=1) или (Фиксирована=1) Тогда
глСообщениеТрассировки(глСообщенияТрассировки, "" + ?(Исправлена=1,"Результат записи исправлен вручную","Запись фиксирована") + ". Расчет не проводился.", 0, 1);
Возврат
КонецЕсли;
Результат = Документ.Величина;
Часы = Документ.Часы;
КонецПроцедуры // ПровестиРасчет()
тоды когда вводите документ...в ЖурналРасчетовЗарплата появляется нерасчитанная запись...расчет,начало,Окончание,результат(0),Часы(0)
при выполнении расчета ...появятся ваши часы
что непонятно пишите...но вразумительно
Без обид
ЖурналРасчетовЗарплата.УстановитьРеквизит("Часы", Часы);
..да и вообще снесите что дописывали...оставте поле Часы...
можно дописать условие (в модуле формы отчета)...ну чтоб не на все расчеты показывалась это поле
в расчете который вы ставите в документе ...в его модуле!!!
добавте строку ...где Результат = "какоето выражение";
Часы = Документ.Часы;
если стоит
глВыполнитьПроизвольныйРасчет(Контекст);
или
другое из процедур глобального модуля
то это снести и написать свою..или дописать
Процедура ПровестиРасчет()
**************************
Если (Исправлена=1) или (Фиксирована=1) Тогда
глСообщениеТрассировки(глСообщенияТрассировки, "" + ?(Исправлена=1,"Результат записи исправлен вручную","Запись фиксирована") + ". Расчет не проводился.", 0, 1);
Возврат
КонецЕсли;
Результат = Документ.Величина;
Часы = Документ.Часы;
КонецПроцедуры // ПровестиРасчет()
тоды когда вводите документ...в ЖурналРасчетовЗарплата появляется нерасчитанная запись...расчет,начало,Окончание,результат(0),Часы(0)
при выполнении расчета ...появятся ваши часы
что непонятно пишите...но вразумительно
Без обид
Мне посоветовали решить таким образом
В глобальном модуле добавил ЖурналРасчетов.Часы=ДокументИзЖурнала.Часы;
............................................
............................................
............................................
Если ДокументИзЖурнала.Вид()="НачисленияУдержанияСотрудника" Тогда
Величина = ДокументИзЖурнала.Величина;
ВТекущемЗаИстекший = ДокументИзЖурнала.ВТекущемЗаИстекший;
// определим формат числа в документе:
ВеличинаСтрокой = СокрЛП(Строка(Величина));
ФорматЧисла = ?(СтрДлина(ВеличинаСтрокой) - Найти(ВеличинаСтрокой,".") = 3,"Ч15.3","Ч15.2");
глСообщениеТрассировки(глСообщенияТрассировки, "Величина "+?(ВР.ВходитВГруппу(ГруппаРасчетов.ВсеУдержания)=0,"начисления","удержания")+" _П01 введена документом ""Ввод расчета сотруднику""" , 0, 1, Величина, ФорматЧисла);
ИначеЕсли ДокументИзЖурнала.Вид() = "НачисленияУдержанияСписком" Тогда
Если ЖурналРасчетов.НомерСтрокиДокумента > 0 Тогда
ДокументИзЖурнала.ПолучитьСтрокуПоНомеру(ЖурналРасчетов.НомерСтрокиДокумента);
Величина = ДокументИзЖурнала.Величина;
ВТекущемЗаИстекший = ДокументИзЖурнала.ВТекущемЗаИстекший;
//Изменения от Меня
ЖурналРасчетов.Часы=ДокументИзЖурнала.Часы; // Я добавил часы
// Здесь заканчиваються изменения от Меня
// определим формат числа в документе:
ВеличинаСтрокой = СокрЛП(Строка(Величина));
ФорматЧисла = ?(СтрДлина(ВеличинаСтрокой) - Найти(ВеличинаСтрокой,".") = 3,"Ч15.3","Ч15.2");
глСообщениеТрассировки(глСообщенияТрассировки, "Величина "+?(ВР.ВходитВГруппу(ГруппаРасчетов.ВсеУдержания)=0,"начисления","удержания")+" _П01 введена "+ЖурналРасчетов.НомерСтрокиДокумента+" строкой документа ""Ввод расчета списку сотрудников""" , 0, 1, Величина, ФорматЧисла);
Иначе
....................................
....................................
....................................
и все заработало так как надо, но Ваш вариант обязательно попробую реализовать,
большое спасибо за отзыв помощи и извините пожалуйста если чем огорчил.
С Наступающим Новым Годом Уважаемые Форумчане!
В глобальном модуле добавил ЖурналРасчетов.Часы=ДокументИзЖурнала.Часы;
............................................
............................................
............................................
Если ДокументИзЖурнала.Вид()="НачисленияУдержанияСотрудника" Тогда
Величина = ДокументИзЖурнала.Величина;
ВТекущемЗаИстекший = ДокументИзЖурнала.ВТекущемЗаИстекший;
// определим формат числа в документе:
ВеличинаСтрокой = СокрЛП(Строка(Величина));
ФорматЧисла = ?(СтрДлина(ВеличинаСтрокой) - Найти(ВеличинаСтрокой,".") = 3,"Ч15.3","Ч15.2");
глСообщениеТрассировки(глСообщенияТрассировки, "Величина "+?(ВР.ВходитВГруппу(ГруппаРасчетов.ВсеУдержания)=0,"начисления","удержания")+" _П01 введена документом ""Ввод расчета сотруднику""" , 0, 1, Величина, ФорматЧисла);
ИначеЕсли ДокументИзЖурнала.Вид() = "НачисленияУдержанияСписком" Тогда
Если ЖурналРасчетов.НомерСтрокиДокумента > 0 Тогда
ДокументИзЖурнала.ПолучитьСтрокуПоНомеру(ЖурналРасчетов.НомерСтрокиДокумента);
Величина = ДокументИзЖурнала.Величина;
ВТекущемЗаИстекший = ДокументИзЖурнала.ВТекущемЗаИстекший;
//Изменения от Меня
ЖурналРасчетов.Часы=ДокументИзЖурнала.Часы; // Я добавил часы
// Здесь заканчиваються изменения от Меня
// определим формат числа в документе:
ВеличинаСтрокой = СокрЛП(Строка(Величина));
ФорматЧисла = ?(СтрДлина(ВеличинаСтрокой) - Найти(ВеличинаСтрокой,".") = 3,"Ч15.3","Ч15.2");
глСообщениеТрассировки(глСообщенияТрассировки, "Величина "+?(ВР.ВходитВГруппу(ГруппаРасчетов.ВсеУдержания)=0,"начисления","удержания")+" _П01 введена "+ЖурналРасчетов.НомерСтрокиДокумента+" строкой документа ""Ввод расчета списку сотрудников""" , 0, 1, Величина, ФорматЧисла);
Иначе
....................................
....................................
....................................
и все заработало так как надо, но Ваш вариант обязательно попробую реализовать,
большое спасибо за отзыв помощи и извините пожалуйста если чем огорчил.
С Наступающим Новым Годом Уважаемые Форумчане!
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот