Pull to refresh

Comments 40

Я думал не доживу до этого дня (-:
alexey-lustin развейте мысль: отлично, что 1С становится более открытой или отлично, что они организуют свой процесс именно так, как организуют?
Раскрою. Разовью.

1. во первых компания 1С сдержала своё обещания данное в первых статьях рассказать о том как работают над платформой в самой компании 1С — у меня были предположения, что социальную активность с хорошим контентом могут заблокировать. Точнее сдержал обещание PeterG
2. во вторых — организация процесса: он строится как и положено… НО он строится как положено для С++ приложений. От него оторваны реальные сценарии использования.
3. в третьих — я вижу свой блоки ассертов написанный на 1С. Держу скрещенные пальцы и надеюсь, что авторам платформы это надоест и они встроят это как объект платформы и назовут его Assertions
Алексей, что именно должно надоесть авторам платформы?
Если ассерты легко реализуются имеющимися средствами языка, зачем они нужны как встроенный объект? В чем преимущества встроенного объекта?
Ну как минимум в борьбе за скорость — это как с функцией РазложитьСтрокуВМассивПодстрок — её можно реализовать средствами языка, но быстрей было бы сделать обертку над методом Split().

А как максимум в борьбе за стандартные подходы — мне сейчас известно о 4-ех публичных реализациях assertions на 1С, плюс я лично видел еще 5 непубличных. С одними и теми же проверками, только код разный.

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

Написали бы про развитие языка. Какие планы, чего можно ожидать, чего нет. Правдивы ли слухи о возможной поддержке другого языка (типа JavaScript) в платформе?
Да кстати — пользуясь случае делюсь 2-умя гарантировано НЕ успешными сценариями поведения всех платформ от 8.3.3 до 8.3.7 (для ERP 2.1, УТ 11.2, БП 3.0, ЗУП 3.0 и Документооборота последних версий)

Если уж мы говорим о том что тест лучше написать, чем не писать

Первый «Идемпонентность поведения функции /DumpCfgSrc»

&НаКлиенте
//Когда я выгружаю конфигурацию ERP 2.1 в первый каталог Source1
//@ЯВыгружаюКонфигурациюERP21ВПервыйКаталогSource1()
Процедура ЯВыгружаюКонфигурациюERP21ВПервыйКаталогSource1() Экспорт
	ЗапуститьКонфигураторВРежимеВыгрузкиКонфигурацииВФайлы("%ERPConnectionString%", "%WORKSPACE%\Temp\SourceERP1\")
КонецПроцедуры

&НаКлиенте
//И я выгружаю конфигурацию ERP 2.1 во второй каталог Source2
//@ЯВыгружаюКонфигурациюERP21ВоВторойКаталогSource2()
Процедура ЯВыгружаюКонфигурациюERP21ВоВторойКаталогSource2() Экспорт
	ЗапуститьКонфигураторВРежимеВыгрузкиКонфигурацииВФайлы("%ERPConnectionString%", "%WORKSPACE%\Temp\SourceERP2\")
КонецПроцедуры

&НаКлиенте
//Тогда каталоги Source1 и Source2 должны быть идентичны по составу и контенту внутри файлов
//@ТогдаКаталогиSource1ИSource2ДолжныБытьИдентичныПоСоставуИКонтентуВнутриФайлов()
Процедура ТогдаКаталогиSource1ИSource2ДолжныБытьИдентичныПоСоставуИКонтентуВнутриФайлов() Экспорт
	Vanessa.ПередатьНаПроверку("%WORKSPACE%\Temp\SourceERP1\","НеДолжныБытьРазличийМеждуКаталогами","%WORKSPACE%\Temp\SourceERP1\");
КонецПроцедуры



причина падения — перегенерация внутренних идентификаторов в СКД, Макетах печатных форм и т.д. Мы этот сценарий используем специально чтобы проверить когда проблема уйдет — а обходим через дополнительные фиксы получившейся выгрузки перед помещением в DCVS (режим 8.3.7 «выгрузка только измененных» также спасает, но там есть другие проблемы). То есть как выкрутиться мы знаем — но на всякий случай на каждой версии платформы прогоняем этот сценарий чтобы понять, когда починят.

Второй — «Идемопентность поведения функции /LoadCfgFromSrc»

тольке уже в формате Gherkin

Сценарий: Идентичность двух конфигурации загруженных из одного каталога исходников

Дано: Существует каталог ERP21Src с выгруженной последней версией ERP 2.1 через DumpCfgSrc

Когда: Создается файл firstERP21.cf на основе каталога ERP21Src через LoadCfgSrc

И Создается файл secondERP21.cf на основе каталога ERP21Src через LoadCfgSrc

Тогда Отчёт о сравнении двух конфигураций должен не показывать различий между firstERP21.cf и secondERP21.cf



Самое веселое, что если делать эти действия интерактивно через кнопки — то конфигурации будут идентичны. А не через командную строку — будут различия, причем в объектах типа Роль потеряются настройки прав доступа. Выкрутиться можно — загрузив конфигурацию повторно в уже загруженную.
Алексей, пришли пожалуйста описание ошибки на v8@1c.ru.
Уже давно там — всегда вначале регистрируем как и положено. Здесь я поделился именно сценариями и кодом шагов воспроизведения.
Алексей, спасибо что засабмитили это в саппорт! Мы делаем такие же тесты (только они записаны на powershell скриптах) с каждым новым релизом платформы. Мы делали большую видеозапись с демонстрацией тестов для саппорта 1С — а вы оказывается уже это сделали раньше.

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

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

Кстати, в ваших тестах на идемпотентность в 8.3.7 какой режим выгрузки вы тестируете? Линейный, иерархический или тестируете оба? Из приложенных тестов не ясно.
Эх… Виноват. Я поделился нашими подходами для проверки сценариев. А подумали что я хочу обсудить особенности использования конкретной функциональности.

Зря я написал что «падают» сценарии — тогда наши комментарии уйдут в обсуждение конкретных номеров тикетов. И кто-то подумает — что так правильно.

Тогда отвечу коротко — по конкретным ошибкам: обсуждения в тикетах. ;-). Номера я лучше потом в личке скину.

Поэтому коротко:

Проверка проводится и в 8.3.7.
Проверка проводится и в линейном и в иерархическому режиме.
Проверка пока числится на наших контурах в нестабильных сценариях — но это уже мы опишем в тикетах.

Кстати — вы правы: именно с 8.3.4.437 идут наши эксперименты с выгрузкой в файлы 8.3.4.437 (проверили по истории репозитория).

Что касается powershell — у нас так не получится: у нас очень много разработчиков используют клиентский Linux конфигуратор в режиме box'а с VNC. Поэтому мы создаём сценарии проверки на языке 1С.

Алексей, спасибо! Наверно я написал так, что был неправильно понят. Я не работаю в 1С, номера тикетов мне ничего не скажут.

Я работаю в компании, которая делает свою конфигурацию под внутренние нужды. Когда я прочитал в апреле на Зазеркалье о новой возможности выгрузки конфигурации в файлы — так же как и вы начал экспериментировать с внедрением DVCS в процесс разработки на 1С. И я провожу такие же тесты, как и вы, для каждого нового релиза платформы.

Поэтому мои вопросы направлены только на то, чтобы обменяться опытом: поделиться своим и узнать как там у вас, чтобы не набить шишек
Спасибо, также не думал, что доживу :)

Очень интересна внутренняя база тестирования (т.н. «интеграционные» тесты на языке 1С: Предприятия)
ИМХО подобная ИБ была бы интересна многим разработчикам
Вопрос — нет ли планов вывода этой ИБ в общую доступность? речь именно об ИБ и ее коде, без реальных тестов платформы и прочее.

Ничего не увидел о т.н. «сценарном» тестировании, добавленном в 8.3
PeterG можешь прояснить, как используете этот механизм для повышения качества?
Очень интересна внутренняя база тестирования (т.н. «интеграционные» тесты на языке 1С: Предприятия)
ИМХО подобная ИБ была бы интересна многим разработчикам
Вопрос — нет ли планов вывода этой ИБ в общую доступность?

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

Ничего не увидел о т.н. «сценарном» тестировании, добавленном в 8.3

Статья больше про тестирование платформы.
1С: Сценарное Тестирование — продукт для тестирования прикладных решений. Понятно, что тестируя прикладные решения, мы заодно тестируем и платформу, но первичной целью продукта это все же не является.
Да, мы широко используем 1С: Сценарное Тестирование для тестов типовых конфигураций. Планируем написать об этом в одной из следующих статей.
«Но самым эффективным из всех организационных мер оказывается подход, который в Microsoft называется «eat your own dogfood», при котором разработчики продукта оказываются первыми его пользователями. В нашем случае «продуктом» оказывается наш таск-трекер (упомянутая выше «База задач»), с которой разработчик работает в течение дня.»

Как я понял, почтовым клиентом 1с никто из разработчиков не пользуется.
Внутри 1С мы (несколько сотен пользователей) используем 1С: Документооборот (в том числе и мобильного клиента Документооборота) для работы с почтой (внешней и внутренней), календарем, задачами, для коллективной работы с файлами и т.п.
Одно расскажите – почему построение оборотно-сальдовой ведомости падало при включённом аппаратном ускорении видео? :)
Не все драйвера видеокарт одинаково полезны :-)
Есть более курьезные случаи… У одного товарища установка мощной видео карты на сервере значительно ускоряло работу сервера 1С: Предприятия. Правда потом выяснилось, что он поймал трояна, который считал биткоины (конечно же на CPU, при отсутствии видео карты), но осадочек остался… :-)
Выученные уроки

Какой ужасный англицизм.
Предлагаю «Былое и Думы»
По-русски это обычно называется просто «Выводы».
А в чём заключается ваша модификация Google Test?
Google Test модифицировался:
1. Из-за особенностей STL, который использует платформа
2. Для возможности тестирования dll и so компонентов из отдельного исполняемого файла — плеера тестов.
Ищете ли вы программистов (C++)?
Да!
Если есть заинтересованность — присылайте мне резюме на grip@1c.ru, я переправлю нашим кадровикам.
Как минимум второй пункт требуется не только вашей команде. Вы не думали о том, чтобы открыть исходники своего решения под какой-нибудь свободной лицензией?
А у меня от последнего релиза 8.3.7 сложилось впечатление, что у вас как раз плохо с тестированием и стабильностью. Перешли на него с 8.2.18 прельстившись встроенной работой с json. Сначала клиент 1с рандомно падал с невнятной ошибкой sql, исправили, поигравшись с вариантами совместимости по совету от таких же бедолаг. Остались непонятные глюки с зависающими фоновыми заданиями, например при отправке писем, которые невозможно снять не перегрузив сервер. Иногда вылазят непонятные ошибки при динамическом обновлении, каждый раз заставляющие покрываться холодным потом. И скорость обновления конфигурации упала, к примеру не установив блокировку невозможно провести обновление, пока 1с телится после сброса пользователей, люди уже успевают снова заходить.
В общем от последней 8.3 ощущение сырости, и много у кого на инфостарте такое же впечатление.
Читаешь и радуешься за людей. Все по современному — и статический анализ, и юнит-тестирование, и про Git они тоже знают. И ООП очевидно для них не тайна за семью печатями. Ребята — когда все это в нормальном виде внутри 1С платформы появится? Без безумных костылей и дополнительной группы 1С программистов для сопровождения и поддержки? А то, простите, но глядя на современные типовые конфигурации 1С меня постоянно терзают смутные сомнения что про ООП, git и прочее в 1С вообще не подозревают :-(
Дай-то бог… Но какой год на дворе и сколько еще воды утечет пока оно нормально в продакшене заработает?
Холиварная же тема, я думаю вы и так это знаете. Лет 12-14 эта тема муссируется.

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

Вот например git — скорее всего для Вас и для меня следующая строчка в документации не вызывает вопросов

git init ./my-repo
cd my-repo
git remote add https://github.com/me/repo


и Вы будете смеяться, но для 1С специалистов, мне пришлось расширить документацию и добавить в неё такое

echo "Эти строчки нужно выполнить в командной строке"
echo "Для открытия командной строки нажмите клавиши Win+R и введите cmd и нажмите Enter"
echo "Скопируйте этот текст и нажмите Enter в появившемся окне командной строки"
git init ./my-repo
cd my-repo
git remote add https://github.com/me/repo


и прежде чем вы скажете что 1С специалисты «тупые», я вам дам другой кейс — напомню 1С язык, это eDSL язык в моей терминологии, поэтому 1С специалисты умеют быстро автоматизировать например такое требование

«Необходимо чтобы при поступлении заказа покупателя, происходило автоматическое распределение заказа в задании на производстве»

и им на это не нужно техническое задание ;-)

