Помогите пожалуйста с кодом. Нужно чтобы в таблицу записывались данные только из определенного документа (все остальное записывается правильно), сейчас записывает в таблицу из каждого элемента переменные(рис.). Это берется из Документа КадровыйПереводСписком.
Нужно чтобы у каждой печати были свои данные в таблице
Вот это вставил в начале (понимаю что не правильно) и теперь выводит только из 1 документа, а как сделать чтобы выводилось для каждого свое так и не знаю.
Сразу простите пожалуйста за тупость
ВыборкаПоСотрудникам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоСотрудникам.Следующий() Цикл
ОписанияНачислений = Новый Соответствие;
Если Не ОписанияНачисленийПоПериодам.Получить(ОписанияНачислений) = ВыборкаПоСотрудникам.Следующий() Тогда
ВыборкаПоПериодам = ВыборкаПоСотрудникам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоПериодам.Следующий() Цикл
ВыведенныеПоказатели = Новый Соответствие;
ОписаниеОкладаЗаполнялось = Ложь;
ОписаниеСоставаНачислений = КадровыйУчетБазовый.ОписаниеСоставаНачислений();
//Если Не ОписанияНачислений.Получить( ОписаниеСоставаНачислений)= ВыборкаПоСотрудникам.Следующий() Тогда
Выборка = ВыборкаПоПериодам.Выбрать();
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.Значение) И ВыведенныеПоказатели.Получить(Выборка.Показатель) = Истина Тогда
Продолжить;
КонецЕсли;
Если Не ОписаниеОкладаЗаполнялось И Выборка.ОкладТариф И Выборка.Используется Тогда
ОписаниеСоставаНачислений.Вставить("ПоказательОкладТариф", Выборка.Показатель);
ОписаниеСоставаНачислений.Вставить("ОкладТариф", Выборка.Значение);
Если ЗначениеЗаполнено(Выборка.Значение) Тогда
ВыведенныеПоказатели.Вставить(Выборка.Показатель, Истина);
КонецЕсли;
Если ИспользоватьКраткиеПредставления Тогда
ПредставлениеТарифнойСтавки = ?(ПустаяСтрока(Выборка.ПоказательКраткоеНаименование), Строка(Выборка.НачислениеКраткоеНаименование), Строка(Выборка.ПоказательКраткоеНаименование))
Иначе
Если Выборка.Значение = 0 Тогда
ПредставлениеТарифнойСтавки = Выборка.НачислениеНаименование;
Иначе
ПредставлениеТарифнойСтавки = ?(ПустаяСтрока(Выборка.ПоказательНаименование), Выборка.НачислениеНаименование, Выборка.ПоказательНаименование)
КонецЕсли;
КонецЕсли;
Если Выборка.Значение > 0 Тогда
ПредставлениеТарифнойСтавки =
ПредставлениеТарифнойСтавки + ": " + Формат(Выборка.Значение, "ЧДЦ=" + Выборка.Точность + "; ЧГ=");
Если ВыводитьДенежныеПоказателиСВалютой И Выборка.ДенежныйПоказатель Тогда
ПредставлениеТарифнойСтавки = ПредставлениеТарифнойСтавки + " " + НСтр("ru='руб.'");
Если Выборка.ВидТарифнойСтавки = Перечисления.ВидыТарифныхСтавок.ЧасоваяТарифнаяСтавка Тогда
ПредставлениеТарифнойСтавки = ПредставлениеТарифнойСтавки + " " + НСтр("ru='за час'");
ИначеЕсли Выборка.ВидТарифнойСтавки = Перечисления.ВидыТарифныхСтавок.ДневнаяТарифнаяСтавка Тогда
ПредставлениеТарифнойСтавки = ПредставлениеТарифнойСтавки + " " + НСтр("ru='за день'");
КонецЕсли;
КонецЕсли;
КонецЕсли;
ОписаниеСоставаНачислений.Вставить("ОписаниеОклада", ПредставлениеТарифнойСтавки);
ОписаниеОкладаЗаполнялось = Истина;
Иначе
Если Выборка.ОкладТариф
И Не Выборка.Используется Тогда
Продолжить;
КонецЕсли;
Если Выборка.Используется Тогда
ОписаниеНадбавок = ОписаниеСоставаНачислений.ОписаниеНадбавок;
//..
СтрокаТаб = ТаблицаНачислений.Добавить();
СтрокаТаб.Сотрудник = Выборка.Сотрудник;
//..
Если ИспользоватьКраткиеПредставления Тогда
ПредставлениеПоказателя = ?(ПустаяСтрока(Выборка.ПоказательКраткоеНаименование), Выборка.НачислениеКраткоеНаименование, Выборка.ПоказательКраткоеНаименование);
Иначе
Если Выборка.Значение = 0 Тогда
ПредставлениеПоказателя = Выборка.НачислениеНаименование;
Иначе
ПредставлениеПоказателя = ?(ПустаяСтрока(Выборка.ПоказательНаименование), Выборка.НачислениеНаименование, Выборка.ПоказательНаименование);
КонецЕсли;
КонецЕсли;
//..
СтрокаТаб.Начисление = Выборка.НачислениеПредст;
//..
ОписаниеНадбавок = ?(ПустаяСтрока(ОписаниеНадбавок), "", ОписаниеНадбавок + "; ") + ПредставлениеПоказателя;
Если Выборка.Значение > 0 Тогда
ОписаниеНадбавок = ОписаниеНадбавок + ": " + Формат(Выборка.Значение, "ЧДЦ=" + Выборка.Точность + "; ЧГ=");
Если ВыводитьДенежныеПоказателиСВалютой И Выборка.ДенежныйПоказатель Тогда
ОписаниеНадбавок = ОписаниеНадбавок + " " + НСтр("ru='руб.'");
КонецЕсли;
//..
СтрокаТаб.Размер = Формат(Выборка.Значение, "ЧДЦ=" + Выборка.Точность + "; ЧГ=");
Если ВыводитьДенежныеПоказателиСВалютой И Выборка.ДенежныйПоказатель Тогда
СтрокаТаб.Размер = СтрокаТаб.Размер + " " + НСтр("ru='руб.'");
ИначеЕсли СтрНайти(Выборка.ПоказательНаименование, "роцент")+СтрНайти(Выборка.ПоказательНаименование, "%")>0 Тогда
СтрокаТаб.Размер = СтрокаТаб.Размер + " (%)";
КонецЕсли;
//..
КонецЕсли;
Если Не ПустаяСтрока(ИмяПоляДатаОкончания) Тогда
Если ЗначениеЗаполнено(Выборка.ДатаОкончанияНачисления)
И Выборка.ДатаОкончанияНачисления < Выборка.ДатаОкончания
И Не Выборка.ИспользуетсяПоОкончании Тогда
ОписаниеНадбавок = ОписаниеНадбавок + " " + НСтр("ru='по'") + " " + Формат(Выборка.ДатаОкончанияНачисления, "ДЛФ=D");
ИначеЕсли ЗначениеЗаполнено(Выборка.ДатаОкончания)
И ЗначениеЗаполнено(Выборка.Значение) Тогда
ОписаниеНадбавок = ОписаниеНадбавок + " " + НСтр("ru='по'") + " " + Формат(Выборка.ДатаОкончания, "ДЛФ=D");
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.Значение) Тогда
ВыведенныеПоказатели.Вставить(Выборка.Показатель, Истина);
КонецЕсли;
ИначеЕсли ЗначениеЗаполнено(Выборка.ДатаОкончанияНачисления) Тогда
ОписаниеНадбавок = ОписаниеСоставаНачислений.ОписаниеНадбавок;
ОписаниеНадбавок =
?(ПустаяСтрока(ОписаниеНадбавок), "", ОписаниеНадбавок + "; ")
+ ?(ПустаяСтрока(Выборка.Показатель), Выборка.Начисление, Выборка.Показатель)
+ ?(Выборка.Значение = 0, "", ": " + Формат(Выборка.Значение, "ЧДЦ=" + Выборка.Точность + "; ЧГ="))
+ " " + НСтр("ru='с'") + " " + Формат(КонецДня(Выборка.ДатаОкончанияНачисления) + 1, "ДЛФ=D");
КонецЕсли;
ОписаниеСоставаНачислений.Вставить("ОписаниеНадбавок", ОписаниеНадбавок);
КонецЕсли;
КонецЦикла;
ОписанияНачислений.Вставить(ВыборкаПоПериодам.Период, ОписаниеСоставаНачислений);
//КонецЕсли;
КонецЦикла;
ОписанияНачисленийПоПериодам.Вставить(ВыборкаПоСотрудникам.Сотрудник, ОписанияНачислений);
КонецЕсли;
КонецЦикла;
ПоказатьНужно чтобы у каждой печати были свои данные в таблице
Вот это вставил в начале (понимаю что не правильно) и теперь выводит только из 1 документа, а как сделать чтобы выводилось для каждого свое так и не знаю.
Если Не ОписанияНачисленийПоПериодам.Получить(ОписанияНачислений) = ВыборкаПоСотрудникам.Следующий() Тогда
Сразу простите пожалуйста за тупость
Прикрепленные файлы:
По теме из базы знаний
- Универсальная печать таблицы значений
- Произвольная иерархия в СКД (системе компоновки данных)
- Вывод в таблицу значений данных по физическим лицам из раздела 3 "Расчета по страховым взносам" за 2017 год. 1С: 8.2 УПП. Обновлена для отчетов с 2020 года.
- Программная корректировка при выводе отчета СКД
- Универсальная загрузка данных формата Excel
Найденные решения
Вот что было
Вот что сделал
Вот начало(Если кому-то нужно будет, хотя врятли)
Обл = Макет.ПолучитьОбласть("Надбавки");
Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
Обл.Параметры.Начисление = СтрокаТаб.Начисление;
Обл.Параметры.Размер = СтрокаТаб.Размер;
ТабличныйДокумент.Вывести(Обл);
КонецЦикла;
Вот что сделал
Обл = Макет.ПолучитьОбласть("Надбавки");
Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
Если СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование = ПараметрыМакета.Работник Тогда
Обл.Параметры.Начисление = СтрокаТаб.Начисление;
Обл.Параметры.Размер = СтрокаТаб.Размер;
ТабличныйДокумент.Вывести(Обл);
КонецЕсли;
КонецЦикла;
ПоказатьВот начало(Если кому-то нужно будет, хотя врятли)
Если Макет <> Неопределено Тогда
ПервыйПриказ = Истина;
Для каждого ПараметрыМакета Из МассивДанныхЗаполнения Цикл
Если Не ПервыйПриказ Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
Иначе
ПервыйПриказ = Ложь;
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Если Не ОписанияНачисленийПоПериодам.Получить(ОписанияНачислений) = ВыборкаПоСотрудникам.Следующий() тогда
Это лишнее, у Вас уже Выше соблюдено условие ВыборкаПоСотрудникам.Следующий().
Перепишите так:
Это лишнее, у Вас уже Выше соблюдено условие ВыборкаПоСотрудникам.Следующий().
Перепишите так:
ОписанияНачисленийПоПериодам.Получить(ОписанияНачислений) = Ложь
"ОписаниеСоставаНачислений" - это скорее всего типа данных "Структура". Напишите сообщить(ТипЗнч(ОписаниеСоставаНачислений)); чтобы в этом убедиться, или если уже знакомы с отладкой, с помощью нее. В момент когда Вы присваиваете струтуре значение Предыдущее значение всегда затирается. Часто в таких случаях создают массив, куда добавляют значение структуры на определенном витке цикла, таким образом можно сохранить их всех.
ОписаниеСоставаНачислений.Вставить("ОписаниеНадбавок", ОписаниеНадбавок);
МассивОписаний = новый массив;
Пока Выборка.Следующий() Цикл
.....
МассивОписаний.Добавить(ОписанияНачислений);
.....
КонецЦикла
Показать
Вот что было
Вот что сделал
Вот начало(Если кому-то нужно будет, хотя врятли)
Обл = Макет.ПолучитьОбласть("Надбавки");
Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
Обл.Параметры.Начисление = СтрокаТаб.Начисление;
Обл.Параметры.Размер = СтрокаТаб.Размер;
ТабличныйДокумент.Вывести(Обл);
КонецЦикла;
Вот что сделал
Обл = Макет.ПолучитьОбласть("Надбавки");
Для Каждого СтрокаТаб Из ТаблицаНачислений Цикл
Если СтрокаТаб.Сотрудник.ФизическоеЛицо.Наименование = ПараметрыМакета.Работник Тогда
Обл.Параметры.Начисление = СтрокаТаб.Начисление;
Обл.Параметры.Размер = СтрокаТаб.Размер;
ТабличныйДокумент.Вывести(Обл);
КонецЕсли;
КонецЦикла;
ПоказатьВот начало(Если кому-то нужно будет, хотя врятли)
Если Макет <> Неопределено Тогда
ПервыйПриказ = Истина;
Для каждого ПараметрыМакета Из МассивДанныхЗаполнения Цикл
Если Не ПервыйПриказ Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
Иначе
ПервыйПриказ = Ложь;
КонецЕсли;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот