Своя функция &Вместо &ИзменениеИКонтроль

Публикация № 1454444 06.06.21

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

Расширение контроль Вместо ИзменениеИКонтроль

Как добавить контроль в расширения, если не доверяешь аннотации &ИзменениеИКонтроль.

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

Так, например, пресс-релиз многие воспринимают буквально. Мол, действительно, начиная с платформы 8.3.15.x, появилась возможность безопасно использовать в расширениях аннотацию &ИзменениеИКонтроль. Реальность же способна разочаровать неосторожного программиста и навсегда перевести его в категорию людей, первые N лет не пользующихся новинками.

Предлагаю внести ясность.

Во-первых, никаких конструкций #Вставить, #КонецВставить, #Удалить и #КонецУдалить, упомянутых на 1c.ru, разумеется, не существует. Вместо них платформа понимает: #Вставка, #КонецВставки, #Удаление и #КонецУдаления. Это настолько очевидно, что даже щепетильная 1С считает избыточным грузить посетителей своего сайта такими детальными подробностями.

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

В-третьих, я с подозрением отношусь к новинкам от 1С в первые несколько лет.

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

Где-нибудь в общем модуле можно определить функцию, выполняющуюся &НаСервере:

Функция СравнениеСВерсиейКонфигурации(МестоВызова, ВерсияМодуля, ВызыватьИсключение=Истина) Экспорт
    // Функция для контроля на соответствие кода в расширениях текущему релизу конфигурации.
    // Подробнее: //infostart.ru/1c/articles/1454444/

    ВерсияКонфигурации = Метаданные.Версия;
    Если ВерсияМодуля <> ВерсияКонфигурации Тогда
        Если ВызыватьИсключение Тогда
            ВызватьИсключение "Версия конфигурации (" + ВерсияКонфигурации + ") отличается от версии модуля (" + ВерсияМодуля + ").
            |" + МестоВызова;
        КонецЕсли;

        Возврат Ложь;
    КонецЕсли;

    Возврат Истина;
КонецФункции

 

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

ОбщийМодульСПроверкой.СравнениеСВерсиейКонфигурации("Текст, помогающий найти проблему", "циферки.версии.с.точками");

 

Например:

&Вместо(ЗаменяемаяПроцедура)
Процедура Расш_ЗаменяемаяПроцедура()
    ОбщийМодульСПроверкой.СравнениеСВерсиейКонфигурации("Справоник.Номенклатура.МодульМенеджера.ЗаменяемаяПроцедура", "3.1.14.500");

    // полезный код
КонецПроцедуры

 

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

 

Update

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

 

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

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

 

2. Функция сложна в эксплуатации, потому что требует ручного изменения второго параметра в каждом месте вызова при обновлениях.

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

 

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

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

 

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

С этого начиналось, но в моей практике оказалось недостаточным. Если пропустить пункт на листочке или процедуру с комментарием, можно об этом и не узнать. А с этой функцией пропущенный участок станет невозможно игнорировать в процессе работы. Заменить текст в параметре вызова не труднее, чем в комментарии.  

 

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

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

 

6. Лишняя самописная функция страшное зло. Нужно пользоваться только инструментами от проверенного производителя!

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

 

7. Возможно, фирма 1С посчитает этот код отладочным и откажется давать какой-нибудь сертификат.

Пока не спросишь — не узнаешь. У меня нет опыта в этом вопросе, но как я понял из комментариев, фирма 1С сама активно использует функции проверки версий БСП.

 

8. Функция ничего не гарантирует. Злоумышленник может просто изменить второй параметр, и тогда исключения не произойдет, а участок останется не проверенным!

Штош. Это многое объясняет. На всякий случай теперь в функции добавлен комментарий, чтобы "разрабу", спешащему избавиться от исключения, было проще понять, что от него требуется.

 

9. Я разочарован. Ожидал чего-то большего.

Добро пожаловать в клуб.

 

p.s.

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

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 3879 06.06.21 08:15 Сейчас в теме
Наиболее надёжный и проверенный способ, гарантирующий минимум внезапных проблем в будущем - просто НЕ пользоваться расширениями. Эта кривая хрень всегда найдёт, где косякнуть, а на серьёзных проектах подобные чудеса могут слишком дорого стоить. Так что, имхо, наилучший способ добиться стабильности расширений - просто игнорировать сию поделку.
yatec; zqzq; Drivingblind; Светлый ум; dominatorwarr; YPermitin; Darklight; AntonProgma; Dream_kz; wolfsoft; +10 15 Ответить
2. AntonProgma 29 06.06.21 08:52 Сейчас в теме
(1) Если перестать пользоваться всеми инструментами, которые можно отнести к категории "кривая хрень", то что останется в арсенале?
DrAku1a; chg; tivanitsky; awk; ipoloskov; +5 Ответить
3. Yashazz 3879 06.06.21 10:38 Сейчас в теме
(2) Таких не столь много - основная платформа достаточно стабильно работает (а где не работает, так там места расположения граблей известны и неизменны).

При этом да, предложенное решение - неплохая идея, я плюсанул.
tivanitsky; Darklight; +2 Ответить
12. triviumfan 26 07.06.21 09:50 Сейчас в теме
(3) Не соглашусь, как раз платформа - самое больное место 1с :)
Что не релиз - так куча ошибок.
И самое обычное дело, когда она жрёт вне себя.
Прикрепленные файлы:
13. AntonProgma 29 07.06.21 09:57 Сейчас в теме
(12) В магазине на компьютере должна быть наклейка "1С совместимо".
36. Darklight 27 07.06.21 13:25 Сейчас в теме
(13)Почему бы и ЕСТЬ - 1С давно уже сертифицирует компьютеры на "1С Совместимо" - но толку то
42. AntonProgma 29 07.06.21 13:34 Сейчас в теме
(36) а я придумал это, как шутку. Обажаю 1С
DrAku1a; CSiER; DimaShapovaloff; e.kogan; +4 Ответить
132. DrAku1a 1446 11.06.21 14:42 Сейчас в теме
(13) Судя по вышесказанному, не на весь комп наклейку надо, а на модули оперативной памяти.
16. Yashazz 3879 07.06.21 11:02 Сейчас в теме
(12) Так для избежания проблем с платформой достаточно отставать на 3-4 релиза, если это не типовая под замком. В среднем этого хватает, чтоб наиболее чреватые грабли успели пофиксить или детально описать/разобрать.

