Имя: Пароль:
1C
 
ЗУП 3.1 Заполнить прием на работу по штатному расписанию
0 breezee
 
01.03.19
05:34
Коллеги, добрый день!
Подскажите, пожалуйста:
Имеем ЗУП 3.1
Есть задача - программно создавать прием на работу и заполнять по штатному расписанию.
Посмотрел при изменении штатного расписания - там кошмар, все функции привязаны к контексту формы. Нет каких-то процедур общего назначения, которые это делают?
Хочу красивое решение в пару строк, которое при обновлении конфы не сильно сломается.
1 SleepyHead
 
гуру
01.03.19
05:38
(0) Подсовывай вместо формы структуру с аналогичными полями.
2 ДенисЧ
 
01.03.19
05:43
(0) "Хочу красивое решение в пару строк" и ЗУП - тут нужен ПКВ...
3 breezee
 
01.03.19
05:44
(1) Ну так и буду делать, похоже( Но почему такая завязка на форму то? Кошмар прям
4 SleepyHead
 
гуру
01.03.19
05:45
(3) Элементарно, Ватсон! Вы пытаетесь научить робота рулить рулевым колесом, а не передавать управляюший сигнал сразу исполнительному механизму поворотом.
5 breezee
 
01.03.19
06:21
(4) Не понимаю(
6 SleepyHead
 
гуру
01.03.19
06:41
(5) Ну вот я переносил данные полтора года назад из самописной 1с77 через КД2 в ЗУП 3.1 и ничего мне не мешало связать приемы на работу со штатным расписанием без всяких танцев вокруг форм.

Изучай структуру конфы, и все получится.
7 breezee
 
01.03.19
07:08
(6) Да не в этом вопрос. Вопрос в том, сколько на это уйдет времени и почему разработчики типовых не сделали получения данных удобно. Напрашивается очевидная функция:
Передаешь штатное расписание, возвращается структура параметров, структурой заполняется форма.
На кой черт туда форму передавать и заполнять её в общих модулях.
Это можно же было сделать после получения всех параметров по штатному расписанию. Вот получили эту структуру и заполнили ей форму.
Извините, крик души
8 SleepyHead
 
гуру
01.03.19
07:12
(7) Потому что все рассчитано на ввод данных оператором. Не думаю, что разработчики предполагали, что кто-то будет заполнять эти данные программно. А ты пытаешься использовать этот функционал для автоматического заполнения, о чем я и написал в (4).

Насчет сколько уйдет времени - все зависит от масштабов переноса. Вот у меня было две большие базы в ЗУП ГУ (госучреждение), и около 200 баз довольно мелких в обычной ЗУП, и мне было выгодно написать этот перенос, хотя разработка и отладка заняла приличное время, заодно изучил структуру ЗУП.

Если у  тебя достаточно небольшой перенос, тогда да, реально напрягает.
9 Провинциальный 1сник
 
01.03.19
07:19
(7) Совершенно верно. Я тоже с этим сталкивался в ЗУПе. Любят там общие модули для обработки контекста формы документа создавать. Причем, в этом же общем модуле делают получение объекта формы и работают далее с ним. А почему бы не передать сразу объект в функцию? А вот чтобы зае..лись все!
10 Провинциальный 1сник
 
01.03.19
07:23
(6) "Изучай структуру конфы, и все получится."
Вот тут Куда движется архитектура ЗУП 3 утверждают, что это неправильный подход.
"Тебе не надо знать, что где в каких регистрах хранится, тебе надо знать процедуры и функции, которые вернут тебе эти данные."
11 SleepyHead
 
гуру
01.03.19
07:28
(10) В моем комментарии речь идет о переносах данных, см 8, а у автора задача - не чтение данных средствами общих модулей, а заполнение данных. Так что ссылка не вполне в тему. Считаю, что если ты заполняешь данные  - знание актуальной структуры на момент заполнения просто необходимо.
12 breezee
 
01.03.19
07:32
(8) (9) (10) Понял)
Блин, было бы разово, все ок. Заказчик хочет вести по 2 организациям учет, и прием сотрудника должен копироваться и заполняться по штатному расписанию.
Ладно, буду мучаться) Спасибо, разрабы типовых
13 SleepyHead
 
гуру
01.03.19
07:33
(9) Ну как сказать, я вот решал задачу автоматического создания заполнения ведомостей на выплату, и автоматического же заполнения НДФЛ в них. Если копнуть все 10-12 вызовов общих модулей недостаточно глубоко и примерно на пятом упереться в работу с формой, то да, мложно и задолбаться. Но если копнуть еще дальше, идет работа непосредственно с табличной частью объекта и сделано достаточно удобно.

Сократив все эти ненужные вызовы, передаю в общий модуль массив ссылок на физических лиц, в версиях по 3.1.7 включительно это выглядело примерно так:

ВзаиморасчетыССотрудникамиРасширенный.ВедомостьОбновитьНДФЛ(Док, ФизЛица);

Начиная с версии 3.1.8 стало немного сложнее и этот функционал перенесли в модуль менеджера объекта и стало примерно так:

                        Модуль = ОбщегоНазначения.ОбщийМодуль("ВедомостьНаВыплатуЗарплаты");
                            
                        ТНДФЛ = Модуль.НалогиКУдержанию(
                            ТЗП,                        // табличная часть зарплаты
                            ПараметрыЗаполнения.ОписаниеОперации,
                            ПараметрыЗаполнения.ПараметрыРасчетаНДФЛ,
                            ПараметрыЗаполнения.Финансирование,
                            Док.Ссылка);
                            
                        Док.УстановитьНДФЛ(ТНДФЛ);
14 SleepyHead
 
гуру
01.03.19
07:33
+13 вывод -  просто недостаточно глубоко копают, решение может быть найдено всегда.
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший