Итоги в динамическом списке

Публикация № 605743

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

Как быстро посчитать итоги в динамическом списке

Добрый день, коллеги.

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

Я бы хотел предложить Вам свой способ решения данной проблемы - он достаточно прост и не требует программирования и прочих заморочек.
Его главное достоинство - простота. Дело в том что, с недавних пор в динамических списках появилась возможность использовать временные таблицы в запросах и как следствие пакетные запросы.
Суть метода заключается в расчете итогов отдельным полем в самом запросе динамического списка и выводе его в каждой строке без отображения, само же поле отборажается через ТекущиеДанные элемента формы в подвале. До появления возможности использовать временные таблицы и пакеты в запросе можно было расчитать только общий итог по динамическому списку который не учитывает пользовательские отборы, из-за этого данный метод практически не использовался, пример такого запроса Вы можете увидеть ниже:
ВЫБРАТЬ
	Документ1.Ссылка КАК Ссылка,
	Документ1.ВерсияДанных КАК ВерсияДанных,
	Документ1.ПометкаУдаления КАК ПометкаУдаления,
	Документ1.Номер КАК Номер,
	Документ1.Дата КАК Дата,
	Документ1.Проведен КАК Проведен,
	Документ1.СуммаДокумента КАК СуммаДокумента,
	ВложенныйЗапрос.СуммаДокументаИтог КАК СуммаДокументаИтог
ИЗ
	Документ.Документ1 КАК Документ1,
	(ВЫБРАТЬ
		СУММА(Документ1.СуммаДокумента) КАК СуммаДокументаИтог
	ИЗ
		Документ.Документ1 КАК Документ1) КАК ВложенныйЗапрос

С появлением возможности использовать временные таблицы и пакетных запросов мы получили возможность расчитывать итоги в динамических списках с учетом наложенных на них отборов, без каких либо сложностей,  но тут нужно отметить следующие особенности:  
1) отборы динамического списка будут установленны на самый первый запрос в пакете
2) выбрать основную таблицу можно будет только из физических таблиц присутствующих в последнем запросе пакета - далее покажу на примере.
Итак, есть некий динамический список с полями числового типа, и требуется по ним рассчитать итоги, в моем примере это некий документ, у которого есть колонка "СуммаДокумента" (см. скриншот):
1-й вариант запроса будет не даст нам возможность указать Документ1 в качестве основной таблицы, как следствие с динамическим списком не будет возможности работать  стандартным способом и не будет динамического чтения данных, однако он будет учитывать итоги с учетом отборов. Я покажу его в качестве примера того как делать не нужно:
ВЫБРАТЬ
	Документ1.Ссылка КАК Ссылка,
	Документ1.ВерсияДанных КАК ВерсияДанных,
	Документ1.ПометкаУдаления КАК ПометкаУдаления,
	Документ1.Номер КАК Номер,
	Документ1.Дата КАК Дата,
	Документ1.Проведен КАК Проведен,
	Документ1.СуммаДокумента КАК СуммаДокумента
ПОМЕСТИТЬ ВТОсновнаяТаблица
ИЗ
	Документ.Документ1 КАК Документ1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ВТОсновнаяТаблица.Ссылка КАК Ссылка,
	ВТОсновнаяТаблица.ВерсияДанных КАК ВерсияДанных,
	ВТОсновнаяТаблица.ПометкаУдаления КАК ПометкаУдаления,
	ВТОсновнаяТаблица.Номер КАК Номер,
	ВТОсновнаяТаблица.Дата КАК Дата,
	ВТОсновнаяТаблица.Проведен КАК Проведен,
	ВТОсновнаяТаблица.СуммаДокумента КАК СуммаДокумента,
	ВложенныйЗапрос.СуммаДокументаИтоги КАК СуммаДокументаИтоги
ИЗ
	ВТОсновнаяТаблица КАК ВТОсновнаяТаблица
		{ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			СУММА(ВТОсновнаяТаблица.СуммаДокумента) КАК СуммаДокументаИтоги
		ИЗ
			ВТОсновнаяТаблица КАК ВТОсновнаяТаблица) КАК ВложенныйЗапрос
		ПО (ИСТИНА)}

2-й вариант запроса - это собственно запрос, который будет работать корректно в наших динамических списках: 

ВЫБРАТЬ
	Документ1.Ссылка КАК Ссылка,
	Документ1.ВерсияДанных КАК ВерсияДанных,
	Документ1.ПометкаУдаления КАК ПометкаУдаления,
	Документ1.Номер КАК Номер,
	Документ1.Дата КАК Дата,
	Документ1.Проведен КАК Проведен,
	Документ1.СуммаДокумента КАК СуммаДокумента
ПОМЕСТИТЬ ВТОсновнаяТаблица
ИЗ
	Документ.Документ1 КАК Документ1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	Документ1.Ссылка КАК Ссылка,
	Документ1.ВерсияДанных КАК ВерсияДанных,
	Документ1.ПометкаУдаления КАК ПометкаУдаления,
	Документ1.Номер КАК Номер,
	Документ1.Дата КАК Дата,
	Документ1.Проведен КАК Проведен,
	Документ1.СуммаДокумента КАК СуммаДокумента,
	ВложенныйЗапрос.СуммаДокументаИтог КАК СуммаДокументаИтог
ИЗ
	Документ.Документ1 КАК Документ1
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			СУММА(ВТОсновнаяТаблица.СуммаДокумента) КАК СуммаДокументаИтог
		ИЗ
			ВТОсновнаяТаблица КАК ВТОсновнаяТаблица) КАК ВложенныйЗапрос
		ПО (ИСТИНА)
ГДЕ
	Документ1.Ссылка В
			(ВЫБРАТЬ
				ВТОсновнаяТаблица.Ссылка КАК Ссылка
			ИЗ
				ВТОсновнаяТаблица КАК ВТОсновнаяТаблица)

Первым запросом мы читаем данные основной таблицы с учетом пользовательских отборов, вторым запросом мы делаем сразу несколько вещей
1) мы указываем динамическому списку, какая таблица у нас может быть в качестве основной,  и тут же фильтруем её по данным временной таблицы
2) считаем итоги временной таблицы, в которой данные уже отфильтрованны нужным нам образом
3) поля с итогами присоединяем внутреним соединениям к основной таблице
Далее нам остается в свойствах динамического списка у данного поля утановить "использовать всегда" (на форму поля итогов просто не выводим).
И для каждой колонки, в которой нужно рассчитать итоги, указываем ПутьКДаннымПодвала из данных форм со ссылкой на нужное нам поле итога.
Результат работы выглядит так:
Конечно, у данного метода есть свои особенности, но все же на текущий момент это достаточно простой и быстрый способ получить итоги в динамических списках.
Пример расчета итогов в 10 колонках на 50000 документах
Всем спасибо за внимание.

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kolya_tlt 24 03.04.17 15:29 Сейчас в теме
(0) кажется вам не нужно условие в крайнем пакете
2. Восьмой 53 03.04.17 16:50 Сейчас в теме
(1) ошибаетесь коллега - без этого условия у вас перестанет работать фильтр.
3. herfis 373 03.04.17 17:26 Сейчас в теме
Поправьте, если я чего-то недопонял.
Открытие динамического списка документов без отборов и ограничения по периоду приведет к засовыванию всей таблицы документов во временную таблицу?
4. Восьмой 53 03.04.17 19:42 Сейчас в теме
(3) увы да, в первую таблицу всегда будет засовываться вся таблица, а вторая будет читать только соответствующую порцию из этой ВТ т.е. на клиента возвращается именно считанная порция а не все таблица.
Возможно я сейчас ляпнул глупость так как мои познания SQL далеки от идеала, но судя по профайлеру и поведению платформы все это работает примерно так.
Я был бы признателен гуру SQL если они на примере данных профайлера объяснили мне что происходит при таком запросе динамического списка и какие здесь могут быть подводные камни.
На моих тестах в 10 колонок итогов в 50000 документах с учетом различных отборов и без, все считаются достаточно быстро.
5. Восьмой 53 03.04.17 19:46 Сейчас в теме
(4) Отображение на форме при скролинге, обновлении данных формы, и.т.д - не вызывает сильных тормозов.
6. kolya_tlt 24 04.04.17 09:05 Сейчас в теме
(4) именно поэтому в платформе и нет нормального механизма по итогам списков документов, потому как без перебора всех документов сумму не подсчитать.
у нас, например, 50к документов создаётся за 5 дней. поставьте эксперимент на 1млн документов
7. herfis 373 04.04.17 09:31 Сейчас в теме
(4) Проблема в том, что такое решение прикапывает лопатой основную идею динамического списка (как и получение общих итогов в принципе) - сделать производительность динамического списка фактически независящей от размера таблицы, которую он отображает (если работать в рамках индексов). С ростом размера таблицы и производительность и потребление ресурсов будут ощутимо ухудшаться.
На карманных базах можно издеваться над эффективностью почти как угодно - запаса прочности хватает.
Но в промышленных базах десятки миллионов записей - это обыденность даже для таблиц документов. Где даже банальный запрос получения количества записей в таблице выполняется ощутимое время.
Когда поработаешь с большими потоками информации и посмотришь на возникающие на глазах проблемы - поневоле в первую очередь начинаешь задумываться в том числе и о масштабируемости.
Решение не лишено остроумности, но, к сожалению, плохо масштабируемо.
ИМХО, овчинка не стоит выделки. Если кому-то так уж важны общие итоги, то разумным компромиссом выглядит их получение "по кнопке". А это проще и логичнее делать через СКД.
dj_serega; N!ghtmare; Dach; user620589_pletnev; Amadeuc404; mickey.1cx; Stim213; +7 Ответить
8. sisdrou 22 04.04.17 10:02 Сейчас в теме
Добрый день. пожалуйста поясните, а для чего это нужно ? Список динамический, что дает вам сумма в итогах, список постоянно изменяем? Ну если вы отбор только наложите и будете точно знать, понимать количество нужных документов. В учетных системах я не встречал практико - применение этому.
9. herfis 373 04.04.17 11:10 Сейчас в теме
(8) Итоги по списку с установленными отборами имеют практический смысл. Это же очевидно.
Другое дело, что
1) если эти данные имеют самостоятельную ценность, то для этого обычно отчеты используются
2) если эти данные часть бизнес-процесса, влияющего на документооборот, то обычно такие бизнес-процессы автоматизируются более полно в рамках какого-нить рабочего стола на это заточенного
Просто пользователи в решении своих потребностей отталкиваются от того что имеют и редко способны самостоятельно сформулировать внятное техзадание.
dj_serega; Dach; zqzq; kolya_tlt; necropunk; h00k; Восьмой; +7 Ответить
10. starik-2005 2212 04.04.17 11:16 Сейчас в теме
(9)
сформулировать внятное техзадание
Это не пользователей дело, а постановщика задачи. Пользователь должен сформулировать то, как он для себя это видит, а бизнес должен провести аудит и понять, а нужно ли это вообще и как это лучше сделать в комплексе. Хотелки отдельного пользователя могут иметь место там, где решение и разрабатывается для этого отдельного пользователя. Когда решение разрабатывается для бизнеса, то пользователь получает функционал, проанализированный бизнесом и включенный в решение бизнесом, а не пользователем.
11. herfis 373 04.04.17 11:25 Сейчас в теме
(10) Ок. Некорректно выразился. Читать как "редко способны самостоятельно сформулировать внятные технические требования".
13. Восьмой 53 04.04.17 12:11 Сейчас в теме
(10) Если мы говорим про разработку тиражных решений то я с Вами полностью согласен. Но реальность такова что практически все тиражные решения всегда затачивались и будут затачиваются под хотелки определенной группы пользователей - проводить аудит, что-то решать, думать "а оно нам надо" - для бизнеса это зачастую дорого и не интересно - бизнесу важен результат в установленных для него рамках - поэтому Бизнес рано или поздно нанимает "отдельно программиста" на которого сыплются все хотелки этого бизнеса.
12. Восьмой 53 04.04.17 11:56 Сейчас в теме
Добрый день коллеги! Большое спасибо за поддержку и за интерес!
Статья предназначается в первую очередь для ТЕХ кому это нужно.
По моему опыту в большинстве случаев это капризы пользователей, не нравится им работать с отчетами и они некоторые вещи хотят видеть сразу в списках, например суммы по отобранным документам ит.д . Тут даже не всегда получается объяснить не рациональность таких требований, а можно и работы лишиться в некоторых случаях. Если мы говорим про базы где производительность критерий номер 1 то да такой подход скорее фишка нежели что-то полезное - если же мы говорим про базы КФИС то тут это будет иметь смысл так как критерий номер 1 уже не производительность а максимально возможное количество аналитики (инталев тому пример) которую хотят видеть сразу на форме и не лезть в 100500 отчетов, и не жать дополнительные кнопки.
Как бы то ни было - у людей возникает потребности в итогах динамических списков , а решения которые находят для этого разработчики весьма изощрённые - собственно им и посвящается.
14. herfis 373 04.04.17 12:42 Сейчас в теме
(12) Хозяин-барин. Только проблема в том, что очень сложно провести границу достаточности масштабируемости.
Сегодня у вас все довольны. А завтра подрастает документооборот или просто база проживет несколько лет. И у всех начинает все глючить и подтормаживать то тут то там, потому что конфа нафарширована костылями без оглядки на масштабируемость. И стоило ли бизнесу пришедшее в негодность решение, требующее больших затрат на оптимизацию (в том числе потому, что авторов давно уж нет) того года условно "красивой жизни" - большой и жирный вопрос. Бизнес вполне умеет слушать, если говорить с ним на языке денег и предлагать разумные альтернативы.
15. Vlad_2008 14 05.04.17 17:32 Сейчас в теме
Тоже считаю, что динамический список должен оставаться динамическим, а итоги можно считать по кнопке. Как вариант, вместо кнопки можно прицепиться к какому-либо событию, хотя их мало: ПриАктивизацииСтроки, ПриАктивизацииЯчейки. Конечно, можно еще и обработку ожидания прикрутить, а к ней, в свою очередь, тоже сделать кнопку Вкл/Выкл, ну чтобы можно было отключать ожидание и не производить постоянные вычисления.

