Имя: Пароль:
1C
1С v8
ЗУП 3.1: отменённые плановые начисления сотрудников
🠗 (Фрэнки 04.10.2022 09:26)
0 Stolz
 
26.08.22
10:29
Всем доброго времени суток!

Как известно, для получения параметров действующих начислений сотрудников в ЗУП 3.1 используется функция ДействующиеНачисленияСотрудников общего модуля ЗарплатаКадрыРасширенный. Однако задача поставлена противоположным образом: требуется получить перечень плановых начислений, которые когда-либо имелись у некоего сотрудника, но по состоянию на указанную дату были отменены; также необходимо получить даты отмены. Конечно, можно написать что-то вроде

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

и установить отбор по ресурсу Используется. Однако хотелось бы по возможности прибегать к методам программного интерфейса или, хотя бы, служебным процедурам и функциям. Пока в голову приходит только воспользоваться отчётом ДинамикаПлановыхНачислений, он же «История изменения оплаты труда». Однако этот отчёт, мягко говоря, не блещет быстродействием. Есть у кого-то какие-нибудь идеи о том, как решить подобную задачу, и если есть, то какие именно?
1 Dmitry77
 
26.08.22
10:55
Получить всё когда либо наз начавшиеся плановые по регистрам плановых начислений. Получить всё действующие на текущий момент програмным интерфейсом. Сравнить 2 списка. По отмененным из регистров получить даты отмены.
2 _Batoo
 
26.08.22
10:59
СоздатьВТИмяРегистра и тд - это и есть программный интерфейс ЗУПа
3 Stolz
 
26.08.22
11:08
(1) >> Получить всё когда либо наз начавшиеся плановые по регистрам плановых начислений

Это всё, конечно замечательно, но вопрос всё тот же: как это всё когда-либо назначавшееся получить посредством программного интерфейса, то есть без прямого обращения к регистрам?

(2) >> СоздатьВТИмяРегистра и тд - это и есть программный интерфейс ЗУПа

Увы, не совсем так. Программный интерфейс составляют процедуры и функции общих модулей, а также типовые отчёты. По крайне мере, так говорили на курсах в учебном центре «1С».
4 Фантазер
 
26.08.22
20:49
"Вам шашечки или ехать?"
У вас учебная задача или реальная задача по получению данных?
5 SleepyHead
 
гуру
28.08.22
05:39
(0) Есть регистр "Плановые начисления интервальный", в нем дата окончания.
6 Stolz
 
06.09.22
11:01
(4) Мне - ехать, причём довольно далеко: не хотелось бы каждый раз при обновлении конфигурации проверять, не изменилась ли структура метаданных, и будет ли функционал работать вследствие оного. Поэтому интересует решение именно с использованием программного интерфейса. Как это можно было бы сделать без него, я уже продемонстрировал. Задача по получению данных вполне реальная.

(5) Вопрос не в том, в каком регистре что-либо хранится, а как получить данные через программный интерфейс, то есть избежать прямого обращения к регистрам.
7 pavlika
 
06.09.22
11:05
(6) Т.е. структура ргистра это не постоянно, а программный интерфейс это на века?
8 Stolz
 
08.09.22
10:49
(7) Ну, это вопрос к фирме «1С». А их декларируемая официальная позиция - пользоваться программным интерфейсом.
9 Фантазер
 
08.09.22
12:18
(8) В нашем мире доверяться 1с в плане неизменности кода нельзя. Постоянно они так делают и чем угодно аргументируют.
Я бы сделал как проще всего, чтобы проще было переделывать. И написать пожелание на 1С о таком отчете. Глядишь как нибудь оно само появится. И будет работать.
10 _Batoo
 
08.09.22
12:29
СоздатьВТИмяРегистра работают как в редакции 3.1.10, которая вышла два с лишним года назад, так и в свежей 3.1.23

но ты подумай еще пару недель что тебе использовать))
11 SleepyHead
 
гуру
08.09.22
13:40
(6) "Вопрос не в том, в каком регистре что-либо хранится, а как получить данные через программный интерфейс, то есть избежать прямого обращения к регистрам."

Ну, так посмотри, как создаются интервальные регистры в ЗУП. Через тот же программный интерфейс, потом просто пишутся в регистр.
12 Stolz
 
20.09.22
10:15
(9) Понятное дело, что на неизменность кода надеяться нельзя: фирма «1С», случается, и вовсе выпускает новые версии, - была вот ЗУП 2.5, стала 3.0 и 3.1. Но, всё же, думается, желательно придерживаться официальных предписаний, когда это возможно.

(10) Так и состав метаданных не так чтобы и уж сильно изменился, - что ж, теперь вовсе игнорировать политику фирмы «1С» и, к примеру, напрямую читать регистры? Разумеется, если другого выхода нет, то так и приходится поступать, вот только вопрос был задан о том, есть ли в данном случае другой выход и, если да, то в чём он заключается. Что же до выданного ЦУ, то вряд ли смогу им воспользоваться, ибо давно уже реализовал требуемое тем образом, что описан в первом же сообщении. Просто подумалось, что кто-то предложит что-то такое, что мне неизвестно; жаль, что не нашлось никого более квалифицированного сравнительно со мною.

(11) Вообще-то, уже смотрел. Это несложно понять из самого первого сообщения. Вопрос в том, можно ли в данном случае избежать прямого обращения к регистрам, будь они интервальные или нет, и как это сделать.
13 SleepyHead
 
гуру
20.09.22
11:17
(12) Можно. Но в основном такой программный интерфейс дает срез на дату.

Если религия не позволяет тем или иным способом обращаться к регистрам - придется делать неоптимальные по производительности алгоритмы, сравнивая состояния на две соседние даты. Сколько дат, сколько и сравнений.
14 SleepyHead
 
гуру
20.09.22
11:18
(12) "жаль, что не нашлось никого более квалифицированного сравнительно со мною."

Сферический эффект Даннинг-Крюгера в вакууме.
15 Stolz
 
27.09.22
13:30
(13) Вопрос не в религии, а, скорее, в двигателе прогресса, т. е. лени: как уже говорилось, не хотелось бы с каждым обновлением конфигурации проверять работоспособность доработок.

(14) Был бы рад, если бы это было так. Вот только на поставленный вопрос пока не смог ответить никто. Так что процитированное в (14), увы, остаётся верным.
16 SleepyHead
 
гуру
27.09.22
14:17
(15) Ответили и не раз. А кое-кто не смог осознать ответ.
17 Stolz
 
04.10.22
09:23
(16) Скорее, кое-кто не смог осознать вопрос. А он был простым: как сделать требуемое именно через программный интерфейс. На это ответов не было. Другие же методы решения, которые, собственно, и предлагались во множестве, не интересуют вообще.
18 Фрэнки
 
04.10.22
09:26
утопил ветку