ExTab - библиотека для табличных вычислений. Новости от 29.03.2012.

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

Разработка - Разработка внешних компонент

5
В этой публикации, как и обещал, я подробно расскажу о коде интеграции ExTab и табличного документа, а также о появившихся нововведениях и созревших планах на будущее.

Привет всем, кто интересуется развитием бесплатной библиотеки табличных вычислений ExTab, COM-объекта, цель которого - сделать функциональность электронных таблиц (wiki:Электронная таблица) более доступной для программистов. ExTab - это виртуальная электронная таблица; ExTab может наделить новыми возможностями таблицу значений, или табличный документ, или другой табличный элемент пользовательского интерфейса.

Напоминаю: COM-компоненты регистрируются командой "regsvr32 имя_файла.dll", для чего могут понадобиться права администратора. Для работы компонента требуется установленный в системе "Microsoft Visual C++ 2010 Redistributable Package" (http://www.microsoft.com/download/en/details.aspx?id=5555).

Начну с нововведений. Вот небольшой ролик: ссылка на youtube. Коротко: после некоторых багфиксов функции работы с колонками и строками стали пригодными к работе (хотя ещё не в той степени, как я хочу). Подробнее - позже.

Теперь несколько общих комментариев:

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

2) О производительности. На самом деле, я толком ещё не проводил никаких тестов, но ExTab скорее всего сумеет покрыть ваши нужды, если вы не будете сильно его мучать. ExTab должен быть быстрее аналогичной реализации на встроенном в 1С:Предприятии языке и избавит вас от необходимости изобретать свой велосипед. В общем, ExTab хоть и должен быть достаточно шустр для большинства  случаев, но прошу не ждать чудес от крохотной (< 100 килобайт) программки, которую делает "на коленке" в свободное время программист-самоучка.

3) Об использовании памяти. ExTab весьма экономичен в плане расхода памяти. Вот в общем-то и всё.

4) О работоспособности. В текущем виде библиотека не закончена. Многое ещё предстоит реализовать. Однако тем, что она умеет, уже вполне можно пользоваться. Багов быть не должно Smile. А если они вдруг объявятся - прошу мне сообщить.

5) О демо-конфигурации. Это просто демо, пример, и не более того. Я не сомневаюсь, что вы способны придумать более удачный код интеграции.


А теперь к делу. Рассмотрим код интеграции ExTab и табличного документа на управлямой форме (конечно, ExTab можно использовать и в обычных формах, например, для таблиц значений и вообще для всех компонентов интерфейса, похожих на таблицу... да и без визуального интерфейса тоже можно, но в этом я не вижу смысла). Методика использования такова - вы должны параллельно с вводимыми в табличный документ данными отправлять эти же самые данные в ExTab, а об остальном он позаботится сам.

Первое, что нужно сделать - завести переменную для ExTab  в нашей форме:

    &НаКлиенте
    Перем ЭксТаб;

При открытии формы создадим ExTab, в нём создадим таблицу функцией CreateTable, которая возвращает числовой идентификатор созданной таблицы, и сделаем созданную таблицу текущей используемой при помощи функции SelectTable, принимающей идентификатор созданной таблицы.

    ЭксТаб = Новый COMОбъект("ExTabCom");
    ЭксТаб.SelectTable( ЭксТаб.CreateTable() );

Если не создать таблицу, или создать, но не выбрать - ничего работать не будет. Да, кстати, вы можете создать 2 или 3 таблицы, например, для нескольких закладок на форме. Также мы можем предусмотреть удаление из памяти созданных таблиц при закрытии формы процедурой DeleteTable, принимающей в качестве аргумента идентификатор таблицы, полученный при создании таблицы. Вообще делать это не обязательно, т.к. память будет освобождена автоматически при уничтожении COM-объекта, но форма может существовать какое-то время в памяти после её закрытия, так что, если вы заботитесь об экономии памяти - используйте DeleteTable. Само собой, заведите переменные для хранения идентификаторов таблиц в этом случае.

Теперь пришло время отправить данные в ячейку. Для этого сначала нужно спозиционироваться на ячейке. Для этого существуют две функции:

1) SelectCell(стр, кол). Аргументы - номер колонки и номер строки, 2 числа;

2) SelectCell2(ячейка). Аргумент - строковое представление адреса ячейки. Поддерживается как обычный формат (пример: "C4"), так и RC-стиль (пример: "R3C4"). В формулах тоже применимы оба варианта записи адреса.

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

После того, как мы спозиционировались на ячейке, можно выполнить собственно отправку в неё данных. Для этого существуют 4 функции:

1) SetValueI(значение). Отправляет в ячейку целочисленное значение.

2) SetValueF(значение). Отправляет в ячейку число с плавающей запятой, например 3.14.

3) SetValueS(значение). Отправляет в ячейку строковое значение.

4) SetValueB(значение). Отправляет в ячейку значение типа "булево".

Да, согласен, не очень изящно. Но в демо-конфигурации есть функция-обёртка ЭксТаб_ОтправитьЗначение, которая позволяет избавиться от необходимости следить за типом отправляемого в ячейку значения.

Чтобы прочитать значение из ячейки, на которой мы спозиционировались функцией SelectCell или SelectCell2, сначала нужно обязательно вызвать функцию ReadValue(), не имеющую аргументов. После этого можно запросить тип хранящегося в ячейке значения функцией GetValueType(), которая возвращает числовой идентификатор типа: 0 - ячейка не содержит значения, 1 - целое число, 2 - число с плавающей запятой, 3 - строковое значение, 4 - булево. Зная тип, можно получить значение одной из этих функций: GetValueI(), GetValueF(), GetValueS(), GetValueB(). Очередной ужас Smile, да? И это при имеющихся-то возможностях COM-программирования... Но я не закапывался пока в COM слишком глубоко, я изучил необходимый минимум, чтобы как можно быстрее идти дальше. Бантики и украшательства будут позже. Чтобы упростить себе жизнь, посмотрите пример обёртки в функции ТабПриАктивизацииОбласти в демо-конфигурации. Кстати, вы можете, например, независимо от типа значения в ячейке всегда использовать GetValueS, если вы твёрдо вознамерились во что бы то ни стало получать из ячеек только строковые данные. Или GetValueF, которая будет пытаться конвертировать находящееся в ячейке значение именно в формат числа с плавающей запятой, и со строкой вида "36.6" она запросто управится. Т.о. вы можете использовать встроенные в ExTab возможности конвертации значений между разными типами, хотя 1С:Предприятие обладает достаточными возможностями по этой части, так что это не слишком-то актуально.

Чтобы удалить значение из ячейки, на которую проведено позиционирование, и т.о. удалить занятую им память, используйте функцию EraseValue(). Для полного удаления текущей ячейки из памяти, если она больше совсем не нужна ни для хранения значения, ни для хранения формулы - используйте DeleteCell(). Если вы дорожите оперативной памятью - эта функция для вас. Удалённую ячейку без каких-либо проблем можно будет снова занять каким-то значением позже.

А теперь мы переходим к самой интересной части - к формулам. Методика работы с формулами такова - вы заполняете ячейки данными и формулами, после чего вызываете специальную функцию для полного пересчёта. Это работает достаточно быстро, хотя мне есть что оптимизировать. Частичный пересчёт я собираюсь реализовать в поздних версиях. Кстати, если в процессе вычисления обнаружатся циклические ссылки (например, "a1=a2" и "a2=a1+1"), пересчёт будет отменён. Избегайте циклических ссылок.

Чтобы назначить формулу текущей ячейке, используйте функцию SetFormula(f), принимающую строку формулы в качестве аргумента. Если формула ошибочна, то просто ничего не произойдёт. Чтобы получить формулу, используйте GetFormula(); в случае отсутствия формулы в ячейке функция вернёт пустую строку. Чтобы удалить назначенную текущей ячейке формулу, используйте функцию EraseFormula().

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

  1. a1+a1*b3+(b4/e10)
  2. 10+"ой"*2
  3. sum(a1:r5c5;10;-1.23)

Обратите внимание на пример 2. В математических выражениях операции с нечисловыми значениями просто пропускаются, т.е. формула эквивалентна этой: "10+2". ExTab стремится создавать пользователю меньше проблем, часть его идеологии - позволять пользователю мелкие неточности, не заваливая его сообщениями об ошибках. Например, в формуле "2*4*6*" последнее умножение будет пропущено, и такая формула тоже считается корректной.

Аргументы в формулах разделяются точкой с запятой (;). ExTab сейчас поддерживает следующие формулы:

  1. Sum. Арифметически суммирует аргументы. В качестве аргумента можно указать адрес, значение, выражение, диапазон адресов; Нечисловые аргументы игнорируются.
  2. Sumc. Та же сама функция Sum с суффиксом. Стремится сконвертировать нечисловые значения аргументов в числовые. Например, булево "истина" - это 1, строковое "101 долматинец" - это 101.
  3. If(условие;значение1;значение2). В случае истинности условия, возвращает значение 1, иначе - значение 2. Условие может быть любого типа. Функция будет стремиться подобрать самый подходящий аналог. Например, пустая строка - это ложь. Число 0 - это ложь. Значение2 можно не указывать (ExTab не вредный Smile ), тогда в случае ложности условия функция возвратит спецзначение НИЧТО. Это аналог 1С-ного "Неопределено". Операции с НИЧТО игнорируется в арифметических выражениях.
  4. Concat. Выполняет строковое суммирование аргументов. Нестроковые аргументы игнорируются.
  5. Concatc. Та же самая функция Concat с суффиксом. Стремится сконвертировать нестроковые аргументы в строковые. Например, булево "ложь" будет преобразовано в строку "false".

