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

31.12.20

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

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

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

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

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

В статье Пример создания кадрового отчета для ЗУП 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С 8.5 1С:Управление нашей фирмой 3.0 Абонемент ($m)

Кто ссылается на этот справочник, на что ссылается документ и какие регистры он двигает — обработка показывает это схемой прямо в базе. Выбранный объект — в центре, слева — кто ссылается на него, справа — на что ссылается он, под схемой — через какой реквизит; щелчок по соседу делает центром его. Много соседей — группы по видам, связи через составные типы — пунктиром и отключаются флажком. Для документации схему можно взять текстом PlantUML или сохранить файлом HTML вместе с таблицей связей. В статье я разбираю код: связи по типам реквизитов, движениям и владельцам, временное хранилище формы, схему в поле HTML и щелчок по узлу.

2 стартмани

30.09.2026    818    17    Petr_32    2    

6

Механизмы типовых конфигураций Разработчик 1С:Предприятие 8 Абонемент ($m)

Использование переопределяемых процедур в 1С на управляемых формах.

1 стартмани

01.09.2026    4255    waider    3    

15

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

С 1 сентября компании с выручкой от 120 миллионов обязаны принимать цифровой рубль, за отказ — штраф до 50 тысяч за каждый случай. Я снял выгрузку с актуального релиза «Управления торговлей» и пошёл смотреть, где это включается. Оказалось, что казначейский контур в типовой сделан подробно, а кассового нет вообще — и это не забывчивость, а решение, записанное в конфигурации прямым текстом.

31.08.2026    2372    G_100802897175107255412    6    

5

Инструментарий разработчика БСП (Библиотека стандартных подсистем) Механизмы типовых конфигураций Разработчик 1С 8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

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

1 стартмани

20.03.2026    5332    InFlach    0    

6

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

Интервальные регистры в 1С:ЗУП 3.1 заменяют тяжелые срезы последних, ускоряя отчеты по кадровым данным через интервалы ДатаНачала–ДатаОкончания. Разбираем отличия, примеры кода, плюсы и способы синхронизации.

12.03.2026    7150    AlexeyPROSTO_1C    5    

21

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

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

03.03.2026    4575    YA_1100893639    1    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 2177 18.01.21 11:02 Сейчас в теме
Хорошая статья. Могу посоветовать еще и способ 4. СКД+Менеджер временных таблиц
taraschev; 0x00; +2 – Ответить
2. aShumakoff 162 18.01.21 11:38 Сейчас в теме
(1)Спасибо большое... Признаюсь, не знал что такая возможность появилась. Плюс как раз хотел давно попробовать вариант, когда одна СКД готовит данные для другой СКД. Попробую сделать такой пример: 2 СКД и МВТ
3. Nowa 45 20.04.21 16:01 Сейчас в теме
Спасибо! Давно хотел разобраться как получать данные, но не из типовой процедуры.
4. krisver 5 29.03.23 17:19 Сейчас в теме
5. Vinzor 129 24.06.25 19:05 Сейчас в теме
Макет компоновки данных закэшировать - в регистр сведений "Макеты компоновки данных"?
Потом брать оттуда?
aShumakoff; +1 – Ответить
Для отправки сообщения требуется регистрация/авторизация