Отчет на СКД 8.2: Ответственные по группам номенклатуры

24.07.14

Разработка - СКД

Интересная реализация нестандартного условия в запросе на СКД. Сложный запрос, виртуальные таблицы, связи по левому соединению, статический параметр, конструкция ВЫБОР, необязательное условие и это все для реализации обратного отбора! Статья предназначена для начинающих программистов, вникающих в СКД и в суть запросов 1С, хотя и опытные программисты могут почерпнуть знания для реализации нестандартных задач.

Файлы

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

Наименование Скачано Купить файл
ОтветственныеПоГруппамНоменклатуры8.2
.erf 10,02Kb
5 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

И так с чего начинается реализация задачи? Конечно же, с постановки ТЗ!

ТЗ или техническое задание:

1. Написать отчет на СКД для отображения ответственных инженеров по группам номенклатуры.

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

Что имеем:

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

Для удобства разработки была внедрена Подсистема "Инструменты разработчика", за что отдельное спасибо автору разработки. Рекомендую ознакомиться с её функционалом, заметно облегчит вам жизнь разработчика.

В конфигурации присутствует новый документ "Назначение ответственного на группу номенклатуры" и соответствующий регистр сведений, формирующий движения для построения отчета.

Решение задачи:

Теперь имея все карты на руках, смело приступаем к разработке отчета!

1 часть ТЗ реализуется достаточно просто, а вот над 2 частью пришлось повозиться, что и послужило результатом для публикации.

Задачу разбил на 5 пакетов запросов. И так по порядку.

Первый пакет запроса:

ВЫБРАТЬ

Номенклатура.Ссылка

ПОМЕСТИТЬ ВТГруппыНоменклатуры

ИЗ

Справочник.Номенклатура КАК Номенклатура

ГДЕ

Номенклатура.ЭтоГруппа = ИСТИНА

;

////////////////////////////////////////////////////////////////////////////////
Этот запрос создает виртуальную таблицу, в которую загрузим группы номенклатуры.

Второй пакет запроса:

ВЫБРАТЬ

ОтветственныеНаГруппах.ГруппаИерархия,

ОтветственныеНаГруппах.Должность,

ОтветственныеНаГруппах.Сотрудник

ПОМЕСТИТЬ ВТОтветственныеНаГруппах

ИЗ

(ВЫБРАТЬ

ВТГруппыНоменклатуры.Ссылка КАК ГруппаИерархия,

НазначениеОтветственныхГруппамНоменклатурыСрезПоследних.Должность КАК Должность,

НазначениеОтветственныхГруппамНоменклатурыСрезПоследних.Сотрудник КАК Сотрудник

ИЗ

ВТГруппыНоменклатуры КАК ВТГруппыНоменклатуры

ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НазначениеОтветственныхГруппамНоменклатуры.СрезПоследних КАК НазначениеОтветственныхГруппамНоменклатурыСрезПоследних

ПО ВТГруппыНоменклатуры.Ссылка = НазначениеОтветственныхГруппамНоменклатурыСрезПоследних.Группа

ГДЕ

НазначениеОтветственныхГруппамНоменклатурыСрезПоследних.Действующий = ИСТИНА) КАК ОтветственныеНаГруппах

;

////////////////////////////////////////////////////////////////////////////////

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

Третий пакет запроса:

ВЫБРАТЬ

ВТОтветственныеНаГруппах.ГруппаИерархия КАК ГруппаНоменклатуры,

ВТОтветственныеНаГруппах.Должность,

ВТОтветственныеНаГруппах.Сотрудник

ПОМЕСТИТЬ ВТВсе

ИЗ

ВТГруппыНоменклатуры КАК ВТГруппыНоменклатуры

ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТОтветственныеНаГруппах КАК ВТОтветственныеНаГруппах

ПО ВТГруппыНоменклатуры.Ссылка = ВТОтветственныеНаГруппах.ГруппаИерархия

;

////////////////////////////////////////////////////////////////////////////////

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

Первая часть ТЗ решена и можно было бы на этом закончить, но была поставлена 2 часть и придется попотеть...

Четвертый пакет запроса:

ВЫБРАТЬ

НазначениеОтветственныхГруппамНоменклатурыСрезПоследних.Группа,

НазначениеОтветственныхГруппамНоменклатурыСрезПоследних.Должность,

НазначениеОтветственныхГруппамНоменклатурыСрезПоследних.Сотрудник

ПОМЕСТИТЬ ВТБезОтветсвенного

ИЗ

РегистрСведений.НазначениеОтветственныхГруппамНоменклатуры.СрезПоследних КАК НазначениеОтветственныхГруппамНоменклатурыСрезПоследних

ГДЕ

НазначениеОтветственныхГруппамНоменклатурыСрезПоследних.Действующий = ИСТИНА

{ГДЕ

(НазначениеОтветственныхГруппамНоменклатурыСрезПоследних.Сотрудник <> &СотрудникНаУвольнение)}

;

////////////////////////////////////////////////////////////////////////////////

Запрос очень похож на кусок из 2 пакета, но тут мы добавили необязательное условие { }. Эта часть кода обработается, если будет задан параметр &СотрудникНаУвольнение, что очень кстати. Т.к. первая часть ТЗ не предполагает его использование.

Пятый пакет запроса (финальный):

ВЫБРАТЬ РАЗЛИЧНЫЕ

ВТВсе.ГруппаНоменклатуры,

ВЫБОР

КОГДА &ОтборНаУвольнение

ТОГДА ВТБезОтветсвенного.Должность

ИНАЧЕ ВТВсе.Должность

КОНЕЦ КАК Должность,

ВЫБОР

КОГДА &ОтборНаУвольнение

ТОГДА ВТБезОтветсвенного.Сотрудник

ИНАЧЕ ВТВсе.Сотрудник

КОНЕЦ КАК Сотрудник

ИЗ

ВТВсе КАК ВТВсе

{ЛЕВОЕ СОЕДИНЕНИЕ ВТБезОтветсвенного КАК ВТБезОтветсвенного

ПО ВТВсе.ГруппаНоменклатуры.Ссылка = ВТБезОтветсвенного.Группа.Ссылка}

{ГДЕ

(ВТВсе.Сотрудник = &СотрудникНаУвольнение)}

////////////////////////////////////////////////////////////////////////////////

Как сразу видим, при выборе таблицы используется метод РАЗЛИЧНЫЕ, он потребовался, чтобы убрать повторения записей. Затем используется конструкция: 
ВЫБОР КОГДА<Условие с результатом типа Булево>
  ТОГДА<Результат в случае если Истина>
  ИНАЧЕ<Результат в случае если Ложь>
КОНЕЦ 
В запросах работает как ЕСЛИ. Она поможет нам формировать обычный отчет первой части ТЗ, а при установке параметров реализовать 2 часть.
Важным нюансом тут было, что потребовался дополнительный параметр &ОтборНаУвольнение, который помог включить в работу наше условие по &СотрудникНаУвольнение. Также тут стоит упомянуть, что каждая колонка требует отдельной конструкции ВЫБОР, а также после КОНЕЦ  нужно задать псевдоним (пример: КАК Сотрудник) и не забываем разделять конструкции знаком ",".
После того как пользователь назначит параметру 
&ОтборНаУвольнение ИСТИНА и назначит &СотрудникНаУвольнение сотрудника, наш отчет выдаст вместо стандартного отбора по сотруднику отбор номенклатурной группы, но с обратным эффектом. Будет выведена номенклатурная группы &СотрудникНаУвольнение и сотрудники, которые параллельно с ним назначены на те же позиции, а если таких нету, то пустые поля!

Все задача успешна решена!

P.S. Отчет создан для решения конкретно поставленной задачи и выложен для ознакомления, а также конструктивной критики!








Вступайте в нашу телеграмм-группу Инфостарт

Запрос СКД виртуальные таблицы статический параметр конструкция ВЫБОР необязательное условие в запросе

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    248032    1373    421    

1134

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    5398    296    shapa_pro    25    

66

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    16466    ovetgana    112    

106

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    9510    krasnoshchekovpavel    5    

67

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    8722    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    15749    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    13330    Akcium    17    

46

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

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    9850    AlexeyPROSTO_1C    1    

32
Для отправки сообщения требуется регистрация/авторизация