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

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

Разработка - Инструментарий разработчика

sikuli тестирование интерфейса тестирование поведения

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

SikuliX - кросс-платформенная визуальная среда создания сценариев-скриптов. При помощи этих скриптов можно взаимодействовать с любыми интерфейсами, отображаемым на мониторе. Например, следить за изображением с вебкамерами, программировать поведение игровых ботов, серфить в интернете и, конечно, тестировать любые интерфейсы любых программ.
Сценарии-скрипты могут быть написаны на Python, Jython, Ruby. Но не стоит пугаться, если вы не знаете этих языков. При помощи SikuliX IDE вы сможете создать сценарий просто накликав его мышкой, чем мы и займемся.
Главное, что надо запомнить: Сикули - это просто. 

Зачем SikuliX нужен программисту 1С

В платформе 8.3 появился функционал клиента тестирования, который позволяет проверить очень многое. По сути можно имитировать поведение пользователя.
Однако, если у вас 8.2 - вам не доступен этот функционал. Протестировать интерфейс вы сможете только при помощи сторонних программных средств. И здесь есть из чего выбрать.
Что же можно использовать?

  • AutoIt - целый язык для автоматизации. AutoIt использует симуляцию нажатия клавиш, движений мыши и манипуляции с окнами, элементами управления. Это позволяет автоматизировать задачи пользователя Windows, обойдя нехватку подобного функционала в других языках программирования и в 1С 8.2 в том числе.
  • AutoHotkey - аналогичная вышеназванной программа для написания макросов по автоматизации действий. Пожалуй, AHK даже более известен, в сравнении с AutoIt.

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

И все-таки Sikuli

После беглого знакомства с SikuliX для меня стали очевидны следующие преимущества этого продукта:

  • Сценарий тестирования накликивается мышкой
  • Причем накликивается очень быстро
  • Отладка интуитивно понятна, не вызывает вопросов
  • Результаты тестирования можно встраивать в существующие фреймворки тестирования (в нашем примере это будет xUnitFor1C)
  • Можно интегрировать в сборочную линию
  • Осваивается очень быстро

Установка SikuliX

Важное вступление! 
1. С кириллицей у меня SikuliX подружить так и не получилось. Поэтому все имена, пути и т.д. - только латиница. 
2. Отдельной разговор про имя пользователя. Библиотеки сикули устанавливаются в папку c:\Users\<ИмяПользователя>\AppData\Roaming\Sikulix\. Если имя пользователь, под которым планируется работа набран в кириллице - сикули не встанет. Но выход есть: можно сменить название папки (но не самой учетки). Об этом будет дальше.
3. Регистр в именах скриптов важен 1С.sikuli и 1с.sikuli - два разных скрипта, пусть у вас и Windows
4. Все выполнялось на "железном" компьютере с windows 7(х64), платформой 8.2.19.130, 8.2.19.83.

SikuliX - набор java-скриптов и библиотек. Для инсталляции нам потребуется еще и JAVA. Минимальные требования к Java согласно сайту разработчиков (от декабря 2017) http://sikulix.com/quickstart/ это версия 7 (JRE или JDK). Думаю, у большинства уже все установлено. Проверить версию можно простой командой:

Последний стабильный релиз Сикули можно взять отсюда: https://launchpad.net/sikuli/sikulix/1.1.1
Хотя лично я пользовался последними ночными версиями сборки, которые взял из девелопмента: https://raiman.github.io/SikuliX-2014/nightly.html (там есть ссылочка с jar)

 
 Если имя пользователя, под которым планируется работа написано в кириллице (Иван, Администратор, А.Блок).

У SikuliX нетривиальный инсталлятор. Качаем jar-файл, перемещаем его в папку, где планируете разместить SikuliX. У меня это, как видим, C:\SikuliX (диск и папка не играют роли). Начинаем установку командой:

java -jar sikulixsetup-1.1.2-20171218.172518-66-forsetup.jar

В вашем случае, имя файла будет другое.

Установщик начинает работу и предлагает выбрать один из вариантов. Выбираем как на скриншоте первый пункт, который проинсталлирует нам SikuliX вместе с его IDE:

Далее продолжаем инсталляцию поддакивая установщику:

 

И только в одном месте мы скажем нет. Дело в том, что на этапе установки Jython 2.7.0 скрипт так и не захотел запускаться и пришлось переинсталлировать Сикули. Поэтому на этом этапе отвечаем "NO" и устанавливаем Jython 2.5.4:


 
Кстати, если что-то пошло не так можно все пересоздать. Для этого удаляем все из установочной директории и повторяем установку как надо.

Если установка прошла успешно должно появиться окошко вида:


 
Если его нет, значит что-то сделано не так. Обратите внимание на кириллицу, Jython, перечитайте эту инструкцию по установке сначала. И переустановите Sikuli.

Наш первый Hello World

Запустим Sikuli IDE. Для этого выполним команду (можно ее вывести в ярлыки):

runsikulix.cmd

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

Программируем мышкой

Давайте заставим Сикули создать новый текстовый документ в 1С.
Для начала запустим 1С в режиме предприятия. Напомню, у меня это 8.2. Конечно, по-честному, нам надо создать скрипт, который сам запускает 1С, но это будет позже. 
Итак, 1С-ка запущена. У меня это голая конфигурация без всего.

В Сикули кликаем на команду click и в рабочую область попадает новая команда:

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


 
Тут сразу возникает вопрос, почему такая большая область. Может нужно выбрать только сам значок? Более большая область позволяет Сикули выбрать именно стандартную панель. Вдруг на мониторе сейчас есть другое приложение с аналогичной иконкой. Или может быть такой значок есть на форме ранее открытой в 1С.

Вот, что у нас получилось:

 
Давайте сразу попробуем выполнить этот скрипт и нажмем на кнопку "Выполнить". Естественно, нам предложат сохранить нашу работу, согласимся:


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


 
Перейдем на закладку Смещение цели и укажем нужный нам значок, кликнув по нему. Видим, что перекрестие из центра картинки сместилось на центр значка "Новый документ", жмем "Ок":


 
Выполним наш скрипт. Теперь все отлично, открылось окошко выбора типа нового документа:


 
Если бы нас интересовала графическая схема, можно было бы аналогичным способом выбрать этот пункт, но нам нужен Текстовый документ, а он уже выбран. Можем нажать на кнопку ОК, или нажать Enter на клавиатуре. Выполним последнее, ибо это проще. Введем две команды:


 
sleep(1) позволит сделать секундную паузу, чтобы окно успело открыться перед тем, как мы пошлем "в него" наш Enter. 
type(Key.ENTER) - как раз передает Enter.

И финальный аккорд - вывод нашего "Hello, World!"


 
Здесь как мы видим команда Paste, а не Type. Почему? Потому что Sikuli при помощи этой команды может ввести только латиницу. А вот команда Paste вставит нужную нам строку в любой кодировке.

Вот как это работает 

Все так просто! Давайте сделаем настоящий тест. 

Тестируем интерфейс формы

Итак, давайте протестируем небольшой функционал. Добавим справочник с парой реквизитов и форму элемента. 
По условию выдуманного техзадания при изменении содержимого Реквизита1 в окно сообщений должна выводиться фраза "Шеф, все пропало" и Реквизит2 становится невидимым.
Реализация функционала в модуле формы будет совсем простой:

Процедура Реквизит1ПриИзменении(Элемент)
	Сообщить("Шеф, все пропало");
	ЭлементыФормы.Реквизит2.Видимость=Ложь;
КонецПроцедуры

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

(Полный текст сценария размещен в исходниках в конце статьи)

Про ошибки в Sikuli IDE и логи

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

Лог показывает всю последовательность действий. Что у Sikuli получилось, что нет. Строки с ошибками нас будут интересовать на этапе "разбора полетов" и тут нам поможет правильное именование наших картинок.
Да-да, картинки по которым ходит/кликает Сикули можно переименовывать. Но только не забываем, что только в латиницу. 
Согласитесь, что фраза 

FindFailed: soobshenie_pro_Shefa.png: (113x17) in S(0)[0,0 1920x1080] E:Y, T:3,0

выглядит понятнее стандартного сообщения:

FindFailed: 1514017498867.png: (113x17) in S(0)[0,0 1920x1080] E:Y, T:3,0

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


Автоматизируем запуск наших Sikuli-сценарии

До этого момента мы тестировали все "руками" в Sikuli IDE. Настало время автоматизировать наше тестирование интерфейса. Давайте создадим скрипт, который при выполнении сделает за нас все: запустит 1С-ку, прогонит сценарий, сохранит результаты для последующего анализа, и закроет сеанс.
Варианты скриптов могут быть разными, можно написать на чем удобно вам: bat-файл, onescript, powershell-скрипт.
Я сделаю bat-файл. Просто потому что его использовал и писал любой из нас. Никаких преимуществ перед другими способами он не имеет.
Если вы используете onescript, то лучше попрактиковаться в нем. Тем более, что у него есть возможность удалить запущенный процесс, если что-то пойдет не так. Под onescript есть библиотеки, которые позволяют настроить запуск 1С-ки, не морочась с путями и т.д. 
Итак, чтобы не усложнять, все-таки сейчас у нас будет bat-файл.

Сам запускающий батник имеет вид:

Сначала стартует 1С-ка. Далее поочередно запускаются jar-файлы со сценариями тестов. Конечно, это место нужно улучшить, получив все названия сценариев из самой папки, но пока не хочется усложнять восприятие.
Последняя строка - завершение работы самой 1С причем через Sikuli.
Все скрипты пишут в файл .log в собственную папку Sikuli-скрипта. Это важно: по содержимому этого файла мы потом определим, чем все закончилось.
Сам скрипт Sikuli чуть поправлен. Здесь появились чудо-конструкции с исполнением кода в попытке и повторное использование сценария закрытия всех окон.
Попытка необходима для того, чтобы выполнение bat-скрипта не прерывалось, даже если что-то в сценарии пойдет не так - элементарно он упадет.
Закрытие окон необходимо для того, чтобы "понаоткрытое" другими сценариями не мешало выполниться текущему sikuli-скрипту.

Простейший отчет по тестированию

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

Процедура ПриОткрытии()
	Попытка
		СформироватьОтчетОТестированииИнтерфейса();
	Исключение
		ЗаписьЖурналаРегистрации("Ошибка записи отчета о тестировании интерфейса",УровеньЖурналаРегистрации.Ошибка,ОписаниеОшибки());
	КонецПопытки;
	ЗавершитьРаботуСистемы(Истина);
КонецПроцедуры

Процедура СформироватьОтчетОТестированииИнтерфейса()
	МассивПараметров = РазложитьСтрокуВМассивПодстрок_(ПараметрЗапуска,";");
	Если НЕ МассивПараметров.Количество()=2 Тогда
		Возврат
	КонецЕсли;
	ПутьККаталогамСикули = МассивПараметров[0];
	ПутьКФайлуОтчета = МассивПараметров[1];
	
	Текст = новый ТекстовыйДокумент;
	Текст.ДобавитьСтроку(Формат(ТекущаяДата(),"ДЛФ=DT"));
		
	МассивЛогФайлов = НайтиФайлы(ПутьККаталогамСикули,".log",Истина);
	Для каждого ФайлЛога Из МассивЛогФайлов Цикл
		ПутьККаталогу = ФайлЛога.Путь;
		ЕстьОшибка = ?(ВЛогеЕстьОшибка(ФайлЛога.ПолноеИмя),"OK","error");		
		Текст.ДобавитьСтроку(ПутьККаталогу+": "+ЕстьОшибка);
	КонецЦикла;	
	Текст.Записать(ПутьКФайлуОтчета,КодировкаТекста.ANSI);
	
КонецПроцедуры

Функция ВЛогеЕстьОшибка(ПутьКФайлу)
	Текст = новый ЧтениеТекста(ПутьКФайлу);
	Строка = Текст.Прочитать();
	Если Найти(нРег(Строка),"[error]")>0 Тогда
		Возврат Ложь;
	Иначе
		Возврат Истина;
	КонецЕсли;
КонецФункции