Поэтому общее противоречие выглядит так например для ООП.

«В 1С нужно ООП, но нужно чтобы это было НЕ ООП, а функции ООП сохранялись»

Ну и так далее — дело в том, что главное, в погоне за крутыми плюшками git, code analise и т.д. не забыть и главное не испортить основную фишку 1С платформы — быстрая автоматизация бизнес-процессов.

Надеюсь я отразил свою мысль. Я тоже за крутые плюшки для 1С разработки, но так чтобы «это не мешало». Поэтому пока не появится грамотного ответа на вопрос «ООП в 1С необходимо чтобы что ?» (с) wizi4d, все это будет уделом для небольшого числа ведущих разработчиков в командах.

По нашей (СеребряноПульской аналитике) я могу Вам сказать — потенциал указанных Вами плюшек интересен максимум 2% процентам 1С специалистов из их общего числа на сегодняшний день. Если нам удастся сдвинуть его хотя бы до 5% — тогда возможно появиться обоснование для компании 1С в виде сценариев использования, и тогда из недр отдела разработки часть функционала будет портирована для разработчиков прикладных решений.

P.S. Я кстати с ООП в 1С работал, как еще некоторое количество человек — может кто не в курсе: есть такой веселый проект 1С++ называется, и есть там и наследование и классы и всё остальное. www.1cpp.ru/index.php/Main — правда для 1С 7.7 и там есть 2 проблемы «из практики»:

* учитывая «гиковость» ООП для 1С — очень сложно передать такое решение на поддержку и владение после его создания другим 1С разработчикам.
* в погоне за ООП большинство ведущих разработчиков забывала про автоматизацию и делала ООП ради ООП

Ну и кстати из последнего — если вам не хватает чего-то в 1С, сделайте это сами — вот например человек реализовал концепцию Java Beans на 1С и наверное счастлив. github.com/serp83/iisis.singlec.iis

Насчет холиварности согласен… И насчет программистов 1С — сейчас вписываю подчиненных в КПЭ xUnit с обещанием не дать годовую премию… Поэтому надежда только на сам 1С — в рамках борьбы с имиджем «глючной системы», массам это нафиг не нужно. Массы устраивает схема «фигак — фигак и в продакшен» с последующей почасовой оплатой исправления ошибок и поклонением «спасителю НДСа». А бизнес, которого достали постоянные проблемы с 1С, обычно зовет PM'а для исправления ситуации, а потом выгоняет его за «прессинг» все тех же «спасителей НДС», которым ни тестирование, ни правильная разработка не нужна.
Посему кроме самих 1С этого не сделает никто. Поэтому и пишу им :-)
PS
Sorry — наболело. Все эти аргументы слышу каждый день от 7 подчиненных одинэсников…
Напишите про организацию рабочего процесса при разработке конфигураций, например ERP 2. И как получается, что например в одном релизе происходит массовая замена (тысячи вызовов) СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку() на СтрШаблон(), а через месяц обратно.
Only those users with full accounts are able to leave comments. Log in, please.