Написание простой обработки через тестирование

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

Разработка - Практика программирования

TDD тестирование

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

Хочу выразить благодарность за статью so-quest . Именно она оказалась необходимым толчком для изучения xUnitFor1C, о работе с  которым и пойдет речь ниже.

А так-же разработчикам xUnitFor1C за замечательный набор инструментов.

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

xUnitFor1C это набор внешних обработок 1с, облегчающих, а главное, упорядочивающих тестирование. В этой статье будет использоваться только xddTestRunner.epf (тестов выполнятель).

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

Готовим окружение. 

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

Перем ЮТест; // ссылка на экземпляр фреймворка xUnitFor1C - объект обработки UnitTestRunner

Перем ОбработкаОбъект;
Перем ИмяФайлаВнешнейОбработки;

Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт

    	ЮТест = ЮнитТестирование;

    	ВсеТесты = Новый Массив;

    	ВсеТесты.Добавить("ТестДолжен_СложитьДваИДва");

    Возврат ВсеТесты;

КонецФункции

Процедура ПередЗапускомТеста() Экспорт
	ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяФайлаВнешнейОбработки);
	НачатьТранзакцию();
КонецПроцедуры

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

Процедура ТестДолжен_СложитьДваИДва() Экспорт
    ЮТест.ПроверитьРавенство(2 + 2, 5, "2 + 2, 4");
КонецПроцедуры

/////////////////////////////////////////////////////////
//Здесь будем писать наши тесты

 
ИмяФайлаВнешнейОбработки = "E:\todo1c\develop\epf\todo1c.epf";

Запускаем xddTestRunner.epf. Для меня интерфейс оказался неожиданно дружелюбным. Загружаем тесты из каталога. Проверяем. Должен появиться один тест. Тест должен провалиться. Исправляем тест.

 ЮТест.ПроверитьРавенство(2 + 2, 4, "2 + 2, 4"); // ошибка исправлена

Теперь тест должен пройти успешно.

Цикл разработки.

1) Создаем неработающий тест

Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт

    	...
    	ВсеТесты.Добавить("ТестДолжен_ДобавитьЗадачу");
        ...
    
КонецФункции
Процедура ТестДолжен_ДобавитьЗадачу() Экспорт
	
    ОбработкаОбъект.ДобавитьЗадачу("Пройти первый тест");	
    
    ЮТест.ПроверитьРавенство(ОбработкаОбъект.СписокЗадач.Количество(), 1, "Задача не добавлена");
	
КонецПроцедуры

Перезагружаем список тестов, проверяем тестов теперь 2 и второй провалился.

2) Делаем ровно столько, чтобы тест прошел успешно.

Содаем табличную часть в обработке с полями "выполнена" и "текст".

Добавляем в модуль

Процедура ДобавитьЗадачу(ТекстЗадачи) Экспорт
	
	НоваяЗадача = СписокЗадач.Добавить();
	НоваяЗадача.Выполнена = Ложь;
	НоваяЗадача.Текст = ТекстЗадачи;
	
КонецПроцедуры

Проверяем, что тест прошел.

3) Рефакторинг.

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

Согласно TDD шаги 1,2,3 постоянно повторяются, причем длительность итерации должна быть как можно меньше. 

Независимость тестов.

Для обеспечения независимости предусмотрены следующие процедуры:

Процедура ПередЗапускомТеста() Экспорт
	ОбработкаОбъект = ВнешниеОбработки.Создать(ИмяФайлаВнешнейОбработки);
	НачатьТранзакцию();
КонецПроцедуры

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

При необходимости повторить...

1) Тест

Процедура ТестДолжен_ВыполнитьЗадачу() Экспорт
	
    ОбработкаОбъект.ДобавитьЗадачу("Пройти второй тест");	
    ЮТест.ПроверитьРавенство(ОбработкаОбъект.СписокЗадач[0].Выполнена, Ложь, "Задача создана выполненной");
    ОбработкаОбъект.ВыполнитьЗадачу(0);	
    ЮТест.ПроверитьРавенство(ОбработкаОбъект.СписокЗадач[0].Выполнена, Истина, "Задача не выполнена");
	
