Добрый день. Подскажите, пожалуйста, как программно произвести расчет Трудового стажа в базе КАМИН:Расчет заработной платы?
Пробовал сделать как считается при вызове формы расчета стажа, но не получилось.

```1c
    СтажНаДату = НачалоДня(ТекущаяДатаСеанса());
    ФормаСправочника = ПолучитьФорму("Справочник.Сотрудники.Форма.ФормаЭлемента", Новый Структура("Ключ", НовыйСотрудник.Ссылка));
    ПеренестиСтаж("Общий трудовой стаж", м_Лет, м_Мес, м_Дн, СтажНаДату, ФормаСправочника);
    ПеренестиСтаж("Страховой стаж (для расчета больничного)", м_ЛетН, м_МесН, м_ДнН, СтажНаДату, ФормаСправочника);
    ПеренестиСтаж("Трудовой стаж для расчета выслуги лет", м_ЛетВ, м_МесВ, м_ДнВ, СтажНаДату, ФормаСправочника);
    ПеренестиСтаж("Стаж государственной (муниципальной) службы", м_ЛетГ, м_МесГ, м_ДнГ, СтажНаДату, ФормаСправочника);
    ОбработкаСобытийФорм.СотрЗаписатьЗначениеВХранилище(СотрудникСсылка, "ТаблицаРасчетСтажа", л_Таб, Ложь);
    Оповестить("РассчитатьСтаж");
    НовыйСотрудник.Записать();
    КонецЕсли;

    КонецЕсли;

    КонецПроцедуры

    Процедура ПеренестиСтаж(п_ВидСтажа, п_Лет, п_Месяцев, п_Дней, п_Дата, ФормаСправочника)
    л_СтрокаСтажа = ФормаСправочника.ТаблицаВидыСтажа.Найти(п_ВидСтажа,"ВидСтажа");
    Если Не л_СтрокаСтажа <> Неопределено Тогда
    л_СтрокаСтажа.Лет = п_Лет;
    л_СтрокаСтажа.Месяцев = п_Месяцев;
    л_СтрокаСтажа.Дней = п_Дней;
    л_СтрокаСтажа.Дата = п_Дата;
    КонецЕсли;
    КонецПроцедуры
```
---
"ФормаСправочника" - это реальная форма или просто так называется, а на самом деле это СправочникОбъект?

Может всё-таки так?

ПеренестиСтаж("Общий трудовой стаж", м_Лет, м_Мес, м_Дн, СтажНаДату, НовыйСотрудник);
---
Думал сами увидите, после наводящих вопросов. Всё же очевидно. я понял, что вы имеете ввиду записывать объект. Но в объекте нет такой таблицы значений ТаблицаВидыСтажа. Оказалось я не в ту таблицу объекта данные пытался записать, когда пробовал через НовыйСотрудник записывать. Я пытался записи в таблицу ТрудовойСтаж делать, а нужно было в ВидыСтажа. Спасибо!
---
Что значит не получилось?
м_Лет, м_Мес, м_Дн у вас равны нулю. Вы их на сегодня записали. Записи со стажем изменились.

Есть только две строки, так как только они были по наименованию найдены.

Если ничего не поменялось, то все 4-ре вдиа стажа не нашлись.
...ТаблицаВидыСтажа.Найти(п_ВидСтажа,"ВидСтажа")...

В вашем коде может быть и предусмотрено добавление строк с видами стажей, но где-то выше. В приведенном коде нет.
---
м_Лет, м_Мес, м_Дн у вас равны нулю. я стаж из другой базы получаю, и пытаюсь перенести в эту базу. Но тут, как вы и подметили, всегда л_СтрокаСтажа = Неопределено для всех 4 видов стажа.
(2) Если ничего не поменялось, то все 4-ре вдиа стажа не нашлись.
...ТаблицаВидыСтажа.Найти(п_ВидСтажа,"ВидСтажа")...

При этом если я в базе через кнопку Расчет стажа делаю, то из открывшейся формы все нормально переносится. Через кнопку находит строки для этих значений
```1c
    ПеренестиСтаж("Общий трудовой стаж", м_Лет, м_Мес, м_Дн, СтажНаДату, ФормаСправочника);
    ПеренестиСтаж("Страховой стаж (для расчета больничного)", м_ЛетН, м_МесН, м_ДнН, СтажНаДату, ФормаСправочника);
```
 , программно не находит ни одного ни в случае создания нового сотрудника, ни в случае уже существующего.
---
"ФормаСправочника" - это реальная форма или просто так называется, а на самом деле это СправочникОбъект?

Может всё-таки так?

ПеренестиСтаж("Общий трудовой стаж", м_Лет, м_Мес, м_Дн, СтажНаДату, НовыйСотрудник);
---
"ФормаСправочника" - это реальная форма или просто так называется, а на самом деле это СправочникОбъект? тоно форма.
(4) ПеренестиСтаж("Общий трудовой стаж", м_Лет, м_Мес, м_Дн, СтажНаДату, НовыйСотрудник); не взлетит, это почти как в конфе самой, только там без НовыйСотрудник, Вот как в конфе реализовано это
```1c
    Процедура ОсновныеДействияФормыОК(Кнопка)
    // перенесем данные в основную форму
    ПеренестиСтаж("Общий трудовой стаж", м_Лет, м_Мес, м_Дн, СтажНаДату);
    ПеренестиСтаж("Страховой стаж (для расчета больничного)", м_ЛетН, м_МесН, м_ДнН, СтажНаДату);
    ПеренестиСтаж("Трудовой стаж для расчета выслуги лет", м_ЛетВ, м_МесВ, м_ДнВ, СтажНаДату);
    ПеренестиСтаж("Стаж государственной (муниципальной) службы", м_ЛетГ, м_МесГ, м_ДнГ, СтажНаДату);

    ОбработкаСобытийФорм.СотрЗаписатьЗначениеВХранилище(ВладелецФормы.ЭтотОбъект, "ТаблицаРасчетСтажа", ТаблицаРасчетСтажа, Ложь);
    Оповестить("РассчитатьСтаж");
    Закрыть();
    КонецПроцедуры

    Процедура ПеренестиСтаж(п_ВидСтажа, п_Лет, п_Месяцев, п_Дней, п_Дата)
    л_СтрокаСтажа = ВладелецФормы.ТаблицаВидыСтажа.Найти(п_ВидСтажа,"ВидСтажа");
    Если л_СтрокаСтажа <> Неопределено Тогда
    л_СтрокаСтажа.Лет = п_Лет;
    л_СтрокаСтажа.Месяцев = п_Месяцев;
    л_СтрокаСтажа.Дней = п_Дней;
    л_СтрокаСтажа.Дата = п_Дата;
    КонецЕсли;
    КонецПроцедуры
```

Владелец формы это та же форма, которую я получаю в
```1c
    ФормаСправочника = ПолучитьФорму("Справочник.Сотрудники.Форма.ФормаЭлемента", Новый Структура("Ключ", НовыйСотрудник.Ссылка));
```
---
Вам не нужна форма. Вам нужен объект. Объект в БД будет записываться, он содержит данные.

НовыйСотрудник.Записать();

Так же вы данные записываете.
Так что вы записываете, если у объекта ничего не меняли. Пробуйте как выше написано.
Думал сами увидите, после наводящих вопросов. Всё же очевидно.

Форма вам не нужна. Форму получают, когда нужен диалог. А диалог нужен, когда пользователю надо что-то показать или открыть эту форму. Если диалог не нужен, то и форму получать не к чему.
---
Думал сами увидите, после наводящих вопросов. Всё же очевидно. я понял, что вы имеете ввиду записывать объект. Но в объекте нет такой таблицы значений ТаблицаВидыСтажа. Оказалось я не в ту таблицу объекта данные пытался записать, когда пробовал через НовыйСотрудник записывать. Я пытался записи в таблицу ТрудовойСтаж делать, а нужно было в ВидыСтажа. Спасибо!