Имя: Пароль:
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
попробуй внести за прошлый месяц больничный лист - посмотри как отстрорнируются доходы и время посчитается. (всегда возможна ситуация когда выяснилось что человек заболел, при этом сумма зп не изменилась но отр время стало меньше)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.