После того, как значения и формулы расставлены по своим местам, для пересчёта нужно вызвать функцию Calculate(). Эта функция - одна из тех, которые обновляют список изменённых ячеек. Этот список после выполнения функции заполняется значениями адресов ячеек, которые вам нужно будет обновить в табличном документе, чтобы привести его в соответствие с новым внутренним состоянием, в котором находится ExTab. Чтобы узнать количество изменённых ячеек, воспользуйтесь функцией GetUpdatedCellsCount(). Скажем, она вернула значение Y. Далее, в цикле X от 0 до Y (не включая Y!) нужно вызвать функцию GetUpdatedCellRC(X, стр, кол), которая поместит по номеру обновлённой ячейки X в переменные стр и кол соответственно номер строки и номер колонки адреса изменённой ячейки. Соответственно, для каждого полученного таким образом адреса нужно получить данные из ячейки ExTab и обновить табличный документ. Ещё одно некрасивое решение... А как же передача массивов и всё такое? Будет, всё будет. Но позже. В демо-конфигурации есть образец функции-обёртки (ЭксТаб_ОбновитьИзменённые), которая позволяет дистанцироваться от всего этого ужаса.

 

А теперь перейдём к новым трюкам, которым я успел научить ExTab к этой версии - ссылка на демо-видео есть в начале. Вот она снова: ссылка на youtube. Итак, вот список новых функций, пригодных к использованию:

  1. EraseRow(стр). Очистить строку с номером стр.
  2. EraseColumn(кол). Очистить колонку с номером кол.
  3. DeleteRow(стр). Удаляет строку с номером стр. Строки снизу сдвигаются вверх.
  4. DeleteColumn(кол). Удаляет колонку с номером кол. Колонки справа сдвигаются влево.
  5. InsertRow(стр). Вставляет строку на место строки с номером стр. Строка стр и строки снизу сдвигаются вниз.
  6. InsertColumn(кол). Вставляет колонку на место колонки с номером кол. Колонка кол и колонки справа сдвигаются вправо.

Эти 6 функций обновляют список изменённых ячеек! ЭксТаб_ОбновитьИзменённые вам в помощь Smile. А функции 3...6 также выполняют модификацию формул в сдвинутых ячейках по аналогии с тем, как это делает Эксель. Признаюсь - я не очень хорошо оттестировал этот момент. Кроме того, текстовое представление формул, хранящееся внутри ExTab, не обновляется в случае таких переносов. Исправить эти недоразумения я собираюсь к следующей версии (ну ещё пару багов надо устранить...). Однако, если вы не будете использовать GetFormula, то вам эти исправления без надобности. Но на случай, если вы решите предоставить пользователю возможность редактировать формулу, я реализую вышеназванное.

Фуфф... Наш табличный документ стал чем-то похож на Эксель. Хотя, конечно, это не является нашей целью.

Жду ваших комментариев Smile. В следующий раз вернусь с обновлённой версией и новыми планами на будущее. Ну или не вернусь, если меня закидают тухлыми помидорами, в которых я благополучно утону.

5

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

Наименование Файл Версия Размер
ExTab + 1S @ 2012 03 29.zip
.zip 48,46Kb
30.03.12
15
.zip 48,46Kb 15 Скачать

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

Комментарии
Избранное Подписка Сортировка: Рейтинг
1. SiAl 72 02.04.12 03:02 Сейчас в теме
Читал и не понял: а на фига эта компонента нужна? В чем ее фишка?
Сначала я доделаю ExTab до конца, а уж после буду наводить красоту.

Вообще-то если что-то сделал, то это и означает, что красота наведена. Верно и обратное: если красота не наведена, то ничего до конца и не доделано.
В общем, ExTab хоть и должен быть достаточно шустр для большинства случаев, но прошу не ждать чудес от крохотной (< 100 килобайт) программки, которую делает "на коленке" в свободное время программист-самоучка.

Вообще-то когда-то Б.Гейтс утверждал, что пользователю на всё про всё хватит за глаза 64 килобайта, а тут "недоделанная программа всего в 100 килобайт".
2. YuriM 21 02.04.12 08:28 Сейчас в теме
Идея проста. Берём некий компонент интерфейса, имеющий табличный вид, и делаем из него электронную таблицу - расчёты по формулам, удаление/вставка строк. Вот, в общем-то и всё.
3. premierex 04.04.12 10:35 Сейчас в теме
А зачем такие сложности?
1) SetValueI(значение). Отправляет в ячейку целочисленное значение.
2) SetValueF(значение). Отправляет в ячейку число с плавающей запятой, например 3.14.
3) SetValueS(значение). Отправляет в ячейку строковое значение.
4) SetValueB(значение). Отправляет в ячейку значение типа "булево".

Есть тип VARIANT, реализованный в WinAPI. Переменная этого типа может содержать любой тип данных и описание типа данных, в ней содержащихся. И не надо было бы для каждого типа свою функцию описывать. И дополнительный функционал можно было бы реализовать, например вставку в таблицу COM объектов.
Насчёт небольшого размера dll-ки (< 100 килобайт): MS Visual Studio 2010 Redistributable Package несёт в себе .NET Framework 4. Отсюда - небольшой размер, ведь большинство функционала берут на себя библиотеки .NET Framework. И, в зависимости от того, какие библиотеки подгружаются, объём использованной памяти может в десятки раз быть больше, чем dll-ка весит.
В общем, MSDN в помощь, как говорится :)
4. dolter 117 05.04.12 10:47 Сейчас в теме
5. YuriM 21 05.04.12 11:07 Сейчас в теме
(3) premier, всё верно... Но я уже немного всё переделал, теперь ввод строковой - одной функцией. Хотя, глядя на реализацию от dolter, подумываю бросить эту затею. В любом случае, хоть кодить научился лучше - уже неплохо.
6. premierex 05.04.12 11:54 Сейчас в теме
(5) В любом случае, хоть кодить научился лучше - уже неплохо.
Даже в отрицательном опыте есть положительные стороны :)

Кстати, если вспомнить про технологии OLE Automatiom и DDE, можно использовать и навороченные табличные редакторы для создания отчетов, используя данные 1С:Предприятия! MS Excel, например...
И никаких компонент и обработок и даже в 1С-ку входить не надо :)
7. YuriM 21 05.04.12 12:06 Сейчас в теме
(6) premier, но навороты MS Excel нужны далеко не всегда, да и денюжек он стоит. Хотя, конечно, куда мне тягаться с такими монстрами, глупо даже сравнивать.

Я сейчас подумываю натравить свой компонент на таблицу значений, которая, как мне кажется, куда хуже подходит на роль электронной таблицы, чем табличный документ. Хотя вот думаю, а зачем это всё... Но закончу своё дело наверно чисто из упрямства :) пусть даже оно никому будет не нужно. Зато потом смогу, например, на питоне написать мини-электронную таблицу. Опять-таки бесполезно, но баранье упрямство не даёт остановиться.
8. YuriM 21 05.04.12 12:20 Сейчас в теме
Хотя я уже опасаюсь, что потом снова объявится dolter и окажется, что я изобрёл велосипед с квадратными колёсами :D
9. YuriM 21 09.04.12 23:01 Сейчас в теме
Проект кардинально переосмысливается - благодарю пользователя dolter за очень дельные замечания.
10. wolfsoft 2420 04.01.13 22:45 Сейчас в теме
(9) было бы полезно сделать компоненту, которая могла бы работать и в 7.7, вариант dolter-а - это только частный случай для 8-ки, привязанный к полю табличного документа. А вот универсальная штука, которую можно было бы привязать к любому визуальному объекту отображения по желанию программиста, вот это была бы вещь ;)
11. YuriM 21 05.01.13 15:05 Сейчас в теме
Рад, что вы поняли мою идею :)
COM-объект должен и в 7.7 работать. Правда тот, что здесь лежит, очень устарел. Есть новая версия. Если вам подобная штука пригодится - пишите, обсудим.
12. wolfsoft 2420 05.01.13 15:24 Сейчас в теме
(11) спасибо, у меня в данном случае не коммерческий интерес, поэтому пока попробую эту версию :)
13. wolfsoft 2420 17.01.13 22:09 Сейчас в теме
Наконец-то дошли руки до попробовать, но что-то у меня длл-ка отказалась регистрироваться в системе. Ошибка при вызове LoadLibrary, не найдена указанная процедура.
14. YuriM 21 17.01.13 23:33 Сейчас в теме
(13) wolfsoft, Этот проектик мне интересен и не в коммерческом ключе. Я нехило так прокачиваю свои навыки, занимаясь столь заковыристой задачей.

Извиняюсь, точно, проверил на виртуалке - и правда ошибка есть... Как я мог такое прошляпить? Дело в том, что я тут использую в процедуре отмены регистрации функцию, доступную только начиная с висты. В общем, я нашёл кое-как проект в закромах и перекомпилил, вырезав процедуру дерегистрации. Это значит, что отменить регистрацию библиотеки не получится, и останется немного мусора в реестре. Если это вас не испугает, вот отсюда можно скачать: rghost
15. YuriM 21 17.01.13 23:47 Сейчас в теме
(13) wolfsoft, а вот ссылка на более свежую версию. cyberforum.ru
Точнее, это уже внутренне совсем другая программа, и по возможностям другая.
16. wolfsoft 2420 18.01.13 10:15 Сейчас в теме
17. wolfsoft 2420 18.01.13 10:22 Сейчас в теме
Описалово бы ещё к ней...
18. PowerBoy 2919 20.01.14 13:11 Сейчас в теме
Оставьте свое сообщение

См. также

Альтернативный способ добавления элементов и реквизитов на формы 32

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 ERP2 УТ11 Россия Абонемент ($m) Работа с интерфейсом

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

1 стартмани

09.09.2019    3326    5    bmk74    0       

Удобный выбор из таблицы/дерева в УФ 61

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом Разработка

Выбор из таблицы значений или дерева значений в выпадающем списке рядом с полем ввода - УФ, быстро и просто!

1 стартмани

12.08.2019    4018    4    Yashazz    18       

[Механизм интерфейса] Свой флажок (чекбокс) 112

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

Создадим свой флажок для интерфейса, используем простой универсальный алгоритм.

1 стартмани

09.08.2019    5330    6    rpgshnik    37       

Внешняя компонента для выполнения регулярных выражений 58

Инструменты и обработки Программист Архив с данными v8 Абонемент ($m) Разработка внешних компонент

Внешняя Native API компонента для выполнения регулярных выражений на платформе 1С:Предприятие 8. Написана на C++. Используется движок boost::regex (v 1.69, v 1.68 - для Android). Версия синтаксиса Perl Compatible Regular Expressions.

1 стартмани

12.11.2018    6479    21    KAV2    57       

Шпаргалка разработчика для работы с формами 23

Отчеты и формы Программист Архив с данными v8 Россия Абонемент ($m) Работа с интерфейсом

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

3 стартмани

31.10.2018    8720    68    ELAM    3       

Открывашка ячеек таблиц 85

Инструменты и обработки Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

Глобальное сочетание клавиш для открытия объекта по ссылке из текущей ячейки любой таблицы в большинстве управляемых форм

1 стартмани

27.10.2018    9999    11    tormozit    28       

TextRadar - нечеткий поиск в тексте (Native API) 10

Инструменты и обработки Программист Компонента, плагин (dll, vbs,..) v8 1cv8.cf Абонемент ($m) Разработка внешних компонент

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

5 стартмани

19.09.2018    7837    15    TSSV    14       

Класс-обработка “Работа с картами Яндекс” 59

Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) Разработка внешних компонент WEB

Как показать точку или маршрут на карте Яндекс. Как получить координаты по строке адреса (геокодирование).

1 стартмани

01.08.2018    11942    138    RSConsulting    13       

Визуализация событий на временной шкале средствами "Поле HTML документа" 186

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

Интересный способ наглядно отобразить события на временной шкале. Например, может быть применен для красивого вывода документов по клиенту. Тестировалось на платформе 8.3.12.1469

1 стартмани

31.07.2018    14898    129    Plotks2017    24       

Продвинутое рисование в табличном документе (стрелок и не только) 73

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Абонемент ($m) Практика программирования Работа с интерфейсом

Вспоминаем геометрию и основы компьютерной графики. Матрицы и аффинные преобразования на плоскости.

1 стартмани

24.07.2018    8678    17    WalterMort    27       

Распознавание лиц (off-line). Демонстрационная база. 98

Инструменты и обработки Системный администратор Пользователь Руководитель проекта Архив с данными v8 Абонемент ($m) Разработка внешних компонент

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

1 стартмани

17.07.2018    10886    73    nomadon    45       

Работа с данными выбора 40

Инструменты и обработки Программист Архив с данными v8 Россия Абонемент ($m) Практика программирования Работа с интерфейсом

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

1 стартмани

17.07.2018    22263    13    kalyaka    15       

Управление состоянием формы через конечный автомат 82

Статья Программист Конфигурация (md, cf) v8 Россия Абонемент ($m) Практика программирования Работа с интерфейсом

