Имя: Пароль:
1C
 
Мой метод тестирования расширений. Взлетит?
,
0 Гений 1С
 
гуру
15.08.22
10:13
В общем, в каждый общий модуль расширением добавляем функцию Тест()
Вызываем ее.
Смотрим потом, появились ли в журнале записи о несоответсвии параметров процедур расширения.
Я так понимаю, когда собирается модуль, проверяются ран-тайм все процедуры на соответствие параметров.

Еще бы сделать так без необходимости добавления Тест().

Также можно и во все модули доработанные добавлять.
1 СеменовСемен
 
15.08.22
10:13
Может все таки юнит тестирование?
2 Гений 1С
 
гуру
15.08.22
10:15
(1) дорого, для геев. я сторонник маскулинных дешевых и сердитых методов.
кстати, можно пробовать вызывать несуществующую процедуру из модуля, она по идее тоже должна рантайм модуль скомпилировать для проверки, есть там такая процедура или нет
3 СеменовСемен
 
15.08.22
10:16
(2) ну а как ты будешь запускать эту процедуру? А по всем модулям?
Так глядишь и свой запускатель тестов напишешь
4 Chai Nic
 
15.08.22
10:17
А поподробнее можно? Зачем сие действо? Что в результате мы хотим протестировать, и какой результат мы ждем в случае успеха и наоборот?
5 СеменовСемен
 
15.08.22
10:18
(4) Смоук тест на проверку количества параметров в расширяемых методах
6 Гений 1С
 
гуру
15.08.22
10:20
(3) все модули можно получить из метаданных, вроде как. не?
(4) Идея пришла после очередной ошибки: https://fixogram.ru/moyu-lyubov-k-1s-ne-peredat-slovami/
ты не в курсе, что супер-пупер проверка применимости расширений не умеет в количество методов процедур, не проверяет, а выдает такие ошибки только рантайм
7 СеменовСемен
 
15.08.22
10:21
(6) а как ты вообще обновляешь без тестов хотя бы открытия форм?
8 Гений 1С
 
гуру
15.08.22
10:23
(7) у меня клиент сам обновляется. там розница. Иногда потом пишет, если чего работать перестает. Но он сперва тестовую обновляет. гоняет ее немного. если че, сам пишет мне
9 Chai Nic
 
15.08.22
10:23
(5) Так проверка происходит между процедурой конфигурации и процедурой расширения. То есть, чтобы Тест() использовать, придется снимать замочек с конфигурации, и вписывать его туда. Чтобы потом выполнять проверку в расширениях на количество параметров. Или я не понял что-то?
10 Гений 1С
 
гуру
15.08.22
10:24
(7) я кстати, когда обновлял УТ (там мощное обновление) пробовал обработку, которая открывает все формы, но че-то она не работает удачно. Не помню уже, что не так
11 СеменовСемен
 
15.08.22
10:24
(8) зачем тогда Тебе чтото проверять?
12 Гений 1С
 
гуру
15.08.22
10:24
(9) ты не понял, Тест надо в расширение добавлять. Возможно, даже и не надо, если вызов несуществующей процедуры тоже прводит к компиляции модуля
13 Гений 1С
 
гуру
15.08.22
10:25
(11) потому что у меня не только этот клиент, есть те, где я сам тестирую
14 Гений 1С
 
гуру
15.08.22
10:25
бывает обновишь, основной функционал протестишь, сдашь, а потом где-нибудь это говнище вылезет
15 СеменовСемен
 
15.08.22
10:25
(13) зачем ты приаел тогда в пример этого кдиента?
16 Chai Nic
 
15.08.22
10:26
(12) Так на основании чего будут "записи о несоответсвии параметров процедур расширения"? Чему параметры будут несоответствовать?
17 Гений 1С
 
гуру
15.08.22
10:45
(15) потому что именно на этом клиенте у меня возникла эта идея.
18 PLUT
 
15.08.22
10:46
куры сдохли...
- очень жаль! у нас ещё столько идей есть!
19 Гений 1С
 
