Зачем программисту 1С инструменты тестирования Web-приложений?

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

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

selenium webdriver автоматизированное тестирование веб-клиент

В 21-м веке как-то странно говорить об отсутствии API интерфейса у web-приложений, но, увы, такое встречается. Особенно если это приложение - 1С, а данные надо туда вносить. Так как быть, если с человеческим ресурсом у нас напряг, а данные кто-то должен внести?

Каждую историю можно рассказать, разматывая каждое слово до предложения. А можно строго по делу. Я увы не умею ни того, ни другого. Надеюсь, получится нечто среднее. Начнем...

Не так давно, у моих хороших знакомых в организации случилась "автоматизация", навязанная головной компанией. Автоматизация, к слову, весьма посредственная, ибо на тот момент собственная разработка отвечала требованиям компании. Но увы, что пришло сверху, обратно не отправишь. На все уговоры дать интерфейсы загрузки данных ответа не последовало, ну точнее последовала рекомендация "внести данные вручную". А внести надо было около 2 тысяч документов, в каждом порядке 30 строк с 5-7 колонками. Итого мы имеем около 300 тысяч элементов данных.
Программа - 1С, тонкий или веб-клиент, не самое стабильное соединение и дневная нагрузка созданная другими подобными "труженниками". В общем, на один документ, человек должен был тратить порядка 15-20 минут, естественно перерывы "на чай", ошибки соединения и т.д. Вооружившись калькулятором и штатным расписанием было решено, что программу написать все таки выгоднее. Тем более были подозрения, что увы видов документов для внесения не один, а потенциально несколько, а значит и количество труда нужно будет больше. Хорошие знакомые рассказали мне проблему и за чашкой чая (да, да, именно чая) было решено, попробуем написать программу с рабочим названием "тыкалка".

Идея № 1: инъекция в веб-интерфейс

Идея была в том, что запускаем IExplorer application как COM объект, делаем инъекцию в сайт нужного нам скрипта и он начинает что-то тыкать и куда-то нажимать. Не буду долго останавливаться на этой идее, поскольку она быстро умерла. KeyEvent и MouseEvent реализованы в разных браузерах по разному, а в родном IE и вовсе отвратительно. В итоге, если click еще можно было добиться, то вот эмулировать ввод данных никак. А просто присваивать input.value = '125' не выходит, поскольку 1С не считает это значением и на сервере никак об этом не ведает. Однако на этом этапе было много изучено о том, как стороится html страница интерфейса, основные отличия такси от управляемого интерфейса. Но работа застопорилась чуть дальше входа в основное окно, переход по команде меню и попытке ввести значение отбора в форме списка.

Идея № 2: эмуляция событий клавиатуры через WScript.Shell

Собственно в заголовке все сказано. Начальный механизм такой-же, COM объект браузера, переход на сайт и попытка ввести данные в активированное поле. Собственно идея провалилась, события отправлялись в само 1С предприятие которое создало COM объект IE. Может я что-то курил не верно, но победить не смог. В итоге, идея была отметена.

Идея № 3: а что если инструменты тестирования web-приложений могут помочь

Вспомнилось мне время, когда я писал web-приложение. Это было SPA (single page application) приложение на Angular, я только изучал этот фреймворк и решил что надо делать все "по уму", сразу начал делать код тестирования приложения. Поскольку времени на этот проект было мало, умер он не родившись в готовый продукт, но я получил тогда большой опыт. И вот я вспомнил о том опыте и решил погуглить на тему "а что можно использовать". Тут как нельзя кстати статья 1С на Хабре о веб клиенте (тыц) и вдруг неожиданно "selenium" (ссылка на GitHub).
Поскольку на двух предыдущих этапах время было потеряно, сразу в омут с головой было решено не бросаться и взять пару дней на изучение. В итоге, я все больше склонялся к мысли что это то, та самая "серебрянная пуля". Был поднят node.js, с ним в комплекте npm, установлен selenium webdriver, проплачена лицензия на Webstorm (на мой взгляд один из наиболее удобных IDE) и за денек накидана маленький тест, который запуска клиент браузера, переходил на страницу опубликованного веб-клиента 1С и авторизовывался.

Настройка Selenium Webdriver

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

Собственно, чтобы установить свой экземпляр вам понадобится выполнить несколько шагов:
  1. Установить selenium-webdriver (npm)
  2. В каталог "PATH" (что это) положить необходимый вам драйвер для браузера. Chrome и Firefox наименее капризные. IE x86 в принципе тоже не сильно вредный, но вот с IE x64 нужны отдельные танцы с бубном. Об этом читайте ниже.
  3. Объявляете 'selenium-webdriver'