Функция РазложитьСтрокуВМассивПодстрок_(Знач Строка, Знач Разделитель = ";") Экспорт
	
	Результат = Новый Массив;
	
	Позиция = Найти(Строка, Разделитель);
	Пока Позиция > 0 Цикл
		Подстрока = Лев(Строка, Позиция - 1);
		Если Не ПустаяСтрока(Подстрока) Тогда
			Результат.Добавить(Подстрока);
		КонецЕсли;
		Строка = Сред(Строка, Позиция + СтрДлина(Разделитель));
		Позиция = Найти(Строка, Разделитель);
	КонецЦикла;
	
	Если Не ПустаяСтрока(Строка) Тогда
		Результат.Добавить(Строка);
	КонецЕсли;
	
	Возврат Результат;
	
КонецФункции

 

Дополним наш bat-ник еще одной строчкой. 

rem Создаем простой отчет
%exe1cv8% ENTERPRISE /IBNAME "Тестовая82" /UseHwLisenses /Lru /VLru /DisplayAllFunctions /O Normal /Execute %ProjectPath%СоздатьОтчетИЗакрыть1С.epf /C"%ProjectPath%;%ProjectPath%\otchet.txt"

 

Теперь мы получаем вот такой простенький отчет по тестированию интерфейса:

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

Красивый отчет по тестированию

Но хочется большего. Точнее большого, красивого и подробного. Например, в виде Allure-report как на картинке:


 
Для получения красивого отчета можно воспользоваться функционалом фреймворков Vanessa-Behavior или XUnitFor1C. Для моей реализации выберу последний. 
Создам простой тест-обработку. Для тех, кто работал с xUnit ничего нового – это стандартный текст обработки с необходимыми процедурами для запуска фреймворка. Вся «соль» содержится в последней однобуквенной процедуре. Сам модуль объекта:

Перем КонтекстЯдра;

Перем ТестируемаяФорма;
Перем НужноИсключениеЕслиНеНайденоДокументов;

//{ интерфейс тестирования

// директива препроцессора нужна для исключения ошибки загрузки в толстом клиенте управляемого приложения
#Если ТолстыйКлиентОбычноеПриложение Тогда

Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
	КонтекстЯдра = КонтекстЯдраПараметр;
КонецПроцедуры

Процедура ПередЗапускомТеста() Экспорт
	НачатьТранзакцию();
КонецПроцедуры

Процедура ПослеЗапускаТеста() Экспорт
	
	Если ТранзакцияАктивна() Тогда
		ОтменитьТранзакцию();
	КонецЕсли;
	
КонецПроцедуры


Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт
	
	НаборТестов.СлучайныйПорядокВыполнения();
	НаборТестов.Добавить("_");
		
КонецПроцедуры
	
Процедура _() Экспорт
	
	Попытка
		ПутьКЭтойОбработке = КонтекстЯдра.ТекущийКонтейнер.Строки[0].Путь;
	Исключение
		ВызватьИсключение "Не нашли путь к обработке в КонтекстЯдра.ТекущийКонтейнер.Строки[0].Путь";
	КонецПопытки;
	
	Ф = новый Файл(ПутьКЭтойОбработке);
	ПутьКЛогу = Ф.Путь+".log";
	Ф = новый Файл(ПутьКЛогу);
	Если НЕ Ф.Существует() Тогда
		ВызватьИсключение "Не найден лог тестирования интерфейса";
	КонецЕсли;
	
	Текст = новый ЧтениеТекста(ПутьКЛогу);
	Прочитанное = Текст.Прочитать();
	Если Найти(Прочитанное,"[error]")>0 Тогда
		ВызватьИсключение Прочитанное;
	КонецЕсли;
	//Сообщить(КонтекстЯдра.Путь);
КонецПроцедуры


#КонецЕсли

Сохраняем тест с красноречивым именем, которое расскажет благодарным потомкам, что же все-таки тут проверялось. Кладем этот файл в папку к Sikuli-скрипту.
Если у нас несколько тестов, то копируем этот же файл в другие папки, только переименовывая его. Этот копи-паст отлично работает в дженкинсе (см. первый скриншот с Allure-отчетом).
Стандартно запускаем xUnitFor1C, указывает корневую папку с нашими sikuli-скриптами. хUnitFor1C сам прочтет все тесты, которые ему предстоит выполнить:


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

Собственно, наша задача решена. Техзадание выполнено, протестировано, отчет сформирован. Уже в этом виде решение приобрело законченный вид.
Пойдем чуть дальше. Типа бонус!

Добавляем красивый отчет в сборочную линию

Скрипт тестирования интерфейса у нас есть, дело за малым - интегрировать запуск XUnit в нашу сборочную линию, вместе с генерацией отчета. Про запуск xUnitFor1C из командной строки можно прочитать на вики xUnitFor1C.
Моя итоговая строка запуска выглядит вот так:

chcp 65001

set runsikulicmd=c:\sikuliX\runsikulix.cmd
set ProjectPath=c:\test_sikuli\sikuli\
set exe1cv8="C:\Program Files (x86)\1cv82\8.2.19.83\bin\1cv8.exe"
set ConnectionString=/F"C:\Тестовая82_Инфостарт"
set TestTools=C:\TestTools\xUnitFor1C_82


rem запуск 1С, в котором будем тестировать интерфейс
start "1c" /MAX %exe1cv8% ENTERPRISE %ConnectionString% /UseHwLisenses /Lru /VLru /DisplayAllFunctions /O Normal


rem поочередный запуск всех тестов

rem Тест, который пройдет
set TECNAME=VsePropalo2.sikuli\
del /F %ProjectPath%%TECNAME%.log
call %runsikulicmd% -r %ProjectPath%%TECNAME% > %ProjectPath%%TECNAME%.log

rem Тест, который завалится
set TECNAME=No.sikuli\
del /F %ProjectPath%%TECNAME%.log
call %runsikulicmd% -r %ProjectPath%%TECNAME% > %ProjectPath%%TECNAME%.log

rem Закрываем 1с
set TECNAME=close1c.sikuli\
call %runsikulicmd% -r %ProjectPath%%TECNAME% > %ProjectPath%%TECNAME%.log

rem Создаем папку под отчеты
set TESTReportFOLDER="%WORKSPACE%\allure-results\"
RMDIR /S /Q %TESTReportFOLDER%
MD %TESTReportFOLDER%

rem Создаем Аллюр-отчет при помощи xUnitFor1C
%exe1cv8% ENTERPRISE %ConnectionString% /UseHwLisenses /DisplayAllFunctions /O Normal /Execute "%TestTools%\xddTestRunner.epf" /C "xddRun ЗагрузчикКаталога ""%ProjectPath%""; xddReport ГенераторОтчетаAllureXML ""%WORKSPACE%\allure-results\report_ordinary.xml""; xddShutdown;"

Внимание, это уже не запуск на моем компьютере, это уже bat-ник в Jenkins. Я сознательно опускаю детали установки Allure локально. Он локально-то по большому счету и не нужен. У меня, например, не стоит. А вот на сборочной линии мы активно пользуемся его наглядным функционалом.
Про установку Allure, Jenkins и прочего инструментария есть статьи на инфостарте и других ресурсах. Считаю, что тема слишком объемна и бессмысленно описывать это здесь.
Все скрипты и bat-файлы выкладываю в одном архиве, так как финальные тексты могут несколько отличаться от ранних скриншотов для статьи.

Итоги

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

Что еще не сказано. Примечания

  • На разных скриншотах фигурируют разные пути C:\SikuliX, D:\SikuliX – не обращайте внимание, часть картинок с Jenkins, часть с собственного компьютера, никакой магии.
  • Для простоты я не использовал никакие логины-пароли и не проводил проверку под всякими ролями. Это остается за рамками данной статьи, но сложностей здесь немного.
  • Глядя на итоговый скрипт для Jenkins можно похихикать над «сборочной линией» - ее тут, конечно, нет.
  • В моем случае slave-нода запускается с экранным разрешением 1024х768. Запуск осуществляется под пользователем, для которого настроен автологин. И это следует учесть при создании Sikuli-сценариев. Возможно, есть более удачный способ запуска. Как проверить разрешение – в отчете есть информация на эту тему:


 

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

Ссылки

Традиционно даю ссылки на полезную информацию для решивших пойти sikuli-путем:

Вроде все... Спасибо всем осилившим.
 

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

Наименование Файл Версия Размер
Архив всех Sikuli и bat скриптов, которые использовались, а также cf-ник

.ZIP 114,79Kb
02.01.18
5
.ZIP 114,79Kb 5 Скачать

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

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Evil Beaver 6752 03.01.18 13:11 Сейчас в теме
Отличная работа, спасибо!
2. pumbaE 634 03.01.18 13:17 Сейчас в теме
# -*- coding: UTF-8 -*-
разве не помогает в начале файла для преодоления проблем с кириллицей?
8. kraynev-navi 461 07.01.18 08:53 Сейчас в теме
(2) я имел в виду установить сам Sikuli в русскоязычную папку пользователя
3. as 04.01.18 00:22 Сейчас в теме
Отлично. Даже и не думал, что обычные формы можно так просто начать тестировать. Хотя про AutoIt знал :)
4. vermouth 04.01.18 15:25 Сейчас в теме
Киньте в меня камнем, кто не верит в такое тестирование.. правда... по числу негативных отзывов в мой адрес хочу понять - насколько я ошибаюсь
triviumfan; Brawler; grumagargler; +3 Ответить
9. kraynev-navi 461 07.01.18 08:54 Сейчас в теме
(4) что значит верить или не верить в тестирование? )))
5. Dzenn 395 05.01.18 01:25 Сейчас в теме
Открыл для себя что-то новое, хотя думаю, что мне эта технология никогда не пригодится. В каких случаях нужно проводить такие тестирования?
6. Region102 05.01.18 21:44 Сейчас в теме
(5) Для "домашней разработки" это не обязательно, но если пишешь серьезные приложения для бизнеса, то тестирование должно внедряться на самом начальном этапе разработки. Когда у вас конфигурация - это 5 справочников и 2 документа, то да, там можно и самому потыкать чтобы проверить корректность последних изменений. Когда же это уже десятки объектов метаданных с тесными взаимосвязями, то тут доработал что-то полугодичной давности и посыпались ошибки в работе по цепочке. Сейчас клиенты очень негативно относятся к 1С, так как тестировать в нашей среде принято на пользователях, а бизнес этого не любит.

Меня же больше интересует написание тестов для мобильной платформы и возможность внедрения в мобильной платформе нормальных сервисов для анализа ошибок в приложениях, типа fabric.io
7. ivanov660 2141 06.01.18 21:59 Сейчас в теме
(6) Бизнес в 1С не любит косяков, а также не готов платить за тестирование. Взаимоисключающие вещи к моему сожалению.
monkbest; artbear; +2 Ответить
11. kraynev-navi 461 07.01.18 09:04 Сейчас в теме
(7) Надо смотреть на тестирование как на часть разработки. Вы же не принуждаете бизнес оплачивать, например, собственное обучение. Вы обучаетесь за свой счет, понимая, что инвестируете в свое качество разработки. Выполняя тестирование вы также повышаете свое качество разработки.
artbear; grumagargler; +2 Ответить
16. ivanov660 2141 07.01.18 22:23 Сейчас в теме
(11)На самом деле косвенно конечно да. Откуда берутся деньги на внутренние нужды компании? С клиентов) Чем более "качественный" сервис - тем выше цена в прайсе.
За тестирование я двумя руками за, и за повышение квалификации сотрудников и качества разработки.
kraynev-navi; RSConsulting; +2 Ответить
14. grumagargler 662 07.01.18 19:10 Сейчас в теме
(7) Проводил неоднократно эксперименты с коллегами. Спрашиваю: - Вот вы говорите вам не хватает времени/денег делать работу качественно, так? Ответ – да, именно так. Хорошо, даем премию, даем времени пока не скажете «готово». Работаем…и в результате – почти ничего не изменилось. Другими словами, тестирование это не как сервис, за который можно дополнительно заплатить и оно появится (если мы говорим про программистов), это часть процесса разработки, требует обучения и повышения общей культуры создания программ.
UniversaLL; JohnyDeath; kuntashov; kraynev-navi; +4 Ответить
19. ivanov660 2141 07.01.18 22:35 Сейчас в теме
(14)Если подойти немного философски, то человек (особенно программист) ленивое существо) обремененное кучей проблем, а также набором устоявшихся поведенческих шаблонов. И вариант с отправлением в свободное плаванье в большинстве случаев приведет к провалу.
Если говорим про коллектив разработчиков продукта, то тут следует внести изменения в бизнес процесс разработки. Надо фактически заставить работать по изменившимся правилам. Обязательно потребуются инструкции и обучение. Иначе не работает, там где этого процесса не было.
10. kraynev-navi 461 07.01.18 08:59 Сейчас в теме
(6) А потом через год "вдруг" появляется еще пара документа и ты уже не помнишь как руками все это прочекать. А тестами все уже было покрыто и запускается на автомате.
Или другой случай - эти 5 справочников и 2 документа так удачны и составляют подсистему, что принято решение интегрировать в другие конфигурации. Тесты ускорят процесс в разы.
12. triviumfan 17 07.01.18 14:11 Сейчас в теме
Не понимаю, кто использует такого рода тестирование... оно же нереально затратное. А целесообразно ли?
Даже у самой 1с нет автоматического тестирования, зачастую вижу баги с переопределением обработчиков или удалением привязки их из формы, ввиду чего имеем "метод объекта не обнаружен".
13. Region102 07.01.18 16:24 Сейчас в теме
(12) Многие крупные разработчики до сих пор не применяют тестирование в принципе. Взять конфигурацию рарус УАТ проф начальных релизов и прогнать их стандартными средствами проверки конфигураций, и взять последние релизы, ошибки так и тянуться ГОДАМИ. А за внедрение этой конфигурации они миллионы подымают.

