Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 ноя 2024, 21:11

Не могу понять в чем проблема - ВПН для ЗУП 3.1.

Автор gribok, 08 ноя 2022, 07:36

0 Пользователей и 1 гость просматривают эту тему.

gribok

Доброго дня.
Столкнулся  с такой проблемой и не знаю как решить.
Имеется ВПН О переводе на хоз работы.epf вот
Сие код выглядит так:
 УстановитьПривилегированныйРежим(Истина);
ТабДокумент = Новый ТабличныйДокумент;
Макет = ЭтотОбъект.ПолучитьМакет("Макет");
ТабДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_КадровыйПереводСписком";

ОбластьМакетаКолонтитул = Макет.ПолучитьОбласть("Колонтитул");
ОбластьМакетаШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьМакетаДанныеСотрудник = Макет.ПолучитьОбласть("Строка");
ОбластьМакетаПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьМакетаОзнакомлен = Макет.ПолучитьОбласть("Ознакомлен");

// Данные Шапки
ОбластьМакетаШапка.Параметры.ДатаДок = Формат(СсылкаНаОбъект.Дата,"ДЛФ=ДД");
ОбластьМакетаШапка.Параметры.ДатаДокКаз = Формат(СсылкаНаОбъект.Дата,"Л=kk; ДЛФ=ДД");
ОбластьМакетаШапка.Параметры.НомерДок = СсылкаНаОбъект.Номер;
//ОбластьМакетаШапка.Параметры.Дата = Формат(СсылкаНаОбъект.ДатаСобытия,"ДЛФ=ДД");
ТабДокумент.Вывести(ОбластьМакетаКолонтитул);
ТабДокумент.Вывести(ОбластьМакетаШапка);

Для Каждого СотрудникСтрока из СсылкаНаОбъект.Сотрудники Цикл
ОбластьМакетаДанныеСотрудник.Параметры.Должность = СотрудникСтрока.ДолжностьПоШтатномуРасписанию;
ОбластьМакетаДанныеСотрудник.Параметры.ТНомер = СотрудникСтрока.Сотрудник.Код;
ОбластьМакетаДанныеСотрудник.Параметры.Работник = СотрудникСтрока.Сотрудник;
ОбластьМакетаДанныеСотрудник.Параметры.Разряд = СотрудникСтрока.РазрядКатегория;
ОбластьМакетаДанныеСотрудник.Параметры.ПП = СотрудникСтрока.НомерСтроки;
ОбластьМакетаДанныеСотрудник.Параметры.ДатаД = Формат(СотрудникСтрока.ДатаНачала,"ДЛФ=ДД");
ОбластьМакетаДанныеСотрудник.Параметры.ДатаК = Формат(СотрудникСтрока.ДатаОкончания,"ДЛФ=ДД");
ОбластьМакетаДанныеСотрудник.Параметры.ГрафикРаботы = СотрудникСтрока.ГрафикРаботы;



Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КадровыйПереводСпискомПоказатели.Значение КАК Значение1,
| КадровыйПереводСпискомПоказатели.Показатель.Идентификатор КАК ПоказательИдентификатор1
|ИЗ
| Документ.КадровыйПереводСписком.Показатели КАК КадровыйПереводСпискомПоказатели";
//Запрос.УстановитьПараметр("Сотрудник", СотрудникСтрока.Сотрудник);
//Запрос.УстановитьПараметр("Дата", КонецДня(СотрудникСтрока.ДатаНачала));
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.ПоказательИдентификатор1 = "ПроцентНадбавки" Тогда
если  ВыборкаДетальныеЗаписи.Значение1 = 25
тогда
Надбавка = " "
      иначе
Надбавка = ВыборкаДетальныеЗаписи.Значение1;
     КонецЕсли;