Жрёт она вне себя, начиная с поколения 8.3 как такового, тут уж остаётся только ностальгировать и кушать кактус...

А вот расширение, особенно которое с данными или сложными формами, совершенный ларец Пандоры и букет проблем. Проверка применимости ни капли не спасает, т.к. а) иногда выдаёт фантомные расхождения, б) иногда не видит реальные расхождения. Использование расширений в серьёзных бизнес-процессах это сидение на пороховой бочке, при каждом новом релизе и конфы, и платформы.
Расширение хорошо, когда оно какое-нибудь "сбоку-бантик" или для нужд разработки-отладки.
66. Darklight 27 07.06.21 15:00 Сейчас в теме
(16)Эти директивы ввели в 15 релизе (два года назад). Последний ФИНАЛЬНЫЙ релиз уже 8.3.19 - надо считать что 4 релиза уже прошло? (хотя не факт что в 8.3.19.1150 этой проблемы нет, хотя, для верности по вашим принципам, видимо финальный релиз 8.3.20 надо ждать). Но типовые пока не перешли за совместимость выше 8.3.14 (ERP2 8.3.16) - так, что надо считать - всё что выше 8.3.14 - нестабильно - использовать можно только на свой страх и риск - и только на нетиповых! Хотя платформу рекомендуют уже не ниже 8.3.17.
А для указанные директивы, вроде бы доступны на платформе 8.3.15 при совместимости ниже 8.3.15
90. Yashazz 3879 07.06.21 19:06 Сейчас в теме
(66) Финальный релиз глючит, см. чего пишет tormozit: https://infostart.ru/journal/news/news/vyshla-novaya-versiya-tekhnologicheskoy-platformy-1s-predpriyatie-8-3-19_1455307/
Так что я не поручусь, что эти директивы стабильно работают. Повторюсь, если писать для ларька, так оно не страшно и можно экспериментировать, а если что-то серьёзное, так лучше не надо. Грамотно покуроченная конфигурация ещё долго будет надёжнее, чем любое расширение. Вот, хотя бы, с ПВХ и составными типами адские проблемы, по владельцам справочников не гладко, справку до сих пор нельзя заимствовать и доделать, а уж чего оно в формах для некоторых типов элементов откалывает, вообще молчу.

А для указанные директивы, вроде бы доступны на платформе 8.3.15 при совместимости ниже 8.3.15
Пробовал на режиме совместимости с 14-м, не взлетело.
104. Darklight 27 08.06.21 09:10 Сейчас в теме
(90)
Пробовал на режиме совместимости с 14-м, не взлетело.

Возможно ошибся с 15-ым релизом. На 16-ом уже точно доступны

А вообще - расширения (так как они реализованы) - ЗЛО - но другой, достойной альтернативы им пока нет. Вернее она у меня пока в разработке - но это большой проект....
118. Terve!R 08.06.21 11:07 Сейчас в теме
(66) 3-4 релиза это последних цифр, але!
Может 8.0 еще будете пользоваться и вызывать смех?
126. Yashazz 3879 11.06.21 08:18 Сейчас в теме
(118) Последние цифры это общепринято называется номер подрелиза или номер сборки, алё. https://its.1c.ru/db/v8std/content/483/hdoc

А что до смеха, ну, мне известно изрядное количество серьёзных крупных организаций, спокойно годами работающих на 8.2.19, не говоря уж о некоторых на 7.7 - им постоянные грабли убыточны, а стабильная работа важна. Если миллиардная прибыль ставится под сомнение из-за любой гадости, даже описанной в баг-трекере 1С, то смеха это как-то не вызывает. Например, ошибка 40049115, цитирую, "В некоторых случаях клиентское приложение может аварийно завершить свою работу." - вот вы понимаете, что сделает топ-менеджер крупной корпорации, если у него такое пару раз за день случится? Или главбух перед сдачей отчётности? Вот ответственному за систему совершенно не смешно будет, и отмазки в духе "ждём обновления от 1С" ни разу не проканают.
127. Yashazz 3879 11.06.21 08:33 Сейчас в теме
(118) а ещё, я смотрю, не все знают, как идёт развитие релизов 1С. Оно отнюдь не линейное, оно ветвится, и идёт раздельно по релизам. 3-4 релиза надо выжидать ещё и потому, что, найдя какую-то ошибку на релизе N+3, запросто могут выпустить сборку для релиза N. И наоборот, ошибка, уже вроде бы исправленная в N, может всплыть в N+4, потому что так закоммитили.
128. Terve!R 11.06.21 08:54 Сейчас в теме
(127) только вот не надо забывать что в следующих релизах правят ошибок больше, чем добавляют.
И по каким критериям выбран релиз текущей рабочей платформы? В багтрекере так куча критических ошибок, но работает же! А потому что эти ошибки довольно маловероятны.

И да, по опыту пользователи страдают больше от текущих ошибок платформы, чем после ее обновления. Страдает производительность и программисты. Иначе, с чего бы вообще 1С развивать и исправлять платформу, если становится только хуже по Вашей логике?
129. Yashazz 3879 11.06.21 09:00 Сейчас в теме
(128) Не надо за меня мою логику озвучивать. Я сказал ровно то, что сказал. Что достаточно пары критических багов, чтобы всё умерло, и гендиру уже неважно, сколько там других исправили, и чего куда развивается.

Текущие ошибки можно самостоятельно обойти, они известны.