var wd = require('selenium-webdriver');

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

Подключили, молодцы. Что дальше?

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

  • GET. localhost/test/hs/data/doc?user=name. Принимал параметром пользователя от имени которого загружаются данные. В итоге отдавал JSON пакет с данными максимально удобными для внесения
  • POST. localhost/test/hs/data/doc?user=name&result=str. Параметром уже принимает имя пользователя и результат выполнения. Если результат = error, тогда в теле передавался полный лог, от момента авторизации, до момента ошибки.

Поскольку все взаимодействие с клиентом браузера у Selenium построено на promise-ах (это что-то вроде ОбработчикОповещения в 1С, подробнее лучше почитать тут) вести лог достаточно просто.

Как проверить данные в веб-клиенте.

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

client.findElement(by.id('userName'))
    .sendKeys('username')
    .then(check_UserName)
    .then(function() {
        console.log('OK');
    })
    .catch(function() {
        console.log('error', 'Значение не равно userName');
    });

function check_UserName() {
    return new Promise(checkInputValue_promise);
    
    function checkInputValue_promise(resolve, reject) {
        var element = client.findElement(by.id('userName'));
        element.getAttribute('value')
            .then(function (attrText) {
                var i = attrText.trim();
                if (i !== 'username') {
                    reject(false);
                }
                else {
                    resolve(true);
                }
            });
    }
}

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

Некоторые нюансы работы веб-клиента:

  • Когда редактируете строку табличной части, на самом деле все input-ы под каждую ячейку уже существуют, поэтому после нажатия sednkeys-Enter можно проверять доступность следующего поля. Имена полей как правило выглядят следующим образом: Form[N]_ИмяПоля_i0, где N - порядковый номер созданной формы, ИмяПоля - имя поля как оно задано в конфигураторе (можно изучить Profiler-ом). i0 - существует всегда, как я понял
  • С нумерацией форм все совсем весело. Дело в том, что если форма полностью перестраивается, то старый контейнер <div id='formN_container'> очищается, создается новый, со следующим номером и в него добавляются все вложенные элементы. Я лечил достаточно просто, когда я понял как изменяется форма после редактирования полей, я просто добавил проверку на изменения номера формы. Сделать это не сложно. Можно пойти путем поиска по следующему пути (нотация xpath) //div[@id='VW_page1formContent']/div[@class='IWebForm']. Собственно последний div и будет вашей формой. А номер "pageN" можно получить по заголовку окна. Впрочем если вы создаете объекты последовательно, то можно просто отследить порядок создания элементов платформой.
  • После окончания редактирования, всегда следует проверять следующий элемент на доступность и видимость, при необходимости отправлять туда Click для активации.
  • Не забывайте о штатном поведении форм 1С, при вводе данных происходит переход на следующее поле. Окончание редактирования последней ячейки приводит к автометическому созданию новой строки. Так что лучше не делать в последнем поле Enter, а либо переходить в следующий элемент, либо вызывать Click на кнопке Добавить.
  • Диалоги вопросов о записи (или закрытии) формы могут быть в отдельном iFrame, следует это учитывать и подключаться к нему соответствующими методами webdriver-а.

Выводы

Веб-клиент 1С вполне пригоден для тестирования, очень даже понятен и хорошо написан. Конечно, есть вопросы к строению дерева HTML страницы, но им виднее. Все необходимые программные компоненты (js, конфигурации, веб-сервисы) были реализованы примерно за одну неделю. Даже сделана попытка реализовать работу в автоматическом режиме, с перезапуском, логированием и прочими плюшками для анализа результата.

Как итог, силами двух компьютеров данные были внесены за примерно 4 дня работы. Не учитывая первый день, когда отлавливались баги, дописывались забытые catch-и и наведен порядок в описании логов, а то по началу было сложно понять где и почему произошел отказ.

Причины в основном были кстати следующие:

  • Код не соответствовал наименованию. Лечилось корректировкой данных в исходниках;
  • Программа не дождалась перехода следующего поля в видимость и/или доступность. Лечилось попытками с подсчетом, в случае превышения лимита - завершение клиента, создание нового и повторный ввод данных. Край перезапуск.
  • Клиент отвалился. Не лечилось. Перезапуск.
  • Была добавлена попытка закрыть текущую форму, чтобы не записывать некорректные данные. Перезапуск.
  • Очистка поля иногда приводит к появлению символа 'a' перед вводимым значением. Не лечилось. Перезапуск.

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

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

Бонус. Настройка IE x64

Практически все тонкости настройки описаны тут, но некоторые нюансы опущены. Сразу говорю, у меня IE 11, win 10, x64.

  1. Копируем в PATH драйвер для x64 (тыц)
  2. Вносим изменения в реестр (подробнее в этом разделе)
  3. Настраиваем параметры безопасности (Свойства браузера - Безопасность). Для всех зон ставим "Включить защищенный режим"
  4. Включаем 64-х разрядные процессы для браузера (Свойства браузера - Дополнительно). Ставим галочку "Включить 64-разрядные процессы для расширенного защищенного режима". Попутно проверяем что "Включить расширенный защищенный режим" выключен

На этом в принципе все, после этого IE должен быть более стабильным, а скорость печати будет выше, чем у 100летней бабушки. НО: если не поможет, ставите 32-х битный драйвер, отключаете 64-разрядные процессы (п.4) и работать тоже будет. Возможно даже разницы не заметите.

Послесловие

Во вложении небольшой файлик, который умеет авторизовываться в приложении при наличии драйвера chrome, установленного node.js и npm-пакета selenium-webdriver. Команда для cmd
node "путь к файлу"/setdata_wsors.js

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

P.S. прошу также не пинать за платность файла. Будем считать это скромным "спасибо" за данную статью если она оказалась полезной. Если тема будет интересна, работу с Selenium можно осветить подробнее.

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

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

Наименование Файл Версия Размер
setData_wsors

.js 14,89Kb
08.01.17
1
.js 14,89Kb 1 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. grumagargler 662 08.01.17 23:33 Сейчас в теме
Добрый день! А почему не использовали уже существующий интерфейс доступа к 1С через менеджер тестирования?
Fox-trot; +1 Ответить
2. vandalsvq 1150 09.01.17 05:32 Сейчас в теме
(1) стыдно признаться, но я просто про него не вспомнил. Мы не ищем легкий путей. Сейчас попробовал и посыпаю голову пеплом. Спасибо за подсказку. Но с другой стороны, опыт есть опыт иногда он не бывает лишним )))))
3. vandalsvq 1150 09.01.17 08:07 Сейчас в теме
(1) а с другой стороны, в принципе путь одинаков, при отсутствии доступа к конфигуратору исследование html нагляднее. Сейчас ради интереса часть перевел на работу через менеджер, ну приятнее, чем работать с веб-клиентом и стабильнее.

Пы.сы. я прям как чувствовал что сообщество ткнет меня носом в очевидный и простой путь. Чувствую себя дураком, что не подумал ранее )))))
4. grumagargler 662 09.01.17 15:23 Сейчас в теме
(3) для написания кода загрузки данных может быть пригодится такой вот бесплатный инструмент, там есть возможность анализа оконной структуры: https://github.com/grumagargler/tester
5. vandalsvq 1150 09.01.17 18:40 Сейчас в теме
(4) я все никак до тестера не доберусь. Но практически уверен что руки дойдут. Пора уже рукоблудие в тестировании на автоматы переводить ))))
6. kiv1c 560 10.01.17 10:54 Сейчас в теме
(5) то есть по сути доступа к конфигуратору у вас не было, и вам пришлось заполнять формы в веб-клиенте яваскриптом? хитро)
а вот подробнее по поводу " Однако на этом этапе было много изучено о том, как стороится html страница интерфейса, основные отличия такси от управляемого интерфейса" можно? вы же не просто смотрели html код веб-клиента а наверное какие-то статьи читали?
7. vandalsvq 1150 10.01.17 16:13 Сейчас в теме
(6) на самом деле мне хватило знаний полученных по spa приложениям, статьи на хабре, заметок из Зазеркалья и профайлера в хроме и ie. Были неожиданности вроде уничтожения ветки с контентом форм при перестроении, но это мелочи. Как например реализована таб часть я и ранее догадывался (по собственному опыту знаю недостатки тега table). Использование фреймов конечно не обрадовало, имхо без них можно было обойтись, но им виднее почему так.
А если бы был доступ к конфигуратору или запуск обработок в клиенте, все было бы значительно проще.
8. ivanov660 2141 10.01.17 17:35 Сейчас в теме
Из заголовка статьи не понятна поставленная задача. Если требовалось создать кучу документов, то почему бы не написать обработку, которую запустить на сервере в фоновом задании - быстрее и проще, а нагрузка через веб сервис более серьезная.
Пробовал тестировать веб интерфейс под селениумом не очень понравилось по сравнению с встроенным механизмом автоматизированного тестирования - сложнее, больший объем правок при записи сценария,
зато у 1Сного больше багов в реализации.
9. vandalsvq 1150 10.01.17 18:19 Сейчас в теме
(8) как и писал, доступа к конфигуратору не было и не дадут. Обработки тоже под запретом. Даже через штатные БСП-шные механизмы тоже никак. Тогда бы не придумывали. У селениума в 3-й версии все весьма стабильно, особых претензий к багам не было. Сценарии писать, это да, но руку я набил быстро и даже новые сценарии попробовал, максимум 4-6 часов и готово. Что касается 1С, я перевел один сценарий, в принципе по затратам не сильно большая разница. Удобнее, поскольку на 1С я больше работаю и переключаться между языками иногда не хочется.
10. asved.ru 35 11.01.17 06:34 Сейчас в теме
11. vandalsvq 1150 11.01.17 09:42 Сейчас в теме
(10) о каком rest api может идти речь интересно.
1. Если о стандартном api веб-клиента, то я думаю это закрытая информация и вряд ли ее можно найти, да и применимо ли оно в отрыве от интерфейса большой вопрос.
2. Если про OData - то не думаю что кто-то в здравом уме и трезвом рассудке в рабочие базы будет публиковать OData, вот и тут его тоже нет.
3. Ну, а про самописные http-сервисы (и веб-сервисы) мне ничего не известно. Т.е. считаем что их нет. Доступа то к конфигуратору нет, как писал выше неоднократно.

Прошу пояснить вопрос если я на него не ответил.
12. artbear 1184 16.01.17 12:25 Сейчас в теме
(0) Саша, для тестирования еще порекомендую наши давно известные и проверенные инструменты xUnitFor1C и vanessa-behavior.
работают в разных режимах, ОФ, УФ, веб-клиент, тестирование в 8.3 и т.п.
13. vandalsvq 1150 16.01.17 12:37 Сейчас в теме
(12) блин, Артур да я бы, да только двумя руками. Вот только беда, между молотом и наковальней места и времени мало. Иногда бы остановится, да процесс разработки поменять, но паровоз едет и тебя тащит ))))))
14. artbear 1184 16.01.17 13:03 Сейчас в теме
(13) а ты потихонечку, начни с кочегаров хотя бы, а не сразу с машинистов или замены паровоза :)
Оставьте свое сообщение

См. также

[x1c.ru] 1CDBin: Работа с файлами *.1CD на низком уровне средствами языка 1С с возможностью чтения таблиц (поддерживается формат 8.3.8.0) Промо

Тестирование и исправление Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Обработка позволяет просматривать файловые базы 1CD на низком уровне средствами встроенного языка. Реализована часть функциональности Tool_1CD, но на языке 1С Предприятия. Показываются таблицы, параметры таблиц, поля таблиц, записи таблиц, значения полей BLOB, есть 16-ричный просмотр страниц базы и консоль кода. Можно использовать для изучения структуры файлов 1CD, просмотра баз 1CD для выявления повреждений, создания своих обработок для выгрузки данных без открытия исследуемой базы в 1С:Предприятии.

1 стартмани

07.10.2014    49497    200    GusevNA    75    

DBCC CHECKDB CHECKTABLE - автоматическое исправление поврежденных индексов и оповещение о повреждении баз данных SQL на e-mail

Администрирование СУБД Тестирование и исправление Абонемент ($m)

Проверка целостности баз данных SQL при помощи DBCC CHECKDB, автоматическое исправление поврежденных индексов в таблицах данных и оповещение о повреждении баз данных и результатах исправления на e-mail.

1 стартмани

19.06.2020    1239    0    JulianK    0    

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

Тестирование и исправление v8 1cv8.cf Россия Абонемент ($m)

При разработке конфигурации в клиент-серверном варианте могут возникнуть проблемы при загрузке конфигурации в файловый вариант. В статье описан один из вариантов решения проблемы.

10 стартмани

28.01.2020    2300    2    newtraveller    0    

Исправление ошибки "Для одного ссылочного кода существует более одной таблицы в базе данных" в БД SQL

Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

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

3 стартмани

23.01.2020    6345    103    rokhin    53    

Восстановление битой ссылки на раз-два Промо

Тестирование и исправление v8 1cv8.cf Абонемент ($m)

Простой способ восстановить битую ссылку типа " (20:94b81c6f65428d5911e2a8bebc48d793)".

1 стартмани

26.04.2013    31399    216    Vin_Tik    36    

Исправление ошибки платформы 8.3.16 - разворота группы подписей в формах документов. ЗУП 3.1

Тестирование и исправление v8 v8::СПР ЗУП3.x БУ Абонемент ($m)

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

1 стартмани

02.12.2019    10587    11    skudnovv    10    

Должно быть NULL в регистре бухгалтерии Хозрасчетный

Тестирование и исправление Инструментарий разработчика v8 1cv8.cf Абонемент ($m)

Обработка проверяет наличие и решает проблему с ошибкой развернутого сальдо в Оборотно-сальдовой ведомости (регистр бухгалтерии Хозрасчетный) из-за ошибки Универсального редактора реквизитов или кода программиста, устанавливающего пустые ссылки в значениях Валюты, Подразделения, Направления деятельности не равными NULL. И пересчёт итогов тут точно не поможет...

2 стартмани

21.10.2019    9408    23    sapervodichka    33    

Проверка работы расширений после обновлений

Тестирование и исправление v8 1cv8.cf Абонемент ($m)

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

3 стартмани

19.07.2019    8962    18    77dream77    3    

Поиск, восстановление битой ссылки, 8.3, v 0.2 Промо

Поиск данных Тестирование и исправление v8 1cv8.cf Абонемент ($m)

Обработка для работы с битой ссылкой, 8.3, v 0.1 Позволяет быстро найти и восстановить битую ссылку.

1 стартмани

24.10.2014    34766    271    infostart user    13    

Проверка обновления. Автоматический поиск ошибок

Сервисные утилиты Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

Мы обновляем конфигурацию, и у нас более 100 пользователей. Конфигурация сильно переписана, обновление нетривиальное. Если после обновления находится критическая ошибка, приходится выгонять всех пользователей и исправлять. Поэтому перед выпуском в рабочую базу, обновление тестируют наши специалисты. Большинство ошибок находится при открытии форм. Появилась идея написать программу, которая бы автоматически открывала формы всех объектов, а найденные ошибки записывала в журнал регистрации. Получилась программа простейшего сценарного тестирования. Не требует настройки. Запускать в тестовой базе. Чтобы найти реквизиты, не добавленные на форму в процессе обновления или синтаксические ошибки, достаточно запустить тест под полными правами. Тестировали на УТ 11.4.1.271, должно работать на всех программах УФ. У нас тест работает пять минут.

1 стартмани

10.06.2019    4641    7    Mari_Kuznetzova    3    

Исправление ошибки "Записи регистра сведений стали не уникальными"

Тестирование и исправление v8 1cv8.cf Россия Абонемент ($m)

Обработка исправления ошибки "Записи регистра сведений стали не уникальными"

1 стартмани

02.06.2019    6562    72    Sholl    0    

Восстановление структуры DBSchema

Тестирование и исправление v8 БП3.0 Абонемент ($m)

Обработка для анализа ошибок в структуре DBShema, восстановление структуры объектов, перенос данных из выгруженных в XML таблиц базы, при помощи "Tool 1CD".

10 стартмани

11.03.2019    8918    51    spawn_a    20    

Выводим из suspect базу 1С 7.7 на sql server 2000, а также "Перемещение баз данных SQL Server в новое местоположение с помощью операций Detach и Attach" Промо

Тестирование и исправление v7.7 1cv7.md Абонемент ($m)

База данных помечается Suspect, когда SQL Server не может читать файлы данных, связанные с базой данных с жесткого диска. В этом случае сделать бекап базы нельзя, но можно попробовать образ диска. После того как возможность читать файлы данных восстановлена, вы можете перезапустить службу SQL Server, и если возможно, произойдет автоматическое восстановление. Что делать, если информационная база 1С7.7 на SQL Server 2000 перешла в состояние suspect? Если это произошло утром и бекап сделан, Вы, конечно, можете грохнуть и раскатать базу заново (вечером это проблематичнее), но не торопитесь - возможно, поможет detach+attach или другие методы, изложенные в данной публикации.

1 стартмани

08.11.2016    20028    0    ksnik    3    

Баг или фича? Неожиданное поведение платформы

Практика программирования Тестирование и исправление Разработка v8 1cv8.cf Абонемент ($m)

Рассмотрим несколько случаев неожиданного поведения платформы 1С, а также что с этим можно cделать.

18.02.2019    21503    0    YPermitin    89    

Небольшая доработка функционала отладчика c использованием DynamicWrapperX

Тестирование и исправление v8 1cv8.cf Абонемент ($m)

Получение методов 1С-х объектов во время отладки.

1 стартмани

15.02.2019    5289    2    chessman    2    

Ошибки, предупреждения и прочее из журнала регистрации на почту и в Telegram автоматически (БП 3, ЗУП 3.1, УТ 11.4, ERP 2.4, Розница 2.2)

Журнал регистрации Поиск данных Тестирование и исправление Email v8 Розница УНФ ERP2 ЗКГУ3.0 БП3.0 УТ11 ЗУП3.x Абонемент ($m)

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

2 стартмани

28.01.2019    8682    31    Redinternational    3    

Лекарство на случай, если перестала работать форма списка для сделок. (ERP). Промо

Тестирование и исправление v8 ERP2 Абонемент ($m)

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

1 стартмани

28.07.2016    20774    0    milkers    2    

Замена конфигурации в правилах обмена

Обработка справочников Тестирование и исправление Перенос данных из 1С7.7 в 1C8.X Обмен через XML Перенос данных из 1C8 в 1C8 1С7.7<->1C7.7 v8 КД Абонемент ($m)

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

2 стартмани

08.01.2019    7123    27    tomvlad    5    

PostgreSQL для 1С 8.3: ускоряем резервное копирование и восстановление для отдельной базы очень большого размера

Производительность и оптимизация (HighLoad) Тестирование и исправление v8 1cv8.cf Россия Абонемент ($m)

В этой статье разберем оптимизацию работы с моментальным снимком отдельной базы 1С в кластере PostgreSQL средствами pg_dump.exe, pg_restore.exe, psql.exe в среде Windows Server 2008,2012,2016. А также разберем проблемные ситуации и неожиданные ограничения при работе 1С в связке с PostgreSQL. Для Linux все аналогично.

1 стартмани

03.12.2018    26164    38    vsasav    68    

Нестандартные подсистемы: Живая вода

Поиск данных Тестирование и исправление v8 1cv8.cf Абонемент ($m)

В БСП есть все, чтобы справиться с проблемой «Битых ссылок», но почему-то так и не реализовали возможность сохранять версию объекта перед удалением. Решил исправить эту досадную несправедливость и создать подсистему с кодовым названием «Живая вода».

1 стартмани

11.10.2018    10113    2    dsdred    14    

Замена конфигурации в правилах переноса данных. Промо

Тестирование и исправление Обмен через XML Перенос данных из 1C8 в 1C8 v8 КД Абонемент ($m)

Те, кто часто занимается созданием правил конвертации данных в конфигурации «Конвертация данных” (речь о редакции 2.1 (2.1.5.1)), знают, что после замены в правилах конвертации одной конфигурации (приемник или источник) все правила конвертации свойств и объектов закрашиваются красным цветом и требуют утомительной ручной правки.

1 стартмани

24.01.2012    42661    161    milkers    66    

Поиск и восстановление битых ссылок (Объект не найден)

Поиск данных Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

Групповая обработка ссылок вида Объект не найден (502:37855254002e11eb11e73b8f36150d9e) заполняется максимально просто копированием и вставкой из буфера: 1) Выделяет уникальные идентификаторы (далее УИ); 2) Ищет ссылки на объекты базы по УИ; 3) Создаёт пустые объекты с указанным УИ; 4) Регистрирует найденные ссылки для обмена данными. Работает на любых продуктах 8.3. Проверялась на 1С:ERP Управление предприятием 2 (2.4.3.167)

1 стартмани

17.08.2018    11404    87    sapervodichka    2    

Запуск и контроль выполнения автоматизированных тестов из 1С – Jenkins Skin

Тестирование и исправление v8 Абонемент ($m)

Мы рассмотрим пример создания заданий выполнения автоматизированных тестов из 1С с использованием различных Фреймворков (xUnit1C, Тестирование 3.0): запуск, ожидание завершения, загрузка результатов и выполнение полного цикла тестирования продукта. Убедимся, что все действия можно выполнить в пару кликов в дружественном интерфейсе.

1 стартмани

09.07.2018    14386    13    ivanov660    5    

Тестирование: Просмотр результатов тестов в предприятии 1С – Allure Skin

Инструментарий разработчика Тестирование и исправление v8 1cv8.cf Абонемент ($m)

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

1 стартмани

10.05.2018    20409    6    ivanov660    18    

Свертка 60, Свертка 62, Исправление ошибок взаиморасчетов, Исправление 60, Исправление 62 Промо

Свертка базы Тестирование и исправление Анализ учета Дебиторская и кредиторская задолженность Оборотно-сальдовая ведомость, Анализ счета Дебиторская и кредиторская задолженность Оборотно-сальдовая ведомость, Анализ счета v8 БП2.0 Россия БУ Абонемент ($m)

Исправляет все возможные ошибки по счетам расчетов с контрагентом, делает дебетовое сальдо на активном счете и кредитовое на пассивном. кроме того зачитывает все суммы по контрагенту и договору. Сворачивает 60 и 62 счета. Умеет работать с документами взаиморасчетов или без них.

1 стартмани

21.10.2010    35920    92    GoodWinSpr    37    

Техническое тестирование

Тестирование и исправление Инструментарий разработчика v8 v8::УФ 1cv8.cf Россия Абонемент ($m)

Обработка для тестирования на предмет ошибок: - открытия форм (список, новых элементов - всех существующих в конфигурации) - открытия форм объектов - записи/проведения объектов из форм

1 стартмани

19.03.2018    9073    15    Mopo3    7    

Бухгалтеру: что у меня сейчас "уедет" и "поползёт"?

Тестирование и исправление v8 v8::БУ БП3.0 Россия БУ Абонемент ($m)

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

1 стартмани

18.02.2018    10244    4    Yashazz    4    

Обновление конфигураций на БСП, у которых в расширениях есть собственные объекты с данными

Практика программирования Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

Показан способ обновления конфигураций, основанных на БСП, в тех случаях, когда в расширениях имеются собственные объекты данных (Справочники, Документы, Регистры сведений, Планы обмена).

1 стартмани

12.02.2018    20751    59    t.v.s.    41    

ЧеКист (Чистка Кэша) - универсальное средство очистки локального кэша 1С Промо

Сервисные утилиты Тестирование и исправление v8 1cv8.cf Абонемент ($m)

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

1 стартмани

08.08.2013    83389    206    mbreaker    57    

Ошибка: Попытка вставки неуникального значения в уникальный индекс: Microsoft SQL Server. При переходе с Бух ПРОФ на КОРП и не только

Тестирование и исправление v8 v8::БУ БП3.0 Россия БУ Абонемент ($m)

Пример текста ошибки: Попытка вставки неуникального значения в уникальный индекс: Microsoft SQL Server Native Client 11.0: Выполнение инструкции CREATE UNIQUE INDEX прервано, поскольку обнаружен повторяющийся ключ для объекта с именем "dbo._InfoRg22530" и индекса с именем "_InfoRg22530_ByPeriod". Повторяющееся значение ключа: (0, 3900-01-01 00:00:00, 0x9100fa815581b9604de110ca98afc344, 0x00000000000000000000000000000000). HRESULT=80040E2F, SQLSrvr: SQLSTATE=23000, state=1, Severity=10, native=1505, line=1

1 стартмани

16.06.2017    28354    100    N0D    19    

Групповое восстановление из версии УПП 1.3

Универсальные обработки Тестирование и исправление v8 УПП1 Россия Абонемент ($m)

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

1 стартмани

31.05.2017    10359    8    Lem0n    3    

Решение проблем с обновлением кастомизированных конфигураций на БСП

Тестирование и исправление v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

22.05.2017    17293    19    biz-intel    4    

Регистрация <объект не найден> на узлах обмена или перерегистрация Ссылок. Промо

Тестирование и исправление Перенос данных из 1C8 в 1C8 v8 1cv8.cf Абонемент ($m)

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

1 стартмани

15.02.2013    30586    25    logarifm    5    

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

Сервисные утилиты Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

27.04.2017    13030    73    Lovish    6    

Поиск и восстановление битых ссылок (обычная и управляемая форма) 8.2-8.3

Универсальные обработки Поиск данных Тестирование и исправление v8 v8::УФ 1cv8.cf Абонемент ($m)

Обработка для поиска и восстановления битых ссылок (Объект не найден). Адаптирована для конфигураций на обычных и управляемых формах 8.2 - 8.3

1 стартмани

08.04.2017    31046    391    Xershi    64    

Проверка синтаксиса СКД макетов конфигурации

Инструментарий разработчика Универсальные обработки Тестирование и исправление v8::СКД 1cv8.cf Абонемент ($m)

Обходит метаданные конфигурации и проверяет все макеты с типом СхемаКомпоновкиДанных.

1 стартмани

07.04.2017    13094    10    json    1    

Открывашка (для отладки) Промо

Сервисные утилиты Инструментарий разработчика Практика программирования Универсальные обработки Тестирование и исправление v8 1cv8.cf Россия Абонемент ($m)

Упрощает отладку и экономит время - позволяет открыть отлаживаемый объект конфигурации путем пары кликов (Файл - Последний файл №N) или пары нажатий клавиш (Alt - Стрелка вниз - N последнего открытого файла на клаве).

1 стартмани

12.12.2012    21638    3    nastrou1c    11    

Ускорение запуска и работы 1С за счет корректировки настроек

Тестирование и исправление v8 1cv8.cf Абонемент ($m)

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

1 стартмани

22.02.2017    12666    21    pridecom    0    

Простой запуск юнит-тестов

Практика программирования Тестирование и исправление v8 1cv8.cf Абонемент ($m)

Шаблон экспресс теста на базе xUnitFor1C

1 стартмани

28.01.2017    14034    4    json    2    

Битые ссылки

Тестирование и исправление v8 1cv8.cf Абонемент ($m)

Получить название объекта (справочника или документа) и получить ссылку из представления "Объект не найден"

1 стартмани

07.01.2017    11106    4    sm2701    3    

Автоформатирование кода Промо

Сервисные утилиты Обработки Чистка базы Справки Производительность и оптимизация (HighLoad) Инструментарий разработчика Практика программирования Универсальные обработки Решение задач на 1С:Специалист Математика и алгоритмы Администрирование данных 1С Разработка Тестирование и исправление Стартеры 1С v8 1cv8.cf Абонемент ($m)

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

1 стартмани

19.12.2012    38827    46    Sibars    57    

Анализ и пересчет итогов базы на SQL

Тестирование и исправление v8 1cv8.cf Россия Абонемент ($m)

Обработка производит сбор данных по нулевым строкам в таблицах итогов (Запрос к базе MS SQL) и позволяет пересчитать таблицы выборочно.

1 стартмани

24.11.2016    14249    89    AlexTeh    20    

Не завершен переход на новую версию 11.2

Тестирование и исправление v8 УТ11 Абонемент ($m)

При обновлении конфигурации УТ 11.2 иногда возникают ошибки. Я встретился с ошибкой: Метод объекта не обнаружен(ПерезаполнитьСостоянияЗаказовКлиентовОтметитьКОтработке).

1 стартмани

14.04.2016    17381    76    NECHISTb    9    

Консоль и функция рекурсивного запроса

Инструментарий разработчика Тестирование и исправление Универсальные функции v8 1cv8.cf Абонемент ($m)

Консоль предназначена для отладки и просмотра результатов выполнения РЕКУРСИВНОГО ЗАПРОСА в режиме 1С:Предприятие. В консоли реализована универсальная функция для выполнения рекурсивных запросов.

1 стартмани

10.02.2016    13293    5    sereginseregin    1    

Универсальный загрузчик XML-Uniloader Промо

Обмен через XML Распределенная БД (УРИБ, УРБД) Тестирование и исправление v8 1cv8.cf Абонемент ($m)

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

1 стартмани

24.07.2012    30936    17    fixin    34    

Длина ключа индекса превышает максимально допустимую. Решение и рекомендации

Тестирование и исправление v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

20.09.2015    31112    93    itsergey    5    

Тестирование конфигурации 1С 8.2 - 8.3

Инструментарий разработчика Универсальные обработки Тестирование и исправление v8 1cv8.cf Абонемент ($m)

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

1 стартмани

21.08.2015    13541    51    Baryshev    8    

Обработка для тестирования обновления

Инструментарий разработчика Тестирование и исправление v8 1cv8.cf Абонемент ($m)

Для начинающих программистов. Помогает проверить нетиповую конфигурацию после обновления.

1 стартмани

26.06.2015    8870    4    MrNick    5    

Анализ времени документов основной цепочки Промо

Обработка документов Тестирование и исправление v8 1cv8.cf Абонемент ($m)

Массово изменяет время документов на правильное

1 стартмани

02.05.2009    18927    4    logarifm    19    

Универсальное тестирование конфигурации

Тестирование и исправление БСП (Библиотека стандартных подсистем) v8 v8::УФ 1cv8.cf Абонемент ($m)

Вам нужно подать заявку на сертификацию "Совместимо! Система программ 1С:Предприятие" в отдел сертификаций каждые 2 года? Не успеваете сдать на проверку в срок? Стараетесь с первой попытки...максимум со второй попытки пройти проверку? Приходится доплачивать в 1С деньги за непройденные попытки? Хотите быстрее оформить план передачи новой версии и отправить материалы в отдел совместных решений? Есть решение!

8 стартмани

23.06.2015    26865    36    ZhokhovM    90    

Групповая обработка справочников, документов и всего остального

Универсальные обработки Тестирование и исправление v8 1cv8.cf Абонемент ($m)

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

1 стартмани

23.06.2015    7802    41    testik_vzv    5