Внедряйте тестирование на начальном этапе и со временем люди при выборе качественного продукта обратятся к вам, а не к "старичкам" работающим по старинке. Да и свою карму поднимите.
JohnyDeath; kraynev-navi; +2 Ответить
15. kuntashov 366 07.01.18 22:12 Сейчас в теме
Спасибо за обзор инструмента. Сейчас как раз мучаюсь (другого приличного слова не подберу) с 1С:Сценарным тестированием для тестирования конфигураций на 8.2. Главная беда, конечно - с модальными окнами.

Есть пара вопросов:

1. Как вижу, SukuliX работает в отдельном сеансе/процессе и по идее должна уметь и модальные окна ловить. Я прав?

2. Почему xUnitFor1C используете только для геренации отчета? Не думали о том, чтобы запускать SikuliX-тесты при помощи xddTestRunner.epf, который запускался бы в сервисной информационной базе?

Это более естественный способ использования xUnitFor1C, чем отдельный запуск только для обработки логов. Принцип работы тестовой обработки для xUntitFor1C может быть таким:

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

* ЗаполнитьНаборТестов() сканирует переданный через файл конфигурации путь к каталогу с SikuliX-тестами и для каждого файла-теста создает тестовый случай в дереве тестов (тест = Тест_ДолженВыполнитьСкриптSikuliX, Параметр = Путь к конкретному SikuliX-скрипту)

Мы таким образом запускаем 1С:Сценарные тесты.
Основное преимущество такого подхода: не нужно поддерживать батник для последовательного запуска тестов.

Ваше решение, конечно же, идеально для всех, кому сначала ехать, а потом шашечки :)
17. kraynev-navi 461 07.01.18 22:24 Сейчас в теме
(15)
1. Да, должен. Примера нету, чтобы подтвердить.
2. Было бы идеально запускать внутри фреймворка. Но есть нюанс.
Пока тест не отработает, он никаких новых окон не позволит открыть кому бы то не было - скрипту, пользователю и т.д. Если вы предлагаете открывать второй экземпляр 1с в режиме предприятия, то у меня есть сомнения в том, что эти два экземпляра (псевдо "клиент-тестирования" и экземпляр с xUnit) не будут перекрывать друг друга. Тут надо придумывать хитрый механизм внутри sikuli, чтобы он разобрался в том, куда ему кликать, на какие окна смотреть. Тут подходим к задаче корректного определения нужного приложения, удержания фокуса и т.д. Попутно, подозреваю, будут еще нюансы. Мне кажется, этот путь сложнее.
Если не прав, буду рад замечаниям.
artbear; kuntashov; +2 Ответить
18. kraynev-navi 461 07.01.18 22:34 Сейчас в теме
(15) и еще дополню.
Конечно, батник не надо поддерживать (дописывая туда новые/удаляя старые). Делается onescript-е, который шерстит папки со сценариями. В этой связке только некрасив "лишний" файл обработки-теста внутри папки сикули.
Про ваш вариант с параметрами надо подумать, может лучше, да.
20. Gilev.Vyacheslav 1851 09.01.18 12:19 Сейчас в теме
а на 8.3 перейти не проще?
mitia.mackarevich; +1 Ответить
22. artbear 1184 09.01.18 13:22 Сейчас в теме
(20) для УПП 1.Х ? нет, не проще :)
24. Gilev.Vyacheslav 1851 10.01.18 10:02 Сейчас в теме
23. artbear 1184 09.01.18 13:36 Сейчас в теме
(21) Зачем вставлена рекламная ссылка?
Добавь полезный комментарий - о чем, почему?
zarucheisky; kraynev-navi; +2 Ответить
25. kuzyara 1027 10.01.18 10:12 Сейчас в теме
Это можно, но что за выпады и переход на личности?
(23)
Хорошая документация, реальные сценарии на типовой, готовые кейсы, 8.2, ОФ, неплохое дополнение к 1с:апк.
Легко ищется на трекерах.

Теперь разверните за полезность вашего первого комментария.
26. Makushimo 155 18.05.18 13:01 Сейчас в теме
Скажите, я к компу на котором 1С, подключаюсь через RDP, на нем монитора живого нет или выключен.
Sikuli тут бессильна?
27. kraynev-navi 461 20.05.18 20:00 Сейчас в теме
(26) Если подключаетесь по RDP, то монитор есть - ваш. Если прогонять через неизвестную заранее виртуалку, то можно подсмотреть результирующий отчет. Более подробно см. предпоследний параграф:
В моем случае slave-нода запускается с экранным разрешением 1024х768. Запуск осуществляется под пользователем, для которого настроен автологин. И это следует учесть при создании Sikuli-сценариев. Возможно, есть более удачный способ запуска. Как проверить разрешение – в отчете есть информация на эту тему:
28. Makushimo 155 21.05.18 11:23 Сейчас в теме
(27) Я подключаюсь по RDP настраиваю сценарий, вешаю его на автозапуск и забиваю болт.
Автозапуск прогоняет тест на сервере, где нет монитора и я в этот момент не смотрю на процесс через RDP.
Sikuli работает через скриншоты экрана. Так?
Значит если не с чего делать скриншоты, то и тест не пройдет. Верно?