гуру
15.08.22
10:46
(16) ну например у тебя основная процедура:

Процедура Супер(А, Б) Экспорт
КонецПроцедуры

Ты написал расширение:
&После
Процедура Супер(А, Б) Экспорт
...
КонецПроцедуры

А тут 1С вуаля и добавила параметр:
Процедура Супер(А, Б, В) Экспорт
КонецПроцедуры

Проверка применимости пройдет, но рантайм выдаст ошибку. Йо?
20 MyNick
 
15.08.22
10:46
(0)
"В общем, в каждый общий модуль расширением добавляем функцию Тест()"
испанский стыд.


"Еще бы сделать так без необходимости добавления Тест()"
Для этого надо вылезти из своего "домика"
Признать, что ты совсем не гений, а изобретатель велосипедов с квадратными колесами.
С околонулевым знанием технологий.
Погугли наконец, как тестируют разработчики, которые совсем себя гениями и не считают.
21 Гений 1С
 
гуру
15.08.22
10:47
(20) о, моя любимая гуру-манипуляция.
22 Гений 1С
 
гуру
15.08.22
10:48
(20) к сожалению, 1с не позаботилась элементарным контролем синтаксиса расширений, выпустив недоделанную проверку применимости. Поэтому и только поэтому приходится дарить мой гений. Ты по моему путаешь тестирование и затычку для недоделанного синтаксического контроля.
23 MyNick
 
15.08.22
10:50
(22) 1С не доделала - давайте добавим во все функции вызов "Тест()" - доделали ))))) аахаха.
24 vde69
 
15.08.22
10:53
1. открываешь конфигуратор
2. открываешь глобальный поиск
3. забиваешь туда "АвтоТест"
4. смотришь результаты и много думаешь
25 Chai Nic
 
15.08.22
10:56
(19) Это понятно. Непонятно, что даст именно левая процедура Тест() в этом плане.
26 Гений 1С
 
гуру
15.08.22
11:01
(25) перечитай сабж и скажи, что именно тебе не понятно.
27 Гений 1С
 
гуру
15.08.22
11:01
(24) это другое
28 Chai Nic
 
15.08.22
11:02
(26)
"
в каждый общий модуль расширением добавляем функцию Тест()
Вызываем ее.
Смотрим потом, появились ли в журнале записи о несоответсвии параметров"
Что с чем будет несоответствовать, если в конфигурации этой процедуры Тест() нет?
29 vde69
 
15.08.22
11:13
(26) ну подумай немного как используется "АвтоТест" ?

собственно тестирование всех твоих поделок логично перевести на эту технологию (то есть открытие формы с уже загруженным расширением)
30 vde69
 
15.08.22
11:14
(29) +

которую вызываем после каждого обновления конфигурации
31 valerivp
 
15.08.22
11:17
(0) думаю процедуру добавлять не надо. Просто ее вызвать без добавления, в попытке
32 Garykom
 
гуру
15.08.22
11:51
(0) Хрень.

А вот чтобы 1С допилила в платформе для расширений выполнение специальной процедуры/функции внутри неприменившегося (или сбойного при вызове) расширения было бы неплохо.
33 Garykom
 
гуру
15.08.22
11:53
(32)+ Сейчас конфа без расширения продолжит работать.
Но в некоторых случаях надо это запретить.
34 2S
 
15.08.22
11:58
(0) Стараться отказаться от директивы &ИзменениеИКоонтроль.
35 2S
 
15.08.22
11:59
*от использования*
36 Garykom
 
гуру
15.08.22
12:03
(34) Он даже не начинал ее использовать :)
37 Smallrat
 
15.08.22
12:07
(34) а есть альтернатива?
38 lodger
 
15.08.22
12:18
(32) так добавили же, только надо подождать когда в прод выкатят версию платформы.
39 2S
 
15.08.22
12:31
(37) если не на замке и нет таких условий, то проще сопровождать изменения в основной базе. ИМХО.
40 Гений 1С
 