Взаимодействие пользователя с интерфейсом приводит к изменению состояния формы и её элементов. Элементы отражают текущее состояние формы через свойства: видимости, доступности, оформления, текста заголовка и т.д. Даже при небольшом количестве элементов количество возможных состояний формы может быть достаточно большим. Необходимость учета всех состояний формы порождает сложные алгоритмы настройки элементов. В статье рассматривается алгоритмическое решение перехода к состоянию формы с использованием функционального подхода на основе декларативного описания

1 стартмани

19.06.2018    10524    12    kalyaka    35       

Tool1CD Beta в деле 98

Инструменты и обработки Программист Компонента, плагин (dll, vbs,..) v8 Абонемент ($m) Разработка внешних компонент

Пс, парень! Не хочешь немного сырых байтов?

1 стартмани

09.05.2018    17907    27    baton_pk    26       

Внешняя компонента для работы по Web-socket протоколу 21

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Разработка внешних компонент WEB

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

6 стартмани

30.03.2018    13908    9    Ditron    63       

Тестирование интерфейса в обычном приложении 8.2 при помощи SikuliX 107

Инструменты и обработки Системный администратор Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика Работа с интерфейсом

Как же не хватает клиента тестирования на платформе 8.2. Не кликнешь на кнопку, не выберешь из списка, не проверишь видит ли надпись пользователь. Воспользуемся внешним инструментом SikuliX, который позволит нам протестировать функционал форм. Данный инструмент легко встраивается в линию сборки и может "дружить" с уже известным многим Open-source продуктами.

1 стартмани

03.01.2018    20599    2    kraynev-navi    40       

Программное формирование форматированной строки в стиле html+inline CSS 53

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом Инструментарий разработчика

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

1 стартмани

18.11.2017    20238    25    bonv    6       

Размеры управляемой формы 101

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом Универсальные функции

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

1 стартмани

08.10.2017    18725    51    json    8       

Программное создание элементов графической схемы (через XSLT) 57

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом

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

1 стартмани

20.07.2017    14645    51    lazarenko    16       

Расширенная настройка динамического списка УФ 114

Инструменты и обработки Программист Расширение (cfe) v8 v8::УФ 1cv8.cf Абонемент ($m) Работа с интерфейсом

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

1 стартмани

31.05.2017    25012    144    tormozit    23       

Простой редактор плана помещения JavaScript 102

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Работа с интерфейсом

На ресурсе сейчас очень много решений, которые позволяют редактировать карты, используя географические схемы. Так же много решений, которые позволяют редактировать объекты онлайн веб-карт. Мне же нужно было простое решение, для того чтобы расставить квадратные объекты на плане, показать их пользователю. Ну и распечатать, опять же. Я решил написать простенький редактор на JavaScript с использованием библиотеки Raphael.

1 стартмани

23.11.2016    15357    92    igel9780    16       

"Внешнее событие" и мобильная платформа 1С 65

Инструменты и обработки Программист Архив с данными v8 Android Абонемент ($m) Разработка внешних компонент Мобильная разработка

Внешние компоненты в Android для Мобильной Платформы 1С или как вызвать внешнее событие, когда его нет.

1 стартмани

09.09.2016    29757    81    dewersia    49       

HTTP-сервис: отчеты [Расширение] 122

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом

Это HTTP-сервис, который возвращает почти любой отчет в HTML, XLSX или в JSON. Сохраните вариант отчета, получите на него ссылку и можно получить данные без захода в 1С. Работает в конфигурациях на основе БСП 2.3.3+, для отчетов на СКД и в 1С 8.3.8+

2 стартмани

30.08.2016    19669    125    Stepa86    15       

Организация файлового хранилища на базе MS SQL Server с доступом из 1С 80

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Разработка внешних компонент Сервисные утилиты

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

1 стартмани

27.07.2016    19010    42    tohandr    30       

Проект внешней компоненты для 1С:8 (сделай сам) 135

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Разработка внешних компонент

Как их делают? Как регистрируют? С чего начать? Где взять стартовый проект? Вопросов вообще много можно задать, но лучше один раз увидеть!

10 стартмани

11.03.2016    11422    10    ture    36       

Простые радости жизни программиста 1С: выбор типа значения 51

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования Работа с интерфейсом

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

1 стартмани

17.02.2016    39774    45    yuraos    17       

Снимок экрана для 1С 10

Инструменты и обработки no Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Универсальные обработки Разработка внешних компонент

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

1 стартмани

08.02.2016    21317    30    linkforget    11       

Внешняя компонента для хранения данных во внешней обработке/отчете 100

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Разработка внешних компонент

Шаблон внешней обработки с внешней компонентой, демонстрирующей возможность хранения любых сериализуемых данных непосредственно во внешней обработке или отчете.

1 стартмани

14.01.2016    15336    35    frkbvfnjh    33       

Передача реквизитов объекта из основной формы в дополнительную и обратно на управляемых формах 91

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Работа с интерфейсом

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

1 стартмани

02.11.2015    23251    8    Wolex    29       

Инструмент для создания веб приложений на основе 1С REST сервиса 67

Инструменты и обработки Программист Пользователь Приложение (exe) v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика WEB Работа с интерфейсом

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

1 стартмани

13.10.2015    21878    82    dmzubr    23       

Асинхронная загрузка данных на Управляемую Форму. Прогресс бар (УФ 8.3). Индикация состояния процесса 79

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Работа с интерфейсом Универсальные функции Внешние источники данных

Часто бывает, что возникает необходимость загрузить множество данных из разнообразных источников в определенную форму или рабочее место. В процессе загрузки пользователь в неведении — информация готовится или нет. Прием позволяет загружать данные из нескольких источников асинхронно, не блокируя форму\интерфейс, а также отображать ошибки и состояние прогресса. По мере готовности данных, они будут отображены на форме

1 стартмани

09.10.2015    29749    133    pbazeliuk    6       

Визуальный html редактор на управляемых формах 64

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) WEB Работа с интерфейсом

Мы рассмотрим некоторые особенности и возможности подключения сторонних визуальных html редакторов на javascript - TinyMCE, CK Editor. С помощью приложенной обработки Вы сможете попробовать в действии полноценный и удобный визуальный html редактор, а при желании перенести подобный функционал к себе.

1 стартмани

30.09.2015    21478    183    ivanov660    26       

Полезные приемы при работе с Excel из 1С (Версия 3.1) 495

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Разработка внешних компонент Загрузка и выгрузка в Excel

Программисту 1С часто приходится работать с таблицами Excel из 1С. Я постарался собрать небольшой FAQ и набор функций для работы с файлами Excel. Надеюсь, кому-то будет полезна данная статья.

1 стартмани

22.09.2015    139107    447    Zerocl    61       

NativeDraw: Компонента рисования для 1С [V2.6.2] 106

Инструменты и обработки Программист Компонента, плагин (dll, vbs,..) v8 1cv8.cf Windows Абонемент ($m) Разработка внешних компонент Работа с интерфейсом

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

1 стартмани

13.07.2015    40335    421    ПерваяСистема    140       

Компоненты распознавания и печати штрих-кодов 43

Инструменты и обработки Программист Приложение (exe) v7.7 v8 1cv8.cf 1cv7.md Windows Абонемент ($m) Разработка внешних компонент Сканер штрих-кода

Комплект программного обеспечения для реализации функций оптического распознавания штрих-кодов различных систем при помощи обычной web-камеры, а также их отображения в печатных формах. Программы могут работать в составе конфигураций, созданных на базе платформ «1С-Предприятие» версий 7.7, 8.2, 8.3. Компонент чтения кодов реализован в виде внешней компоненты 1С с COM-интерфейсом. Компонент отображения создан по стандартной технологии ActiveX для Windows, и может быть встроен в любое приложение, поддерживающее встраивание ActiveX элементов управления, например в документ Word или Excel, или форму VBA. P.S. Добавлена новая версия программы распознавания. Новые функции: обработка видео в реальном режиме (а не по таймеру, как раньше), добавлена возможность распознавания штрих-кодов из графических файлов JPEG, PNG, GIF, BMP, а также передавать для распознавания картинки из 1С, теперь можно получить в 1С захваченное с камеры или файла изображение, как с выделением мест, содержащих коды, так и без, а также отдельные фрагменты изображений, содержащие код. Добавлены новые свойства и методы для программирования. Обновлена документация.

10 стартмани

10.07.2015    59596    87    igorberezhnov    87       

Кнопки управления группировками табличного документа для управляемых форм 23

Инструменты и обработки Программист Внешний отчет (ert,erf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

Универсальный механизм управления группировками табличного документа из управляемой формы

1 стартмани

02.06.2015    22413    31    unichkin    9       

Управляемая форма 1С 8.2 (8.3) – работа с деревом значений и таблицей значений. Часть I (Основы) 64

Инструменты и обработки Программист Архив с данными v8 1cv8.cf Windows Абонемент ($m) Практика программирования Работа с интерфейсом

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

2 стартмани

14.05.2015    71139    25    ll13    13       

Подсистема "Планировщик" (версия 1.1) 138

Отчеты и формы no Конфигурация (md, cf) v8 1cv8.cf Россия Абонемент ($m) Практика программирования WEB Работа с интерфейсом

Конфигурация с подсистемой "Планировщик" (календарь). Бесплатная открытая версия для свободного использования не включает двустороннюю интеграцию с сервисом Google и Outlook.com.

5 стартмани

02.03.2015    57173    463    vandalsvq    62       

Анимация фона элементов на форме в стиле JQuery 76

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

К сожалению, у платформы 1С не так много красивостей, которыми обычно сдабривают формы обычных web-страниц. Нам недоступны эффекты JQuery и других javascript-библиотек. А иногда хочется сделать необычно, красиво и удобно.

1 стартмани

18.02.2015    14392    27    kraynev-navi    9       

[ТАКСИ] Шаблон внешней обработки...и не только 206

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Универсальные обработки Работа с интерфейсом Универсальные функции

Обработка предназначена для лентяев, к каковым, в первую очередь, отношу себя. Это в некотором роде шпаргалка в виде шаблона внешней обработки. Для создания новой копируем эту, удаляем ненужное, вставляем нужное - получаем результат. Чем ваять с нуля, каждый раз прописывая одно и то же, проще использовать заготовку, подобную этой... 30.10.2019 - Версия 1.24 - Изменена регистрация из обработки, и функция СведенияОВнешнейОбработке. Изменён пример чтрения XLS - теперь средствами 1С, без необходимости устанавливать офис ...ну и как водится - что-то добавил, что-то поправил....

2 стартмани

22.09.2014    46974    688    Alex_E    28       

Использование .NET сборок в 1С 8.2, 8.3 без установки и без регистрации в реестре. 59

Инструменты и обработки Системный администратор Программист Компонента, плагин (dll, vbs,..) v8 1cv8.cf Windows Абонемент ($m) Разработка внешних компонент

Для использования .NET сборок в 1С обычно приходится их регистрировать как com-объекты, что не всегда удобно. Предлагаемая компонента выполнена по технологии Native API и дает возможность использовать такие компоненты без установки и без регистрации в реестре windows.

1 стартмани

02.09.2014    29735    187    I_G_O_R    73       

Визуализация и интерактивное изменение дерева значений. 68

Инструменты и обработки no Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Практика программирования Универсальные обработки Работа с интерфейсом

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

1 стартмани

01.08.2014    17418    99    Belkin_Sergey    27       

Локализация конфигурации с помощью Google 13

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Windows Абонемент ($m) Инструментарий разработчика Работа с интерфейсом

Обработка позволяет выполнять перевод интерфейсов в любой конфигурации 1С средствами Google. За основу взята обработка: http://infostart.ru/public/190890/

1 стартмани

06.06.2014    15848    32    x-tremeall    6       

Алгоритмы. Часть 1.1. Динамические соединения. 186

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

Конспект первой лекции из свежего курса Принстонского университета США за 2014 год. Вольный перевод с английского с реализацией примеров на 1С. Курс в целом достаточно интересный и полезный для общего развития. Перевел и адаптировал только первую лекцию (в 1 части 11 лекций, 2 часть - еще не завершена преподавателями). Первоисточник на английском - https://www.coursera.org/course/algs4partI. Если сообщество посчитает материал полезным - займусь переводом следующих лекций (но это довольно трудоемко). Enjoy! :)

1 стартмани

04.04.2014    28278    23    Aleksey.Bochkov    33       

Применение математического аппарата контурного анализа для распознавания образов с web - камеры для 1С 52

Инструменты и обработки Программист Приложение (exe) v8 Windows Абонемент ($m) Разработка внешних компонент

Представлен видеоролик, а также демо - программа Identification.exe и 1C 8.1 (для теста). Реализован механизм сканирования видеоряда с web - камеры и занесения считанных кодов в документ. Для просмотра видеодемонстрации без скачивания можно перейти по ссылке - http://youtu.be/skEdJgKQ0h4

1 стартмани

19.03.2014    31125    89    protexprotex    63       

Universal Extensions (UE) - Совершенствуй 1С, не меняя конфигурацию (Безлимитная лицензия) 80

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 Windows Абонемент ($m) Разработка внешних компонент

1С 8.2 Управляемый интерфейс – ИМХО лучшее, что воплотила в жизнь компания 1С: динамическое размещение элементов, зависящее от прав и функциональных опций, параметризируемые команды, отборы в настройках реквизитов и при создании форм …. Всего не перечислить. Чего же все-таки не хватает в текущей реализации УФ?

1 стартмани

18.03.2014    11224    111    MarSeN    38