И что такое slave-нода вообще ни разу не понятно.
30. kraynev-navi 461 21.05.18 15:17 Сейчас в теме
(28) "вешаю на автозапуск" - это в Планировщике указываете скрипт? От чьего имени? Любого вошедшего пользователя, вне зависимости от регистрации? Это наверняка, важно, но затрудняюсь ответить как надо сделать, ибо такой способ использования не пробовал. Возможно, вы правы, если пользователь не залогинился, монитора не будет, взаимодействовать не с чем.
Рабочий вариант со slave-нодой - запуск тестов на jenkins (https://jenkins.io/), настройка автологина под пользователем из под которого запускается агент jenkins
32. Makushimo 155 21.05.18 15:32 Сейчас в теме
(30)
Рабочий вариант со slave-нодой - запуск тестов на jenkins

В двух словах не вдаваясь в детали можно прояснить, что это значит? Запускается сеанс RDP под указанным пользователем, и так получаем как бы монитор? то есть сервер сам к себе под RDP подключается? и если нет монитора, то все равно заработает?
33. kraynev-navi 461 21.05.18 15:56 Сейчас в теме
(32)
Не так. и RDP не нужен и монитор тоже. Нужен пользователь с автовходом. Как-будто при старте винды сразу кто-то вошел и работает.
- создаем на виртуалке спецпользователя локального админа, выставляем ему AutoAdminLogon выставляем в 1. (подробнее, например, тут: https://support.microsoft.com/ru-ru/help/324737/how-to-turn-on-automatic-logon-in-windows, с картинками: https://interface31.ru/tech_it/2011/07/kak-vklyuchit-avtomaticheskiy-vhod-v-sistemu-dlya-windows-7-i-windows-server-2008.html)
- создается батник на ведомой машине, который запускает стандартный агент jenkins "java -jar slave.jar....",
- в планировщике делаем задачу на запуск этого батника из под спецпользователя
При включении/перезапуске виртуалки винда поняла, что пользователь уже "вошел". И взаимодействует с его рабочим столом.
Пока писал нашел вот такой ссыль: http://qaru.site/questions/225464/how-to-run-gui-tests-on-a-jenkins-windows-slave-without-remote-desktop-connection
35. Makushimo 155 22.05.18 17:59 Сейчас в теме
(33) фигасе !
Спасибо. Покурю эти ссылки и что нибудь про jenkins.
29. Makushimo 155 21.05.18 14:02 Сейчас в теме
Вот вы пишете: "Как человек, написавший не одно приложение на AutoIt.."
А можете помочь со скриптом, который нажимает кнопку "ОК" в форме договора?
утилита AutoIt Window info форму договора не воспринимает как окно, а кнопку "ОК" вообще не выделяет. выделяет только командную панель формы.

То есть написать скрипт нажимающий "ОК" на форме написать вообще не реально?
31. kraynev-navi 461 21.05.18 15:23 Сейчас в теме
(29) 1С с AutoIt это еще та связка. Вы правы, там отдельного окна как бы нет. Со скриптом, увы, не помогу. В качестве идеи - можно попробовать "послать" туда хоткей ctrl+enter, если ОК дефолтная кнопка.
34. kraynev-navi 461 21.05.18 16:47 Сейчас в теме
(29)
То есть написать скрипт нажимающий "ОК" на форме написать вообще не реально?

Делал в основном приложения, связанные с браузерами, вебом. Связку 1С и AutoIt никогда не использовал для анализа форм, поэтому сказать "точно нет" или "точно да" не могу.
36. Makushimo 155 23.05.18 13:40 Сейчас в теме
Подскажите, пожалуйста такой вопрос.

Можно ли из 1С одновременно запустить два процесса Sikuli ?

Я пытаюсь решить такую задачу:
Скрипт1 Sikuli нажимает кнопку, 1С выкидывает исключение
Скрипт2 Sikuli выполняется в цикле и он нажимает кнопку закрытия окна исключения платформы.

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

Эта идея работает если фоновый скрипт запущен один, а основное действие с формой делаю программно из 1С (например, открыть форму)

Но когда два скрипта, то такое ощущение что Скрипт 2 фоном запускается, затем Скрипт1 как бы выбивает его, т.е процесс Sikuli переключается на него, а фоновое выполнение непонятно куда девается.
37. kraynev-navi 461 25.05.18 15:48 Сейчас в теме
(36) Не очень понял, что за чем, если честно.
Идея с циклическим запуском и двумя скриптами, имхо, не правильная.
Может так: в начале работы 1С запускает сикули-скрипт, который реализует оба функционала - нажатие кнопки и закрытие окна исключения, после отработки 1С. Просто предусмотреть условие, по которому сикули завершит выполнение (+ аварийный выход по таймауту).
38. Makushimo 155 28.05.18 12:58 Сейчас в теме
(37)
ну в итоге я так и сделал.
39. Makushimo 155 28.05.18 13:21 Сейчас в теме
Скажите, а можно ли в отчет Allure подсунуть скриншот ошибки, которая появилась в процессе выполнения теста?

Допустим скриншот как-то уже есть.
40. kraynev-navi 461 28.05.18 13:49 Сейчас в теме
(39) Наверняка можно. Но не пробовал. Если через xunit, то залезть в функционал создания аллюра и посмотреть куда можно допилить вставку скриншотов. Посмотреть можно, например, в VB
41. Xershi 980 11.06.20 14:31 Сейчас в теме
Получил ошибку при установке по инструкции SikuliX:
Neither Jython nor JRuby available
or you want to add Jython as additional scripting language to the IDE

Но все якобы стоит:
java -version
java version "1.8.0_241"
Java™ SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot™ 64-Bit Server VM (build 25.241-b07, mixed mode)

Продолжаю разбираться в теме.
Оставьте свое сообщение

См. также

Установка предопределенных элементов: просмотр, исправление и поиск ошибок (задвоенных и отсутствующих) Промо

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

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

2 стартмани

06.10.2014    145257    1951    ekaruk    164    

CF & SQL : конструктор прямых запросов к БД 1С

Инструментарий разработчика Администрирование СУБД v8 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

02.10.2019    15806    186    dmitrydemenew    44    

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

Работа с интерфейсом v8 ERP2 УТ11 Россия Абонемент ($m)

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

1 стартмани

09.09.2019    8840    10    bmk74    1    

Конвейер проверки качества кода

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

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    20857    21    Stepa86    44    

Навигатор по конфигурации базы 1С 8.3 Промо

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

Универсальная внешняя обработка для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Платформа 8.3, управляемые формы. Версия 1.1.0.63 от 10.06.2020

3 стартмани

28.10.2018    29327    276    ROL32    67    

Модель объекта

Инструментарий разработчика v8 Абонемент ($m)

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    10840    0    vadim1980    5    

Универсальный HTTP-сервис на платформе 1С, аля HTTP-сервер с примером

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

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

1 стартмани

13.05.2019    26641    119    Diversus    42    

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь новая версия - Simple UI (обновлено 14.11.2019)

Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Мобильная разработка Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ v8 v8::Mobile БУ УУ Абонемент ($m)

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    39315    245    informa1555    200    

[Расширение] Контроль отрицательных остатков по регистру бухгалтерии при проведении Промо

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

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

1 стартмани

17.08.2015    44830    155    ekaruk    31    

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

Работа с интерфейсом v8 Россия Абонемент ($m)

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

3 стартмани

31.10.2018    14499    77    ELAM    3    

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

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

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

1 стартмани

27.10.2018    15005    12    tormozit    31    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    25397    25    informa1555    26    

Faster - многофункциональный ускоритель работы программиста 1С Промо

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

Программа Faster 8.7 позволяет ускорить процесс работы программиста 1С (и не только 1C). Программа Faster позволяет делится кодом с другими программистами в два клика или передать ссылку через QR Код. Исправление введенных фраз двойным Shift (с помощью speller.yandex) Полезная утилита для тех, кто печатает много однотипного текста, кодирует в среде Windows на разных языках программирования. Через некоторое время работы с программой у вас соберется своя база часто используемых словосочетаний и кусков кода. Полностью переделан механизм перехвата клавиш, теперь не зависает при обработке скриптов.

1 стартмани

24.05.2012    75470    207    moolex    145    

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

Работа с интерфейсом v8 1cv8.cf Абонемент ($m)

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

1 стартмани

31.07.2018    21460    135    Plotks2017    27    

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

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

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

1 стартмани

17.07.2018    39279    17    kalyaka    16    

CI/CD для 1С - миф или реальность?

Управление проектом v8 Бесплатно (free)

Разберём плюсы и минусы применения практик CI/CD с учетом ограничения технологической платформы 1С:Предприятие.

02.07.2018    22270    0    comol    54    

Консоль запросов + ТЗ как параметры Промо

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

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

2 стартмани

12.11.2010    32715    58    Kashemir    24    

Консоль HTTP-запросов с генерацией кода

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

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

1 стартмани

25.05.2018    21806    255    leongl    16    

Работа со схемой запроса

Инструментарий разработчика Практика программирования v8 v8::Запросы Абонемент ($m)

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

1 стартмани

24.04.2018    40985    85    kalyaka    34    

Регистры правил [Расширение]

Инструментарий разработчика Информационная безопасность v8 v8::Права УТ11 Абонемент ($m)

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    16254    8    33lab    1    

[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    49500    200    GusevNA    75    

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

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

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

1 стартмани

18.11.2017    28403    31    bonv    10    

Трансформатор 1С - SQL

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

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

1 стартмани

28.06.2017    33084    334    Synoecium    49    

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

Работа с интерфейсом v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

31.05.2017    29994    147    tormozit    23    

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

Инструментарий разработчика v8 КД Абонемент ($m)

При переносе данных между различающимися данными частенько приходится смотреть в правила. И часто, чтобы выяснить, к примеру, каким документом формируются остатки по конкретному ПВД, нужно заглядывать в него и искать, какое ПКО в нем вызывается. А может вызываться и алгоритм, в котором вызывается ПКО ;-) А если правил много? Чтобы не мучить себя утомительными поисками, предлагаю воспользоваться этой обработкой.

1 стартмани

14.10.2011    21127    29    Meta    17    

Набор подсистем "Умные таблицы"

Инструментарий разработчика v8 Беларусь Россия Казахстан Абонемент ($m)

Данный набор подсистем – прикладная библиотека, призванная помочь программисту 1С быстрее решать ряд типовых задач бизнес-логики, таких как: ведение статусов объектов, отправка почтовых сообщений в определенное время, ведение произвольных таблиц с возможностью редактирования, сохранения и группировки, ориентированные на расчет бюджетных таблиц (план продаж, ретробонусы B2C, проценты по договорам B2B и договорные условия по КАМ), расчет коммерческой политики для бюджетных таблиц, исполнение произвольных алгоритмов с хранением кода в информационной базе, определение рабочих баз, хранение файлов во внешних СУБД (Postgre SQL, MS SQL и MongoDB) и выполнение произвольного кода после изменений ссылочного объекта вне транзакции изменения.

1 стартмани

22.05.2017    31175    94    Silenser    34    

Регулярные выражения – это просто. Построитель и отладчик регулярных выражений

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

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

1 стартмани

13.03.2017    28578    111    romasna    49    

Сценарное тестирование в помощь программисту 1С

Инструментарий разработчика v8 Абонемент ($m)

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

1 стартмани

11.11.2016    26453    59    grumagargler    47    

Несколько шаблонов для доработки типовых конфигураций

Практика программирования Инструментарий разработчика v8 v8::УФ Абонемент ($m)

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

1 стартмани

03.10.2016    34160    95    json    25    

Управление задачами: Канбан доска

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

Конфигурация "Управление задачами" с использованием БСП. Канбан доска. Открытый код.Загрузка изменений из хранилища конфигураций 1С и связь с задачами. Проект выложен на github (ссылка в публикации). Управляемые формы. Рассылка уведомлений.

1 стартмани

02.10.2016    60278    527    BlizD    293    

Обновление доработанной Бухгалтерии предприятия. Как проверить и убедиться, что все сделано хорошо?

Практика программирования v8 БП2.0 Бесплатно (free)

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

05.09.2016    27662    0    kraynev-navi    33    

Конструктор-тестер http запросов в 1С

WEB Инструментарий разработчика v8 1cv8.cf Россия Абонемент ($m)

Данная обработка позволяет в несколько кликов конструировать http запросы на языке 1С и просматривать результаты их выполнения.

3 стартмани

19.08.2016    40191    294    hlopik    17    

Hello world на metadata.js

Инструментарий разработчика WEB Мобильная разработка v8 1cv8.cf Абонемент ($m)

Про браузерные offline-first приложения можно написать миллионы слов. Сэкономлю своё и ваше время и перейду сразу к делу. В статье не будет рекламы и агитации за новые технологии, не будет критики традиционных или попсовых решений. Рассмотрим по шагам разработку простейшей программы на metadata.js. Постараюсь сделать акцент не на том «как это сделано», а «почему сделано именно так»

1 стартмани

11.08.2016    55947    111    unpete    208    

Подсистема обмена данными с порталом ИМНС по электронным счетам-фактурам (автоматический обмен)

Внешние источники данных WEB Инструментарий разработчика v8 1cv8.cf Беларусь БУ НДС Абонемент ($m)

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

1 стартмани

28.07.2016    31836    19    c1nil    4    

Навигатор по структуре и данным баз 1С 8

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

Просмотр структуры и данных информационных баз 1С:Предприятие 8.2, 8.3. Состав, типы объектов, табличных частей, движений. Размер, структура хранения объекта. Для администраторов и разработчиков. Версия 1 - на обычных формах, версия 2 - на управляемых.

1 стартмани

11.07.2016    27208    127    o.nikolaev    17    

БСП 2.3 и БСП 3.0: Просто про выполнение внешней обработки в фоне (c индикацией прогресса выполнения)

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

Простое пояснение о том, как сделать внешнюю обработку с фоновым выполнением и индикацией процесса для любой конфигурации на основе БСП 2.3.2. UPDATE 20/09/19: добавлен вариант обработки с индикацией процента выполнения и статусом выполнения для БСП 3.0.

1 стартмани

18.05.2016    56856    162    rozer    64    

Консоль запросов "Запросник" для управляемых форм с подсветкой синтаксиса

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

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

1 стартмани

19.04.2016    35358    255    1С_Мастер    42    

Шильдик. Изменение заголовка конфигуратора 1С и выделение цветом конфигураторов разных баз

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

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

1 стартмани

02.03.2016    14745    56    kraynev-navi    32    

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

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

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

1 стартмани

17.02.2016    46032    49    yuraos    17    

Яндекс.Деньги "Благотворительность"

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

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

1 стартмани

16.02.2016    21578    8    Tatitutu    5    

xUnitFor1C - набор инструментов для выполнения тестирования (модульного/юнит, приемочного, сценарного для 1С 8.3, интеграционного) в 1С:Предприятии 8

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

xUnitFor1C - простой и мощный фреймворк для тестирования в 1С. Позволяет тестировать в разных режимах обычное приложение, тонкий и толстый клиент управляемого приложения. Поддерживаются любые платформы 1С - от 8.2.17 до 8.3.5 и выше. Любые наборы тестов могут прогоняться в полностью автоматическом режиме. Автозапуск используется в различных build-серверах в системах Continuous Integration. Также возможно очень простое создание тестовых данных на основании табличных макетов. Эти макеты можно генерировать из реальных боевых данных. Полученные данные в тестах загружаются одной строкой кода. В статье я кратко описал историю продукта + вставил небольшое описание различных возможностей нашего фреймворка + список полезных статей/примеров/видео, обучающих/рассказывающих о практическом применении инструмента

13.11.2015    42834    0    artbear    45    

Интерфейс сопоставления объектов для обмена (для типового регистра СоответствиеОбъектовДляОбмена)

Инструментарий разработчика Универсальные обработки Перенос данных из 1C8 в 1C8 v8 КА1 БП2.0 ЗУП2.5 УТ10 УПП1 Абонемент ($m)

Вы внедряете обмен данными между двумя типовыми или основанными на типовых БД и вам необходим инструмент, чтобы сопоставить между собой справочники этих конфигураций? Вы хотите навести порядок в обмене данными, потому что вам надоело вылавливать дублирующиеся объекты? Вам очень хочется перепоручить сопоставление объектов обменивающихся баз пользователям, но нет подходящего и понятного пользователям интерфейса? Тогда вам нужна именно эта обработка!

4 стартмани

11.11.2015    37214    133    catsam    8    

Exec - Выполнение кода, консоль запросов и не только!

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

Незаменимый инструмент администратора БД и программиста: Выполняйте произвольный код из режима 1С Предприятие; сохраняйте/загружайте часто используемые скрипты; выполняйте запросы с замером производительности запроса в целом и каждой из временных таблиц в частности, а также с просмотром содержимого временных таблиц; произвольным образом изменяйте любые объекты БД, редактируя даже не вынесенные на формы реквизиты и записывая изменения в режиме "ОбменДанными.Загрузка = Истина"; легко узнавайте ИД объектов БД; выполняйте прямые запросы к SQL с замером производительности и не только!

5 стартмани

10.11.2015    39195    75    catsam    11    

Работа с push сервисами только средствами 1С 8.2

Сервисные утилиты Инструментарий разработчика Универсальные обработки v8 Абонемент ($m)

Обработка для настройки, тестирования и использования с предустановками для 3-х сервисов. Текст модуля для внедрения в конфигурацию или другие обработки. Уведомления на телефон, компьютер, браузер.

1 стартмани

18.08.2015    29327    43    anig99    1    

Универсальная учетная система с конструктором документов и справочников в режиме 1С: Предприятие

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

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

1 стартмани

29.07.2015    30062    87    informa1555    41