КонецПроцедуры

2) Реализация

Процедура ВыполнитьЗадачу(ИндексЗадачи) Экспорт
	
	СписокЗадач[ИндексЗадачи].Выполнена = Истина;
	
КонецПроцедуры

При необходимости повторить снова..

Полностью процесс написания можно посмотреть по коммитам в репозитории на github 

https://github.com/Alienjob/todo1c/commits/master

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

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

P.S.: Кто здесь?

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

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

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

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

.7z 41,51Kb
24.02.15
18
.7z 41,51Kb 18 Скачать

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

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Evil Beaver 6855 24.02.15 10:14 Сейчас в теме
кто-то уже применяет эти подходы (раз кто-то написал xddTestRunner)

Мы применяем и наблюдаем положительный эффект.
3. Alien_job 177 24.02.15 10:27 Сейчас в теме +116 $m
(1) Evil Beaver, А как вы тестируете отчеты (табличные документы)? Если я рисую табличный документ заранее то он отличается от уже признаком "макет" и отсутствием имен полей. В конце концов я пришел к тому что сначала добиваюсь правильного внешнего вида отчета, сохраняю его в файл и загружаю файл в макет. В результате малейшее изменение требований (изменить формат даты в заголовке) приведет к падению всех тестов.
2. Xershi 1031 24.02.15 10:22 Сейчас в теме
Эта работа с тестами нужна чтобы выявить косяки разработки?
5. Alien_job 177 24.02.15 10:31 Сейчас в теме
(2) Xershi, работа с тестами конечно занимает время - но это время окупается сразу за счет отладки (при таком подходе отладка не нужна). Плюс на выходе получается код покрытый тестами, который проще сопровождать.
9. awk 722 24.02.15 11:37 Сейчас в теме
(5) Дешево, быстро, качественно - выбирай любые два.
4. artbear 1199 24.02.15 10:29 Сейчас в теме
Молодец, что юзаешь наш продукт xUnitFor1C.спасибо за статью.
Только почему не указываешь прямую ссылку на проект?
И почему мало о нем знаешь? :)
есть сообщество, есть пользователи, есть разработчики, в тч и я, который фактически productOwner продукта.
есть много многолетнего опыта в тестировании для 1С
6. Alien_job 177 24.02.15 11:01 Сейчас в теме +1 $m
(4) artbear, ссылку на проект указал. Сообщество (обсуждения) не нашел. Прочитал вики на сайте проекта. Пожалуй эта вся информация которую я смог найти. Не нашел сквозных примеров использования а без них мне непонятно как этим всем пользоваться.
7. artbear 1199 24.02.15 11:30 Сейчас в теме
(6) По тестированию и ТДД есть мое старое выступление с Инфостарт 2012 - статья http://infostart.ru/public/326820
Также есть видео-обучение от Алексея Лустина и Евгения Павлюка http://infostart.ru/public/328695/
Также есть мое выступление с Инфостарт 2013 - где я рассказываю про xUnitFor1C
Примеры есть в самом репозитарии.
Конечно, я соглашусь, что информации маловато и нужно больше популяризовать.
lenna1c; endym; theshadowco; Alien_job; +4 Ответить
32. for_sale 816 03.07.18 19:31 Сейчас в теме
(7)
Добрый день!

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

У меня вопрос - правильно ли я понимаю, что данный проект реализует только тест кода? И никаких возможностей тестировать интерфейс (открыл форму, выбрал значение, щёлкнул по кнопке), кроме коллекции глюков от 1С под названием Автотестирование, нет?
33. Alien_job 177 04.07.18 09:13 Сейчас в теме
(32) Есть, раньше называлась vanessa-behavior
Насколько я понимаю, актуальная версия разрабатывается тут https://github.com/silverbulleters/add
Простой способ её получить:
- установить onescript
- выполнить в консоли opm install add
В каталоге библиотеки будет файл bddRunner.epf, его открыть в 1С в режиме предприятия, в нем открыть справку.
artbear; for_sale; +2 Ответить
35. artbear 1199 17.07.18 13:49 Сейчас в теме
(33) (32) Да, проверка поведения системы для управляемого приложения есть в https://github.com/silverbulleters/add