И кстати, утверждение насчёт "правят больше, чем добавляют", спорно. Я статистикой не располагаю, но может оказаться, что добавляют порой больше, и это ещё учитывая, что в баг-трекер далеко не всё присылают.
4. Xershi 1171 06.06.21 11:17 Сейчас в теме
У вас проекты на 1 лям баксов?
Написали за час, потом баг репорт и через месяц переписали на свежем релизе.
Если есть инструмент нужно им пользоваться, а не ждать пока другие его протестируют и у них будет работать, а вы с костылем до сих пор.
Terve!R; al_zzz; +2 Ответить
5. AntonProgma 29 06.06.21 11:37 Сейчас в теме
(4) Вы не поверите, но функция, описанная в статье, это тоже инструмент. Таким образом теперь существует минимум два инструмента контроля изменения кода. Вопрос, собственно, какой лучше использовать в каждом конкретном случае.
6. Xershi 1171 06.06.21 13:22 Сейчас в теме
(5) в такой реализации как написано в статье, я бы точно не использовал.
7. AntonProgma 29 06.06.21 13:27 Сейчас в теме
8. unknown181538 45 06.06.21 20:14 Сейчас в теме
(7) Это получается, что надо после каждого обновления вручную проверить, изменилась ли процедура, и поменять цифирки?
Метаданные.Версия ведь вернет просто номер релиза?
Не понятно тогда, зачем это нужно - уж проще просто вручную проверить все процедуры. Хотя, на мой взгляд, тогда проще не пользоваться расширениями, а писать в конфигурацию, и при обновлении корректировать.

&ИзменениеИКонтроль я пробовал использовать - у меня вывалились какие-то платформенные ошибки, кажется. И я решил ближайшие три года не использовать.
asupsam; vovan_victory; Sashares; +3 Ответить
9. AntonProgma 29 06.06.21 20:32 Сейчас в теме
(8) Мне кажется, что варианты: "вручную проверить" и "вручную проверить и поменять цифирки", не так уж сильно различаются по трудозатратам. Но во втором случае добавляется контроль, который я и ищу.

Пользоваться расширениями или нет, вопрос бессмысленный вне контекста ситуации. Но если жизнь заставит, то придётся как-то контролировать актуальность измененного кода.
burgomister; +1 Ответить
23. Sashares 19 07.06.21 12:56 Сейчас в теме
(9) И в чем смысл? Работа ради работы?
Да о каком контроле идет речь, если суть вашей идеи - записать в блокноте используемые в расширении процедуры, чтобы потом не забыть сравнить их с типовыми.
asupsam; Terve!R; +2 Ответить
24. AntonProgma 29 07.06.21 13:00 Сейчас в теме
26. Sashares 19 07.06.21 13:06 Сейчас в теме
(24)Ну просто это дичь. Вы путаете теплое с мягким.
Вы ставите тождество, что изменение номера релиза в процедуре в расширении = контроль. Да ни разу.
Запустил пользователь предприятие после обновления - выдало ошибку.
Пользователь пошел пнул разраба, т.к. не дает работать.
Разраб изменил номер версии, чтобы от него отстал пользователь.
Где тут контроль?
Это просто дополнительные грабли, которые надо еще не забыть обойти каждый раз при обновлении релиза, и переложить заново.
Award; XACHAPURIN; SlavaKron; unknown181538; asupsam; Terve!R; Xershi; +7 Ответить
29. Артано 712 07.06.21 13:08 Сейчас в теме
(26) Так инструментом тоже надо уметь пользоваться и доводить исключительные ситуации собственноручно сгеренные это немного не тот уровень организации, когда вообще беспокоятся о качестве.
30. Sashares 19 07.06.21 13:10 Сейчас в теме
(29)Имхо, это не инструмент, это грабли.
Award; asupsam; zqzq; +3 Ответить
32. Артано 712 07.06.21 13:15 Сейчас в теме
(30) По деталям реализации можно обсуждать, согласен. Но вот суть инструмента понятна и вполне применима. По крайней мере до тех пор, пока расширения не обзаведутся более надежным и удобным способом поддержки изменений
33. Sashares 19 07.06.21 13:18 Сейчас в теме
(32)Если надо иметь условно, список важных процедур в расширении, так добавьте специфический комментарий в такие процедуры. Тогда глобальным поиском по такому комментарию можно всегда будет их найти, и потом уже проверить соответствие кода в типовой конфигурации и в расширении.
awk; Terve!R; +2 Ответить
34. Артано 712 07.06.21 13:21 Сейчас в теме
(33) Автор же написал - нельзя допустить неправильного выполнения программы. Исключение посреди выполнение это и есть та самая гарантия. Если оно в продакшне произошло, тогда вообще не стоило затевать игры с контролем версий - сначала надо авгиевы конюшни в головах и процессах разгрести.
43. AntonProgma 29 07.06.21 13:36 Сейчас в теме
(33) Обратите внимание, что комментарии и код состоят из одних и тех же символов. Только комментарий не проконтролирует, правильные ли в нем данные. Даже если много восклицательный знаков поставить.
47. Артано 712 07.06.21 13:40 Сейчас в теме
(43) Верно мыслите, комментарии несут такой же смысл, но "за базар не отвечают". То есть написав комментарий, вы берете на себя труд по их поддержке, причем неправильность комментария экспериментом не проверить.
92. Yashazz 3879 07.06.21 19:10 Сейчас в теме
(47) На комментах, написанных по некоторым соглашениям, целые системы-вокруг-систем основаны, всякие контроли качества и проверки кода. Видел такие не раз. Комментарий с разбивкой "Параметры" даже вроде синтакс-разбор 1С понимать научили. Так что тоже вариант, хотя тоже так себе.
101. Артано 712 08.06.21 08:26 Сейчас в теме
(92) Оформление комментариев к методам, это не совсем комментарии. Это документация к API. Спецификация, если быть точным, ну или обязательство разработчика по предоставляемой функциональности. Но поддерживать их приходится. Я для себя такой принцип принял давно - если что-то есть в документации, но нет в коде, то это проблемы кода. И разработка организована так же - сначала пишется документация к коду, потом уже сам код.
38. AntonProgma 29 07.06.21 13:26 Сейчас в теме
(32) Мне интересно обсудить детали реализации.
44. Артано 712 07.06.21 13:37 Сейчас в теме
(38) Например, я бы просто использовал функцию общего модуля возвращающую последнюю проверенную версию конфигурации поставщика, вместо использования волшебных строк по коду. Из "дешевых" замечаний, кажется всё.
48. AntonProgma 29 07.06.21 13:41 Сейчас в теме
(44) я решил, что проверка и вызов исключения - важная общая часть задумки. Если функция что-то будет возвращать, то результат придётся обрабатывать в каждом месте использования.

