Итоги в табличной части с учетом отбора (управляемая форма)

09.03.20

Разработка - Работа с интерфейсом

Отображение итогов в подвале табличной части документа (управляемая форма) с учетом отбора. На примере документа Отражение зарплаты в бухучете из ЗУП 3.1 (расширение)

Скачать файл

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

Наименование По подписке [?] Купить один файл
Итоги в табличной части с учетом отбора (Расширение ЗУП3.1 Отражение зарплаты в бухучете):
.cfe 26,53Kb
7
7 Скачать (1 SM) Купить за 1 850 руб.

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

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

Сразу оговорюсь, решение не оптимальное, комфортно работать можно только с табличными частями, где количество строк не более 1-2 тыс. (при отмене отбора загружается первоначальная таблица с приблизительной оценкой по 1 секунде на каждую тысячу строк)

Зато реализация достаточно простая, ниже код для документа Отражение зарплаты в бухучете из ЗУП 3.1:

В форме документа должен быть реквизит АдресХранилища (строка) и контекстные кнопки ОтборПоЗначениюТекущейКолонки и ОтключитьОтбор

 

 

&НаСервере
Процедура ОтборПоЗначениюВТекущейКолонкеНаСервере(КлючЗначение)

    
ОригиналТЗ Объект.НачисленнаяЗарплатаИВзносы.Выгрузить();
    
Структура = Новый Структура(КлючЗначение);
    
ТЗ Объект.НачисленнаяЗарплатаИВзносы.Выгрузить(Структура);
    
Объект.НачисленнаяЗарплатаИВзносы.Загрузить(ТЗ);

    Если 
АдресХранилища "" Тогда
        
АдресХранилища ПоместитьВоВременноеХранилище(ОригиналТЗЭтаФорма.УникальныйИдентификатор);
    ИначеЕсли 
ТипЗнч(ПолучитьИзВременногоХранилища(АдресХранилища)) = Тип("Структура")
        Или 
ПолучитьИзВременногоХранилища(АдресХранилища)= Неопределено Тогда
        
АдресХранилища ПоместитьВоВременноеХранилище(ОригиналТЗЭтаФорма.УникальныйИдентификатор);
    КонецЕсли;

КонецПроцедуры


&НаКлиенте
Процедура ОтборПоЗначениюВТекущейКолонке(Команда)
    
ПолеОтбора Прав(Элементы.НачисленнаяЗарплатаИВзносы.ТекущийЭлемент.ИмяСтрДлина(Элементы.НачисленнаяЗарплатаИВзносы.ТекущийЭлемент.Имя) - СтрДлина(ЭтаФорма.ТекущийЭлемент.Имя));
    
ПолеОтбора = ?(ПолеОтбора "Сотрудник""ФизическоеЛицо"ПолеОтбора); //В ЗУП3.1 док ОтражениеЗарплатыВБухучете Поле ввода НачисленнаяЗарплатаИВзносыСотрудник, хотя данные - физлицо
 
ОтборПоЗначениюВТекущейКолонкеНаСервере(ПолеОтбораЭлементы.НачисленнаяЗарплатаИВзносы.ТекущиеДанные[ПолеОтбора]);

КонецПроцедуры


&НаСервере
Процедура ОтключитьОтборНаСервере()
    
ТЗ ПолучитьИзВременногоХранилища(АдресХранилища);
    Если 
ТипЗнч(ТЗ) = Тип("ТаблицаЗначений") Тогда
        
Объект.НачисленнаяЗарплатаИВзносы.Загрузить(ТЗ);
    КонецЕсли;
КонецПроцедуры


&НаКлиенте
Процедура ОтключитьОтбор(Команда)
   
ОтключитьОтборНаСервере();
КонецПроцедуры



//Проверка на изменение ТЧ при отборе (призаписи и проведении)
&НаСервере
Процедура ПроверитьТаблицу()
    
Оригинал ПолучитьИзВременногоХранилища(АдресХранилища);
    Если 
ТипЗнч(Оригинал) = Тип("ТаблицаЗначений") И
        
Оригинал.Количество() <> Объект.НачисленнаяЗарплатаИВзносы.Количество() Тогда
        
Объект.НачисленнаяЗарплатаИВзносы.Загрузить(Оригинал);
    КонецЕсли;
КонецПроцедуры


&НаКлиенте
Процедура ПередЗаписью(ОтказПараметрыЗаписи)
    
//em+ Проверка на изменение ТЧ при отборе (встроить в процедуру)
    
Если Не АдресХранилища "" Тогда
       
ПроверитьТаблицу();
    КонецЕсли;

//......стандартный код процедуры
КонецПроцедуры

&НаКлиенте
Процедура Провести(Команда)
    Если Не 
АдресХранилища "" Тогда
       
ПроверитьТаблицу();
    КонецЕсли;

//......стандартный код процедуры
КонецПроцедуры


&НаКлиенте
Процедура ПровестиИЗакрыть(Команда)
    Если Не 
АдресХранилища "" Тогда
       
ПроверитьТаблицу();
    КонецЕсли;

//......стандартный код процедуры
КонецПроцедуры

 

Во вложении этот код в виде расширения для ЗУП3.1. Тестировалось на платформе 1С:Предприятие 8.3 (8.3.15.1778), Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.10.309), тонкий клиент.

Итоги табличной части ЗУП 3.1

См. также

Работа с интерфейсом Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

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

5000 руб.

14.01.2016    55303    17    23    

43

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Богатый редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    63697    44    59    

82

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

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

2400 руб.

29.06.2020    19548    27    6    

42

Работа с интерфейсом Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

1500 руб.

06.10.2020    10768    7    7    

11

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    20823    mrXoxot    44    

128

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

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

27.05.2024    10308    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    17740    1223    elcoan    53    

125
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Artem1C 07.12.22 14:35 Сейчас в теме
Судя по заголовку, люди наверное ожидают увидеть ниже написанное, а не вот это вот всё..

ТабЧасть                 = Объект.НачисленнаяЗарплатаИВзносы; 
ТаблицаФормы       = Элементы.НачисленнаяЗарплатаИВзносы;
	
Для каждого стр из ТабЧасть  цикл
			Если Элементы.ТаблицаФормы .ПроверитьСтроку(стр.ПолучитьИдентификатор()) тогда
				 СуммаИтог = СуммаИтог + стр.Сумма;
			КонецЕсли;
КонецЦикла;

Элемент.ТекстПодвала  = Сумма;
Показать
irina_dolos; RealRet; Batman; Isonic; гвость; litverg; afk; ZDmitry83; +8 Ответить
3. DiselDen 21.03.24 17:15 Сейчас в теме
(2) Не хватает обнуление итогов перед циклом: СуммаИтог = 0;
Оставьте свое сообщение