Имя: Пароль:
1C
1С v8
8.3 ЗУП проблема с загрузкой документа начисление зп
0 dbaranov
 
14.04.15
14:46
Здравствуйте!
ЗУП 3.0.22.188
Необходимо документ начисление зп загрузить из ексель файла.

Я на клиенте делаю так:

мФорма = ПолучитьФорму("Документ.НачислениеЗарплаты.Форма.ФормаДокумента");
Док = мФорма.Объект;
ЗагрузитьНаСервере(Док);
КопироватьДанныеФормы(Док,мФорма.Объект);
мФорма.Открыть();

В загрузитьнасервере я читаю ексель и заполняю шапку и строки.
Все хорошо, но не получается посчитать НДФЛ, ВЗНОСЫ и нормадней и нормачасов.
Попробовал разобраться - не получилось.

Посмотрел, что делает при ручном выборе строки - попробовал написать так:

ТабЧасть = Док.Начисления;
Для Каждого Строка Из ТабЧасть Цикл
    мФорма.Элементы.Начисления.ТекущаяСтрока = ТабЧасть[0].ПолучитьИдентификатор();
    РасчетЗарплатыРасширенныйКлиент.ДокументыВыполненияНачисленийПриАктивацииСтроки(мФорма, "Начисления", Истина);
    РасчетЗарплатыРасширенныйКлиент.СтрокаРасчетаПриНачалеРедактирования(мФорма, "Начисления", мФорма.Элементы.Начисления.ТекущиеДанные, Ложь, Ложь);
    Строка.Результат = 10000;
    РасчетЗарплатыРасширенныйКлиент.СтрокаРасчетаПриОкончанииРедактирования(мФорма, ОписаниеТаблицыНачислений());
КонецЦикла;
мФорма.Открыть();

Не выходит. Спотыкается на ПолучитьИдентификатор(). Там 0, соответственно на строке не позиционируется.

На сервере я строки в Начисления добавляю методом Добавить()

Причем, если я не сам заполняю табчасть, а процедурой мФорма.ПерезаполнитьДанныеФормыНаСервере(Сотр)  ПолучитьИдентификатор() спокойно проходит, хотя ТабЧасть в обоих случаях выглядит одинаково.

В чем проблема может быть?
1 dbaranov
 
14.04.15
14:48
Вместо
ТакбЧасть[0] писал Строка

Ничего не меняется.
2 dbaranov
 
14.04.15
19:27
Что-то я сложно написал :)

Стр = мФорма.Объект.Начисления.Добавить();
Стр.Результат = 2;
мФорма.Элементы.Начисления.ТекущаяСтрока = Стр.ПолучитьИдентификатор();

Не ругается, но и тип значения - Неопределено
3 dbaranov
 
14.04.15
19:28
мФорма = ПолучитьФорму("Документ.НачислениеЗарплаты.Форма.ФормаДокумента");
4 Мимохожий Однако
 
14.04.15
22:01
Док = мФорма.Объект;
Здесь фигня
5 FireAlex
 
14.04.15
22:20
Не совсем правильно загружать документ начисление зп если у тебя готовые суммы начислений лучше через данные для расчета зп загружать какой нить показатель а зуп уже сам начислит взносы и ндфл
6 dbaranov
 
15.04.15
03:40
Док = мФорма.Объект;
Здесь фигня

Где-то вычитал и вроде бы даже работает, если просто открывать форму. Таблица заполнена, все красиво. Но я бросил этот метод, на сервере я только читаю ексель, кладу его в таблицу, а на клиенте пробую приблизительно так:

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

Так таблица тоже заполняется хорошо, но если я пытаюсь вставить:

мФорма.Элементы.Начисления.ТекущаяСтрока = Стр.ПолучитьИдентификатор();

Опять никуда не позиционируется. Причем, если я таблицу заполняю (взял из обработчика подбора документа) вот так:

мФорма.ПерезаполнитьДанныеФормыНаСервере(СписокСотр)

То таблица с виду заполняется также, и если я потом по ней циклом иду, то спокойно позиционируется и через процедуры, указанные выше, все считает.

Разобраться в ПерезаполнитьДанныеФормыНаСервере() ума и опыта не хватило, к сожалению.
7 dbaranov
 
15.04.15
03:46
"Не совсем правильно загружать документ начисление зп если у тебя готовые суммы начислений лучше через данные для расчета зп загружать какой нить показатель а зуп уже сам начислит взносы и ндфл".
Возможно, я книжку еще не забрал у матери. Они ее сами читают. Визуально в показателях нашел только сдельные наряды. Если подскажете - большое спасибо.

Тут проблема еще в том, что других начислений не будет. Это не премия, а окончательный расчет. Т.е. в одной строке начисления зп должна быть и сумма и дни и нормы дней и явка. Других строк (кроме РК и СН) не будет.
8 dbaranov
 
15.04.15
06:33
Спасибо огромное.
Сделал так:
Оплата по окладу - в формуле указал РазмерРазовойПремии
Разовая премия - в формуле РазмерРазовойПремии*0.

Вроде все красиво получилось. Кроме строк с разовой премией в начислении с пустым результатом.
9 FireAlex
 
15.04.15
06:40
зачем с разовой премией так извращаться? если она не нужна просто отмени это начисление. в такой схеме есть один минус - если будешь делать перерасчет. например человек заболел и нужно отсторнировать этот оклад - в моем случае вся сумма сторнировалась, хотя это не нужно - человек уже эти деньги заработал в любом случае.
10 dbaranov
 
16.04.15
08:47
Расчет сумм начислений ведется в своей хитровымудренной программе, куда заносятся все опоздания, новомодные коэффициенты, типа коммуникабельности и т.д.
В итоге в конце месяца дают ексель, где суммы начислений по сотрудникам.
Надо занести их в 1С, начислить налоги, взносы, сдавать отчеты, считать больничные и отпуска.
Сначала пытался грузить напрямую в начисление зп (см. начало ветки). Умные люди подсказали и вроде вполне себе приемлемое решение.
"Оплата по окладу - в формуле указал РазмерРазовойПремии
Разовая премия - в формуле РазмерРазовойПремии*0. "

1. Гружу все суммы из ексель в док разовой премии.
2. Начисляю зп.

в документе по каждому сотруднику Оплата по окладу с нужной суммой и Разовая премия с 0. Все считается прекрасно, а премия пусть себе болтается.
11 FireAlex
 
16.04.15
09:05
попробуй внести за прошлый месяц больничный лист - посмотри как отстрорнируются доходы и время посчитается. (всегда возможна ситуация когда выяснилось что человек заболел, при этом сумма зп не изменилась но отр время стало меньше)
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн