Дружелюбный интерфейс итогов в диалоге табличных частей, для Управляемых форм.

29.03.21

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

Небольшой набор функций и процедур, дающий возможность организовать итоги в подвале табличных частей с учетом быстрого отбора. Работает только для: табл.частей справочников; табл.частей документов; табл.частей обработок; таблиц значений на форме. (Обрабатываются колонки, содержащие числовой тип)

Скачать файл

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

Наименование SM По подписке [?] Купить один файл
Дружелюбный интерфейс итогов в диалоге табличных частей, для Управляемых форм.:
.7z 50,14Kb
6
6
1 SM
Скачать Купить за 1 850 руб.

 

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

 

Кусочек кода помещаемый в процедуру на форме "ПриСозданииНаСервере":


	#Область Обработка_Итогов
	
	//Инициализируем кнопки по Итогам                 Товары
	пПараметрыИтогов = Новый Структура;
	пПараметрыИтогов.Вставить("ИмяЭлемента", "Товары");                            //Имя элемента, как он объявлен на форме.
	пПараметрыИтогов.Вставить("ИмяГруппыПанели", Неопределено);                    //Имя группы Панели, куда будут добавлены кнопки, если не задано, то кнопки просто добавятся
	
	//Добавим исключения
	МассивКолонокИсключений = Новый Массив;
	МассивКолонокИсключений.Добавить("Коэффициент");
	МассивКолонокИсключений.Добавить("Цена");
	пПараметрыИтогов.Вставить("МассивКолонокИсключений", МассивКолонокИсключений); //Массив строк, Можно Неопределено.
	
	//Добавим индивидуальные
	СоотвФормулКолонок = Новый Соответствие;
	СоотвФормулКолонок.Вставить("Объект.Товары.НомерСтроки", "Счетчик");
	пПараметрыИтогов.Вставить("СоотвФормулКолонок", СоотвФормулКолонок);		   //Можно неопределено.
	//
	пПараметрыИтогов.Вставить("ПропуститьЗаполненныйПодвал", Ложь);				   //Булево, можно неопределено...
	пПараметрыИтогов.Вставить("ИспользоватьТиповойПодвал", Истина);				   //Булево, можно неопределено...
	пПараметрыИтогов.Вставить("ЗаголовокКнопки", "");							   //Строка, можно пустую, можно Неопределено, необязателен
	//
	СОГ_ИнтерфейсВызовСервера.ИнициализироватьИтоговыеПоляТаблиц(ЭтаФорма, пПараметрыИтогов);
	
	#КонецОбласти
	

Данный кусочек кода помещается в процедуру на форме "ПриСозданииНаСервере" и вызывается один раз.

При этом на табличной части формы будут размещены две кнопки "Обновить итоги" и "Показать / скрыть нижнюю панель итогов". (Картинки для кнопок при необходимости можно поменять, прописав другое название, прописанное в конфигураторе)

 
 Описание передаваемых параметров в процедуру "ИнициализироватьИтоговыеПоляТаблиц"

 

 Также на форме необходимо добавить две процедуры для обработки нажатия кнопок: "СОГ_ОбработатьИтогиТаблицы" и "СОГ_ОбработатьИтогиТаблицыНаСервере".

  • Процедура "СОГ_ОбработатьИтогиТаблицы" для обработки кнопок.
  • Мене не удалось в общих модулях эстетично передать с клиентского модуля на серверный, форму. Так что пришлось добавить на форму "СОГ_ОбработатьИтогиТаблицыНаСервере", в которой происходит подмена данных подвала на "наши" итоги и обратно на те, что были прописаны в конфигураторе.
#Область Обработка_Итогов

//Обработка на сервере
&НаСервере
Процедура СОГ_ОбработатьИтогиТаблицыНаСервере(ПараметрыСервера) 
	
	СОГ_ИнтерфейсВызовСервера.ОбработатьИтогиТаблицы(ЭтаФорма, ПараметрыСервера);
	
КонецПроцедуры