гуру
15.08.22
12:37
(38) так пока эта платформа у всех килиентов обновится..
41 Smallrat
 
15.08.22
12:42
(39) так то да, я сам против использования расширений везде и всюду, расширениями можно довести конфигурацию до неподдерживаемого состояния.
42 Гений 1С
 
гуру
15.08.22
12:50
(39) (41) вы просто ретрограды, сэры. Расширения - это стильно, модно, молодежно, не для старых пердунов.
43 Smallrat
 
15.08.22
13:00
(42) стиль, модно, молодежно, блеать..
https://i.ibb.co/K74MvfK/2022-08-15-125845.png
это еще полсписка
44 2S
 
15.08.22
13:03
(42) ну и ипись при каждом обновлении
45 Конструктор1С
 
15.08.22
13:05
(2) так ты и не умеешь в юнит-тестирование
46 Гений 1С
 
гуру
15.08.22
13:05
(44) мне за этот "секс" платят 2500 в час.
47 Гений 1С
 
гуру
15.08.22
13:06
(45) я много чего не умею и много чего умею, КЭП
48 Конструктор1С
 
15.08.22
13:09
(12) ты свой хениальные идеи хотя бы проверяй, прежде чем в эфир отправоять
49 Гений 1С
 
гуру
15.08.22
14:22
(48) зачем? это идея-вопрос. там же так и написано "Взлетит?"
50 СеменовСемен
 
15.08.22
14:24
(49) и что до сих пор не проверил идею?
51 2S
 
15.08.22
14:28
вопрос
52 lodger
 
15.08.22
14:46
(49) ну мы подождём, тут.
53 Garykom
 
гуру
15.08.22
14:48
(43) То что вместо нескольких патчей они хреначат их десятками и сотнями согласен изврат
54 Garykom
 
гуру
15.08.22
14:48
(53)+ Но они же разом удаляются перед обновлением
Так что пофиг
55 Smallrat
 
15.08.22
14:58
(54) я эту базу не обслуживаю, но вроде она регулярно обновляется, а список кмк все растет и растет.
56 Гений 1С
 
гуру
15.08.22
15:27
(53) ну можно было бы кумуллятивный патч, не?
просто там каждый патч пишет отдельный отдел, влом им объединять.
57 СеменовСемен
 
15.08.22
15:30
(56) куммулятивный патч - это новый релиз
58 Гений 1С
 
гуру
15.08.22
15:41
(57) не скажи, можно было бы и кумуль завести
59 lodger
 
15.08.22
15:54
(58) получится мега-расширение, которое забирает в себя половину конфы.
поддерживать это хоз-во затратно даже чисто по административным функциям.
поэтому для каждой царапки - свой патч = пластырь.
пофиксили = потушили расширение.
а чтобы вычленить и освободить ненужные уже объекты из кумулятивного расширения = умахаешься.
60 PLUT
 
15.08.22
16:08
(58) 1С недокрутила
61 Гений 1С
 
гуру
15.08.22
16:09
(59) а зачем? Новый релиз пришел - удаляем кумуль
62 СеменовСемен
 
15.08.22
16:14
(61) это нужно выделять человека, чтобы кумуль делал, потом тестировать его.
А на это денег нет
63 СеменовСемен
 
15.08.22
16:14
И все это для жизни кумуля ,в 2-3 недели
64 Гений 1С
 
гуру
15.08.22
17:40
(62) у 1с денег нет? шо?
65 Гений 1С
 
гуру
15.08.22
21:42
В общем, проверил, реально можно несуществующий метод модуля вызывать, все работае (как часы):
https://geniy1s.ru/metod-dopolnitelnoj-proverki-primenimosti-rasshirenij/
66 Chai Nic
 
16.08.22
07:31
То есть, в сухом остатке:

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

И незачем создавать лишние процедуры.
67 Конструктор1С
 
16.08.22
09:18
(58) разные ошибки могут фикситься разными релизами. Пока одни исправят, появятся новые. И превратится это расширение в вечное, обновляемое раз в неделю
68 Kassern
 
