Оптимизированный подсчет суммы выделенных ячеек табличного документа (как в Excel)

01.10.09

Интеграция - Загрузка и выгрузка в Excel

Оптимизированный расчет данных выделенных ячеек

Скачать файлы

Наименование Файл Версия Размер
Пример 8.1
.epf 9,34Kb
281
.epf 9,34Kb 281 Скачать

В Excel есть удобный механизм подсчет суммы выделенных ячеек в 1С к сожалению такого нет. 1С предлагает нам пользоваться кнопками калькулятора "М" что не так удобно как вариант предлагаемый ниже.

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

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

Оптимизированный вариант расчета


 

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

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

Оптимизированный вариант более сложный, но более эффективный в плане скорости.
Особый случай с выделением через Crtl + A т.к. в этом случае в процедуру передается Область (0,0,0,0) подсчет не производится и это разумно в этом случае пользователь выделяет не для подсчета суммы.

p.s.
За любые идеи по улучшению производительности буду очень признателен
Если функции ВычислитьСуммуОбласти, ПолучитьЧислоИзСтроки  реализовать через ВК думаю производительность возрастет. Может кто поможет ;)

Функция ВычислитьСуммуОбласти(ТабличныйДокумент, Верх, Лево, Низ, Право)
    
    Сумма = 0;
    
    Для ЯчВерт = Верх По Низ Цикл
        Для ЯчГориз = Лево По Право Цикл
            ОдиночнаяОбласть = ТабличныйДокумент.Область(ЯчВерт, ЯчГориз);
            
            Сумма = Сумма + ПолучитьЧислоИзСтроки(ОдиночнаяОбласть.Текст);
        КонецЦикла;
    КонецЦикла;
    
    Возврат Сумма;
    
КонецФункции

Функция ПолучитьЧислоИзСтроки(Текст)
    
    Попытка
        Результат = Число(Текст);
    Исключение
        Результат = 0;
    КонецПопытки;
    
    Возврат Результат;
    
КонецФункции

 Внимание!!! Код выше не является основой обработки. Вынесены процедуры, которые желательно реализовать через ВК для повышения скорости

См. также

SALE! 10%

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 9504 руб.

29.10.2014    210153    620    524    

439

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150708    367    375    

501

Маркетплейсный загрузчик для 12-ти маркетплейсов в "БП 3", "УТ 11", "КА 2", ERP, УНФ

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 Бухгалтерский учет 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Управленческий учет Платные (руб)

Реальный помощник, с помощью которого Вы сделаете необходимые документы для Wildberries, OZON, ЯндексМаркет, Мегамаркет, Aliexpress, "Детский мир", Казань-Экспресс, "Леруа Мерлен", ЭНФАНТА (Акушерство), ЛаМода, Летуаль, "Твой дом" в документы "Отчет комиссионера (агента) о продажах" и другие, может работать в "Бухгалтерия 3", "Бухгалтерия 3 КОРП", УТ 11, УНФ, КА 2, ERP. Возможность подключить любые маркетплейсы. Анализ продаж ОЗОН. 30 дней БЕСПЛАТНОГО пользования!

1800 руб.

12.08.2021    31892    226    63    

117

SALE! 20%

Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы

Загрузка и выгрузка в Excel Оптовая торговля Платформа 1С v8.3 Управляемые формы Платформа 1C v8.2 Конфигурации 1cv8 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная обработка для загрузки документов из Excel в 1С. Не требует указания параметров (номера колонок, номер первой строки таблицы и т.д.) и предварительной настройки. Просто выбираете файл Excel, документ 1С и нажимаете кнопку "Загрузить". Обработка сама находит таблицу в файле Excel, необходимые для загрузки данные в ней (номенклатура, количество, НДС, цена, сумма) и загружает ее в 1С. Вместе с номенклатурой может найти контрагента, номер и дату документа, штрих-коды, серии ГТД, страну и т.д. Распознает документы ЛЮБОЙ ФОРМЫ (УПД, ТОРГ-12, заказ, отчет комиссионера и т.д.). Не требует MS Office. Для поиска таблиц используются методы эвристического поиска. Загружает только то, что нужно, т.е. пропускает повторы шапки таблицы, заголовки, промежуточные итоги, подписи и т.д. Содержит модуль работы с электронной почтой и api-загрузчик отчетов о продажах маркетплейсов.

5000 4000 руб.

09.11.2016    214909    925    886    

939

Загрузка данных отчета о реализации товаров из Excel файла СберМегаМаркет

Загрузка и выгрузка в Excel Маркетплейсы Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Загрузка данных отчета о реализации товаров из сервиса СберМегаМаркет для конфигурации: Бухгалтерия предприятия, редакция 3.0; Управление торговлей, редакция 11 и Управление нашей фирмой, редакция 3.0 в документ "Отчет комиссионера (агента) о продажах".

4800 руб.

07.06.2022    15071    79    0    

60

SALE! 30%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

6000 5520 руб.

04.06.2019    101368    296    173    

312
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. highlander 28.09.09 15:51 Сейчас в теме
А я вот интересуюсь... а возможно такое на 7-ке?
3. Арчибальд 2706 28.09.09 16:03 Сейчас в теме
13. venger 2121 29.09.09 12:07 Сейчас в теме
(1) > А я вот интересуюсь... а возможно такое на 7-ке?

Вот, например: http://infostart.ru/public/16000/
53. Fisherru 78 16.02.10 09:59 Сейчас в теме
(13)
Ваша ссылочка хороша, плюсик поставил, но это не совсем тоже самое...
У вас там идет работа с печатными формами, а хочется с табличными частями документа и со справочниками в форме списка...
Вот что очень хочется http://infostart.ru/forum/forum19/topic31264/
54. Evg-Lylyk 4559 16.02.10 10:08 Сейчас в теме
(53) на семерке не подскажу
А в 8.х вроде как нельзя так как в Таблицах, деревьях нельзя получить диапазон выделенных ячеек только выделенные строки
58. German_Tagil 42 10.01.19 06:01 Сейчас в теме
(53)
Вот что очень хочется http://infostart.ru/forum/forum19/topic31264/

Подскажите а что там - пытаюсь обратиться - у вас нет прав на просмотр топика
59. Evg-Lylyk 4559 10.01.19 09:22 Сейчас в теме
(58) Не подскажу, с 7.7 давно не работаю
60. German_Tagil 42 10.01.19 10:18 Сейчас в теме
(59) А я не про 7.7 спрашиваю
думал что что-то по данному вопросу для 8.2
задачка нудная - учет реально отработанного времени
по операционно - документ сделал - теперь пытаюсь упростить ввод данных
61. Evg-Lylyk 4559 10.01.19 10:26 Сейчас в теме
(60) Там 50 сообщений, поясни здесь о чем речь
62. German_Tagil 42 10.01.19 10:37 Сейчас в теме
(61) Вот что очень хочется http://infostart.ru/forum/forum19/topic31264/
думал что это для 8.1
63. Evg-Lylyk 4559 10.01.19 10:50 Сейчас в теме
(62) Прошу уточнить ты пишешь тоже самое. Попытаюсь угадать
Если нужно что в т.ч. документа или обработки подсчитывалась сумма выделенных строк
думаю реализуемо на события вешаем подсчет отображаем например в подвале.
2. Evg-Lylyk 4559 28.09.09 15:59 Сейчас в теме
(2) посмотрел вроде нет предопределенной процедуры аналогичной 8.1 аналогично наверно не сделать

Надеюсь ветка не превратится в ветку, а как сделать тоже самое на 7.7 :)
4. highlander 28.09.09 16:12 Сейчас в теме
Нет не превратиться... не волнуйтесь :D Но за идею плюс однозначно
5. Evg-Lylyk 4559 28.09.09 16:31 Сейчас в теме
(4) самая идея подсчета суммы работает через 5 минут, а вот над оптимизацией пришлось поломать голову
6. Stepa86 1521 28.09.09 17:13 Сейчас в теме
(5) какое самое узкое место? наверно получение одиночной области и вынимание из нее текста...
7. bashta.aleksey 28.09.09 17:45 Сейчас в теме
Evg-Lylyk в конфе "Бухгалтерия предприятия КОРП" рел 2.0.6.3 этот механизм уже есть в стандартных отчетах.
Думаю это тебе поможет:
Функция ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(ПолеТабличногоДокумента) Экспорт
Сумма = 0;
Для Каждого Область Из ПолеТабличногоДокумента.ВыделенныеОбласти Цикл
Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
Для ИндексСтрока = Область.Верх По Область.Низ Цикл
Для ИндексКолонка = Область.Лево По Область.Право Цикл
Попытка
Сумма = Сумма + Число(СтрЗаменить(ПолеТабличногоДокумента.Область("R" + Формат(ИндексСтрока, "ЧГ=0") + "C" + Формат(ИндексКолонка, "ЧГ=0")) .Текст, " ", ""));
Исключение
КонецПопытки;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат Сумма;
КонецФункции
Показать
10. Evg-Lylyk 4559 28.09.09 19:05 Сейчас в теме
(7) мой метод "нормальный" 8)
8. bashta.aleksey 28.09.09 17:46 Сейчас в теме
Извините.
Функция ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(ПолеТабличногоДокумента) Экспорт
Сумма = 0;
Для Каждого Область Из ПолеТабличногоДокумента.ВыделенныеОбласти Цикл
Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
Для ИндексСтрока = Область.Верх По Область.Низ Цикл
Для ИндексКолонка = Область.Лево По Область.Право Цикл
Попытка
Сумма = Сумма + Число(СтрЗаменить(ПолеТабличногоДокумента.Область("R" + Формат(ИндексСтрока, "ЧГ=0") + "C" + Формат(ИндексКолонка, "ЧГ=0")) .Текст, " ", ""));
Исключение
КонецПопытки;
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецЦикла;
Возврат Сумма;
КонецФункции
director04; +1 Ответить
9. Evg-Lylyk 4559 28.09.09 19:04 Сейчас в теме
(8) и это в типовой? ))))))))))
11. bashta.aleksey 28.09.09 21:22 Сейчас в теме
12. 4ish 29.09.09 10:57 Сейчас в теме
Не сочтите за каприз, но попробовал выделять отдельные ячейки через Ctrl - не работает. :(
14. Evg-Lylyk 4559 29.09.09 12:27 Сейчас в теме
(12) Мультивыделение работает и система оптимизации для мультивыделений тоже. Просто это пример... функция "ПолучитьИнформациюПоВыделеннымОбластям" возвращает информацию по каждой области в структуре дальше используете как хотите я просто не стал делать сумму выделенных областей т.к. просто пример. Сейчас поправлю.
15. Yashazz 4709 29.09.09 16:32 Сейчас в теме
О! Всё ждал, пока кто-нибудь сделает...
Спасибо!
16. 4ish 29.09.09 20:40 Сейчас в теме
17. Gleb K. 30.09.09 14:06 Сейчас в теме
Всем привет. А я себе сделал вот так.
У меня учитывается мультивыделение, наличие скрытых строк и/или столбцов, плюс парочка проверок "на дурака".

[1C-CODE]Процедура ТДПриАктивизацииОбласти(Элемент)
	Сумма = 0;
	Для Каждого Область из ЭлементыФормы.ТД.ВыделенныеОбласти Цикл
		Если Не Область = Неопределено И НЕ (Область.Верх = 0 И Область.Низ = 0) И НЕ (Область.Лево = 0 И Область.Право = 0) Тогда
		Для i = Область.Верх по Область.Низ Цикл
			Для j = Область.Лево по Область.Право Цикл
				Ячейка = ЭлементыФормы.ТД.Область(i,j);
				Если Ячейка.СодержитЗначение
					И Ячейка.Видимость
					И Ячейка.ТипЗначения = Новый ОписаниеТипов("Число")
					И Не Ячейка.Значение = Неопределено Тогда
					Сумма = Сумма + Ячейка.Значение;
				КонецЕсли;
			КонецЦикла;
		КонецЦикла;
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры
Показать
[/1C-CODE]
buy_sale; director04; +2 Ответить
18. Evg-Lylyk 4559 30.09.09 15:46 Сейчас в теме
(17) метод сабжа более оптимален почитайте внимательно и посмотрите код
19. Evg-Lylyk 4559 30.09.09 16:09 Сейчас в теме
(17)
"Если Не Область = Неопределено И НЕ (Область.Верх = 0 И Область.Низ = 0) И НЕ (Область.Лево = 0 И Область.Право = 0) Тогда"
Нужно только "Если Не Область = Неопределено" и то не знаю пример когда
Во внутреннем условии тоже не все условия нужны
Строка 100 не будет суммироваться, что как мне кажется, неправильно.

Видимо волна материалов захлестнула инфостарт и все ждут примитивизма, а вот фиг :) это не ко мне
20. Gleb K. 01.10.09 13:06 Сейчас в теме
(18, 19) Если Не Область = Неопределено возникает когда щелкаешь мышью между заголовков колонок или строк.
С внутренними условиями я перемудрил, у вас лучше.
На счет 100 строки не понял.
А вот скрытые ячейки у вас будут суммироваться, что правильно, но не логично :) Хотя это зависит от процедуры вызывающей функцию ВычислитьСуммуОбласти.
21. Evg-Lylyk 4559 01.10.09 15:45 Сейчас в теме
(20) Я имел ввиду что строка "100" не будет суммироваться т.к. имеет Тип("Строка")
На счет скрытых ячеек поправил так логичные (не подумал)
22. artbear 1448 01.10.09 17:26 Сейчас в теме
(21) Пробовал писать ПолучитьЧислоИзСтроки(Текст) без блока Попытка-Исключение ?
ИМХО должно быть быстрее.
23. Evg-Lylyk 4559 01.10.09 18:58 Сейчас в теме
(22) Рад тебя слышать. Конечно быстрее, а что с ошибками делать
34. artbear 1448 02.10.09 09:38 Сейчас в теме
(23) Я к тому, что может быть быстрее вместо Попытки анализировать первый символ - если это цифра, то суммировать.
Также сначала можно использовать СокрЛ (не СокрЛП)
или вообще регулярным выражением проверить :)
36. Ish_2 1104 04.10.09 20:41 Сейчас в теме
(34) Странно.
Пусть текст ячейки начинается с цифры и мы начинаем его суммировать без попытки. В этом случае пользователь получит сообщение об ошибке, если в тексте ячейки - " 1 показатель".
Хрен редьки не слаще.
Применение ВК для подсчета сумм тоже смотрится , на мой взгляд, диковато.
Думаю ,при практическом применении ,например ,в бухгалтерских отчетах скорость подсчета мало существенна. Неоходим лишь быстро вычисляемоый грубый подсчет количества ячеек в выделенных ячейках. И ограничение на их количество.
24. Ish_2 1104 01.10.09 19:45 Сейчас в теме
Несколько выделенных областей могут имет непустое пересечение .
В этом случае подсчет сумм будет неверным.
Я правильно понял ?
28. Evg-Lylyk 4559 01.10.09 22:58 Сейчас в теме
(24) должно нормально отрабатывать кэш для каждой отдельно
29. Ish_2 1104 01.10.09 23:03 Сейчас в теме
(28) Не понял.
Если две выделенные области имеют пересечение (т.е. общие ячейки) , то эти ячейки будут просуммированы дважды :
сначала в одной выделенной области , потом в другой.
25. Ish_2 1104 01.10.09 21:22 Сейчас в теме
В строке функции :
ОдиночнаяОбласть = ТабличныйДокумент.Область(ЯчВерт,ЯчГориз)
приведено неверное обращение к ячейке.
Правильным обращением при суммировании ячеек будет
ОдиночнаяОбласть = 
ТабличныйДокумент.Область(ЯчВерт,ЯчГориз,ЯчВерт,ЯчГориз)

При обращении к области по двум координатам можно получить не одинарную , а ячейку , которая объединяет несколько ячеек (объединенная ячейка). Подсчет сумм в этом случае будет неверным.
Evg-Lylyk; +1 Ответить
26. Ish_2 1104 01.10.09 22:46 Сейчас в теме
Не приводит к неправильно вычисленной сумме и обращение к ячейке , используемое в Бухгалтерии КОРП ("R..C..").
27. Evg-Lylyk 4559 01.10.09 22:57 Сейчас в теме
(26) Спасибо понял поправлю ... по мне лучше ТабличныйДокумент.Область(ЯчВерт,ЯчГориз,ЯчВерт,ЯчГориз)
30. Ish_2 1104 01.10.09 23:07 Сейчас в теме
+28 Я налетел на этот эффект у себя в теме , где используется не одиночное выделение ячейки в табличном документе , а множественное выделение : "строка" или "крест".
31. Evg-Lylyk 4559 01.10.09 23:11 Сейчас в теме
(30) да т.к. это две разные выделенные области.
32. Evg-Lylyk 4559 01.10.09 23:13 Сейчас в теме
31+ будут показываться сумма каждой выделенной области + сумма
33. elizarovs 83 02.10.09 09:22 Сейчас в теме
(+) Классно! Еще бы в форме документа такое сделать...
35. Evg-Lylyk 4559 02.10.09 12:23 Сейчас в теме
(33) добавить можно в любую форму с ТабДок это пример
(34) Это проверено еще на консоли медленнее, регуляры так вообще. Вариан описан в p.s. нужно функции ВычислитьСуммуОбласти, ПолучитьЧислоИзСтроки реализовать через ВК должно быть быстрее
40. elizarovs 83 24.11.09 11:39 Сейчас в теме
(35) Вот именно, с ТабДок, а там везде ТЗ. А у ТЗ нет события ПриАктивизацииОбласти, как и объекта ВыделенныеОбласти.
41. Evg-Lylyk 4559 25.11.09 00:59 Сейчас в теме
(40) В ТЗ нельзя выделить одну ячейку в Колонке1 Строке1 и одну ячейку в Колонке2 Строке2 только построчно.
42. elizarovs 83 25.11.09 06:55 Сейчас в теме
(41) Похоже, что так, во всяком случае я не нашёл описания такой возможности или примера. Хотя, если поставить в свойствах выделения строки - Ячейка, а в режиме выделения - множественное, то в форме прекрасно выделяются ячейки в любой комбинации. Выцепить же список выделенных ячеек из кода я не смог. Може кто поможет? Ну очень нужного свойства в 1С не хватает (сумма группы выделенных ячеек)...
43. Evg-Lylyk 4559 25.11.09 12:41 Сейчас в теме
(42) опиши когда это нужно (я даже не представляю примера)
44. elizarovs 83 26.11.09 09:21 Сейчас в теме
(43) Большая организация, несколько подразделений и даже несколько баз данных оперативного учета. В базу бухгалтерии сливаются все документы из первичных баз. Любимое занятие бухов - сравнивать документы по наличию и по суммам. Открывают журнал, берут калькулятор и строчат, как из пулемёта. А так бы просто мышкой потыкали. Думаю, можно много ситуаций похожих найти.
Другой пример (реальный). На фирме, на базе 1С, стоит система, в которой итого по документу не сходится с итого по таблице. Не говорю, что это правильно, но так получилось. А я пытаюсь разгрести... Приходится вываливать каждый раз в список, чтобы сложить
45. Evg-Lylyk 4559 26.11.09 15:51 Сейчас в теме
(44) как сделать подобное в ТЗ, ТЧ не представляю. Может поможет: для сравнения данных есть СравнениеФайлов очень полезная вещь
37. zag2art 12.10.09 19:31 Сейчас в теме
А чем это лучше чем выделить группу ячее и нажать M+ в калькуляторе 8.1?
38. Evg-Lylyk 4559 13.10.09 17:43 Сейчас в теме
(37) тем что не надо ничего нажимать плюс можно среднее посчитать или еще чтото
про М+ мало кто знает
39. banne 36 03.11.09 05:01 Сейчас в теме
46. kate123 28.01.10 13:18 Сейчас в теме
Спасибо за обработку, очень полезная функция. Подскажите, пожалуйста, как сделать подсчет для табличного поля документа. Для ТЧ документа нет "ПриАктивизацииОбласти",также нет свойства ВыделеннаяОбласть. Куда и как правильно прописать?
47. Evg-Lylyk 4559 28.01.10 13:46 Сейчас в теме
(46) Для ТЧ не получится. Почитайте внимательно комментарии этот вопрос поднимали.
48. tango 506 28.01.10 13:47 Сейчас в теме
ну, не знаю.
открыли калькулятор.
выделили область.
нажали кнопку.
чем встроеная фича хуже всей этой возни?
Прикрепленные файлы:
49. Evg-Lylyk 4559 28.01.10 14:02 Сейчас в теме
(48) Потому что автоматически и не надо ничего нажимать
Вы не первый почитайте комментарии
Даже 1С решили что это нужно и в Бух. КОРП сделали в шаблонах отчетов эту функцию
50. Ish_2 1104 28.01.10 14:08 Сейчас в теме
(48),(49) И в скоро выходящей на замену 1.6 новой версии БП 2.0 предусмотрен этот функционал.

И получается , Миша, что автор предвосхитил появление такого функционала в типовых конфигурациях.
51. tango 506 28.01.10 14:18 Сейчас в теме
или содрал в КОРПе :). Гоша.
52. Evg-Lylyk 4559 28.01.10 17:30 Сейчас в теме
55. zba 48 28.12.12 09:19 Сейчас в теме
В управляемой форме не побывал сделать, а то чета там данная функция не работает
56. tamaks 118 10.12.13 18:00 Сейчас в теме
Использовал представленые в публикации процедуры для выгрузки привязаных фото для выделеной пользователем в отчете номенклатуры. Сформировал отчет - выделил строки с наименованием номенклатуры - нажал выгрузить фото.
57. le0nard 25.12.15 23:37 Сейчас в теме
вот чуть измененная из типовой, скрытые не учитывает.

Функция ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(ПолеТабличногоДокумента) Экспорт
	Сумма = 0;
	Для Каждого Область Из ПолеТабличногоДокумента.ВыделенныеОбласти Цикл
		Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
			Для ИндексСтрока = Область.Верх По Область.Низ Цикл
				Для ИндексКолонка = Область.Лево По Область.Право Цикл
					Попытка
						адресЯчейки="R" + Формат(ИндексСтрока, "ЧГ=0") + "C" + Формат(ИндексКолонка, "ЧГ=0");
						ячейка=ПолеТабличногоДокумента.Область(адресЯчейки);
						если ячейка.Видимость тогда
							ЧислоЯчейки=Число(СтрЗаменить(ячейка.Текст, " ", ""));
							Сумма = Сумма +ЧислоЯчейки;
						конецесли;
					Исключение
					КонецПопытки;
				КонецЦикла;
			КонецЦикла;
		КонецЕсли;
	КонецЦикла;
	Возврат Сумма;
КонецФункции
Показать
64. Jungle Murzik 31.08.23 21:00 Сейчас в теме
Если выделить несколько строк, то Имя выделенной области будет, например R8:R12 без колонок.
ТипОбласти = Строки
Свойства области Верх и Низ будут равны 0

Аналогично, если выделить несколько колонок, то Имя области будет, например C3:C5
ТипОбласти = Колонки
Свойства области Лево и Право будут равны 0

И наконец, если в таблице нажать Ctrl+A, то Имя области будет "T"
ТипОбласти = Таблица
Свойства области Лево, Право, Верх и Низ будут равны 0

Также 1С не рекомендует использовать преобразование к типу Число через Попытку-Исключение
https://its.1c.ru/db/v8std/content/499/hdoc
А рекомендуется использовать ОписаниеТипов

Предлагаю доработанную типовую процедуру, которая учитывает эти нюансы и корректно отрабатывает во всех случаях

&НаКлиенте
Функция ВычислитьСуммуВыделенныхЯчеекТабличногоДокумента(ПолеТабличногоДокумента)
	
	ОписаниеТипа = Новый ОписаниеТипов("Число");
	Сумма = 0;
	Для Каждого Область Из ПолеТабличногоДокумента.ВыделенныеОбласти Цикл
		Если ТипЗнч(Область) = Тип("ОбластьЯчеекТабличногоДокумента") Тогда
			Для ИндексСтрока = Область.Верх По ?(Область.Низ=0, ПолеТабличногоДокумента.ВысотаТаблицы, Область.Низ) Цикл
				Если ИндексСтрока=0 Тогда Продолжить; КонецЕсли;
				Для ИндексКолонка = Область.Лево По ?(Область.Право=0, ПолеТабличногоДокумента.ШиринаТаблицы, Область.Право) Цикл
					Если ИндексКолонка=0 Тогда Продолжить; КонецЕсли;
					ИмяОбласти = СтрШаблон("R%1C%2", Формат(ИндексСтрока, "ЧГ=0"), Формат(ИндексКолонка, "ЧГ=0"));
					ТекстЯчейки = ПолеТабличногоДокумента.Область(ИмяОбласти).Текст;
					Слагаемое = ОписаниеТипа.ПривестиЗначение(ТекстЯчейки);
					Сумма = Сумма + Слагаемое;
				КонецЦикла;
			КонецЦикла;
		КонецЕсли;
	КонецЦикла;
	
	Возврат Сумма;
	
КонецФункции
Показать
Оставьте свое сообщение