Способы получения данных из ЗУП

31.12.20

Разработка - Механизмы типовых конфигураций

Рассмотрены варианты получения данных в конфигурации Зарплата и управление персоналом 3.1.

Скачать файлы

Наименование Файл Версия Размер
Способы получения данных из ЗУП:
.epf 11,73Kb
218
.epf 11,73Kb 218 Скачать бесплатно

В статье Пример создания кадрового отчета для ЗУП 3.1 была попытка донести до коллег, начинающих доработку ЗУП, что данные в этой конфигурации необходимо получать с помощью программного интерфейса и так называемого механизма замены представлений. 

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

Способ 1. Использование программного интерфейса.

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

 


Как видно, код очень простой и компактный. Мне это решение не нравится по нескольким причинам. 

  1. Не все функции для получения данных находятся в программном интерфейсе соответствующего общего модуля.  Вендор не обещал обратную совместимость для служебных процедур и функций,  которой как раз и является функция УправлениеШтатнымРасписанием.ДанныеПозицийШтатногоРасписания(..).
  2. К функции выше нет описания. Приходится тратить время на то, чтобы понять что она делает и что надо для ее вызова. 
  3. Таким образом получается несколько коллекций с нужными значениями. Нам требуется их обработать и создать одну коллекцию.

Способ 2. Использование менеджера временных таблиц.

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

Воспользуемся процедурами по созданию временной таблицы в менеджере.

 

 

Для временных таблиц запроса с представлениями требовалось определить таблицы-фильтры для отбора данных. В нашем примере такой таблицей служит первая временная таблица с полученными кадровыми данными, конкретно 2 поля, позиция штатного расписания и период. 

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

Данное решение сложнее первого, но, на мой взгляд, более интересное. Ну и можно заметить, что менеджер временных таблиц осень часто встречается в типовом коде ЗУП.

Но и тут есть крайне досадные недостатки.

  1. Процедуры по созданию временных таблиц во всех модулях находятся в служебном программном интерфейсе.
  2. Они почти нигде не описаны. Приходится тратить время на отладчик и на поиск примеров в типовом коде, чтобы понять как ими воспользоваться. 

Общий недостаток первых двух способов , что данные получаются за несколько обращений к базе. А очень хочется получить все нужные данные одним запросом и уже работать в оперативной памяти с коллекцией. Конечно, в рамках печатной формы вряд ли это серьезный недостаток, но 1С-совесть за это не дает покоя.

 

3 способ. Использование СКД

Вспомним как строился отчет в статье Пример создания кадрового отчета для ЗУП 3.1.

Мы собрали запрос-пустышку. А что если и тут поступить так же? Соберем пустышку :

 


Получим реально исполняемый запрос процедурой ЗаменитьЗапросыКПредставлениямВиртуальныхТаблиц()

 

 

Как видно выходных  данных у нас немного, но запрос наш просто монстр. Да, он выполнится за одно обращение к базе но получит кучу ненужных данных. 1С-совесть спать не даст.. Полагаю, механизм замены представлений написан для отчетов, поэтому разработчики не заботились об оптимизации запроса, да и зачем? Если СКД сама это сделает.  Так и поступит.

Создаем СКД программно, связываем с компоновщиком, компонуем макет. 

 

 

Запрос в макете компоновки заметно похудел.

 

Отлично. Дальше дело вкуса. Можно вывести результат в коллекцию, можно получить выборку.

Конечно, и этот метод не идеален.

  1. Требуются дополнительные усилия по созданию СКД, тем более полностью программно. 
  2. Получение  макета компоновки, как правило, занимает много времени.

Однако , мне такой способ видится наиболее полезным.

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

 

К статье прилагается обработка с примерами. Тестировалось на релизе Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.14.369).

Представления Программный интерфейс ЗУП СКД

См. также

Ключи аналитик учета в ЕРП, КА, УТ

Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 Россия Управленческий учет Бесплатно (free)

Разбираемся, зачем в системе ЕРП созданы справочники: ключи аналитик учета, зачем созданы аналогичные по набору измерений регистры сведений. Какие проблемы они решают, какие создают новые и что с этим делать.

08.11.2023    3905    ids79    21    

62

Распределение по базе среднего в ЗИКГУ 3.1