16.08.22
09:29
(65) осталось допилить обработку, чтобы она читала ЖР и выводила в каких именно процедурах есть косяк
69 Dmitrii
 
гуру
16.08.22
10:15
(43) Временные матчи - это один из тех немногих случаев, когда расширения - это именно то, что нужно. Вот прям идеальный вариант.

(53) >> То что вместо нескольких патчей они хреначат их десятками и сотнями согласен изврат.

Наоборот.
Нашли ошибку - сразу выпустили исправление. Быстро, оперативно, качественно.
А не ждём, когда каждый исправит ошибки и протестирует, потом кто-то соберёт это всё воедино. Для этого есть подготовка очередного релиза. Вот там все ошибки и будут исправлены скопом.
К тому же у пользователя появляется возможность не ставить все исправления, а ограничиться только теми, которые касаются используемого им функционала. Если у меня, например, нет алкашки и ЕГАИС, нафига мне ставить те пять (условно) исправлений, которые касаются этой подсистемы.

(56) >> ну можно было бы кумуллятивный патч, не?

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

>> просто там каждый патч пишет отдельный отдел, влом им объединять.

см.(57) куммулятивный патч - это новый релиз.
70 Гений 1С
 
гуру
16.08.22
13:03
(68) в ЖР этого нет, хотя там какая-то структура хранится, в пользовательском режиме не показывается, ее можно извлечь программно?
71 Kassern
 
16.08.22
13:05
(70) ЖР полностью можно отбирать и читать програмно
72 Kassern
 
16.08.22
13:06
В крайнем случае можно попробовать настроить ТЖ на регистрацию подобных ошибок. Запускать обработку, а потом читать текстовый файлик ТЖ
73 PLUT
 
16.08.22
13:13
(72) у Г1С обычно нет доступа к серверу, он юзверей из базы обычно выгоняет реструктуризацией БД
74 Kassern
 
16.08.22
13:18
(70) "хотя там какая-то структура хранится" - гляньте в отладке, что в этой структуре лежит, может как раз то, что надо.
75 Гений 1С
 
гуру
16.08.22
13:20
(71) (73) ЖР можно читать и без сервера.
(74) Вопрос в ЖР лежит именно структура или просто надпись "Структура", понимаешь. Если в ЖР лежит сериализованная структура, то хорошо.
Если нет, надо как-то читать окно "Информация для технической поддержки".
76 Kassern
 
16.08.22
13:22
(75) все в ваших руках, прочитайте програмно запись, где в данных структура и гляньте какого она типа.
77 СеменовСемен
 
16.08.22
13:23
(75) тип структура
78 PLUT
 
16.08.22
13:24
(75) Рекомендуется настроить технологический журнал платформы «1С:Предприятие 8» — это позволит проводить анализ проблем при работе системы и аварийных завершений. Журнал надо настроить:

● на всех рабочих серверах, указанных в консоли кластера «1С:Предприятие 8»;

● и на серверах, на которых выполняется модуль расширения веб-сервера «1С:Предприятия 8».
79 СеменовСемен
 
16.08.22
13:25
(78) тж тут совершенно излишне
80 PLUT
 
16.08.22
13:26
(79) речь про доступ Г1С на сервер и (73)

ну если не нужен ТЖ, да и хрен с ним. Аминь
81 Гений 1С
 
гуру
16.08.22
13:30
(78) это из пушки по воробьям. В принципе, если вы обновляете много конф, то да. Но для одной можно и ручками в окне для техспецов глянуть.
82 Гений 1С
 
гуру
16.08.22
13:30
(77) тогда печалька, в ЖР не увидите.
83 СеменовСемен
 
16.08.22
13:31
(82) там структура с полями при выгрузке ЖР. все поля видны
84 Kassern
 
16.08.22
13:31
(82) наоборот хорошо, что стуктура, а не строка. Из нее можно по ключам попробовать инфу выудить о ошибке.
85 Гений 1С
 
гуру
16.08.22
13:33
(84) в ЖР не структура, а информация о том, что в данные была передана структура, скорее всего.
86 Kassern
 
16.08.22
13:35
(85) откройте уже конфигуратор и сделайте простенький запрос к этой записи ЖР. Гляньте в отладке состав этой структуры
87 Kassern
 
16.08.22
13:36
смысл тут гадать
88 Гений 1С
 
гуру
16.08.22
14:02
(86) можно выгрузить ЖР в файл, как вариант
89 Kassern
 
16.08.22
14:04
(88) зачем, когда можно все сделать в рамках одной обработки? Вы ее запускаете, она пробегает по модулям и создает записи с ошибками. После ее пробежки в этой же обработке читаете записи ЖР, анализируете и выплевываете результат, мол все норм, или вот эти процедуры ковырни.
90 Kassern
 
16.08.22
14:05
Вы ж себя ориентируете как тру программиста, который все для народа, а заставляете даже себя ручками ошибки читать.
91 Гений 1С
 
гуру
16.08.22
14:06
(89) затем, что в ЖР нет описания ошибки применения. Прежде чем писать код, надо посмотреть что в ЖР хранится.
Там в структуре хранится почему-то тест.

    <v8e:Event>
        <v8e:Level>Error</v8e:Level>
        <v8e:Date>2022-08-15T21:12:16</v8e:Date>
        <v8e:ApplicationName>BackgroundJob</v8e:ApplicationName>
        <v8e:ApplicationPresentation>Фоновое задание</v8e:ApplicationPresentation>
        <v8e:Event>_$InfoBase$_.DBConfigExtensionUpdateError</v8e:Event>
        <v8e:EventPresentation>Информационная база. Ошибка изменения расширения конфигурации базы данных</v8e:EventPresentation>
        <v8e:User>00000000-0000-0000-0000-000000000000</v8e:User>
        <v8e:UserName/>
        <v8e:Computer/>
        <v8e:Metadata/>
        <v8e:MetadataPresentation/>
        <v8e:Comment/>
        <v8e:Data>
            <v8e:Name xsi:type="xs:string">тест</v8e:Name>
            <v8e:Версия xsi:type="xs:string"/>
        </v8e:Data>
        <v8e:DataPresentation/>
        <v8e:TransactionStatus>NotApplicable</v8e:TransactionStatus>
        <v8e:TransactionID/>
        <v8e:Connection>7</v8e:Connection>
        <v8e:Session>12760</v8e:Session>
        <v8e:ServerName/>
        <v8e:Port>0</v8e:Port>
        <v8e:SyncPort>0</v8e:SyncPort>
    </v8e:Event>

Спасибо господам из 1С за высокое качество диагностики, все как обычно, привычно.
92 Гений 1С
 
гуру
16.08.22
14:06
(90) так неоткуда читать. Если скажете откуда, читанем
93 Kassern
 
16.08.22
14:08
(91) <v8e:Data>
            <v8e:Name xsi:type="xs:string">тест</v8e:Name>
            <v8e:Версия xsi:type="xs:string"/>
        </v8e:Data>
Прикольно. Тогда ТЖ попробовать настроить
94 Kassern
 
16.08.22
14:08
Его же можно через обработку официальную включить и настроить
95 PLUT
 
16.08.22
14:09
(93) это жЫ из пушки по воробьям

1С недокрутила © Г1С

всё как обычно, привычно
96 Гений 1С
 
гуру
16.08.22
14:12
(93) нет уж, ТЖ это из пушки по воробьям. Разработчику проще ошики посмотреть в "о программе", чем ставить ТЖ.
97 Гений 1С
 
гуру
16.08.22
14:20
кстати, Конструктор 1С, ты внес в копилку программистов 1С что-нибудь полезное типа этой методики? ггг
Поэтому я Гений.
98 Kassern
 
16.08.22
14:21
(96) быстро вы сдались...
99 Гений 1С
 
гуру
16.08.22
16:44
(98) мне можно. я сперва победил, после этого и сдаться не грешно. Я не перфекционист
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс