"Откат" данных без транзакций. Расширение для легкого возврата к "исходному" или выбранному состоянию после любых изменений данных

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

Администрирование - Администрирование данных 1С - Сервисные утилиты

откат данные транзакции возврат отмена изменения состояние видеоинструкция разработка тестирование сценарное модульное сопровождение настройка процесс

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

Цели

Практически все описано в анонсе публикации, но еще чуть-чуть...

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

Если к следующему циклу "накликивания" надо вернуть исходное состояние данных, то можно написать (лень!) и запускать обработку, которая восстановит данные, или восстанавливать каждый раз в базу резервную копию (каждый раз сохранять наработку в cf, восстанавливать копию, перезапускать конфигуратор, восстанавливать наработки...в общем - отпадает...а если тут еще и хранилище...уууу...).

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

 

Или вы - инженер сопровождения. У вас тестовая база с "исходными" данными и вы пытаетесь повторить ошибку, возникающую у пользователя. После короткого времени ошибка не повторена, а контекст данных "испорчен".

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

С разработкой видеоинструкций отдельная боль. Собственно, идея оттуда и пришла. Коллега, который занимался созданием видеоинструкций, реализовывал свою версию подобной разработки. Но она не покрывала восстановление данных всех объектов ИБ.

При разработке сценарных тестов тоже должно пригодится!

 

Ограничения

Слукавил немного. Эта разработка тоже не покрывает восстановление данных ВСЕХ объектов ИБ. Не восстанавливается первоначальное состояние регистрации объектов в узлах планов обмена и хранилищ настроек.

Все же остальное фиксируется в истории и восстанавливается вполне успешно - объекты ссылочных типов, движения регистров любых типов, константы.

Понятно что разработка построена на событиях. Поэтому главное ограничение - версия платформы. Подписки на события в расширениях появились в 8.3.17. Поэтому использовать данную разработку на более старых версиях платформы не получится. А вот режим совместимости конфигурации (не забудьте синхронизировать режим расширения с ним) может быть достаточно "старым" - от 8.3.12.

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

 

Механика

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

В справочнике фиксируются объекты в состоянии "до изменения". Прирост времени выполнения при включенной фиксации данных по моим замерам составляет до 10%. Для работы в тестовой базы для процессов сопровождения/разработки /настройки считаю показатель вполне приемлемым.

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

При восстановлении объекты имеют ОбменДанными.Загрузка = Истина. Объекты восстанавливаются в порядке, обратном порядку записи истории, хотя при восстановлении "среза первых" это необязательный атрибут. Документы при этом не проводятся, поскольку наборы записей регистров фиксируются и восстанавливаются отдельно.

Восстановление происходит в транзакции. После успешного восстановления история изменений очищается.

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

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

 

Настройка

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

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

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

В любом случае, это расширение не предназначено для работы в "боевой" базе. Это инструмент исключительно для IT-специалистов и использования исключительно в тестовых базах!

 

Заключение

Разработка тестировалась на платформе 8.3.18.1289 на базах ЗУП (3.1.16.134) и ERP (2.4.12.64 и 2.5.6.98).
Данных о массовом использовании пока нет: коллеги, занимающиеся видеоинструкциями и сценарными тестами очень заинтересовались, но занимаются они этими видами деятельности периодически и пока это расширение не использовали.

Жду обратной связи, всем спасибо за внимание!

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

Наименование Файл Версия Размер
Откат изменений данных

.cfe 66,00Kb
28
.cfe 66,00Kb 28 Скачать бесплатно

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Darklight 27 06.04.21 12:44 Сейчас в теме
Ролбэк данных без транзакций
- заменил слово, которое не могу написать (из заголовка), на Ролбэк - т.к. движок Инфостарта его заменял на * (смотрю - сейчас и в заголовке стала "*")
Думал, тут что-то хитрое придумано, но
Восстановление происходит в транзакции

И это тоже расстроило
расширение не предназначено для работы в "боевой" базе

Хотя, всё-равно, это хорошая штука для тестовых баз.
И для демо-серверов

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