Зарплата Механизмы типовых конфигураций Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 Россия Бюджетный учет Абонемент ($m)

Результат расчета начислений (отпуск, БЛ и т.д.) может распределятся по базе среднего заработка. У таких начислений на вкладке "Налоги, взносы, бухучет" стоит галка "По базе среднего заработка". Но бывают случаи, что данное распределение необходимо скорректировать.

1 стартмани

14.09.2023    312    1    Vlx    0    

1

Расширение типового механизма настройки заполнения бухгалтерской отчетности (на примере конфигурации 1С:ERP. Управление холдингом 3.1.8.15)

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Управление холдингом 1С:Франчайзи, автоматизация бизнеса Россия Бесплатно (free)

В статье приведен алгоритм доработок типового механизма настройки заполнения бухгалтерской отчетности на примере конфигурации 1С:ERP. Управление холдингом (3.1.8.15). Цель доработок - сделать процесс настроек более гибким и удобным для пользователей

11.09.2023    1271    ICL-Soft    3    

9

Разбор механизма "Настройки полей формы" в 1С:ERP. Управление холдингом

Механизмы типовых конфигураций Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

В данной статье я постараюсь разобрать механизм, который Вам может встретиться на просторах типовой конфигурации 1С:ERP. Управление холдингом. Я не могу гарантировать, что этот механизм не исключат из следующих версий конфигурации (как, собственно, и любой другой). К сожалению, мне не удалось найти его ни в одном модуле конфигурации "Библиотеки стандартных подсистем". Мне он показался интересным, и захотелось более детально во всем этом разобраться.

18.07.2023    1689    it_box    0    

6

Работа с контактной информацией. Часть 2

Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Во второй части статьи рассмотрим вопрос преобразования адреса из старого формата в новый. Рассмотрим реальные задачи, связанные с контактной информацией.

05.06.2023    4832    biimmap    4    

36

Особенности настройки хранения файлов в томах в конфигурации 1С:Документооборот 3.0

Механизмы типовых конфигураций Платформа 1С v8.3 1С:Документооборот Бесплатно (free)

В данной статье мы рассмотрим, как настроить хранение файлов в томах, тома хранения файлов в 1С, правила размещения файлов в томах и проверку целостности данных тома в 1С:ДО.

30.05.2023    5101    Koder_Line    1    

4

Работа с контактной информацией. Часть 1

Механизмы типовых конфигураций Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Уверен, все в курсе, что контактная информация опять во всех конфигурациях хранится по-новому. Связано это с появлением так называемых муниципальных адресов, где районы заменили городские округа. Сейчас происходит массовый отказ от УПП и других устаревших решений, а также массовый переход с зарубежных систем. Возникает потребность преобразовать старые адреса в новые. И тут нас всех ждёт масса неприятных сюрпризов от разработчиков БСП. О программном интерфейсе контактной информации и пойдёт речь в данной статье.

23.05.2023    8321    biimmap    41    

57

Пример использования механизма "Блокировки изменения объектов" (БП, ЗУП, УХ, ЕРП)

Механизмы типовых конфигураций 8.3.14 1С:Бухгалтерия 3.0 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x Россия Абонемент ($m)

Механизм позволяет добавлять обработчики блокировки формы от изменения пользователем с выводом предупреждения "Документ не редактируется по причине:" и указанием причин блокировки. Также по некоторому условию может быть выведена кнопка "Разблокировать форму".

1 стартмани

18.05.2023    4569    9    FilippSerg    1    

28
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 1698 18.01.21 11:02 Сейчас в теме
Хорошая статья. Могу посоветовать еще и способ 4. СКД+Менеджер временных таблиц
2. aShumakoff 133 18.01.21 11:38 Сейчас в теме
(1)Спасибо большое... Признаюсь, не знал что такая возможность появилась. Плюс как раз хотел давно попробовать вариант, когда одна СКД готовит данные для другой СКД. Попробую сделать такой пример: 2 СКД и МВТ
3. Nowa 44 20.04.21 16:01 Сейчас в теме
Спасибо! Давно хотел разобраться как получать данные, но не из типовой процедуры.
4. krisver 5 29.03.23 17:19 Сейчас в теме
Отличная статья!
Оставьте свое сообщение