очень развитые возможности по тестированию интерфейса.
11. ZhokhovM 407 24.02.15 12:23 Сейчас в теме
(6) я тоже не нашел примеров. У меня свои наработки: Универсальное тестирование конфигурации (обычные и управляемые формы). Часть 1. Скоро выйдет в свет новая часть.
12. Alien_job 177 24.02.15 13:07 Сейчас в теме
(11) ZhokhovM, из описания не понятно можно ли вашей обработкой тестировать внешние обработки. У xUnitFor1C есть тесты_ОткрытиеФормКонфигурации.epf - формирует тесты на открытие всех форм и если в конфигурации есть синтаксические ошибки то часть тестов упадет. Правда на УПП 1.3 в лоб использовать её у меня не получилось - многие формы "не предназначены для открытия" =)
Примеры "нашлись" https://github.com/xDrivenDevelopment/xUnitFor1C/tree/develop/Tests/CommonA­pp .
13. pumbaE 639 24.02.15 13:19 Сейчас в теме
14. ZhokhovM 407 24.02.15 14:00 Сейчас в теме
(12) я исключаю формы или предупреждения с помощью cmdow, а так моя публикация проверяет формы: получает объекты форм и открывает форму. А ошибки я копирую из окошка "Информация для технической поддержки", т.к. там показывают полные ошибки чем ошибки в ЖР.
16. artbear 1199 24.02.15 14:11 Сейчас в теме
(11) Ты там схитрил и удалил старые и полезные комментарии :(

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

были и еще замечания, но ты их потер :(
17. ZhokhovM 407 24.02.15 15:12 Сейчас в теме
(16) artbear, нет, там были ошибки в редактировании публикации после отказа заключения договора с отделом продаж, поэтому я её удалил и перенес всю информацию на новую, меня просто не устраивал стартмани 1$m.
19. ZhokhovM 407 27.02.15 12:36 Сейчас в теме
(16) artbear, пока я изучу тесты и реализаций Тесты_ОткрытиеФормКонфигурации.epf и возможно у себя переделаю.
8. artbear 1199 24.02.15 11:33 Сейчас в теме
(0) На мисте я периодически отвечаю на темы по тестированию
Например, http://www.forum.mista.ru/topic.php?id=730184 или http://www.forum.mista.ru/topic.php?id=710900

(6) Что такое "сквозной пример использования" ?
Еще какие вопросы есть?
Пиши вопросы по тестированию.
Готов ответить.

Можно в личку hangouts "aartbear@gmail.com" или skype "aartbear"
10. Alien_job 177 24.02.15 11:47 Сейчас в теме
(8) artbear, возможно после просмотра видео вопросов станет меньше. Сквозной пример - статья в которой демонстрируется написание обработки через тестирование. С использованием всех возможностей xUnitFor1C и с освещением типовых задач тестирования (модули, формы, отчеты, обмены, ...).
15. artbear 1199 24.02.15 14:03 Сейчас в теме
(10) 1. К сожалению, Это слишком общая формулировка примера. описание будет слишком длинным и специализированным к конкретной конфигурации и задаче, и наверняка будет много лишних деталей, неинтересных читателям.
2. можно тестировать не отдельно модули, формы, отчеты, обмена, а делать тесты в целом под задачу. часто это бывает проще и эффективнее. Это разделение на юнит-тесты и на приемочные тесты.
18. Pr-Mex 128 25.02.15 14:18 Сейчас в теме
(8) artbear, люди хотят больше реальных примеров.
Помнишь тему, чтобы сделать примером разработки через тестирование на типовых конфах?

От себя добавлю, что тоже использую xUnitFor1C в повседневной разработке.
Наша команда разрабатывает конфу, которой уже 7 лет. И только недавно перешли на разработку через тесты. По полной столкнулись с проблемами рефакторинга, легаси кода и т.д.
Итого - бояться тут нечего. Всё решаемо. Билд сервер крутится, отчет о прохождении тестов приходит.
20. magnetto72 23.03.15 14:35 Сейчас в теме
Большое спасибо за статью, позволяющую быстро понять как освоить технику и инструмент.
Подскажите, пожалуйста, каким образом, можно написать тест на процедуру проведения документа? Ведь в ней могут вызываться другие связанные функции и процедуры.
Можно ли где-то посмотреть пример тестирования кода проведения документов?

Подскажите существует ли форум где можно задавать вопросы, обсуждать приемы использования xUnitFor1C?
21. Alien_job 177 24.03.15 07:18 Сейчас в теме
(20) gorokhov.vladislav, полагаю нужно после проведения получить коллекцию движений документа и сравнить её с эталоном.
форум где можно задавать вопросы, обсуждать приемы использования xUnitFor1C

почему бы не инфостарт?
пример тестирования

https://github.com/xDrivenDevelopment/xUnitFor1C/tree/develop/Tests/CommonA­­pp , других нет
22. magnetto72 24.03.15 08:06 Сейчас в теме
(21)
Спасибо за ответ. Я не могу понять как создать/зафиксировать эталон движений, где он должен сохраниться.
При тестировании отчета формирую его, создаю макет "Эталон", копирую в него табличный документ, получаю эталон с правильным результатами.
В "1С:Сценарное тестирование" для этого есть специальное действие "Сравнить движение документа с эталоном", которое снимает "слепок" с эталонной базы, сохраняет все значения в сценарий и затем при прогоне сверяет с тем, что получилось.

А как зафиксировать эталон для движений в xUnitFor1C?
23. Alien_job 177 24.03.15 09:25 Сейчас в теме
(22) magnetto72,
у "Генерация макета на базе реальных данных для xUnitFor1C" есть "СоздатьМакетДанныхНаОснованииЗапроса". Думаю можно выбрать запросом движения документа, создать макет, сохранить его как эталон. В тесте создавать макет на основании запроса и сверять с эталоном.
25. artbear 1199 25.03.15 16:51 Сейчас в теме
(22) Ответил в комментах к моей статье.
24. artbear 1199 25.03.15 16:39 Сейчас в теме
(20) gorokhov.vladislav,
По xUnitFor1C предложение и обсуждение удобнее всего вести в одном из 2 вариантах:
1. Можно на Инфостарте в комментах к моей статье http://infostart.ru/public/326820/ (Методики и механизмы разработки/тестирования в 1С)
или
2. Можно на Гитхабе https://github.com/xDrivenDevelopment/xUnitFor1C/issues
26. strizhhh 20.02.17 16:04 Сейчас в теме
Было бы неплохо поработать над документацией, так как инструмент добротный, а вот порог вхождения для пользователей такой, что нужно код читать, чтобы понять как этим пользоваться.
klinval; ivanov660; +2 Ответить
27. leemuar 21.02.17 14:57 Сейчас в теме
(26) Задача такая есть. Подключитесь, помогите с этим
28. ivanov660 2317 28.02.17 17:27 Сейчас в теме
(26) Соглашусь с коллегой.
У нас появилась задача интеграции в наш механизм тестирования юнит тестов автора. Вот с написанием и особенно отладкой тестов что-то не совсем заладилось.
Простой тест 2+2<>4 написали без проблем, а вот реальный тест проверки формирования по входным документам набора выходных документов пока тяжко.
29. strizhhh 28.02.17 18:18 Сейчас в теме
(28) Насколько я понимаю, авторы (команда разработчиков) внедряют решения с помощью этих своих разработках за деньги (что логично и понятно), поэтому ждать понятной "для любителя" документации, думаю, не стоит.
30. artbear 1199 02.03.17 10:04 Сейчас в теме
(29) Не совсем так.
С документацией всегда сложно, разработчики ее не любят делать :)
Тут процесс итерационный, документация набирается постепенно.
пробовали на Вики проекта xUnitFor1C заходить, там накоплено много информации
Вики xUnitFor1C
31. strizhhh 02.03.17 10:34 Сейчас в теме
(30) Лично я заходил и некоторая информация мне оттуда помогла, бесспорно. Но там много устаревшей и не актуальной информации. Да и утверждение моё о документации было связано с порогом вхождения: я два дня потратил чтобы найти, вычленить нужную мне часть, отбросить лишнее (устаревшее и нерабочее) и прийти к выводу, что времени только на понятие и практику применения ушло в десятки раз больше, чем на другие инструменты. Конечно, я не отрицаю того факта, что я просто тупой.

Не хватает также демонстрации реальной (боевой) практики применения инструмента на реальных проектах. Что закрыло бы много вопросов, как мне кажется.
kabanoff; +1 Ответить
36. artbear 1199 17.07.18 13:57 Сейчас в теме
(31) Мы бы не развивали продукты, которые не используются.

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

По практике применения - у нас большинство примеров как раз основано на реальном применении.

Из последних - посмотри описание доклада Глеба Стального (ПервыйБит) для Инфостарт 2018 https://event.infostart.ru/2018/agenda/
Его команда активно запустила набор инженерных практик.

Тема «Как запустить 1С:ERP 2 на тысячу пользователей и не написать ни одной страницы ТЗ?»

В рамках доклада расскажу о процессе и результатах перехода 3 scrum-команд на использование современных инженерных практик (разработка через поведение, ночные сборки, непрерывный анализ качества кода) на проектах 1С.
- Почему мы всегда готовим EPC-диаграммы, и как они помогают нам проектировать не только систему, но и все интеграции (да, мы на проектах, как правило, используем RabbitMQ);
- Как мы разрабатываем фичи (BDD), как структурируем, чтобы сохранить читаемость на больших проектах (когда BDD-сценарии занимают 10 тысяч строк) и как мы смогли отказаться от постановок задач в других форматах (кроме задач по обмену, там xsd);
- Зачем гит консультанту;
Рассмотрю полный цикл работ на примерах конкретных проектов. Также покажу какие инструменты и как мы используем (Slack, Zoom, Jira, Confluence, JSD, Bitbucket, Vanessa Behavior, Jenkins, SonarQube, Allure и т.п.)
37. artbear 1199 17.07.18 14:00 Сейчас в теме
(31)
Не хватает также демонстрации реальной (боевой) практики применения инструмента на реальных проектах. Что закрыло бы много вопросов, как мне кажется.


Расскажи, какой именно демонстрации тебе не хватает.
Каких примеров не хватает?

Как я уже писал, хорошей документации всегда не хватает.

Мы открыты любым предложениям по улучшению наших бесплатных и открытых продуктов
38. strizhhh 17.07.18 16:28 Сейчас в теме
(37) Между сообщениями год. TDD и CI активно используются в промышленных форматах. :)
39. artbear 1199 19.07.18 11:30 Сейчас в теме
(38) Твое сообщение пропущено, т.к. оно не находится в официальных каналах общения :(
и его тупо не заметили.

как раз при промышленных масштабах нет времени изучать все источники, хватает и официальных.
34. hawk911 05.07.18 12:10 Сейчас в теме
Добрый день.
Появился новый проект VA (Vanessa-Automation).
Скачивать тут
P.S. Добро пожаловать!
40. flashdancer 07.12.18 16:07 Сейчас в теме +3 $m
Спасибо огромное за такое пояснение!!! Все понятно и одновременно ничего лишнего!
Мне очень помогло!
Оставьте свое сообщение

См. также

Вам нравятся запросы в 1С? Промо

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

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

1 стартмани

03.07.2019    20486    4    m-rv    86    

Интерактивная справка по объектам 1С (автономное расширение)

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

База знаний, подключаемая к объектам основной базы. Ведётся интерактивно, формируется в виде статей прямо в 1С (текст, картинки, таблицы, ссылки). Есть возможность прикрепления файлов, привязки к объектам 1С, возможности рейтинга и комментирования пользователями.

3 стартмани

29.09.2020    5704    27    sapervodichka    30    

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

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

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

3 стартмани

04.09.2019    24496    22    Stepa86    45    

Алгоритмы поиска пути в графе

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

Реализуем алгоритмы поиска пути в графе на платформе 1С 8.3, такие как алгоритм А*, поиск в ширину, жадный поиск, алгоритм Дейкстры и вконце волновой.

1 стартмани

09.07.2019    17514    11    RonX01    10    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") Промо

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

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    30377    86    m-rv    57    

Работа с публикациями "Инфостарт"

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    21696    13    RocKeR_13    16    

HTTP Сервисы: Путь к своему сервису. Часть 3

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

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 2». В предыдущих частях мы использовали только Get, в этой части поговорим о других методах и длительных операциях.

1 стартмани

27.08.2018    37241    54    dsdred    15    

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

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

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

5 стартмани

09.08.2018    28070    26    informa1555    26    

Заполняем по шаблону (по умолчанию) Промо

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

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

1 стартмани

08.02.2018    28221    19    mvxyz    17    

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

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

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

1 стартмани

17.07.2018    47255    17    kalyaka    16    

Полезные примеры составления схемы компоновки данных #2

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    30804    11    SITR-utyos    13    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    27017    53    kwazi    6    

Нечеткий поиск одним запросом Промо

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

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

1 стартмани

28.12.2015    27690    70    vasvl123    9    

Паузы при исполнении кода (Sleep для 1С)

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

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

1 стартмани

28.11.2017    45194    12    swimdog    41    

Telegram-боты

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

Описание теории, разбор архитектуры и пример реализации telegram-ботов. Сразу скажу, со структурированием изложения мало что могу поделать. :) редакция от 18.07.2018 Правки последней редакции выделены жирным.