И я, боюсь, не понял, что такое последняя проверенная версия
49. Артано 712 07.06.21 13:43 Сейчас в теме
(48) Я не говорил об отказе от исключений. Читайте внимательнее

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


UPD. Примерно так

ОбщийМодульСПроверкой.СравнениеСВерсиейКонфигурации(ШифрОбъекта(ЭтотОбъект), ПоследняяПровереннаяВерсииКонфыПоставщикаБП100500());
51. AntonProgma 29 07.06.21 13:49 Сейчас в теме
(49) вы говорите о том, что волшебство можно не использоаать. Но это все равно не даёт понимания, что же можно улучшить в коде.
52. Артано 712 07.06.21 13:50 Сейчас в теме
(51) Магические/волшебные строки, числа, даты. Лучше, если у них будет имя и храниться они будут в одном месте.
53. AntonProgma 29 07.06.21 13:53 Сейчас в теме
(49) не согласен с вашим примером. Весь смысл функции в контроле. А контроль теряется, если мы договоримся, поправить некую констант, когда все-все честно-честно проверим. Надёжнее в каждом вызове меня релиз вручную после проверки данного участка. И ещё комментарий ставить, кто и когда проверил. На меньшее я не согласен
91. Yashazz 3879 07.06.21 19:08 Сейчас в теме
(30) Скажем так, это грабли, целенаправленно останавливающие процесс на нужной точке эксплуатации путём прицельного удара по лбу. Это лучше, чем гейзенбаги, которые всплывают хз когда и где, но всегда не вовремя. Это неплохая попытка возглавить, когда не удалось остановить.
Артано; +1 Ответить
35. AntonProgma 29 07.06.21 13:21 Сейчас в теме
(26) Это вы путаете контроль с инструментами контроля. Функция не гарантирует, что ей не будет пользоваться идиот! От программиста я лично ожидаю ответственности при изменении кода.

Презерватив тоже не даёт 100% защиты! Один человек надел, но все равно попал под машину.
Yashazz; Артано; +2 Ответить
119. Terve!R 08.06.21 11:09 Сейчас в теме
(8) почему именно три года? Откуда вы берете эти цифры?
Хотя, когда пользователям пофиг, то можете хоть на 8.2 сидеть и творить что угодно, конечно.
27. Артано 712 07.06.21 13:06 Сейчас в теме
(6)
зации как написано в статье, я бы точ


Есть шероховатости, согласен тоже. Но чтобы вы предложили взамен?
10. Cmapnep 14 07.06.21 08:25 Сейчас в теме
Браво, вступление шедеврально!
11. AntonProgma 29 07.06.21 08:43 Сейчас в теме
14. 1v7 187 07.06.21 10:03 Сейчас в теме
хорошая функция. утащу! спасибо
15. AntonProgma 29 07.06.21 10:10 Сейчас в теме
(14) Если принесет пользу, буду рад! Я верю, что только коллективно мы найдём способы надёжной работы на платформе 1С.
17. ellavs 826 07.06.21 12:05 Сейчас в теме
Мы по старинке - ведем реестр всех расширений, там список "Вместо-функций" которые при обновлении нужно проверить.
Sashares; +1 Ответить
20. AntonProgma 29 07.06.21 12:16 Сейчас в теме
(17) Ваши муки в прошлом! С нашей новой высокоэффективной функцией вы сможете находить нужные места в расширениях глобальным текстовым поиском по номеру предыдущего релиза. Это убережет от необходимости запоминать, что проверено, а что - нет. В крайнем случае в процессе работы появится текст ошибки. И это без регистрации и СМС!
55. borodatii 3 07.06.21 14:08 Сейчас в теме
(17) попробуйте https://github.com/oscript-library/diff3cf.
После небольших доработок для добавления поддержки ИзменениеИКонтроль можно сразу видеть отчет о проблемных местах.
Drivingblind; Артано; awk; +3 Ответить
18. ipoloskov 148 07.06.21 12:07 Сейчас в теме
Даже ручная проверка возможности применения в конфигураторе может не сработать. Например, если код модуля обрамлен скобками #Если Сервер или ... #КонецЕсли - конфигуратор бодро рапортует, что все о-кей! И так же бодро будет выполнять код - но уже не неизмененный код новой версии, а измененный код старой версии, что гораздо опаснее.
(ошибка 10231111)
19. amd1986 07.06.21 12:16 Сейчас в теме
Очень активно используем расширения. Ежемесячно клиенты ставят пару тысяч наших модулей расширений. Косяки(на уровне платформы) случаются, но они уже очень редкие. И да, использовать &Вместо крайне не рекомендуется.
RocKeR_13; awk; CyberCerber; +3 Ответить
21. AntonProgma 29 07.06.21 12:20 Сейчас в теме
(19) Лишний контроль не помешает. Предлагаю обдумать предложенный метод для использования с другими аннотациями. В конце концов, это всего лишь инструмент для проверки указанного релиза на равенство с текущим.
22. the1 893 07.06.21 12:33 Сейчас в теме
(19)
Ежемесячно клиенты ставят пару тысяч наших модулей расширений
Как вы умудряетесь написать 2к расширений за месяц? У вас 500 разработчиков?
25. Артано 712 07.06.21 13:01 Сейчас в теме
(22) Я думаю, тут ввиду имеются инсталлы нескольких маленьких расширений
89. amd1986 07.06.21 17:49 Сейчас в теме
(22) расширений всего 10-15. А клиентов много
28. awk 728 07.06.21 13:07 Сейчас в теме
Претензии к статье:
1. Придирка не по делу к анонсу. Анонс не документация. В документации аннотации правильно называются. https://its.1c.ru/db/v8315doc#bookmark:dev:TI000001843
2. Нарушение стандарта https://its.1c.ru/db/v8std#content:456:hdoc п.3

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


Для вашего случая должны быть тесты, а не проверки в коде.
zqzq; ardn; Sashares; +3 Ответить
31. Артано 712 07.06.21 13:12 Сейчас в теме
(28)

Не согласен с п2. Это не отладочный код. Банальная проверка версии объкта. Если версия не соответствует ожидаемой, то кидается исключение. Ну а чтобы исключений и вовсе не было, то после обновления нужно таки провести ревизию всех подобных закладок и выполнить те самые тесты
37. awk 728 07.06.21 13:26 Сейчас в теме
(31) А "и т.п."?

Разберем ситуацию классификации кода. Классифицировать будем по признаку отношения кода к процессу производства:

1. Код для разработки
2. Код для бизнес-логики

О чем и идет речь в пункте 3 стандарта.

Итак:

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

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

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

Проблема не в том что не работает инструмент 1С. Проблема в неправильном процессе разработки. Должно быть так:

Обновление поставщика -> Проверка применимости расширений -> Расширенный синтаксический контроль (в т.ч. расширений и внешних обработок) -> автотесты -> ручные тесты -> нагрузочные тесты - > обновление рабочей базы.

А тут мы видим

Обновление поставщика -> Проверка применимости расширений -> Расширенный синтаксический контроль (в т.ч. расширений и внешних обработок) -> обновление рабочей базы.

Это не значит что нет этапов: "автотесты -> ручные тесты -> нагрузочные тесты" - просто эти этапы проходят в рабочих базах, что неправильно.
39. AntonProgma 29 07.06.21 13:30 Сейчас в теме
(37) Я не в курсе, о каких стандартах идёт речь. Но если вы имеете в виду, что есть документ запрещающий минимизировать ошибки, то я не верю!
45. Артано 712 07.06.21 13:38 Сейчас в теме
(39) Я думаю речь о соглашении о написании кода. Они же стандарты оформления. Чтобы для своего продукта получить "1С-совместимо", в теории надо это соглашение выполнять. Но глядя на тиражные отраслевые - верится с трудом.
46. awk 728 07.06.21 13:40 Сейчас в теме
(39)
Я не в курсе, о каких стандартах идёт речь

1. Ссылки я привел.
2. Ваше незнание - печально, но не смертельно. То есть вполне исправимо.

есть документ запрещающий минимизировать ошибки


Вы подменили понятие. Документ запрещает тянуть артефакты разработки, а не минимизировать ошибки. То есть вам, в документе, говорят не лезьте в окно. Я же указываю вам на дверь.
50. AntonProgma 29 07.06.21 13:46 Сейчас в теме
(46) Но там нет артефактов разработки! Это абсолютно рабочий код для работающих решений. Не для отладки. Для контроля. Код. Я же не собираюсь везде его поставить перед обновлением и удалять после.
56. awk 728 07.06.21 14:12 Сейчас в теме
(50) Можно уточнить?

Вы делаете тиражное решение или у вас кастомизация тиражного решения, для клиента на поддержке.
58. AntonProgma 29 07.06.21 14:25 Сейчас в теме
(56) Разное. Но это не важно. Свой вариант я предлагаю любому желающему. У него есть плюсы и минусы. Лично я вижу заметную выгоду от использования данного способа в том, что это защитит меня и клиентов, если мои расширения не будут тщательно проверены после обновления. А религиозные аспекты рассматривать не могу, потому как атеист.
60. awk 728 07.06.21 14:35 Сейчас в теме
(58) Немного поясню. Если вы делаете тиражное решение, то ваш подход нерационален. Так как инструмент который привязан к версии 8.3.15 бухгалтерии предприятия никто не купит, ибо обновления раз в месяц минимум выходят (или вы бесплатно обновления будете предоставлять?). А не написать, что вы не поддерживаете будущие версии - это значит обмануть клиента. Тут рациональнее написать тесты и при провале теста релиза оповещать покупателей о появившейся проблеме и пути решения. Так дешевле.

Если же вы сами обновляете клиентские базы, то ваше решение не эффективно. Так как вам надо просто покрыть код тестами и все. После обновления поставщика, просто прогнать тесты. А не ждать, когда вам с матами пользователь позвонит.
62. AntonProgma 29 07.06.21 14:47 Сейчас в теме
(60) Согласен, найдутся случаи, когда я сам уверенно откажусь от этой функции. Но принцип уместности и в другую сторону работает. "Просто придумать и выполнить все нужные тесты" - тоже так себе по надёжности решение в той реальности, которая окружает меня. Поэтому я всего лишь предлагаю приём, не предполагая тотального применения. Каждый решит сам на месте, эту функцию использовать, писать тесты или комбинировать методы.
63. awk 728 07.06.21 14:52 Сейчас в теме
(62) У меня прекрасно работает. См. Картинки...
Прикрепленные файлы:
70. AntonProgma 29 07.06.21 15:07 Сейчас в теме
(63) знаете, мне начинает казаться, что вам моя функция не подойдёт. У вас несколько другой ритм жизни.
41. Артано 712 07.06.21 13:33 Сейчас в теме
(37) Получается тогда, что БСП нарушает собственные же стандарты когда проверяет версии подсистем? =)

Если без шуток, то рассмотрим пример. Есть две независимо разрабатываемые системы, вынужденные взаимодействовать через некий интерфейс. Причем в случае расширений этот интерфейс не предназначен специально для взаимодействия. Вы реализовали взаимодействие опираясь на некую внутреннюю логику другой подсистемы. Подсистема поменялась, ваш код нет. Но при попытке её использовать вы ставите заглушку - мол версия не проверена на нашей системе. Нельзя ничего делать. Проверка эта, должна всегда проходить успешно на проде. Но если вдруг... то враг не пройдёт.
Да и каким образом вы будете контролировать адекватность ваших операций? Версионирование объектов, сервисов, интерфейсов, есть нормальная и надежная практика.
54. awk 728 07.06.21 14:02 Сейчас в теме
(41)

Получается тогда, что БСП нарушает собственные же стандарты когда проверяет версии подсистем? =)

Еще как нарушает. 637 ошибок больше 45 000 нарушений стандарта.

Так что если без шуток, то тут проблема в нарушении стандарта в самой 1С.


Причем в случае расширений этот интерфейс не предназначен специально для взаимодействия.

Не согласен. Если бы расширение было не предназначено для внутреннего взаимодействия, то расширением оно точно не называлось.


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


Да так бывает. Все будет работать, пока я не нарушу инкапсуляцию. То есть буду работать через экспортные процедуры и функции. У 1С есть объяснение как назначаются версии. https://its.1c.ru/db/v8std/content/483/hdoc https://its.1c.ru/db/v8std#content:484:hdoc

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

Тут проблема в 1С и соблюдении стандарта. Если вышло обновление 8.3.15, а у меня 8.3.14 - то обратная совместимость должна сохраняться. И я свое расширение объявляю как 8.3 совместимое.

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


Тестами - это то же нормальная практика.

Вообще мы кажется смешали два понятия:

1. Поддержка у конечного клиента
2. Процесс разработки.
64. Артано 712 07.06.21 14:56 Сейчас в теме
(54)
Не согласен. Если бы расширение было не предназначено для внутреннего взаимодействия, то расширением оно точно не называлось.


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

Тестами - это то же нормальная практика.

Согласен. Исключение упавшее при тесте как раз не даст выпустить в продакшн. А вот написать грамотный сценарий тестирования, где будут проверяться входящие и исходящие данные во всём их разнообразии намного сложнее. Имею ввиду, что полагаться только на тесты опасно. Сколько раз ловили баги, которые просто не покрываются тестами, потому что не предусмотрели ту или иную ситуацию? =)


Вообще мы кажется смешали два понятия:
1. Поддержка у конечного клиента
2. Процесс разработки.


Не совсем, просто то, что предлагает автор, не должно выйти в прод. То есть из цикла "разработка внутри команды" не выходить. А если выйдет - то честно упасть.
67. AntonProgma 29 07.06.21 15:03 Сейчас в теме
(64) Минуточку! Автор только говорит, что можно получить такой-то эффект при таких-то условиях. А где это использовать и использовать ли, должны решать люди на месте. Я вот собираюсь активно это применять прямо в рабочих базах. И мне не стыдно.
68. Артано 712 07.06.21 15:05 Сейчас в теме
(67) да не спорю я с автором, расслабьтесь. Не надо читать между строк. Я пишу прямым текстом
77. awk 728 07.06.21 15:43 Сейчас в теме
(64) То что предлагает автор не вполне поддерживает 1С.

То есть: Если 1С фиксирует некий интерфейс и делает функцию: ЗубДаюСовместимоСВерсией(Э) Экспорт. То никаких вопросов нет. Делаем при запуске тест _1С_ЗубДетЧтоНеИзменилаИнтерфейс() и все ок. Это не процесс разработки - это бизнес-логика. А у автора функция:

Функция Если1СЧтоТоОбновилаТоЭтоТрындец()
  Возврат ИзмененияЕстьОт1С();
КонецФункции


Напоминает язык программирования Paranoid
78. AntonProgma 29 07.06.21 16:05 Сейчас в теме
(77) 1С вполне поддерживает. Попробуйте погонять тесты, увидите, что все так работает, как я написал.
79. awk 728 07.06.21 16:15 Сейчас в теме
(78) Я не говорил, что не работает. Я сказал что не подходит. А не подходит т.к. вылетит не перед обновлением рабочей базы, а после, может быть сильно после.


Кстати есть в БСП функции

#Область ВерсионированиеКонфигураций

// Получает номер версии конфигурации без номера сборки.
//
// Параметры:
// Версия - Строка - версия конфигурации в формате РР.ПП.ЗЗ.СС,
// где СС - номер сборки, который будет удален.
//
// Возвращаемое значение:
// Строка - номер версии конфигурации без номера сборки в формате РР.ПП.ЗЗ.
//
Функция ВерсияКонфигурацииБезНомераСборки(Знач Версия) Экспорт

// Сравнить две строки версий.
//
// Параметры:
// СтрокаВерсии1 - Строка - номер версии в формате РР.{П|ПП}.ЗЗ.СС.
// СтрокаВерсии2 - Строка - второй сравниваемый номер версии.
//
// Возвращаемое значение:
// Число - больше 0, если СтрокаВерсии1 > СтрокаВерсии2; 0, если версии равны.
//
Функция СравнитьВерсии(Знач СтрокаВерсии1, Знач СтрокаВерсии2) Экспорт

// Сравнить две строки версий.
//
// Параметры:
// СтрокаВерсии1 - Строка - номер версии в формате РР.{П|ПП}.ЗЗ.
// СтрокаВерсии2 - Строка - второй сравниваемый номер версии.
//
// Возвращаемое значение:
// Число - больше 0, если СтрокаВерсии1 > СтрокаВерсии2; 0, если версии равны.
//
Функция СравнитьВерсииБезНомераСборки(Знач СтрокаВерсии1, Знач СтрокаВерсии2) Экспорт
80. AntonProgma 29 07.06.21 16:29 Сейчас в теме
(79) Так в том и смысл, чтобы вылетела! Это даёт гарантию, что код, в котором не поставили метку проверки, не будет выполняться. Естественно, такая ошибка в процессе работы не желательна. И само собой, нужно по возможности все проверить перед передачей кода в эксплуатацию. Но если вдруг, какая-нибудь функция, не была проверена по трагической случайности, то программа упадёт. И это в ряде случаев лучше, чем если бы она продолжила работать молча, выполняя ненужный типовой код.
81. awk 728 07.06.21 16:35 Сейчас в теме
(80) Как гарантировано заставить функцию упасть до обновления? Ответ очевиден же: "Написать тест". А если мы все равно пишем тест, то зачем нам падающая функция? А если нам плевать упадет что-то или нет, то и проверка избыточна, что вашим методом, что тестом. По итогу: Либо пишем тест, либо кладем болт. Оба варианта имеют право на жизнь. Ваш вариант - это вариант перенедопил. :)
82. AntonProgma 29 07.06.21 16:43 Сейчас в теме
(81) это, если помешаться на тестах, то да, без написания теста ничего нельзя сделать, и, очевидно, нужно писать тест. А можно проверить визуально, изменилась ли процедура, поставить номер релиза, как подтверждение проверки. А сэкономленное время потратить на споры о тестах. Профит?
83. awk 728 07.06.21 16:47 Сейчас в теме
(82)
А можно проверить визуально

Не подскажите (только чур визуально) эти куски изменились или нет?
	НомерСтроки = "1550";
	НаименованиеСтроки = "Прочие обязательства";



	НомерСтроки = "1550";
	НаименованиеСтроки = "Прочие обязательства";

84. AntonProgma 29 07.06.21 16:49 Сейчас в теме
(83) Чисто визуально - не очень.
85. awk 728 07.06.21 17:01 Сейчас в теме
(84) А ведь просто поменял русскую эс, на английскую си. COMОбъект и COMОбъект.
86. AntonProgma 29 07.06.21 17:13 Сейчас в теме
(85) Гениально! Не "о", как я думал, а "с". Ваше превосходство в шарадах становится неоспоримым!

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

Поймите, я не призываю выкинуть вашу красивую программу для тестов! Я предлагаю желающим ознакомиться с приёмом. А глянется он им или нет - дело их.

Для себя я вижу смысл это использовать.
87. awk 728 07.06.21 17:28 Сейчас в теме
(86) Ваш подход вполне известен. И нужен. Только не надо его пихать в каждую функцию. Да и функции лучше из БСП брать.

Когда он работает?

Когда мы хотим удостовериться, что версия конфигурации, платформы или библиотеки нам подходит. Таким образом мы можем всегда проверить, что версия от которой мы зависим не ниже на которой мы разрабатывали или это не совсем-совсем более новая (была бухгалтерия 2.0, а стала 3.0). А нам это надо знать в каждой функции или в целом по расширению? Наверное в целом по расширению. То тогда расширяем функции ПриНачалеРаботыСистемы и проверяем все что надо и выбираем бизнес-логику. Ошибка/предупреждение проявится при первом запуске. Мы обновляем что нам надо и профит.

Когда он не работает?

Если нам так критично, что бы наш код работал всегда верно, то надо писать тест. И только тест нам гарантирует, что функция на данных А, выдает результат Б.
88. AntonProgma 29 07.06.21 17:41 Сейчас в теме
(87) Я вовсе не стремлюсь сравнивать библиотеки и версии на больше-меньше. В данной теме рассматривается возможность контроля, была ли после обновления проверена каждая функция. Для этого в каждой проверяемой функции обязательно должен быть признак проверки. В предлогаемом варианте в качестве признака выступает введённый программистом номер релиза. Одна общая проверка теряет всякий смысл. Мне нужно удостовериться, что я и мои коллеги проверили все участки. Для этого, повторюсь, каждый участок проверяется (любым адекватным способом) и помечается отдельно.

Функции из БСП любой может использовать, если захочет. Но не вижу смысла для таких простых вещей привязываться к БСП и мониторить ещё и её. Есть конфигурации и без БСП.
96. awk 728 07.06.21 20:52 Сейчас в теме
(88) "Мне нужно удостовериться, что я и мои коллеги проверили все участки."

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

"Но не вижу смысла для таких простых вещей привязываться к БСП и мониторить ещё и её."

Точно. И чего все ЗУП, БП и т.п. используют? Только с нуля. Только хард-кор.


:)
97. AntonProgma 29 07.06.21 21:15 Сейчас в теме
(96) Что это вас так бросает из крайности в крайность? От скурпулезных и сложных тестов к листочку и шариковой ручке? Лишь бы спорить, ей богу. Поверьте, я знаю, что предлагаю. И бумага, и комментарии, и встроенные механизмы уже показали в данном вопросе меньшую адекватность. Но, опять же, многое зависит от контекста ситуации. Так что, я искренне не понимаю, почему с таким упрямством вы продолжаете требовать, чтобы никто никогда не пользовался предложенным приемом в рабочих базах.

Я программист. Если мне нужна маленькая функция, я не буду привязываться без необходимости к сложным библиотекам, которых в моем случае может и не быть в конфигурации. Особенно при условии, что расширения в базе и так уже используются. Понимаю, как у вас горят глаза при одной мысли, сколько же прекрасных тестов можно написать для БСП, но я не в этом вижу смысл жизни.
98. awk 728 07.06.21 22:40 Сейчас в теме
(97) Я предлагаю реальные, работающие варианты, проверенные временем, которые требуют минимум затрат. Бумага и ручка - это реальный вариант, который используется на этапе ручного тестирования. Ваш вариант то же уже изобретен. Где используется, я уже объяснил.

Почему я все еще пишу? Да потому, что мысль ваша в правильном направлении. С Yashazz я даже спорить не буду - не о чем.

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

Странно. Зачем расширение в конфигурации которая самописная? Если же это тиражный продукт на поддержке, то это странное решение.

Я не собираюсь писать тесты на чужой код - это не правильно.
99. AntonProgma 29 07.06.21 23:01 Сейчас в теме
(98) Мы оба предлагаем решения, которые работают. Работают по разному. Они не исключают друг друга, их даже можно все вместе использовать. Но я в отличие от вас допускаю, что ситуации могут быть разными. Вы же почему-то уперлись в некоторые инструменты, и не хотите услышать, что я их рассмотрел, но для меня они сейчас не годятся. Ни тесты, ни бумага, не гарантируют, что функцию проверили. Поэтому мой приём лично для меня более надёжен. Если здравый смысл и стандарты расходятся, я буду следовать за здравым смыслом. Тем более, что вы очень вольно классифицируете, что отладочный код, а что - нет.

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

Ничего не имею против адаптации этого элементарного кода под БСП. Я даже не претендую на авторство. Здесь сама идея важнее предпочтений.

Ну и как программист не вижу ничего зазорного улучшать конфигурацию собственным кодом. Иначе зачем вообще нужны программисты, если не программировать?
93. Yashazz 3879 07.06.21 19:15 Сейчас в теме
(87) Вот не надо на БСП в таких вещах полагаться. Она сама порой внезапно меняется, и ошибки в ней очень даже есть, порой откровенно хамские. Лучше своё от и до, и поменьше точек перехода от типового кода к своему.
95. awk 728 07.06.21 20:46 Сейчас в теме
(93) Да и из первого, вашего, комментария понятно, что вы 747 в гараже собираете, перед поездкой в отпуск. Но остальные гораздо ленивее вас. :)
108. Yashazz 3879 08.06.21 09:26 Сейчас в теме
(95) Это, в конкретно моём случае, не вопрос лени. Это вынужденная мера. Я иногда имею дело с системами, отказ которых может обернуться, очень мягко говоря, крайне неприятными последствиями, поэтому после нескольких фокусов со стороны авторов БСП банальный инстинкт самосохранения привёл к выводу, что проще единожды нагородить свою механику и дальше при нужде допиливать, чем сторонней доверять, да ещё такой, кхм, неоднозначной и своеобразно документированной.
Необязательно собирать 747-й каждый раз - достаточно однажды постараться, а дальше мелкие модификации)
114. awk 728 08.06.21 09:46 Сейчас в теме
(108)
Необязательно собирать 747-й каждый раз - достаточно однажды постараться, а дальше мелкие модификации)
Про боинг это не сарказм. Это дань уважения старой школе. И таки да, я то же собрал пару раз боинг.

Нам не о чем спорить. Ваш подход работает и надежен, в отличии от предлагаемого автором, который работает но не надежен (есть более надежные варианты).
125. Yashazz 3879 08.06.21 11:50 Сейчас в теме
(114) В любом деле главное - без фанатизма. У БСП тоже есть ряд подсистем, которые разумно заимствовать, а не колхозить с нуля.

Мы поняли друг друга)
Артано; awk; +2 Ответить
40. AntonProgma 29 07.06.21 13:31 Сейчас в теме
(28) всё тонет в фарисействе! Код писать - не поле перейти
Оставьте свое сообщение

См. также

Использование классов .Net в 1С для новичков Промо

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    82752    Serginio    113    

Полезные примеры СКД, ч.2

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

Еще несколько примеров решения задач в СКД.

06.04.2021    7666    Neti    8    

Неочевидные нюансы записи управляемой формы

Практика программирования v8 v8::УФ Платформа 1C v8.2 1cv8.cf Бесплатно (free)

Разберем несколько нюансов записи управляемой формы.

02.04.2021    8705    SeiOkami    52    

Обзор полезных методов БСП 3.1.4

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

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

25.03.2021    27920    rayastar    49    

Звуковое управление в 1С 8.3 Промо

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

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    5326    velemir    31    

Доработка проведения в ERP 2.5. (Регистры накопления, Регистры сведений)

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

Покажу точки входа для доработки "типового" проведения документов в ERP для регистров оперативного учета. Рассмотрим три основные ситуации: нужно изменить имеющееся проведение документа; нужно сделать записи в существующие регистры; нужно с нуля описать алгоритм проведения в добавленный регистр. Пример реализован на 1С:ERP Управление предприятием 2 (2.5.4.120)

10.01.2021    8702    BuriyLesha    9    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

Универсальные функции Практика программирования v8 Бесплатно (free)

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    7069    comol    31    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

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

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

30.08.2020    16748    quazare    34    

Использование программных перечислений, ч.1: строковые константы Промо

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

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    39773    unichkin    74    

Форма выбора (подбор) в управляемых формах

Практика программирования v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    58770    user5300    18    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

27.01.2020    54439    ids79    26    

Вспомогательные инструкции в коде 1С Промо

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

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    34414    tormozit    106    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

15.01.2020    38104    John_d    22    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

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

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    30160    kuzyara    38    

30 задач. Странных и не очень

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

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    21699    YPermitin    62    

Оформление и рефакторинг сложных логических выражений Промо

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

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

20.09.2012    81328    tormozit    131    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

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

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    11275    Sibars    19    

Полезные процедуры и функции для программиста

Практика программирования Универсальные функции v8 1cv8.cf Россия Бесплатно (free)

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

07.10.2019    36957    HostHost    41    

Таблица значений. Нюансы

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

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

01.10.2019    48172    Yashazz    55    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    52496    tormozit    51    

О программе Postman для тестирования API и для чего она нужна 1С-нику

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

Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

24.09.2019    17918    budidich    29    

[Шпаргалка] Программное создание элементов формы

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

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

06.09.2019    86681    rpgshnik    71    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    69316    ids79    55    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    49103    tormozit    74    

Регистры бухгалтерии. Общая информация

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

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    40938    YPermitin    25    

Три костыля. Сказ про фокусы в коде

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

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

03.09.2019    28907    YPermitin    81    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

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

17.08.2019    41711    ids79    19    

Выгрузка документа по условию Промо

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

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    17072    m-rv    3    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    132946    ids79    75    

Фоновое выполнение кода в 1С - это просто

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

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

02.08.2019    53936    avalakh    26    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    36511    json    15    

Как прикрутить ГУИД к регистру сведений Промо

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

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

16.04.2019    22132    m-rv    17    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    93845    ids79    15    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    44624    ids79    27    

Регистры сведений. За кулисами

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

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    31658    YPermitin    14    

Как сделать запрос на изменение данных Промо

Практика программирования v8 v8::Запросы 1cv8.cf Бесплатно (free)

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

01.06.2018    34909    m-rv    22    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    21487    SeiOkami    52    

Работа с настройками системы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

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

02.07.2019    74205    ids79    17    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    69763    ids79    27    

Метод формирования движений в типовых регистрах нетиповыми регистраторами Промо

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

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

05.12.2017    29959    itriot11    34    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    29264    dmurk    148    

Регистры накопления. Виртуальные таблицы. Часть №2: "Остатки" и "Остатки и обороты"

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

Описание работы платформы 1С:Предприятие 8.2 с виртуальными таблицами регистров накопления "Остатки" и "Остатки и обороты". Анализ SQL-запрос при работе с виртуальными таблицами

22.05.2019    39027    YPermitin    8    

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

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

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

16.05.2019    57742    YPermitin    30    

Автоматические и управляемые блокировки применительно к типовым конфигурациям 1С Промо

Математика и алгоритмы Практика программирования v8 v8::blocking 1cv8.cf Бесплатно (free)

Основные принципы работы с режимами автоматических и управляемых блокировок в 1С Предприятие 8. Теория и применение в типовых конфигурациях: БП, УТ, ЕРП

10.11.2018    41855    ids79    45    

О расширениях замолвите слово...

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

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    40859    ellavs    131    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

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

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    30567    ellavs    90    

Трюки с внешними источниками данных

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

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    38490    YPermitin    53    

Ошибки при работе с хранилищем конфигурации и способы их решения

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

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

01.03.2019    59786    Смешной 1С    32