Сами итоги считать через СКД, как написано (уже давно) тут: http://v8.1c.ru/o7/201404list/index.htm

Причем, настройки можно анализировать и принимать соответствующие решения о необходимости пересчета итогов вообще, а также по этим настройкам можно узнать для каких полей нам нужно это делать, а для каких нет.
neo-ti; dj_serega; ABudnikov; dabu-dabu; CSiER; +5 Ответить
16. Восьмой 53 05.04.17 17:43 Сейчас в теме
(15) За наводку на статью спасибо - не знал что так можно. Сразу возникает вопрос - есть возможность быстро отловить момент изменения настроек динамического списка, или тут все-таки танцы с бубнами?
17. kolya_tlt 24 06.04.17 09:02 Сейчас в теме
(16) ПриОбновленииСоставаПользовательскихНастроекНаСервере вам разве не подходит ?
18. the1 610 06.04.17 09:50 Сейчас в теме
(17) ПриОбновленииСоставаПользовательскихНастроекНаСервереИмениНу­ралиеваБорисаГеоргиевича же! Не вводите людей в заблуждение, коллега!
Восьмой; Lo1jke; maXon777; savinsva; +4 Ответить
19. kolya_tlt 24 06.04.17 10:45 Сейчас в теме
(18) Евгений Ваганович, первое апреля прошло, заберите гонорар, увидимся через год
20. Vlad_2008 14 06.04.17 15:25 Сейчас в теме
(16) Увы нету, только танцы.

Я, как правило, делаю кнопку, по которой, после установки фильтров, пользователь делает необходимые расчеты. Иногда, вешаю обработку на событие "ПриАктивизацииСтроки", но обработчик этот глючный и не всегда срабатывает, например, после Ctrl+F в списке остается одна строка - событие есть, меняем условие поиска при котором у нас остается опять одна строка (другая) - события нет. Поэтому, добавляю обработчик и для "ПриАктивизацииЯчейки", т.е. сместились в строке - событие есть, короче, танцы.

Вот, в 8.3.10 пообещали обработчик "ПриПолученииДанныхНаСервере", сначала обрадовался ... но, обломали, вызов не контекстный, форму поменять нельзя, можно только строчки оформить, причем искать (сортировка, отбор и т.д.) по таким "данным" (их тама нету) бессмысленно.

Еще жду 8.3.11, там будет общение между сервером (фоновые задания) и клиентскими сеансами, не знаю, может там удастся прорваться, поживем увидим ...
21. CheBurator 3427 08.04.17 21:12 Сейчас в теме
(20) так уже ж сделали совсем недавно это самое общение сервера с клиентом
22. Vlad_2008 14 09.04.17 15:01 Сейчас в теме
Ну я про пост от 17/03 "Передача информации с сервера", пока написано что "планируется 8.3.11".
23. Vlad_2008 14 10.04.17 14:35 Сейчас в теме
Поковырялся вчера с итогами для документов на 5 000 - летает. Если правильно "КАКать", то верхний запрос отлавливает все: поиск, поиск по полям через ссылку, отбор по любому реквизиту, поиск и отбор по характеристикам, в общем, "загнать в угол" - не вышло.

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

Небольшой косяк есть, это когда после поиска получаем пустой список, а потом что-то ищем и строки в списке есть, но нет активной строки, тогда имеем ТекущиеДанные = Неопределено и сумма итога не отображается, ес-но при переходе в список сумма появляется, но это фигня.

Позже погоняю справочник, к-нить иерархический, интересно как там будут фильтры отлавливаться.
24. nvv1970 17.04.17 01:04 Сейчас в теме
Формировать новую ВТ на 1 млрд записей при каждом скролинге - алескапут.
Может для этих целей вообще отказаться от динамического списка?? ДС в высоконагруженых системах - зло.

Если рассматривать ваши запросы, то поясните для чего нужна ВТ вообще? почему нельзя просто присоединить только готовую сумму из подзапроса?
Если требуется, то для наложения на подзапрос условий прописать в нем {где ...}. Кажется должно работать.
25. igormiro 707 19.04.17 10:04 Сейчас в теме
Вот рабочий запрос без Вт ВЫБРАТЬ
РаспоряжениеНаОтгрузку.Ссылка КАК Ссылка,
	РаспоряжениеНаОтгрузку.ПометкаУдаления КАК ПометкаУдаления,
	РаспоряжениеНаОтгрузку.Номер КАК Номер,
	РаспоряжениеНаОтгрузку.Проведен КАК Проведен,
	РаспоряжениеНаОтгрузку.СуммаДокумента КАК СуммаДокумента,
	ВложенныйЗапрос.СуммаДокументаИтог КАК СуммаДокументаИтог,
	РаспоряжениеНаОтгрузку.Дата КАК Дата
ИЗ
	Документ.РаспоряжениеНаОтгрузку КАК РаспоряжениеНаОтгрузку
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			СУММА(ВТОсновнаяТаблица.СуммаДокумента) КАК СуммаДокументаИтог
		ИЗ
			Документ.РаспоряжениеНаОтгрузку КАК ВТОсновнаяТаблица
		{ГДЕ
			ВТОсновнаяТаблица.Ссылка.* как Ссылка}) КАК ВложенныйЗапрос
		ПО (ИСТИНА)
		
		{ГДЕ
			РаспоряжениеНаОтгрузку.Ссылка.* как Ссылка}
Показать
26. zqzq 21 05.06.17 10:14 Сейчас в теме
(25) Идея интересная, но тогда нужно все поля убрать, краме ссылки и итогов, а на форму вытягивать уже через ссылку, например Ссылка.Дата, Ссылка.Номер и т.д. чтобы отборы корректно работали
ВЫБРАТЬ	
	Т.Ссылка КАК Ссылка,
	ВложенныйЗапрос.СуммаДокументаИтог КАК СуммаДокументаИтог
ИЗ
    Документ.Т КАК Т
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            СУММА(П.СуммаДокумента) КАК СуммаДокументаИтог
        ИЗ
            Документ.Т КАК П
        {ГДЕ
            П.Ссылка.* как Ссылка}) КАК ВложенныйЗапрос
        ПО (ИСТИНА)
{ГДЕ
    Т.Ссылка.* как Ссылка}
Показать
27. PerlAmutor 107 06.06.17 06:15 Сейчас в теме
Поправьте ошибку:
1-й вариант запроса будет не даст нам возможность указать Документ1
28. Rokky78 26 11.07.17 16:46 Сейчас в теме
(0) Интересное решение. Попытался применить в своей задаче. Мне нужно при перемещении по списку номенклатуры формировать другой ДС (остатки). Почти все получилось, но для ДС остатков свойства "ТекущаяСтрока", "ТекущиеДанные" = Неопределено. Поэтому итоги в подвале не показывает. Сами поля рассчитываются и присоединяются нормально. Не получается их загнать в подвал.
Может подскажете, как у ДС сделать какую-либо (в моем случае не важно) строку текущей?
29. KAV2 08.11.17 03:47 Сейчас в теме
Большое спасибо за идею и подробное объяснение. Однако вот смотрю исходный запрос, генерируемый платформой и вижу что для основной выборки (второй запрос) делается отбор для порицонного считывания (по 25 записей), тогда как для первого запроса, где создается временная таблица такого отбора не делается (правда все равно, устанавливаются отоборы установленные пользователем). Поэтому мне кажется, все равно будем получать тяжелый запрос. Что думаете по этому поводу? Или может я не правильно понимаю что происходит?
30. getnight 43 27.06.18 11:57 Сейчас в теме
Надеюсь автор (или кто нибудь из местных гуру по динамическим спискам) сможет мне помочь.

Проблема описана тут https://forum.infostart.ru/forum9/topic194967
31. insurgut 191 24.01.19 14:05 Сейчас в теме
Только у меня на деле ничего не работает? Нужно на форме заказа разместить список оплат по нему, и в подвале вывести итог. Сделал 1 в 1 - в подвал ничего не выводится.
32. insurgut 191 24.01.19 19:58 Сейчас в теме
В итоге забил на динамический список и сделал таблицу значений на форме, которую заполняю при открытии формы документа...

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Запрос = Новый Запрос("ВЫБРАТЬ
	                      |	ПоступлениеНаСчет.Ссылка КАК ДокументОплаты,
	                      |	ПоступлениеНаСчет.СуммаДокумента КАК СуммаДокумента
	                      |ИЗ
	                      |	Документ.ПоступлениеНаСчет КАК ПоступлениеНаСчет
	                      |ГДЕ
	                      |	ПоступлениеНаСчет.ДокументОснование = &ДокументОснование
	                      |	И ПоступлениеНаСчет.Проведен
	                      |
	                      |УПОРЯДОЧИТЬ ПО
	                      |	ПоступлениеНаСчет.Дата,
	                      |	ПоступлениеНаСчет.Ссылка");
	Запрос.УстановитьПараметр("ДокументОснование", Объект.Ссылка);
	ТаблицаОплат.Загрузить(Запрос.Выполнить().Выгрузить());
	Элементы.ТаблицаОплатСуммаДокумента.ТекстПодвала = ТаблицаОплат.Итог("СуммаДокумента");
	
КонецПроцедуры
Показать
33. robomicky 21.02.19 02:50 Сейчас в теме
Чисто для проверки работы ПолучитьИсполняемуюСхемуКомпоновкиДанных()

Сделал расширение для формы списка документа Комплектация номенклатуры и
добавил в расширение Форму списка Комплектации, далее:

1. реквизит КоличествоИтог (Тип Число)
2. Использование Подвал - Да
3. Для колонки Количество - Текст подвала "Итого:" и Путь к данным новый реквизит КоличествоИтог
4. В модуль формы добавил код:

&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
ОпределитьКоличествоКоличествоИтог();
КонецПроцедуры

&НаСервере
Процедура ОпределитьКоличествоКоличествоИтог()
Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема,Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КоличествоИтог = Результат.Итог("Количество");
КонецПроцедуры

&НаКлиенте
Процедура Расш1_СписокПриАктивизацииЯчейкиПосле(Элемент)
ОпределитьКоличествоКоличествоИтог();
КонецПроцедуры

&НаКлиенте
Процедура Расш1_ИзменитьВыделенныеПосле(Команда)
ОпределитьКоличествоКоличествоИтог();
КонецПроцедуры

Итоги в подвале показываются.

P.S. Есть некоторая особенность.
Если устанавливать/снимать Чекбоксы на форме (Вид операции и Организация), то обновление итогов произойдёт только после щелчка мышью в любой ячейке списка.
Восьмой; Skaredov; noprogrammer; +3 Ответить
34. user1012691 05.04.19 14:12 Сейчас в теме
Можно уточнить, если нужно добавить условие для расчета итога по колонке
ГДЕ Документ1.ПометкаУдаления = ЛОЖЬ
, то помеченные на удаление документы не показываются в списке. Есть возможность исправить это? Пример:
ВЫБРАТЬ
	Документ1.Ссылка КАК Ссылка,
	Документ1.ВерсияДанных КАК ВерсияДанных,
	Документ1.ПометкаУдаления КАК ПометкаУдаления,
	Документ1.Номер КАК Номер,
	Документ1.Дата КАК Дата,
	Документ1.Проведен КАК Проведен,
	Документ1.СуммаДокумента КАК СуммаДокумента
ПОМЕСТИТЬ ВТОсновнаяТаблица
ИЗ
	Документ.Документ1 КАК Документ1
ГДЕ Документ1.ПометкаУдаления = ЛОЖЬ
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Документ1.Ссылка КАК Ссылка,
	Документ1.ВерсияДанных КАК ВерсияДанных,
	Документ1.ПометкаУдаления КАК ПометкаУдаления,
	Документ1.Номер КАК Номер,
	Документ1.Дата КАК Дата,
	Документ1.Проведен КАК Проведен,
	Документ1.СуммаДокумента КАК СуммаДокумента,
	ВложенныйЗапрос.СуммаДокументаИтог КАК СуммаДокументаИтог
ИЗ
	Документ.Документ1 КАК Документ1
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			СУММА(ВТОсновнаяТаблица.СуммаДокумента) КАК СуммаДокументаИтог
		ИЗ
			ВТОсновнаяТаблица КАК ВТОсновнаяТаблица) КАК ВложенныйЗапрос
		ПО (ИСТИНА)
ГДЕ
	Документ1.Ссылка В
			(ВЫБРАТЬ
				ВТОсновнаяТаблица.Ссылка КАК Ссылка
			ИЗ
				ВТОсновнаяТаблица КАК ВТОсновнаяТаблица)
Показать
Оставьте свое сообщение

См. также

Недокументированное использование стандартных обработок из меню "Все функции". Промо

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Рассмотрены возможности произвольного использования стандартных функций, вызываемых из меню платформы "Все функции" - "Стандартные" (Активные пользователи, Журнал регистрации, Поиск ссылок на объект, Проведение документов ...).

19.06.2015    112420    ekaruk    128    

Цветовая схема конфигуратора в стиле OneScript

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

Цветовая схема конфигуратора 1С максимально приближенная к стандартной цветовой схеме OneScript в VS Code.

01.10.2020    654    DmitrySinichnikov    3    

Рендеринг элементов управляемого интерфейса

Работа с интерфейсом v8 v8::УФ Россия Бесплатно (free)

Реализация отображения всего состояния формы проще, чем работа по изменениям. Однако использование идеи разделения алгоритмов на программные слои MVC и построения реактивных систем позволяет получить не только простые и масштабируемые решения, но и производительные интерфейсы. Рассмотрим примеры таких реализаций на основе использования фреймворка «Управление состоянием»: Информационная надпись, Заголовок формы, Свертываемая группа, Отключаемые панели.

22.09.2020    2513    kalyaka    5    

Переопределение представления ссылочного значения

Практика программирования Работа с интерфейсом v8 Бесплатно (free)

Переопределение представления ссылочного значения

17.09.2020    2208    sam441    15    

Идея или как сохранить ЦВЕТ, ШРИФТ, ОФОРМЛЕНИЕ пользователя Промо

Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Простой и оригинальный способ сохранять ЦВЕТОВУЮ СХЕМУ и ОФОРМЛЕНИЕ пользователей. Как сохранить ЦВЕТ

22.06.2015    24466    Tatitutu    12    

Медленно формируются отчеты в БП 3, способ исправления

Работа с интерфейсом v8 БП3.0 Бесплатно (free)

При формировании любых отчетов, но в особенности оборотно-сальдовой ведомости в бухгалтерии 3, очень долго формировался отчет, ПОЯВЛЯЛСЯ ЖЕЛТЫЙ КОТ, разумеется у бухгалтера невроз, да и у меня тоже. Что только ни делал: тестирование и исправление с пересчетом итогов, настройка SQL, отключение фоновых заданий, обновление платформы и конфигурации, а толку нет, регламентные операции по скулю тоже сделал. И что же сделал, а вот что:

21.07.2020    1844    VID1234    8    

Регистр сведений как дополнение объекта

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

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

19.05.2020    2544    Infector    14    

Видеодемонстрация применения Теста-центра для нагрузочного тестирования конфигураций Промо

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Тест-центр – инструмент автоматизации многопользовательских нагрузочных испытаний информационных систем на платформе 1С:Предприятие 8. С его помощью можно моделировать работу предприятия без участия реальных пользователей, что позволяет оценивать применимость, производительность и масштабируемость информационной системы в реальных условиях. В видео показан пример с внедрением конфигурации Тест-центра в произвольную информационную базу и создание простого сценария нагрузочного теста.

16.09.2012    35690    Aleksey.Bochkov    29    

Перенос инструкций из word во встроенную справку 1С с сохранением картинок и форматирования

Практика программирования Работа с интерфейсом v8 Бесплатно (free)

Делюсь простым и удобным способом переноса справки/инструкций из ворда (и не только) во встроенную справку 1С с сохранением картинок и форматирования.

22.04.2020    4518    77dream77    21    

Звездный рейтинг *****

Работа с интерфейсом v8 Россия Бесплатно (free)

Ранее я представил подсистему «Управление состоянием». К подсистеме был проявлен интерес, однако в рамках одной статьи аспекты её использования были представлены недостаточно полно. Более подробное рассмотрение использования подсистемы я планирую продолжить через публикацию отдельных учебные примеров. Это первая статья из цикла таких примеров.

06.04.2020    1389    kalyaka    3    

Функциональные опции. Управление доступным функционалом для пользователей

Работа с интерфейсом v8 Бесплатно (free)

Как управлять доступным функционалом в привязке к пользователям программы.

24.03.2020    1347    Evilgrym    2    

Хранение и редактирование дополнительных параметров в регламентированном отчете. Для начинающих. Промо

Работа с интерфейсом v8 БП2.0 УПП1 БУ Бесплатно (free)

Для начинающих. Как редактировать дополнительные параметры регламентированного отчета, изменив только модуль формы и модуль объекта. Как сохранить дополнительные параметры в данных отчета.

22.01.2014    20591    KapasMordorov    4    

Форма выбора для реквизита с составным типом данных

Работа с интерфейсом v8 Бесплатно (free)

Возник вопрос: как открыть форму выбора для реквизита, имеющего составной тип данных, да еще и отображаемый в виде надписи?

11.03.2020    2251    rule_2    2    

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

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

18.02.2020    4889    randomus    18    

[Шпаргалка] Свой диалог выбора типа значения (элемента)

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

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

18.02.2020    3574    rpgshnik    6    

Программное генерирование кнопочек для удобного управления уровнями группировки в отчетах (версия 2a). Промо

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

В табличных документах 1С 8 имеется отличная возможность использования группировок, но управление уровнями группировок через контекстное меню не очень удобное. В своих отчетах для управления уровнями группировок я использую маленькие кнопочки на поле табличного документа - это намного удобнее и быстрее, чем через контекстное меню.

09.04.2011    46247    mtv:)    74    

СКД. Шаг 3. Используем макеты для оформления отчета

Работа с интерфейсом v8 v8::СКД 1cv8.cf Бесплатно (free)

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

13.01.2020    15295    aximo    14    

Добавление собственного поля и состояния в настройки доступности по состоянию в 1С:Документооборот

Практика программирования Работа с интерфейсом v8 ДО Бесплатно (free)

В данной публикации я хочу описать процесс добавления собственного поля и состояния в функционал настройки доступности по состоянию в 1С:Документооборот.

30.12.2019    4558    pavelpribytkin96    2    

Визуальный индикатор состояния документа

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

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

24.12.2019    2081    user752307    10    

Хитрости компоновки данных: программное формирование заголовков отчета и колонок без использования макетов. Промо

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

Хитрости компоновки данных: программное формирование заголовков отчета и колонок без использования макетов. Очень часто необходимо программно сформировать заголовок отчета, например добавить туда наименование валюты, в которой формируется отчет. Можно использовать макеты, но во многих случаях это не оправданно.

27.07.2012    32217    milkers    10    

[СКД] Вывод картинки в результат любого отчета на СКД

Работа с интерфейсом v8 v8::СКД 1cv8.cf Бесплатно (free)

Если у вас в справочнике Номенклатура (или другом справочнике) заполнена картинка, то ее можно легко вывести для наглядности отчета.

09.12.2019    9131    John_d    16    

Лайфхаки 1С. Настройка списков (Часть 3)

Работа с интерфейсом v8 Бесплатно (free)

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

03.12.2019    12516    VachKirp    14    

В новой платформе пропала кнопка "Печать". Имитируем БСП

Работа с интерфейсом v8 Россия Бесплатно (free)

"Приятным" сюрпризом для многих пользователей 1С стало то, что при обновлении платформы (начиная с 8.3.15) полностью поменялся интерфейс. Можно долго спорить о целесообразности этого новшества, но самым главным минусом стало то, что пропали стандартные кнопки на панели инструментов. Разработчики предполагают повсеместное использование БСП, но что делать тем, кто давно и успешно использует самописные конфигурации, в которых формирование печатной формы происходит по ТабДок.Показать(), и не желает их "утяжелять"? Добавим общую форму с нужными нам кнопками.

03.12.2019    8996    Vlan    43    

Рабочее место кассира для touch-screen и программируемой клавиатуры продавца в «1С: Розница» Промо

Работа с интерфейсом v8 Розница Бесплатно (free)

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

29.11.2012    46658    aavolkoff    50    

Управляемые формы. Изменение формы списка или формы объекта без внесения изменений в типовые формы (без использования расширений)

Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Вносим изменения в типовые формы объектов (документы, справочники, журналы, обработки, общие формы). Не снимая с поддержки эти формы. Создаем программно элементы из общего модуля. Для примера рассмотрю добавление колонки "Скрепка" в форму списка документа. Если к документу привязан файл, то в списке в новой колонке должна отображаться "скрепка".

12.11.2019    11042    John_d    24    

Локализация интерфейсов конфигураций. Практика и инструментарий 1Ci

Работа с интерфейсом Локализация решений v8 Бесплатно (free)

В последнее время компания 1С International все увереннее заявляет о себе на международном рынке. Но для успешного продвижения в этом направлении необходима локализация интерфейсов конфигураций 1С. О том, как выглядит процесс перевода, какие инструменты для этого есть, где брать переводчиков и как проверять их работу, на конференции Infostart Event 2018 Education рассказал руководитель группы локализации компании 1Ci Сергей Поликарпов.

05.11.2019    5143    user1069006    1    

ELK. Время изумительных историй!

Журнал регистрации Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Всем привет! Сегодня хочу рассказать вам несколько полезных историй про то как нам помог Elastic search в связке с Kibana. Про сам Elastic рассказывать не буду, уже все давным давно описали и до меня. Все обычно говорят что это полезно, это классно. В то же время, очень мало кто рассказывает про практические ситуации: когда и как помог Elastic. Итак, начнем.

31.10.2019    8852    slozhenikin_com    27    

Бухгалтерия предприятия 3.0 интерфейс, аналогичный 1С:Бухгалтерии 7.7; Промо

Работа с интерфейсом v8 БП2.0 Россия Бесплатно (free)

Бухгалтерия предприятия, редакция 3.0, версия 3.0.14. Добавлена возможность использовать интерфейс, аналогичный 1С:Бухгалтерии 7.7;

20.09.2012    37282    dour-dead    18    

Лайфхаки 1С (часть 2) Настройка работы интерфейса такси. Настройка и советы по работе

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

Советы по настройке интерфейса Такси и особенности работы в этой среде.

24.10.2019    9662    VachKirp    7    

Создание асинхронных виджетов

Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Описание нескольких способов создания асинхронных виджетов для 1С:Предприятия. Рассматриваются способы с использованием HTTP-сервисов и фоновых заданий.

16.10.2019    13038    YPermitin    19    

Формы. Трудности программной работы

Работа с интерфейсом v8 v8::УФ 1cv8.cf Бесплатно (free)

Рассматриваем основные подводные камни, с которыми приходится сталкиваться при программной работе с формами, а также способы обхода самых частых проблем.

06.10.2019    11848    YPermitin    31    

Выбор вариантов отчета в "Управление торговлей" ред. 11 Промо

Работа с интерфейсом Учет ТМЦ Учет ТМЦ v8 УТ10 Россия БУ Бесплатно (free)

В УТ 11 в свойствах конфигурации задано хранилище вариантов отчетов. Исходя из этого, все отчеты будут использовать для своих вариантов именно это хранилище (если, конечно, в свойствах самого отчета не задано другое хранилище). По сути, все варианты для отчетов находятся в справочнике "Варианты отчетов", который заполняется при первом запуске системы. Вполне очевидно, что если Вы создаете свой отчет (внешний или внутренний) с несколькими вариантами, у Вас не будет возможности выбирать нужный вариант (переключаться между вариантами), т.к. в выше указанном справочнике нет никакой информации о вариантах созданного Вами отчета. В этой небольшой статье я покажу один из способов решения данной проблемы.

27.05.2012    46800    1cUserAndrew    25    

Лайфхаки 1С (часть 1). Настройки отчетов и печатных форм 1С

Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

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

02.10.2019    12635    VachKirp    10    

Добавляем виджет "Задачи от меня" в Документооборот 2.1

Практика программирования Работа с интерфейсом v8 v8::Бизнес-процессы ДО Россия Бесплатно (free)

Небольшая доработка Документооборота 2.1 для возможности добавления виджета "Задачи от меня" в обработку Текущие дела.