1 стартмани

01.09.2017    32430    132    PLAstic    59    

Умный дом на 1С + ардуино

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

Конфигурация для автоматизации быта программиста 1C и не только. В данной статье будет рассказано, как можно использовать 1С для задач, не входящих в стандартные рамки этой платформы. Например, управление домом. В качестве периферии для подключения будет использован микроконтроллер (МК) Ардуино, но на нём не будет никакой логической нагрузки, весь процесс будет проходить на сервере 1С. Работа с пинами ввода/вывода происходит напрямую из 1С.

1 стартмани

07.08.2017    22724    21    sasha777666    63    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут Промо

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

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

1 стартмани

14.08.2016    48082    36    Demanoidos    60    

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

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

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

1 стартмани

30.05.2017    129081    13    signum2009    48    

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

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

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

1 стартмани

13.03.2017    31375    112    romasna    49    

Распознавание текста с помощью нейросетей Google Cloud Vision и 1С

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

Возможности Google Cloud Vision в распознавании текста.

1 стартмани

08.02.2017    29106    125    kiv1c    18    

Определение кратчайших путей, критических путей одним запросом Промо

Математика и алгоритмы v8 1cv8.cf Абонемент ($m)

Еще два примера применения алгоритма каскадного матричного умножения, впервые описанного в статье «Транзитивное замыкание запросом» http://infostart.ru/public/158512/

1 стартмани

07.04.2014    37637    22    ildarovich    31    

Графическая схема. Управление при помощи XDTO.

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

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

2 стартмани

16.01.2017    22206    105    Alxby    23    

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

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

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

1 стартмани

23.11.2016    21019    94    igel9780    22    

Работа с двоичными данными на примере чтения файлов изображений. Новые возможности 8.3.9

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

В статье приводятся новые функции по работе с двоичными данными, появившимися в версии платформы 8.3.9 , на примере анализа формата и размера изображений. А также пример отправки изображения через API ВКонтакте с помощью новых объектов (без использования ОбъединитьФайлы())

1 стартмани

14.11.2016    25750    16    Anton64    22    

Быстрое определение интервалов в запросе Промо

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

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    51419    35    ildarovich    41    

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

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

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

1 стартмани

03.10.2016    36621    95    json    25    

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

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

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

2 стартмани

30.08.2016    26736    135    Stepa86    15    

Недокументированное использование стандартных форм Upd.

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

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

1 стартмани

26.07.2016    28202    76    ZhokhovM    60    

Хранение файлов в томах на диске (для УПП 1.3)

Практика программирования v8 УПП1 Абонемент ($m)

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    57288    10    wowik    32    

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

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

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

1 стартмани

18.05.2016    61340    178    rozer    65    

Остатки на каждый день в запросе

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

Запрос формирует остатки товаров на каждый день в пределах выбранного периода.

1 стартмани

26.04.2016    58389    19    arakelyan    18    

Еще один способ расчета остатков на каждый день в запросе

Математика и алгоритмы Практика программирования v8 Абонемент ($m)

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

1 стартмани

24.04.2016    34480    48    ildarovich    23    

Выполнение JavaScript кода из 1С в объекте Поле HTML Документа (HTML 5) и вызов события в 1С ПриНажатии

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

Пример выполнения JS кода из 1С в Поле HTML Документа под управляемыми формами, с удобным получением результата в 1С(С помощью вызова привязанного события ПриНажатии к элементу ПолеHTMLДокумента)

1 стартмани

22.03.2016    80874    158    igo1    54    

Количество дней недели (понедельников/вторников/...) в заданном диапазоне одним запросом

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

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

1 стартмани

03.03.2016    18244    1    Alexander.Shvets    5    

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

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

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

1 стартмани

17.02.2016    49830    50    yuraos    17    

Отображение прогресса выполнения длительных операций в БСП и их отладка в текущем сеансе.

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

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

1 стартмани

17.02.2016    54895    178    balanton    23    

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

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

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

1 стартмани

16.02.2016    23245    8    Tatitutu    5    

Мастер рассылки e-mail 2.2 для управляемых форм

Практика программирования Email v8 v8::УФ ERP2 БП3.0 УТ11 Абонемент ($m)

Для пользователей: переделанный из старый разработки под 8.2 с использованием библиотеки Мастер рассылки e-mail 2.2 (ERP, УТ, БП) (Только управляемые формы), который теперь может запускаться под любой версией платформы с разрешенными или запрещенными модальными/синхронными вызовами в конфигурации. Также удобный выбор e-mail и их владельцев с помощью отбора динамического списка по любым критериям и галочки исключения.

1 стартмани

29.12.2015    37011    20    milkers    4    

Передача больших пакетов через веб-сервисы

Практика программирования Администрирование данных 1С Внешние источники данных v8 Абонемент ($m)

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

1 стартмани

06.12.2015    56780    48    YPermitin    19    

Пример связи 1С и мессенджера Telegram. Получение данных из 1С запросом из Telegram

Практика программирования Внешние источники данных v8 1cv8.cf Абонемент ($m)

В результате чтения публикации Вы получите готовую внешнюю обработку, позволяющую получать из 1С данные, запрашиваемые через Telegram. В данной статье рассмотрим следующее: Использование HTTPСоединение; Чтение JSON для версии 1С 8.3.6 и выше, а также аналог JSON для версии 1С ниже 8.3.6; Подключение обработчика ожидания; Некоторые основные возможности API Telegram; Как создать бота для Telegram; Программное создание колонок дерева на управляемой форме;

1 стартмани

19.11.2015    92770    459    Luchik    205    

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    44358    artbear    45