ИначеЕсли ВыборкаДетальныеЗаписи.ПоказательИдентификатор1 = "ПроцентНадбавкиЗаВредность" Тогда
ВУТ = ВыборкаДетальныеЗаписи.Значение1;
Иначе
ТарифнаяСтавка = ВыборкаДетальныеЗаписи.Значение1;
КонецЕсли;
КонецЦикла;
ОбластьМакетаДанныеСотрудник.Параметры.Тариф = ТарифнаяСтавка;
ОбластьМакетаДанныеСотрудник.Параметры.ВУТ = ВУТ;
ОбластьМакетаДанныеСотрудник.Параметры.Надбавка = Надбавка;


ТабДокумент.Вывести(ОбластьМакетаДанныеСотрудник);
КонецЦикла;
ОбластьМакетаПодвал.Параметры.ФИОРуководителя = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(СсылкаНаОбъект.Руководитель.Наименование);
ТабДокумент.Вывести(ОбластьМакетаПодвал);

Для Каждого СотрудникСтрока из СсылкаНаОбъект.Сотрудники Цикл
ОбластьМакетаОзнакомлен.Параметры.СотрудникФИО = ФизическиеЛицаКлиентСервер.ФамилияИнициалы(СотрудникСтрока.Сотрудник.Наименование);
ТабДокумент.Вывести(ОбластьМакетаОзнакомлен);
КонецЦикла;

Возврат ТабДокумент;


Пытаюсь заполнить печатну. форму из документа кадровые перемещения списком. Все корректно кроме 1го момента.

В документе имеется вид начисления ПроцентНадбавки который в свою очередь либо есть либо нет
Т.К. Отменить начисление либо Продолжить

Так вот  -  в печатную форму всегда попадает число 25 если оно отменено.
Не пойму как сделать чтоб было 0 если данное начисление Отменено  в документе
ВыборкаДетальныеЗаписи.Значение1 = 25 = эту строку написал временно дабы проверить будет ли 0 если там 25.

11111.JPG

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

LexaK

gribok, ошибка здесь, вы в цикле заполняете Надбавка (если она есть) а если ее нет, остается от предыдущего сотрудника
то что сейчас Надбавку берете/определяете по всем сотрудникам сразу (нет отбора во вложенном цикле по текущему сотруднику)
установите пустое значение Надбавка  до цикла, должно помочь.

            Надбавка = " ";//добавлен сброс значения,
//надо переделать цикл ниже, а (лучше всю обработку сделать с одним запросом
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                Если ВыборкаДетальныеЗаписи.ПоказательИдентификатор1 = "ПроцентНадбавки" Тогда
...
если помогло нажмите: Спасибо!

gribok

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

LexaK

gribok, Тогда не понятно почему не работает, попробуйте использовать отладчик.
если помогло нажмите: Спасибо!

gribok

Цитата: LexaK от 08 ноя 2022, 11:02gribok, Тогда не понятно почему не работает, попробуйте использовать отладчик.

Ну если вдруг будет время, вот ефп - гляньте код, может что то увидите
Об изменении условий труда - ЧТС.epf

LexaK

gribok, вообще, как бы все показатели надо чистить по каждому сотруднику, примерно так
...
//сброс показателей
ТарифнаяСтавка = "";
Надбавка = "";
ВУТ = "";
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.ПоказательИдентификатор = "ПроцентНадбавки" Тогда
Надбавка = ВыборкаДетальныеЗаписи.Значение;
ИначеЕсли ВыборкаДетальныеЗаписи.ПоказательИдентификатор = "ПроцентНадбавкиЗаВредность" Тогда
ВУТ = ВыборкаДетальныеЗаписи.Значение;
Иначе
ТарифнаяСтавка = ВыборкаДетальныеЗаписи.Значение;
КонецЕсли;
КонецЦикла;
ОбластьМакетаДанныеСотрудник.Параметры.Тариф = ТарифнаяСтавка;
ОбластьМакетаДанныеСотрудник.Параметры.ВУТ = ВУТ;
ОбластьМакетаДанныеСотрудник.Параметры.Надбавка = Надбавка;
...
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск