Электронная таблица в 1С средствами табличного документа

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

Разработка - Обработки - Универсальные обработки

Электронная таблица табличный документ обработка

64
Функционал электронной таблицы для программ на платформе 1С реализован на основе табличного документа. Функционал реализован в виде обработки (тонкий клиент). В формулах электронной таблицы можно использовать любые языковые конструкции, процедуры и функции 1С, ссылки на другие ячейки электронной таблицы. Допустимо обращаться к ячейкам электронной таблицы по имени именованной области. В случае использования в формулах электронной таблицы данных из самой таблицы пересчет зависимых ячеек с формулами производится автоматически. Электронную таблицу можно сохранить в файл формата xml.

Электронная таблица на платформе 1С

Электронная таблица — программное обеспечение, позволяющее проводить вычисления с данными, представленными в виде двумерных массивов. Электронные таблицы (ЭТ) представляют собой удобный инструмент для автоматизации вычислений. Многие расчёты, в частности в области бухгалтерского учёта, выполняются в табличной форме: балансы, расчётные ведомости, сметы расходов и т. п. Использование формул в электронных таблицах позволяет представить взаимосвязь между различными параметрами некоторой системы. Решения многих вычислительных задач, которые раньше можно было осуществить только с помощью программирования, стало возможно реализовать через моделирование в электронной таблице.

Примерами электронных таблиц являются такие программы как: SuperCalc, Lotus 1-2-3, Microsoft Excel и т.д.

Функционал электронной таблицы для программ на платформе 1С реализован на основе табличного документа. Функционал реализован в виде обработки.

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

 

Формулы электронной таблицы – основные тезисы.

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

Для обращения в формулах электронной таблицы к другим ячейкам или группе ячеек электронной таблицы (табличного документа) применяется конструкция вида:

&RНомерСтрокиCНомерКолонки   - для обращения к значению другой ячейки табличного документа.

& RНомерСтрокиЛевоВерхCНомерКолонкиЛевоВерх: RНомерСтрокиПравоНизCНомерКолонкиПравоНиз – для получения массива значений заданной области ячеек табличного документа. Порядок значений в массиве сверху вниз и слева направо заданной области.

Также допустимо обращаться к ячейкам табличного документа по имени именованной области:

&(ИменованнаяЯчейка) - для обращения к значению другой ячейки табличного документа. Где «ИменованнаяЯчейка» - имя именованной одной ячейки табличного документа.

&(ИмяОбластиЯчеек) - для получения массива значений именованной области ячеек табличного документа. Порядок значений в массиве сверху вниз и слева направо заданной области.

Примеры обращения к ячейкам табличного документа:

  1. Сумма двух ячеек табличного документа. Обращение к ячейкам задано в виде номера строки и колонки.

=&R2C3+&R2C6 

  1. Сумма всех ячеек области табличного документа. Обращение к области ячеек задано в виде номеров строк и колонок.

= Сумм(&R2C3:R10C11)

  1. Сумма двух ячеек табличного документа. Обращение к одной из ячеек задано в виде номера строки и колонки, а другой в виде имени.

=&R2C3+&(Слагаемое2) 

  1. Сумма всех ячеек именованной области табличного документа.

= Сумм(&(МояОбластьЧисел))

 

Тип ячейки, значение ячейки и тип значения ячейки

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

Тип ячейки табличного документа может принимать одно из двух значений: «Значение» или «Формула». Тип ячейки определяет, как будет задаваться значение ячейки, путем ввода значения пользователем, или путем расчета формулы. При изменении типа ячейки на значение «Формула» появляется возможность в реквизит значения (соседний реквизит формы) ввести расчетную формулу.

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

Также возможно задать авто тип. Это значит, что тип значения необходимо будет выбрать перед вводом самого значения. Авто тип также применим к ячейкам с формулами. В этом случае тип ячейки будет установлен такой, каким будет результат вычисления формулы.

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

 

Использование формул для расчета значений ячейки

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

