ЗУП 3.1 Форма 0504402
Ребят, натолкните, пожалуйста, на мысль человека с минимальным опытом программирования.
Есть ЗУП 3.1.8.216. Нужна печатная форма 0504402. Но с видами и суммами начислений/удержаний по сотруднику и видами и суммами взносов.
Макет прикрепила. В первой части выводятся с 1 по 5 колонку, во второй только к выплате. Но эту информацию я могу взять из документа, из которого печатаю, а вот как заполнить Начисления и их суммы хоть убей понять не могу.
пишу простой запрос
Консоль запросов выводит всю нужную мне информацию, но как ее потом использовать никак не пойму. Результат это что? Таблица? Как вытащить оттуда наименование начисления/удержания и сумму? Пыталась в цикле, что-то типа
Понимаю, что проблема у меня с несоответствием типов, не понимаю где, когда и на какой тип я должна ссылаться. Беда еще, что отладку не запустить ((
Прошу помощи!
Есть ЗУП 3.1.8.216. Нужна печатная форма 0504402. Но с видами и суммами начислений/удержаний по сотруднику и видами и суммами взносов.
Макет прикрепила. В первой части выводятся с 1 по 5 колонку, во второй только к выплате. Но эту информацию я могу взять из документа, из которого печатаю, а вот как заполнить Начисления и их суммы хоть убей понять не могу.
пишу простой запрос
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| НачисленияУдержанияПоСотрудникам.ФизическоеЛицо КАК ФизическоеЛицо,
| НачисленияУдержанияПоСотрудникам.Период КАК Период,
| НачисленияУдержанияПоСотрудникам.НачислениеУдержание КАК НачислениеУдержание,
| НачисленияУдержанияПоСотрудникам.Регистратор КАК Регистратор
|ИЗ
| РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияУдержанияПоСотрудникам
|ГДЕ
| НачисленияУдержанияПоСотрудникам.Период МЕЖДУ &ДатаНач И &ДатаКон
| И НачисленияУдержанияПоСотрудникам.Сотрудник.Код = &ТабНомер
|
|СГРУППИРОВАТЬ ПО
| НачисленияУдержанияПоСотрудникам.ФизическоеЛицо,
| НачисленияУдержанияПоСотрудникам.Период,
| НачисленияУдержанияПоСотрудникам.НачислениеУдержание,
| НачисленияУдержанияПоСотрудникам.Регистратор";
Запрос.УстановитьПараметр("ДатаНач", НачалоМесяца(Документ.Дата));
Запрос.УстановитьПараметр("ДатаКон", КонецМесяца(Документ.Дата));
Запрос.УстановитьПараметр("ТабНомер", ТабНомер);
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
Возврат Результат;
Иначе
Возврат Неопределено;
КонецЕсли;
ПоказатьКонсоль запросов выводит всю нужную мне информацию, но как ее потом использовать никак не пойму. Результат это что? Таблица? Как вытащить оттуда наименование начисления/удержания и сумму? Пыталась в цикле, что-то типа
Пока Результат.Следующий () Цикл
Если Результат.Начисление = "НДФЛ" Тогда
ОбластьДанные.Параметры.НДФЛ = Результат.Начисление;
ОбластьДанные.Параметры.ЦифраНДФЛ = Результат.Сумма;
Иначе
ОбластьДанные.Параметры.Начисление[1] = Результат.Начисление;
ОбластьДанные.Параметры.ЦифраНачисления[1] = Результат.Сумма;
КонецЕсли;
Понимаю, что проблема у меня с несоответствием типов, не понимаю где, когда и на какой тип я должна ссылаться. Беда еще, что отладку не запустить ((
Прошу помощи!
Прикрепленные файлы:
По теме из базы знаний
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(4) складывается впечатление, что мы об одном и том же.. В вашем примере и в примере по ссылке переменная Выборка, в моем Результат. Получу то же самое, если напишу так
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий () Цикл
Если Выборка.НачислениеУдержание = "НДФЛ" Тогда
ОбластьДанные.Параметры.НДФЛ = Выборка.НачислениеУдержание;
ОбластьДанные.Параметры.ЦифраНДФЛ = Выборка.Сумма;
Иначе
ОбластьДанные.Параметры.Начисление[1] = Выборка.НачислениеУдержание;
ОбластьДанные.Параметры.ЦифраНачисления[1] = Выборка.Сумма;
КонецЕсли;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий () Цикл
Если Выборка.НачислениеУдержание = "НДФЛ" Тогда
ОбластьДанные.Параметры.НДФЛ = Выборка.НачислениеУдержание;
ОбластьДанные.Параметры.ЦифраНДФЛ = Выборка.Сумма;
Иначе
ОбластьДанные.Параметры.Начисление[1] = Выборка.НачислениеУдержание;
ОбластьДанные.Параметры.ЦифраНачисления[1] = Выборка.Сумма;
КонецЕсли;
(7) вот тип как раз непонятен. Вот это не работает
почему? Выборка.НачислениеУдержание.Наименование тоже, но это понятно. Тогда как задать условие?
Ведь НДФл - это удержание и я не могу заполнить этим наименованием Начисление..
Если Выборка.НачислениеУдержание = "НДФЛ" Тогда
почему? Выборка.НачислениеУдержание.Наименование тоже, но это понятно. Тогда как задать условие?
Ведь НДФл - это удержание и я не могу заполнить этим наименованием Начисление..
(7) И вот это как реализовать?
Если пишу явно ОбластьДанные.Параметры.Начисление[1], как в примере, тогда моя колонка просто перезаписывается, а если ставлю счетчик типа Н=0, в цикле Н = Н +1 , то ругается, Поле объекта не обнаружено (Начисление). В макете у меня параметры Начислени1, начисление2, Начисление3 и Начисление4. Как Сделать так, чтобы, если находится Начисление, то наименование подставлялось бы в начисление1, если находится еще одно, то наименование в Начисление2 и т.д..
ОбластьДанные.Параметры.Начисление[Н] = Выборка.НачислениеУдержание;
Если пишу явно ОбластьДанные.Параметры.Начисление[1], как в примере, тогда моя колонка просто перезаписывается, а если ставлю счетчик типа Н=0, в цикле Н = Н +1 , то ругается, Поле объекта не обнаружено (Начисление). В макете у меня параметры Начислени1, начисление2, Начисление3 и Начисление4. Как Сделать так, чтобы, если находится Начисление, то наименование подставлялось бы в начисление1, если находится еще одно, то наименование в Начисление2 и т.д..
(10) нужно в цикле каждый раз получать область и выводить ее после перезаполнения, типа того:
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий () Цикл
ОбластьДанные = Макет.ПолучитьОбласть("МояОбласть");
Если Выборка.НачислениеУдержание = "НДФЛ" Тогда
ОбластьДанные.Параметры.НДФЛ = Выборка.НачислениеУдержание;
ОбластьДанные.Параметры.ЦифраНДФЛ = Выборка.Сумма;
Иначе
ОбластьДанные.Параметры.Начисление[1] = Выборка.НачислениеУдержание;
ОбластьДанные.Параметры.ЦифраНачисления[1] = Выборка.Сумма;
табДок.Вывести(ОбластьДанные);
КонецЕсли;
Показать
(12) Написала Вот так
При этом ошибка
Какой параметр в макете должен быть? Неачисление или Начисление 1, 2, 3?
Колонка = 0;
Пока Результат.Следующий() Цикл
ОбластьШапки = Макет.ПолучитьОбласть ("Шапка");
Если Результат.НачислениеУдержание = НДФЛ Тогда
ВсегоНДФЛ = ВсегоНДФЛ + Результат.Сумма;
Иначе
ОбластьШапки.Параметры.Начисление[Колонка] = Результат.НачислениеУдержание;
ОбластьДанные.Параметры.ЦифраНачисления[Колонка] = Результат.Сумма;
//Сч = Сч + Результат.Сумма;
ТабДок.Вывести(ОбластьШапки);
КонецЕсли;
ОбластьДанные.Параметры.ЦифраНДФЛ = ВсегоНДФЛ;
Колонка = Колонка + 1;
ИтогоНДФЛ = ИтогоНДФЛ + ВсегоНДФЛ;
//ОбластьПодвал.Параметры.ИтогоНачисление1 = Сч;
КонецЦикла;
ПоказатьПри этом ошибка
{ВнешняяОбработка.РПВ_0504402.МодульОбъекта(158)}: Получение элемента по индексу для значения не определено
ОбластьШапки.Параметры.Начисление[Колонка] = Результат.НачислениеУдержание;
Какой параметр в макете должен быть? Неачисление или Начисление 1, 2, 3?
(14) Так просто перезаписывается колонка и все. Поясню. У Сотрудника может быть до 10 начислений различных. Так вот, если я напишу просто ОбластьШапки.Параметры.Начисление, то ячейка будет просто перезаписываться в цикле и выведет последнее найденное значение. Мне же нужно, чтобы при каждом найденном новом значении добавлялась еще одна колонка (в идеале) и заполнялась суммой. Ну хотя бы чтоб в свою ячейку сумма попадала
Добавила еще одну область на макет, выводит все начисления в одной колонке, а нужно в строчку (((
ОбластьЗаголовка = Макет.ПолучитьОбласть ("Заголовок");
Если Результат.НачислениеУдержание = НДФЛ Тогда
ВсегоНДФЛ = ВсегоНДФЛ + Результат.Сумма;
Иначе
ОбластьЗаголовка.Параметры.Начисление = Результат.НачислениеУдержание;
ОбластьДанные.Параметры.ЦифраНачисления = Результат.Сумма;
//Сч = Сч + Результат.Сумма;
ТабДок.Вывести(ОбластьЗаголовка);
КонецЕсли;
ОбластьДанные.Параметры.ЦифраНДФЛ = ВсегоНДФЛ;
Колонка = Колонка + 1;
ИтогоНДФЛ = ИтогоНДФЛ + ВсегоНДФЛ;
//ОбластьПодвал.Параметры.ИтогоНачисление1 = Сч;
КонецЦикла;
ПоказатьПрикрепленные файлы:
Можно ли как-то в моем примере использовать ОбластьЗаголовка.Параметры.Заполнить (Результат.НачислениеУдержание)? Или в этом методе имя Параметра и Результат.НачислениеУдержание должны быть равны? Или как-то Присоединить(). Не могу найти понятный пример (((
(19) зачем вы тогда в цикле получаете то заголовок, то шапку, если вам нужно получать область Данные?
Про колонку я понял что вы хотите, но так точно не получится, попробуйте вот так
Пока Результат.Следующий() Цикл
ОбластьДанные= Макет.ПолучитьОбласть ("Данные");
Если Результат.НачислениеУдержание = НДФЛ Тогда
ВсегоНДФЛ = ВсегоНДФЛ + Результат.Сумма;
Иначе
ОбластьДанные.Параметры.Начисление= Результат.НачислениеУдержание;
ОбластьДанные.Параметры.ЦифраНачисления= Результат.Сумма;
//Сч = Сч + Результат.Сумма;
ТабДок.Вывести(ОбластьШапки);
КонецЕсли;
ОбластьДанные.Параметры.ЦифраНДФЛ = ВсегоНДФЛ;
Колонка = Колонка + 1;
ИтогоНДФЛ = ИтогоНДФЛ + ВсегоНДФЛ;
//ОбластьПодвал.Параметры.ИтогоНачисление1 = Сч;
КонецЦикла;
ПоказатьПро колонку я понял что вы хотите, но так точно не получится, попробуйте вот так
ОбластьДанные.Параметры["Начисление"+Строка(Колонка)]=
(20)
Почему данные? Мне же сначала нужно вывести заголовки колонок. А это Область Заголовок, ну или шапка на крайний случай. Если поместить заголовки в ОбластьДанные, тогда они выводятся в цикле Нраз. Но при всем при этом, все равно выводятся почему-то не туда. Область присоединяется уже ниже выведенной области шапки..
если вам нужно получать область Данные?
Почему данные? Мне же сначала нужно вывести заголовки колонок. А это Область Заголовок, ну или шапка на крайний случай. Если поместить заголовки в ОбластьДанные, тогда они выводятся в цикле Нраз. Но при всем при этом, все равно выводятся почему-то не туда. Область присоединяется уже ниже выведенной области шапки..
(25) посмотрите, пожалуйста, на макет... В области Заголовки есть такие параметры как Начисление1, Начисление2 и т.д.. Они НЕ статичны. Они должны заполняться наименованием НачислениеУдержание.
Т.е у одного сотрудника Начисление1 = Оплата по окладу, Начисление2 = Премия Суммой и т.д
у другого сотрудника Начисление1 = Сдельная Оплата, Начисление2 = Отпуск и т.д
Но какие это будут начисления (названия колонок) мы узнаем только тогда, когда в цикле обойдем начисления всех сотрудников, а вот уже после этого будем заполнять цифру денег в нужной ячейке. Были бы они статичны, вопросов не было бы..
Я так понимаю, что сначала нужно обойти все на предмет списка наименований начислений, их вставить в заголовки, а затем еще раз обойти и уже по сотрудникам цифры вставить куда нужно..
Т.е у одного сотрудника Начисление1 = Оплата по окладу, Начисление2 = Премия Суммой и т.д
у другого сотрудника Начисление1 = Сдельная Оплата, Начисление2 = Отпуск и т.д
Но какие это будут начисления (названия колонок) мы узнаем только тогда, когда в цикле обойдем начисления всех сотрудников, а вот уже после этого будем заполнять цифру денег в нужной ячейке. Были бы они статичны, вопросов не было бы..
Я так понимаю, что сначала нужно обойти все на предмет списка наименований начислений, их вставить в заголовки, а затем еще раз обойти и уже по сотрудникам цифры вставить куда нужно..
Выводит, но в столбик ((( Может область Заголовок нужно не так обозначать?
Пока Результат.Следующий() Цикл
Колонка = 1;
ОбластьЗаголовка = Макет.ПолучитьОбласть ("Заголовок");
Если Результат.НачислениеУдержание = НДФЛ Тогда
ВсегоНДФЛ = ВсегоНДФЛ + Результат.Сумма;
Иначе
ОбластьЗаголовка.Параметры["Начисление" + Строка(Колонка)] = Результат.НачислениеУдержание;
ОбластьДанные.Параметры["ЦифраНачисления" + Строка(Колонка)] = Результат.Сумма;
//Сч = Сч + Результат.Сумма;
ТабДок.Вывести(ОбластьЗаголовка);
КонецЕсли;
ОбластьДанные.Параметры.ЦифраНДФЛ = ВсегоНДФЛ;
Колонка = Колонка + 1;
ИтогоНДФЛ = ИтогоНДФЛ + ВсегоНДФЛ;
//ОбластьПодвал.Параметры.ИтогоНачисление1 = Сч;
КонецЦикла;
ПоказатьПрикрепленные файлы:
Ребят, ну неужели никто не может помочь???
Использую сейчас метод присоединить, но все равно не так выводит...
У меня есть вертикальные области. первая часть статичная, вывожу сразу, затем идет часть начислений, ее нужно выводить по количеству начислений, затем снова статичная часть. как в середину моей таблицы добавить еще столбик начисления?
Использую сейчас метод присоединить, но все равно не так выводит...
У меня есть вертикальные области. первая часть статичная, вывожу сразу, затем идет часть начислений, ее нужно выводить по количеству начислений, затем снова статичная часть. как в середину моей таблицы добавить еще столбик начисления?
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)