25.09.2019    7631    Sergey_Borisovi4    3    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    51582    rpgshnik    63    

Практика регулярных выражений в 1С или "парсим неудобные форматы" Промо

Практика программирования Работа с интерфейсом v8 1cv8.cf Россия Бесплатно (free)

В продолжение статьи Использование регулярных выражений (RegExp) в 1С8.х. Углубляемся в практику использования регулярных выражений в 1С. Основы работы с регулярными выражениями хорошо описаны в указанной публикации. А я попробую ответить на вопрос "почему именно регулярные выражения?" на примере конкретной рабочей задачи.

26.10.2011    29931    1cspecialist    33    

[Механизм интерфейса] Часы

Работа с интерфейсом Практика программирования v8 1cv8.cf Бесплатно (free)

Добавляем цифровые часы на форму, как бонус рассмотрим вариант и с аналоговыми.

26.08.2019    9957    rpgshnik    36    

Произвольная начальная страница через расширение (программно)

Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Установка своей формы произвольному пользователю на начальную страницу.

14.08.2019    12277    nagaitseff    15    

Подходы, методы и инструменты UX/UI для разработки эффективных интерфейсов на 1С

Работа с интерфейсом Инструментарий разработчика v8 Бесплатно (free)

Интерфейсам в 1С обычно уделяют мало внимания. Это в итоге снижает востребованность платформы, делает ее неконкурентной, лишает большой доли рынка. Как не потерять старых клиентов и привлекать новых с помощью интерфейсов, а главное – как сделать «правильный» интерфейс, рассказал участникам конференции Infostart Event 2018 Education управляющий партнер и основатель консалтинговой группы WiseAdvice Иван Тягунов.

07.08.2019    11215    IvanAT1981    15    

Допиливаем форму выбора серий номенклатуры для отображения остатков Промо

Практика программирования Работа с интерфейсом v8 КА1 УТ10 УПП1 Россия Бесплатно (free)

В этой статье я хочу рассмотреть задачу, которая довольно часто возникает у начинающих (и не только) разработчиков, адаптирующих типовые конфигурации (УТ, КА, УПП) на предприятиях торговли. Речь пойдет про отображение остатков в форме выбора серий номенклатуры при подборе в документы. Это актуально в тех случаях, когда не ведется партионный учет по сериям, либо когда документы вводятся неоперативно и нет возможности воспользоваться волшебной кнопкой "Заполнить и провести". На первый взгляд задача банальна, но я хочу показать некоторые "грабли", на которые часто наступают новички в процессе ее реализации, а также сопоставлю алгоритмы решения на платформе 8.1 и 8.2.

20.01.2011    32188    practik1c    19    

БСП: Дополнительные отчеты и обработки - одна обработка, несколько форм

Практика программирования Работа с интерфейсом БСП (Библиотека стандартных подсистем) v8 Бесплатно (free)

Как в одной дополнительной обработке разместить несколько форм с типом команды "ОткрытиеФормы"?

29.07.2019    10912    dsdred    9    

Пользовательские настройки системы компоновки данных

Практика программирования Работа с интерфейсом v8 v8::СКД 1cv8.cf Бесплатно (free)

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

09.07.2019    27068    ids79    2    

Подсистема "Варианты отчетов". Используете ли Вы ее правильно?

Работа с интерфейсом БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

Небольшая история про использование подсистемы "Варианты отчетов" из БСП. Используете ли Вы ее правильно?

04.06.2019    42047    YPermitin    52    

Расшифровка отчета на СКД с детализацией по выбранному полю на основе БСП

Практика программирования Работа с интерфейсом Разработка v8 v8::УФ v8::СКД 1cv8.cf Россия Бесплатно (free)

В данной статье рассмотрим механизм работы с расшифровкой отчета, созданного при помощи системы компоновки данных, в управляемом приложении. Показывать буду на примере реальной задачи. Условие: использовать имеющиеся в конфигурации механизмы БСП, с минимальными и "правильными" изменениями. Расшифровка должны быть двух видов на каждом поле: 1. Открывать ссылочный объект 2. Открывать новую форму с детализацией табличной части документа. Собственно ради второго пункта и писалась статья, в основном для себя, чтобы не забыть.

14.05.2019    19953    Viktor_Ermakov    8    

Свой макет оформления отчета

Работа с интерфейсом v8 v8::СКД Россия Бесплатно (free)

Пример создания и оформления и применения своего (пользовательского ) макета оформления для СКД.

24.04.2019    13422    olegpkc    5    

Универсальный отчет - "тонкая" настройка

Работа с интерфейсом v8 ERP2 БП3.0 УТ11 КА2 Бесплатно (free)

Как вывести реквизиты в отдельную колонку. Как получить больше настроек в 1С:ERP 2 (2.4.7.107) или 1С:КА2. (2.4.7.127) или БП 3.0 (3.0.67.74).

14.04.2019    7444    Константин С.    2    

Как добавить типовую форму для СКД (для начинающих) (1С 8.3, управляемые формы)

Инструментарий разработчика Работа с интерфейсом v8 v8::УФ v8::СКД Бесплатно (free)

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

25.03.2019    13582    ellavs    9    

Как вывести дополнительные реквизиты на форму списка справочника Графики работы сотрудников. Управляемые формы. Без снятия конфигурации с поддержки

Работа с интерфейсом Зарплата Зарплата v8 ERP2 ЗУП3.x Россия БУ Бесплатно (free)

Как вывести дополнительные реквизиты на форму списка справочника Графики работы сотрудников Подходит для ERP, ЗУП v. 3.0; 3.1

24.02.2019    9907    EVP_EVP    7