По хорошему, тут как раз можно было бы и заморочиться. Обычно это нужно как раз в рабочей базе и как раз по одному пользователю-тестировщику (+ все остальные). Тогда можно было:
1. Зафиксировать версию объекта до изменения тестировщиком
2. Для остальных пользователей при чтении объекта читать зафиксированную версию (это самое сложное)
3. Фиксировать отдельно версию после изменений других пользователей....
Или даже проще
1. Фиксировать отдельно версию тестировщика (оставляя оригинальные данные - вернее сразу восстанавливая их)
2. При чтении данных тестировщиком - читать зафиксированную отдельно версию

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

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

На эту тему рекомендую сделать простую доработку - явно назначаемые временнЫе маркеры (с комментариями) - которыми можно было бы фиксировать (интерактивно или програмно) временные отсечки - и потом просто восстанавливаться на состояние перед этим маркером.


А вот это можете пояснить?
Поэтому главное ограничение - версия платформы. Подписки на события в расширениях появились в 8.3.17. Поэтому использовать расширения на более старых версиях платформы не получится. А вот режим совместимости может быть достаточно "старым"


И вот это тоже, хотелось бы пояснить подробнее
Объекты восстанавливаются в порядке, обратном порядку записи
2. Алексей Воробьев 109 06.04.21 13:19 Сейчас в теме
(1) Спасибо за развернутый комментарий и хорошие вопросы. Талантом писателя, в том числе и технического, к сожалению, не наделен)

Думал, тут что-то хитрое придумано, но
Восстановление происходит в транзакции

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


И это тоже расстроило
расширение не предназначено для работы в "боевой" базе

Ну, это чисто мое мнение...использовать-то можно...на свой страх и риск... Но я бы не стал :-)

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

Про "временные маркеры" и комментарии к ним. Очень хорошая идея, постараюсь реализовать в ближайшее время. Спасибо!


А вот это можете пояснить?
Поэтому главное ограничение - версия платформы. Подписки на события в расширениях появились в 8.3.17. Поэтому использовать расширения на более старых версиях платформы не получится. А вот режим совместимости может быть достаточно "старым"

Тут очепятка, сори (если я правильно Вас понял). Сейчас отредактирую: "Поэтому использовать расширения" заменю на "Поэтому использовать данную разработку"


И вот это тоже, хотелось бы пояснить подробнее
Объекты восстанавливаются в порядке, обратном порядку записи

Тут как раз все просто: справочник истории с числовым кодом и с автонумерацией. В процессе восстановления данных определяется набор восстанавливаемых элементов и восстанавливаются они по отсортированному по этому коду в обратном порядке списку...
3. Darklight 27 06.04.21 14:41 Сейчас в теме
(2)Вопросы был про вот эту фразу - видимо я что-то не знаю о режимах совместимости и о требованиях к ним в расширениях
А вот режим совместимости может быть достаточно "старым"


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

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

Я это всё говорю не просто так - так как имею опыт разработки системы версионирования данных на 1С - а Ваше решение по сути таковым и является
4. Алексей Воробьев 109 06.04.21 15:42 Сейчас в теме
(3)
А вот режим совместимости может быть достаточно "старым"

Поначалу я настройку сделал на константах. При тестировании очередной базой, к которой я "прилепил" расширение, была ERP 2.4. У нее режим совместимости был 8.3.14 и он не пропускал констант в расширении. Они появились в появились в 8.3.16. Я переделал настройки на регистр сведений в итоге.
Это и явилось причиной появления данной фразы в публикации.


Нее... я не понимаю...

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

Действительно, "обратный" порядок восстановления данных не играет никакой роли. Сделал так "на всякий случай". Даже прогрессбар работает в форме восстановления от 100% к нулю :-) Ведь о т к а т же :-) (и правда ИС "запикивает" это слово!)

Главное - локализовать "первичные" версии объектов и наборов данных, которые и будем восстанавливать.
И тут действительно есть идентификатор данных, его поле видно на одном из скринов. И в случае со ссылочным типом данных там действительно "сидит" уникальный идентификатор из ссылки.

А вот в случае регистров (на скрине как раз наборы записей различных регистров, в историю запакованные) там находится...назовем это неким "хэшем" отбора регистра, созданным на основе сериализованного в JSON массива, содержащего все элементы отбора.