//Обработчик событий, по нажатию кнопки...
&НаКлиенте
Процедура СОГ_ОбработатьИтогиТаблицы(Команда) 
	Перем стрПараметровСервера;
	
	стрПараметровСервера = Неопределено;
	СОГ_ИнтерфейсКлиент.ОбработатьИтогиТаблицы(ЭтаФорма, Команда, стрПараметровСервера);
	Если стрПараметровСервера <> Неопределено Тогда 
		СОГ_ОбработатьИтогиТаблицыНаСервере(стрПараметровСервера);
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

 

 
 Общий модуль "СОГ_ИнтерфейсВызовСервера"

 

 
 Общий модуль "СОГ_ИнтерфейсКлиент"

 

 
 Пример работы

 

Тестирование

Тестирование проводилось на продукте 1С.

1С:Предприятие 8.3 (8.3.15.1830)
Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.80.40) 

 

 
 Описание архива "РасширениеИтогиПоОтбору.7z"

  

Дружелюбный интерфейс итогов в диалоге табличных частей для Управляемых форм.

См. также

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    5185    11    5    

20

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3561    8    0    

27

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

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

2400 руб.

29.06.2020    17679    24    6    

38
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. пользователь 14.09.20 12:03
Сообщение было скрыто модератором.
...
2. AnryMc 849 12.04.21 17:18 Сейчас в теме
&НаКлиенте
Процедура ОбновитьИтоги()

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


ТаблицаФормы (FormTable)
ПроверитьСтроку (CheckRow)
Синтаксис:
ПроверитьСтроку(<Строка>)
Параметры:
<Строка> (обязательный)
Тип: Произвольный.
Строка таблицы. Тип параметра зависит от типа редактируемого значения.
Возвращаемое значение:
Тип: Булево.
Описание:
Проверяет, соответствует ли строка, установленному в таблице отбору.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент).
Показать


З.Ы. "Что тут думать! Трясти надо!" ©
3. DrZombi 298 13.04.21 12:05 Сейчас в теме
(2) Не нравится, не ешь...
Это статья Архив, пример рабочий. Записки же надо, где то хранить...

А там смотришь, и другие чего к себе подметят :)
4. AnryMc 849 14.04.21 08:40 Сейчас в теме
5. DrZombi 298 14.04.21 10:02 Сейчас в теме
(4) Вы случаем не путаете Итоги, и просто пометку с быстрым отбором?
Это как сравнивать воду в озере и воду в стакане (она там и там мокрая)

С ваших слов - "Зачем она в озере, если есть в стакане" :)

...Дружище, спасибо за ваше замечательное замечание, что кусочки кода в разных статьях повторяются, я учту на будущее это замечание...
7. AnryMc 849 15.04.21 10:37 Сейчас в теме
(5)
...Дружище, спасибо за ваше замечательное замечание, что кусочки кода в разных статьях повторяются, я учту на будущее это замечание..


Прошу обратить внимание что используется одинаковые методы но КОД РАЗНЫЙ. и соответствует заявленому в публикации...
Количество процедур и строк кода на порядок меньше...
Нет передачи данных между сервером и клиентом...

Код есть - можете попробовать - если не работает тогда и возмущайтесь, что я "гоню"...
6. DrZombi 298 14.04.21 10:06 Сейчас в теме
(4)
Так Вы уже продублировали в: Дружелюбный интерфейс пометки и отмены пометки в диалоге табличных полей, для управляемых форм.


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

...Спасибо что не обвинили меня в плагиате использования русского алфавита... :)
8. DrZombi 298 15.04.21 20:39 Сейчас в теме
(7) Пройди мимо, я не обижусь :)
,..Ваше мнение важно нам...
9. DrZombi 298 15.04.21 20:40 Сейчас в теме
(7) Мужик, я не хочу смотреть на твой код. Просто мне побоку как и что там у тебя. Даже не уговаривай. :)
10. DrZombi 298 15.04.21 20:46 Сейчас в теме
(7) Сынок, что ты несешь? Там два общих модуля, "Серверный" и "Клиентский"
Все остальное копирастишь в свою форму и наслаждаешься трудом мысли чужой головы, не думая, что и как :)

...Не стесняйся, возьми мой код и назови своим, я не жаден, дарю, Брат...
Оставьте свое сообщение