Skip to content
лого - блог 1с программиста

Блог 1С программиста

Наработки, заметки и другая информация по 1С

  • Главная
  • Типовые конфигурации
    • ЗУП 3.1
      • Разработка
        • Обработки
        • Отчеты
        • Печатные формы
        • Расширения
      • Инструкции
      • Ответы техподдержки 1С
      • Общие вопросы
    • ДО 2.1
    • УХ 3.2
    • УПП 1.3
  • Интеграции и обмены
  • Шаблоны и заготовки
    • Типовые приемы
    • Отчеты
    • Обработки
    • Печатные формы
    • Расширения
  • Платформа 1С
  • Разработки
    • Контакты
  • Toggle search form

Связь табличных частей по ключевым полям

Posted on 19 мая 25 г.24 июня 25 г. By Алексей Комментариев к записи Связь табличных частей по ключевым полям нет

Содержание:

  • Файлы материала
  • Постановка задачи
  • Реализация

Периодически возникают задачи, в которых нужно связать две табличные части (ТЧ) по ключевым полям. Обычно первая табличная часть с общими данными, а вторая с детальной расшифровкой. При выделении строки первой ТЧ, должны отображаться соответствующие этой строке данные во второй ТЧ. Данную задачу можно решить путем установки Отбора в обработчике ПриАктивизацииСтроки.

Файлы материала
Обработка с примером «Связанные табличные части»Скачать
Постановка задачи

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

Связь табличных частей
Реализация

1. Получаем запросом данные в пакет из двух запросов (Итоговый и Детальный) и загружаем в соответствующие табличные части (Сотрудники и Начисления).

Загрузка данных в ТЧ
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
&НаСервере
Процедура ЗаполнитьДанныеПоСотрудникам(ДатаНачала, ДатаОкончания)
Запрос = Новый Запрос;
...
// текст "Запроса" по получению тестовых данных, можно
// посмотерть в Обработке с примером "Связанные табличные части"
...
МассивРезультатов = Запрос.ВыполнитьПакет();
МаксимальныйИндекс = МассивРезультатов.ВГраница();
Объект.Сотрудники.Загрузить(МассивРезультатов[МаксимальныйИндекс-1].Выгрузить());
Объект.Начисления.Загрузить(МассивРезультатов[МаксимальныйИндекс].Выгрузить());
КонецПроцедуры

2. В обработчике ПриАктивизацииСтроки ТЧ «Сотрудники» устанавливаем Отбор для ТЧ «Начисления» по ключевым полям: Сотрудник и Месяц и обновляем итоги в подвале. Учитываем что ТЧ может быть пустой.

1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
&НаКлиенте
Процедура СотрудникиПриАктивизацииСтроки(Элемент)
Если Объект.Сотрудники.Количество() = 0 Тогда
УстановитьОтборПоПустомуЗначению();
Иначе
ТекущиеДанные = Элемент.ТекущиеДанные;
УстановитьОтборПоКлючу(ТекущиеДанные);
КонецЕсли;
ОбновитьИтоги();
КонецПроцедуры
 
&НаКлиенте
Процедура УстановитьОтборПоПустомуЗначению()
 
Отбор = Новый Структура;
Отбор.Вставить("Сотрудник", ПредопределенноеЗначение("Справочник.Сотрудники.ПустаяСсылка"));
Элементы.Начисления.ОтборСтрок = Новый ФиксированнаяСтруктура(Отбор);
 
КонецПроцедуры
 
&НаКлиенте
Процедура УстановитьОтборПоКлючу(ТекущиеДанные)
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
 
Отбор = Новый Структура;
Отбор.Вставить("Сотрудник", ТекущиеДанные["Сотрудник"]);
Отбор.Вставить("Месяц", ТекущиеДанные["Месяц"]);
Элементы.Начисления.ОтборСтрок = Новый ФиксированнаяСтруктура(Отбор);
КонецПроцедуры
 
&НаКлиенте
Процедура ОбновитьИтоги()
// Вариант 1 - сумма уже посчитана
Если Элементы.Сотрудники.ТекущиеДанные = Неопределено Тогда
ИтогиСУчетомОтбора = "";
Иначе
ИтогиСУчетомОтбора = Элементы.Сотрудники.ТекущиеДанные.Результат;
КонецЕсли;
// Варинат 2 - сумму нужно посчитать
//ИтогиСУчетомОтбора = 0;
//Для Каждого ТекущаяСтрока Из Объект.Начисления Цикл
// Если Элементы.Начисления.ПроверитьСтроку(ТекущаяСтрока.ПолучитьИдентификатор()) Тогда
// ИтогиСУчетомОтбора = ИтогиСУчетомОтбора + ТекущаяСтрока.Результат
// КонецЕсли;
//КонецЦикла;
//устанавливаем итоги в подвал ТЧ
Элементы.Начисления.ПодчиненныеЭлементы.НачисленияРезультат.ТекстПодвала = ИтогиСУчетомОтбора;
КонецПроцедуры

Пример с обработкой доступен для скачивания в начале статьи.

Рекомендации

  • Отбор по дополнительному реквизиту в отчете на СКД
  • Отбор по динамическому списку с примерами
  • Отбор по дополнительному реквизиту в отчете на СКД через Характеристики
Типовые приемы, Шаблоны и заготовки Tags:интерфейс, отбор

Навигация по записям

Previous Post: Пример использования функции ВычислитьВыражениеСГруппировкойМассив в отчете на СКД
Next Post: Обзор новых возможностей ЗУП 3.1.33

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

ДзенTelegram

Разработки

  • Печатная форма "Расходный кассовый ордер" для ЗУП 3.1 Печатная форма "Расходный кассовый ордер" ЗУП 3.1 650,00 ₽
  • Отчет "План-факт отпусков сотрудников в виде диаграммы Ганта Отчет "План-факт по отпускам сотрудников" ЗУП 3.1 650,00 ₽
  • Приказ об отмене трудового договора (рис 1) Печатная форма "Отмена приема на работу" ЗУП 3.1 650,00 ₽
  • Обработка “Выплата сотруднику через банк” ЗУП 3.1 Обработка “Выплата сотруднику через банк” ЗУП 3.1 0,00 ₽
  • Тестирование API Яндекс GPT Обработка "Работа с API YandexGPT" 650,00 ₽

MDM web-сервис XML БСП ЕФС-1 ИИ КД 2.0 НДФЛ СЗВ-СТАЖ СЗВ-ТД СКД СТД-Р СФР СЭДО ФСС ФСС НС больничные листы взносы вычеты длительная операция запрос интерфейс кадровая история кадровые данные кадровые переводы легкий труд мастер-данных обмен данными общий модуль отбор отпуска печать без проверки печать с диалогом пользователи представление прием на работу резервы отпусков сверхурочные синхронизация ЗУП и БП средний заработок табель таблица периодов табличный документ фотография штатное расписание

Яндекс.Метрика

© 2022-2026 myblog-1c.ru

Пользовательское соглашение

Контакты