Таким образом имя метаданных (разумеется полное, вида "РегистрСведений.СостоянияСотрудников") и данный "хэш" дадут нам уникальный ключ данных.

Сами же данные хранятся в виде JSON-представления объекта (всего набора записей, например), будь то ссылочный тип, или набор данных регистра, или значение константы. Я его даже не упаковываю в хранилище со сжатием, пытаясь таким образом не повлиять на скорость выполнения основных операций.
Именно поэтому я говорю, что длительное накопление истории приведет к увеличению размера базы...
5. Darklight 27 06.04.21 17:28 Сейчас в теме
(4)Ничего не вытягиваю, просто пытался на скорую руку понять как глубоко Вы копали. Оказалось не глубоко, и это всё как раз обусловлено теми сценариями, которые Вы предлагаете к использованию (и тем как использовали на практике). Они вполне себе имею право на жизнь. для данной разработки.

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

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

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

Сжимать JSON можно отдельно - в фоновом задании - это не будет шибко тормозить основную работу - вообще в фоне можно много оптимизации сделать

Восстанавливать тоже можно в фоне... рисуя красивый прогресс и его обратку на клиенте без блокировки сессии - если транзакция не будет принята - пока будет идти фоновая отмена этой транзакции (хотя момент завершения отмены в СУБД не поймать)


А вот режим совместимости может быть достаточно "старым"

Это всё равно не понимаю. Так какой режим совместимости конфигурации нужен, чтобы поставить на неё данное расширение?
6. Алексей Воробьев 109 06.04.21 20:24 Сейчас в теме
(5)
для тестовых баз и так сойдёт

Согласен! Раскопки велись четко на глубину стоящих задач...


(5)
Обратный порядок - замедляет восстановления - Вам нужен только срез до выбранного момента

Теперь я не понял...
В публикации же сказано:

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


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

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

Сжимать JSON... Делать много чего в фоновом задании приходилось как раз в рамках оптимизации различных процессов. Не посчитал это необходимым. Опять же - в рамках решаемых задач заниматься оптимизацией - зачем?
Замеры производительности провел: при фиксировании истории код расширения добавлял не более одного процента нагрузки. При восстановлении распаковка сжатого только увеличит время выполнения. Так зачем оно? Для экономии места на тестовых базах?
По сравнению с самим объемом некоторых баз - это надо постараться нагенерировать "опасные" объемы...

Восстановление и так идет в фоне. Наличие индиктора четко об этом говорит. Блокировать или не блокировать интерфейс - тоже вкусовщина... Не для конечного же пользователя, а для своих же, IT-шников, писалось. Кому не понравится - сам подправит)

Вообще, интерфейсные споры - уже не к этой публикации...

Так какой режим совместимости конфигурации нужен, чтобы поставить на неё данное расширение?

А вот это вопрос по делу. Не указал точно в публикации, каюсь.
Если отключить переопределение основной роли конфигурации в расширении, то можно использовать режим совместимости конфигурации не ниже 8.3.12 (более ранним перечисление мешает). Если не отключать, то не ниже 8.3.14
7. tormozit 6287 06.04.21 20:38 Сейчас в теме
Думаю еще можно было использовать штатных механизм "История данных" платформы - в подписке вызывать ЗаписатьВерсию() вместо собственной сериализации и записи в регистр/справочник. Тогда расширение думаю можно было бы сделать без изменения структуры данных - приятный бонус.
8. Алексей Воробьев 109 06.04.21 21:01 Сейчас в теме
(7)Ух, какая тяжелая артиллерия подтянулась! Спасибо за внимание! (не сарказм)
Конечно же, было бы можно. Но.
Замеров производительности не делал, но есть подозрение что моя реализация дышит быстрее платформенного версионирования из-за того что банально проще.

Но не это основное.
Все-таки возможность откатиться не в "самое начало", а на определенную точку "где-то посередке", "вот прям перед записью вот этого документа" решила этот вопрос безапелляционно: собственной структуре данных быть!
Да и включать/выключать фиксацию тоже нужно было бы по какой-то настроечке. Ну, удобно же!..
9. tormozit 6287 06.04.21 23:36 Сейчас в теме
Изменения, которые не отловить подписками ровно как и историей данных (в порядке вероятности изменения при тестах)
- хранилища настроек
- регламентные задания
- пользователи

Зато все их можно отловить в СУБД и там можно на конкретную транзакцию все восстановить, если включена полная модель восстановления БД, что конечно является лишними сложностями для тестовых баз. Можно попробовать сделать вывод списка транзакций из журнала регистрации 1С. На нужной транзакции пользователь вызывает команду "Откатить" и делаем все то же самое, но через СУБД (придется отключать БД и делать операцию вне клиентскго приложения этой базы 1С). Но это будет конечно иногда заметно дольше. т.к. СУБД как я понял всегда делает полное восстановление базы, а потом добавляет транзакции из журнала до нужной точки

SQL Server is basically doing a complete restore from the last full backup, and all the log backups up to the point to which you want to get to. Aside from the time it takes to perform the restore, another disadvantage is that the database is not accessible during this period.

В инструменте ApexSQL есть обвязка для этой фичи - "Point in time recovery"
https://host.apexsql.com/sql-tools-log.aspx
https://solutioncenter.apexsql.com/reverting-your-sql-server-database-back-to-a-specific-point-in-time/

_Откат_ внутри сеанса 1С пусть и неполный, но без отключения от базы - конечно дает свои большие плюсы. Так что за реализацию идеи лайк.
11. Алексей Воробьев 109 07.04.21 13:10 Сейчас в теме
(9) Смысл разработки (в том числе) как раз в легкости и скорости восстановления данных. Ну, то есть, покликали - ерунда. Откатились быстренько, кликаем опять.
И "заморочки" с СУБД в эту концепцию ну никак не вписывались)

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

В любом случае, спасибо за проявленный интерес!

Вообще, тема достаточно обширна и под разные задачи можно решать ее разными способами.

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

Плюс добавил создание закладок в истории изменений. Теперь можно легко найти нужную закладку и откатиться до нее (спасибо Darklight за идею!). Создать закладку можно по горячим клавишам Alt+F2 (общая команда), находясь в любом месте программы, если интерфейс Такси, конечно.
10. tormozit 6287 07.04.21 00:09 Сейчас в теме
Таблицы с неотлавливаемыми подписками изменениями
- хранилища настроек
- регламентные задания
- пользователи
можно просто периодически сохранять целиком, т.к. в тестовых базах они редко будут большими, а последние 2 и в рабочих базах не будут большими. А при выполнении отката брать ближайшее состояние из прошлого.
12. Алексей Воробьев 109 07.04.21 13:12 Сейчас в теме
А, забыл... Про 1% дополнительной нагрузки от работы расширения - это я погорячился...перепроверил...пока получается до 10% на файловой базе. Но тоже приемлемо, но мой взгляд...
Оставьте свое сообщение

См. также

DaJet Studio: расширенный язык запросов 1С, очереди сообщений и web сервисы Промо

Прочие инструменты разработчика Администрирование СУБД v8 Бесплатно (free)

DaJet Studio - разработка и управление скриптами, хранимыми процедурами и функциями, написанными на расширенном языке запросов 1С, а также очередями сообщений и web сервисами, основанными на использовании Microsoft SQL Server.

10.11.2020    3797    60    zhichkin    13    

Примеры создания расширений для конфигурации "INFOSTART ERP community edition"

Расширения Infostart ERP community v8 1cv8.cf Бесплатно (free)

Примеры создания расширений (создание печатных форм, обновление ИБ).

15.03.2021    987    19    33lab    6    

Создание элементов справочников и экземпляров документов

Универсальные обработки v8 1cv8.cf Бесплатно (free)

Обработка, позволяющая генерировать шаблон программного кода для создания элементов справочников и экземпляров документов.

18.02.2021    978    52    Степной    3    

Микро сервис для работы с запросами SQL

Прочие инструменты разработчика v8 1cv8.cf Россия Бесплатно (free)

Альтернатива COM соединению с SQL базой, обработка запроса.

13.12.2020    4191    42    ivan1703    14    

Генерация кода управляемой формы (декомпиляция элементов) Промо

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

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

29.09.2014    109936    9101    ekaruk    134    

Графит. Правщик 1С морд от kuzkov.info.2

Прочие инструменты разработчика v8 Бесплатно (free)

Вторая часть записок о разработке программы Графит, векторного правщика для быстрого рисования 1С морд. Обзор сделанного в виде текста описания, гифках и приложенных svg файлах для пощелкать в обозревателе.

02.12.2020    1947    14    Steelvan    6    

Консоль HTTP запросов

Консоль запросов v8 v8::УФ 1cv8.cf Бесплатно (free)

Консоль HTTP запросов для управляемых форм.

05.10.2020    4212    327    zarankony    4    

Просмотр идентификаторов объектов

Универсальные обработки v8 1cv8.cf Бесплатно (free)

Обработка позволяет посмотреть уникальный идентификатор как одного объекта, так и списка выбранного типа. Обратите внимание, что таблица значений формируется без ограничения количества. Если нужно сделайте доработку по отбору и ограничению списка. Можно использовать при поиске идентификатора для определения наличия объекта в базе. Распространяется бесплатно. Код открыт.

27.09.2020    2095    83    mrsmrv    8    

Подсистема "Инструменты разработчика" v5.80 Промо

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Интегрированный набор инструментов разработчика: - консоль кода - консоль запросов - консоль построителя отчетов - консоль компоновки данных - консоль заданий - конструктор запроса - справочник алгоритмов - исследователь объектов - интерфейсная панель - настройка журнала регистрации - анализ журнала регистрации - настройка техножурнала - анализ техножурнала - подбор и обработка объектов - редактор объекта БД - редактор констант - редактор параметров сеанса - редактор изменений по плану обмена - редактор пользователей - редактор предопределенных - редактор хранилищ настроек - динамический список - поиск дублей и замена ссылок - контекстная подсказка - синтакс-помощник - поиск битых ссылок - поиск ссылок на объект - структура хранения БД - удаление объектов с контролем ссылок - и прочее

23.09.2007    565807    34529    tormozit    2783    

Файл тестов для xUnitFor1C: тестирование проведения документов

Тестирование и исправление Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

Тестирование проведения документов. Проверяется, что: а) документ проводится; б) движения документа после перепроведения не изменились.

30.06.2020    4833    39    q_i    16    

Универсальная обработка информационной базы

Универсальные обработки v8 1cv8.cf Бесплатно (free)

Обработка предназначена для подсчета числа объектов информационной базы за выбранный период, а так же обработки объектов произвольным кодом или на основе предопределённых действий.

29.06.2020    3251    159    kozusenok    9    

Групповая обработка контейнеров сертификатов ЭЦП

Универсальные обработки Файловые протоколы обмена, FTP v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

Внешняя обработка для просмотра списка установленных на локальном компьютере контейнеров сертификатов ЭЦП, с возможностью групповой обработки: копирования, установки сертификатов, отправки на EMAIL или FTP.

25.05.2020    4048    152    independ    4    

Обработка, делающая все хорошо Промо

Универсальные обработки v8 1cv8.cf Бесплатно (free)

Обработка, делающая все хорошо. Кроме шуток.

25.12.2015    29383    934    GROOVY    58    

Нейроконструктор

Интеграция Искусственный интеллект (AI) Прочие инструменты разработчика v8 Бесплатно (free)

Изучайте нейронные сети и экспериментируйте вместе с расширением конфигурации "Нейроконструктор". Навыки программирования не требуются.

20.05.2020    11017    147    user1404129    19    

Загрузка, редактирование и установка цветовых схем (раскраски кода) в Конфигуратор и EDT

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

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

14.05.2020    8944    315    CyberCerber    32    

Универсальные инструменты 1С

Универсальные обработки Прочие инструменты разработчика Консоль запросов v8 1cv8.cf Бесплатно (free)

Свободно распространяемый набор универсальных обработок и отчетов в виде расширения для разработки и поддержки, которое работает во ВСЕХ видах клиентских приложений и во всех операционных системах, которые поддерживает платформа 1С:Предприятие, кроме мобильных. Консоль запросов - консоль отчетов - консоль кода - редактор объектов базы данных - удаление помеченных объектов - поиск и удаление дублей - редактор констант - консоль заданий - групповая обработка справочников и документов - динамический список - поиск ссылок на объект - регистрация изменений для обмена данными - структура хранения базы - консоль HTTP запросов-консоль вебсервисов- консоль сравнения данных- информация о лицензиях- загрузка из табличного документа-файловый менеджер-все функции- навигатор по конфигурации-конструктор регулярных выражений-Выгрузка загрузка XML с фильтрами

21.01.2020    38791    2740    cprit    125    

Активные пользователи Промо

Сервисные утилиты v8 1cv8.cf Россия Бесплатно (free)

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

31.03.2008    37616    4546    coder1cv8    62    

Шаблон теста правил регистрации

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

Шаблон на базе, которого можно написать тест правил регистрации. Тесты запускаются с использованием инструмента xddTestRunner framework Vanessa-ADD.

26.07.2019    3767    3    milut    0    

Калькулятор для управляемых форм. 1С 8.3

Универсальные обработки v8 v8::УФ 1cv8.cf Бесплатно (free)

Калькулятор для 1С 8.3 управляемой формы. Работает на всех конфигурациях. В обработку входят все функции стандартного калькулятора.

13.05.2019    5769    64    Nefilimus    4    

Задача - как подобрать из бухт кабеля двух длин на складе (бухты не режутся) количество с минимальным отклонением от заказа клиента

Универсальные обработки Учет ТМЦ Учет ТМЦ v8 1cv8.cf УУ Бесплатно (free)

Условие задачи: Мы продаем витую пару, в бухтах по 30 метров и по 70 метров, бухты не разрезаются, продаются целиком. Имеем на складе какое-то произвольное количество тех и других бухт. Что требуется: Приходит клиент и просит какую-либо длину, произвольную, допустим 150 метров, необходимо написать процедуру, которая одним запросом подберет необходимое количество тех и других бухт как можно ближе к этой длине с учетом товаров на складе. Не нашел готового решения. Не претендую на оптимальность. Рабочая версия для УПП

22.08.2015    10963    12    ser6702    23    

Линия жизни Промо

Универсальные обработки О жизни v8 1cv8.cf Бесплатно (free)

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

17.05.2009    19966    336    Svetozor    20    

Просмотр SQL-таблиц из 1С. Возможность очистки таблиц

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Обработка позволяет соединиться с SQL-сервером (SQL-авторизация), получить список баз на сервере, после выбора базы - получить список таблиц. Позволяет вывести таблицу на просмотр, при необходимости очистить таблицу средствами SQL (delete from), просмотреть соответствие имен таблиц объектам конфигурации, в которой запущена база

29.08.2014    22796    425    Abadonna    4    

Native ВК для 1CV8: независимое чтение файлов *.xls и *.xlsx

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

Не требует установленного в системе Microsoft Office (Excel) и Open Office. Технология Native, не требует регистрации в реестре

15.08.2013    33499    392    Abadonna    161    

V8 FORMATTER: Расширенная версия

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Форматирование кода модуля одним хот-кеем, ввод "неудобных" символов без переключения раскладки.

22.07.2013    20700    196    Abadonna    124    

Поиск и замена дублей + v0.99 Промо

Чистка базы Поиск данных Тестирование и исправление v8 1cv8.cf Бесплатно (free)

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

03.08.2007    78881    7842    tormozit    227    

Форма выбора координат Yandex карт (управляемая форма)

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

Обработка позволяет найти нужный адрес на карте Yandex. Отправить сообщение форме-владельцу или всем формам, со строкой координат.

06.09.2011    17697    371    motkot    27    

Яндекс.Карты в 1С 8. На базе API Яндекс.Карт и элемента управления ПолеHTMLДокумента

Универсальные обработки v8 УТ10 УПП1 Россия Бесплатно (free)

Пример работы с сервисом Яндекс.Карты в 1С 8. На базе API Яндекс.Карт и элемента управления ПолеHTMLДокумента. Обработка строит маршрут из точки АдресОтгрузки в точку АдресДоставки с учетом пробок.

07.08.2011    54061    2502    Пип Пибип    47    

Помощник для написания запроса в тонком клиенте

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

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

01.04.2011    18670    312    boln    14    

Поиск ссылок на объект для последующего удаления объектов. Промо

Чистка базы Поиск данных v8 1cv8.cf Россия Бесплатно (free)

Иногда бывает нужно найти все ссылки на конкретный документ или любой другой объект системы, чтобы все это удалить...

12.01.2010    54228    2692    YAN    45    

Проверка печатных форм

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

Обработка для обнаружения ошибок при выводе печатной формы и сравнения печатной формы с эталоном.

22.03.2011    9196    51    afedorov    1    

Порядок объекта

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

Попытка избавиться от "Порядок объекта изменен"

09.02.2011    6023    47        2    

Обработка "Расчеты с датами" (8.1, 8.2)

Универсальные обработки v8 1cv8.cf Россия Бесплатно (free)

Маленькая обработка предназначена для расчета количества дней между датами и получения даты от начальной через определенное количество дней.

29.12.2010    5452    133    N1Kav    5    

WSSpeedTest - обработка измерения скорости работы web сервера

EDT v8 1cv8.cf Россия Бесплатно (free)

Обработка собирает статистику по скорости ответов web сервера за длительный период времени.

20.12.2010    14181    40    nafa    4    

Запись текста модуля ert-файла из текстового файла

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

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

02.12.2010    22735    146    Abadonna    40    

Консоль команд

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Написание и выполнение кода прямо в режиме предприятия

21.10.2010    6107    286    RafaelRS    11    

Редактор (скрытых) реквизитов объектов

Обработка документов Сервисные утилиты v8 1cv8.cf Бесплатно (free)

Универсальная обработка для доступа к скрытым реквизитам объектов (пока только документы)

21.10.2010    9156    229    RafaelRS    9    

АЦРК: Взаимодействие с сайтом (HTTP)

WEB Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

Обработка демонстрирует взаимодействие программы на 1С с веб-сайтом. Оказывается, это не так сложно.

11.10.2010    16280    159    acrk    2    

Удаление помеченных объектов группами

Чистка базы v8 1cv8.cf Россия Бесплатно (free)

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

28.09.2010    15649    298    mrWatson    13    

АЦРК: Редактор объекта

Универсальные обработки Сервисные утилиты v8 1cv8.cf Бесплатно (free)

Обработка «АЦРК: Редактор объекта» предназначена для просмотра и редактирования реквизитов любого объекта базы данных. Показывает все реквизиты в универсальной форме. Может применяться для «точечного ремонта» базы данных.

12.09.2010    14305    147    acrk    6    

Удаление помеченных объектов под 8.2 (управляемые формы, многопользовательская), альфа-версия

Чистка базы v8 1cv8.cf Бесплатно (free)

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

13.08.2010    16650    662    SilverIce    7    

Очистка БД от документов всех организаций (фирм) кроме указанной

Чистка базы v8 1cv8.cf Россия Бесплатно (free)

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

23.05.2010    33075    612    Farpost    15    

Счетчик слов в тексте

Универсальные обработки v8 1cv8.cf Россия Бесплатно (free)

Обработка подсчитывает частоту и долю каждого слова в тексте. Будет полезна при изучении иностранных языков.

19.05.2010    14363    50    YVolohov    8    

Парсировщик (НОВЫЙ инструмент для изучения метаданных + загрузка предопределенных значений из табличного документа)

Инструментарий разработчика v8 1cv8.cf Бесплатно (free)

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

07.05.2010    23523    626    bambr1975    30    

Универсальная обработка aaDeleteUpdate для 1C v8.2

Инструментарий разработчика Чистка базы v8 1cv8.cf Бесплатно (free)

В 1С к сожалению в языке запросов отсутствуют Delete и Update. Данная обработка немного решает эту проблему для объектных типов (справочник, документ, ..)

05.05.2010    6119    75    vadimsntn    1