Среди способов написания алгоритма для вычисления значения ячейки можно выделить два основных:

  • Написание алгоритма возвращающего значение ячейки как результат выполнения имеющихся в платформе 1С и конфигурации функций языка 1С.
  • Написание алгоритма как конструкций языка 1С. Для получения значения ячейки требуется явное присвоение данных в алгоритме предопределенной переменной с именем «Результат».

Способ задания формулы в виде алгоритма возвращающего значение ячейки как результат выполнения имеющихся в платформе 1С и конфигурации функций языка 1С, самый простой, и аналогичен тому как это, например, делается в MS Excel. Формула может, как и в MS Excel, начинаться со знака равенства «=». Но это не является обязательным.

Если формула длинная, то для удобства написания и редактирования можно открыть отдельное окно.

В некоторых случаях, удобнее или нагляднее составить алгоритм с помощью конструкций языка 1С. В этом случае языковая конструкция не возвращает значений, поэтому расчетное значение, которое мы хотим присвоить ячейки табличного документа, необходимо присвоить самостоятельно путем присвоения значения предопределенной переменной «Результат». Приведем пример (см. Рис. ниже).

Пересчет формул ячеек

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

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

Команда «Пересчитать все» производит расчет формул во всех ячейках табличного документа.

Команда «Пересчитать область» производит расчет формул в выделенной области ячеек или одной текущей ячейки табличного документа. Зависимые ячейки также пересчитываются.

Сохранение электронной таблицы в файл, открытие ранее сохраненной электронной таблицы из файла

            Для сохранения и открытия электронной таблицы на командной панели расположены команды (кнопки) «Сохранить файл» и «Открыть файл». При выборе данных команд открываются стандартные диалоги сохранения и открытия файлов. Для сохранения используется формат хранения табличного документа формата Xml.

 

Обработка проверена на платформах: 8.2.19.83 (не типовая 1С Бухгалтерия), 8.3.10.2667 (Бухгалтерия предприятия, редакция 3.0 (3.0.64.54)).

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

P.S. Критика, найденные ошибки, недочеты - приветствуются.

 

Добавлено 29.04.2019 г.

Еще раз хотел бы обратить внимание, что в данной электронной таблице:

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

Как правильно заметили в комментариях, что никто не пытался Excel заменить, но все-таки решил добавить в данную электронную таблицу некоторые функции похожие на функции Excel.

В актуальной версии доступны функции:

Сумм, Максимум, Минимум, СрЗнач, ДлСтр, Заменить, Значен, ЛевСимв, Повтор, Подставить, Поиск, ПравСимв, Прописн, ПСТР, Рубль, СжПробелы, Строчн, Сцепить, ВПР, Выбор, ГПР, ПолучитьОбластьКакТаблицуЗначений.

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

 

64

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

Наименование Файл Версия Размер
Электронная таблица (обработка, руководство пользователя, пример файла электронной таблицы)
.rar 1,82Mb
29.04.19
22
.rar 20190429_2144 1,82Mb 22 Скачать

См. также

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

Комментарии
Избранное Подписка Сортировка: Древо
1. noprogrammer 148 23.04.19 22:12 Сейчас в теме
3 монетки ? не серьезно :)
Учитесь ценообразованию Табула - новый табличный редактор в 1С :)

А если по теме то - хорошая разработка.
Богатырев Артур; CyberCerber; rpgshnik; KroVladS; regint; 3vs; Tolpinski; +7 Ответить
3. 3vs 24.04.19 08:40 Сейчас в теме
(1)Да-Да, Табула за 25000 это вам не 3 стармани! :-)
16. Богатырев Артур 40 24.04.19 11:29 Сейчас в теме
(3) Так и разработки как бы разные по размерам и функционалу.
JohnyDeath; +1 Ответить
4. the1 386 24.04.19 08:52 Сейчас в теме
(1) Я ни на что не намекаю, но Эксель стоит дешевле
Прикрепленные файлы:
arakelyan; CyberCerber; logarifm; +3 Ответить
6. regint 24.04.19 09:23 Сейчас в теме
(4) там типа суть, что не надо сохранять в Эксель, работа с самыми свежими данными из базы. Но я вот не могу представить себе ситуацию, чтобы мне прям понадобилась Табула настолько, что я готов заплатить 25к, как средство для юзвера Табула сложна, итого много вопросов, мало ответов))
17. Богатырев Артур 40 24.04.19 11:30 Сейчас в теме
(4) По моему никто и не пытается Эксель заменить
35. dsdred 1187 19.08.19 15:02 Сейчас в теме
(4)Я за 4К хоме & студент купил бессрочный.
2. PowerBoy 2904 24.04.19 06:10 Сейчас в теме
20. user706545_kseg1971 64 24.04.19 11:40 Сейчас в теме
(2)
(19) много добавлять в конфу прийдется и тогда эта обработка будет уже привязана к конфигурации. Было желание выложить именно универсальную, а дописывать функции к ней уже по мере потребностей.
24. noprogrammer 148 24.04.19 12:23 Сейчас в теме
(20) Нет желания сделать в виде расширения? (вытащить функционал который сейчас у Вас в конфигурации в расширение) тогда ничего дорабатывать в основной конфигурации не придется.
28. user706545_kseg1971 64 28.04.19 05:46 Сейчас в теме
(2) В очередной версии сделаю.
29. PowerBoy 2904 28.04.19 07:42 Сейчас в теме
30. user706545_kseg1971 64 28.04.19 09:15 Сейчас в теме
(29) Скачал посмотрю. Идеи вещь хорошая. Спасибо.
32. user706545_kseg1971 64 30.04.19 15:33 Сейчас в теме
(2) Функцию ВПР, НПР сделал.
33. user706545_kseg1971 64 30.04.19 15:33 Сейчас в теме
(2) Функцию ВПР, ГПР сделал.
5. Darklight 19 24.04.19 09:18 Сейчас в теме
Давно мечтал о таком. Но... эх... целых 3 стартмани, для меня это не подъёмно :-(
12. user706545_kseg1971 64 24.04.19 11:21 Сейчас в теме
(5) Поинтересуюсь у администрации сайта можно ли сделать публикацию бесплатной. Мне не жалко.
13. tormozit 5549 24.04.19 11:23 Сейчас в теме
(12) Можно сделать 1 стартмани. 0 сделать нельзя.
14. Darklight 19 24.04.19 11:26 Сейчас в теме
25. user706545_kseg1971 64 24.04.19 16:40 Сейчас в теме
(
(14) Сделал 1 стартмани
shard; AllexSoft; CnupT; the1; CyberCerber; jaroslav.h; +6 Ответить
7. PLAstic 214 24.04.19 09:34 Сейчас в теме
А зачем это вообще?
За мою практику ни у меня, ни у заказчиков не возникало мысли сделать малофункциональное подобие экселя на базе 1С. Не могу представить в практической жизни для чего это может пригодиться. Есть примеры использования?
9. oleg-x 13 24.04.19 10:11 Сейчас в теме
(7) Ну к примеру есть общий файл эксель, которые правят все кому не лень. Но типа у каждого есть свой участок, но циферки загадочным образом меняются.
Тогда просто делается подобие эксела в 1С или еще где и каждому юзверю даются только ограниченные области редактирования. Таким образом все как бы работают с экселем, но при этом через стороннюю программу.
11. Darklight 19 24.04.19 11:01 Сейчас в теме
(7)А у меня постоянно возникает такое желание - ибо юзабилити EXCEL меня очень сильно бесит! В-первую очередь - как табличный редактор, и редактор диаграмм. Во-вторую - то, как работаю формулы и как обрабатывают данные (особенно числа и даты, которые могут быть заданы не совсем стандартным, для EXCEL, образом; а работа функции ВПР бесит отдельно). В третью - бесит совершенно неудобный и, по большей части для меня, бесполезный инструментарий по анализу табличных данных и их форматированию.
Ну и, конечно же, хочется глубокой интеграции с ИБ 1С - чтобы можно было быстр и легко туда сюда данные перегонять.
15. user706545_kseg1971 64 24.04.19 11:27 Сейчас в теме
(7) То что выложено, это вырезка из более сложного функционала. В инструкции сказано, что можно использовать любые данные, функции, процедуры учетной системы. Т.е. мы можем сделать набор функций (что то вроде API), например, получающих сальдо, обороты и т.п. из проводок, регистров и т.п. системы. Садим методолога, опытного пользователя делать различные формы. Например тот же баланс. Да и просто печатные формы, например, можно делать в которых можно выбирать сотрудника и т.п.
AllexSoft; CyberCerber; acanta; +3 Ответить
19. IsiKosta 716 24.04.19 11:34 Сейчас в теме
(15)
То что выложено, это вырезка из более сложного функционала.


Так может стоить выложить полную версию?
26. Darklight 19 25.04.19 09:44 Сейчас в теме
(19)да, согласен - подобные решения хороши именно набором встроенных функций, по заполнению и обработке ячеек.
А ещё тут нет такого важного инструмента - как протягивание формул и значений - ячеек по новому диапазону ячеек - с автоизменением содержимого в зависимости от новой позиции (простите не знаю как это правильно в EXCEL называется), и, соответсвенно, нет разделения на фиксированную/скользящую адресацию ячеек.
Не хватает инструмента вставки и настройки диаграмм (хотя сам табличный документ это поддерживает).
Не хватает формул генерации значений для диапазона ячеек (например запросами как к самому табличному документу, так и к данным текущей ИБ, и тем более нет обращения к данным из других источников, хотя бы через COM/REST), а так же обратного конструктора движений - по передачи значений из табличного документа в объекты/наборы ИБ.
Не хватает инструментов сортировки и фильтрации строк.
Нет поддержки работы с книгами т.е. сразу с несколькими листами, и, соответственно, ссылок на другие страницы.
Не хватает инструментов настройки группировки строк/колонок, с расчётом итогов (по произвольной формуле конечно же)
Ну много чего ещё не хватает :-(

Поэтому эту обработку автор сейчас отдаёт всего за 1стартмани, а более мощная Табула стоит 25тыс руб, и в будущем, скорее всего, будет стоить ещё дороже.
23. rpgshnik 1630 24.04.19 11:55 Сейчас в теме
(7) поверьте есть такие, по этому тема стала активно пользоваться спросом :)
8. MaxxiMiliSan 105 24.04.19 09:59 Сейчас в теме
10. Darklight 19 24.04.19 10:39 Сейчас в теме
(8)Здесь как-то всё более привычно. А там как-то всё более муторно. Но это только моё мнение со стороны, ибо ни то ни другое не щупал.
CyberCerber; rpgshnik; +2 Ответить
22. rpgshnik 1630 24.04.19 11:54 Сейчас в теме
(8) UI у вас очень сильно страдает, по этому совершенно не такое же решение.
CyberCerber; +1 Ответить
18. Богатырев Артур 40 24.04.19 11:30 Сейчас в теме
Я смотрю, тема про табличные редакторы с формулами в 1С в последнее время увеличила популярность.... :)
Serg_Tangatarov; Darklight; CyberCerber; acanta; rpgshnik; +5 Ответить
21. rpgshnik 1630 24.04.19 11:51 Сейчас в теме
Не плохой конкурент нашумевшей Табуле 👍
CyberCerber; +1 Ответить
27. ellavs 622 26.04.19 07:57 Сейчас в теме
Спасибо, очень интересно. Скачала, потестируем ;)
31. German_Tagil 6 29.04.19 05:50 Сейчас в теме
Если Вы говорите что это вырезка из более сложного функционала - посмотреть бы как это работает.
Я сделал ввод данных через табличный документ - получилось гораздо быстрее вводить данные
и контролировать то что вводишь.
из функционала привязал только суммирование ячеек для контроля данных.
Если Ваша обработка достаточно легко интегрируется - то буду очень рад.
Посмотрю на праздниках
34. teratekco 14.05.19 18:24 Сейчас в теме
Очень хотелось бы попробовать, вот только мани есть, а стартмани нету :(
36. Светлый ум 226 21.08.19 09:14 Сейчас в теме
+1 взял на заметку, когда последний раз пересчеты в табличном документе делал для 2000 строк тормоза жуткие словил.
Потестим ваш подход на быстродействие
Оставьте свое сообщение