gifts2017

Экстренные изменения в модулях без обновления конфигурации (8.х)

Опубликовал A T (knocking) в раздел Администрирование - Системное

"Уважаемые пользователи, просим всех в 9.30 выйти из 1С для обновления (потому что Сергей Степанов лопух)" или "Давай ты на втором этаже отделы обзваниваешь, а я на третьем". Знакомо? Да, а как же. Кто ж не косячит, да так чтоб нужно было обновиться не вечером, а прямо сейчас в разгар рабочего дня. А если еще косяк в узле, а не в главной базе? Ну всяко бывает, не боги горшки обжигают. Но теперь все может стать иначе. Буквально за 5 минут вы сможете решить практически любую возникшую проблему без обновления конфигурации, будь то ошибка в любом модуле или просто срочная доработка. Но изменить структуру конфигурации вы, конечно, не сможете, тут уж извиняйте, придется выгонять всех. Как это работает?

Да очень просто. Нужно будет потратить пару-тройку часов на подготовку, почитать нескучный хелп, аккуратненько все накатить, попробовать что-то специально сломать и починить, чтобы во время боя уже было все знакомо и не отняло много времени. Принцип простой: в самое начало каждой процедуры добавляете 4 строки. Хотя нет. Давайте с самого начала. Предположим есть у вас процедура в общем модуле, которая висит на подписке "ПриЗаписи" любого документа, но обрабатывает пока только Заказ.

Процедура ПриЗаписиДокументов(Источник, Отказ) Экспорт

	Если ТипЗнч(Источник) = Тип("ДокументОбъект.ЗаказПоставщику") Тогда
		ПриЗаписиДокументаЗаказПоставщику(Источник, Отказ);
	КонецЕсли;

КонецПроцедуры

И вот потребовалось нам еще и Платежку обрабатывать при записи или ошибка появилась при обработке Заказа. Причем все это нужно сделать в одном из узлов и прямо сейчас. Что делать? Вариантов несколько, как мы знаем:

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

2. Рискнуть и обновиться динамически. Хм. Вариант. Особенно, если работа надоела, то почему бы и нет.

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

Итак, готовим конфигу. Сделать это можно вручную или автоматом (подробнее в хелпе). Добавляем в начало каждого модуля 4 строки и получаем что-то следующее:

Процедура ПриЗаписиДокументов(Источник, Отказ) Экспорт

	//+ Вставка вызова экстренной процедуры
	СтруктураЭП = Новый Структура("Источник, Отказ", Источник, Отказ);
	Если ЭкстренныеОбновления.ВыполнитьПроцедуру("ПодпискиНаСобытия_ПриЗаписиДокументов", СтруктураЭП) Тогда
		//Если экстренная процедура выполнилась, то дальнейшее выполнение процедуры прерываем
		Возврат;
	КонецЕсли;
	//-

	Если ТипЗнч(Источник) = Тип("ДокументОбъект.ЗаказПоставщику") Тогда
		ПриЗаписиДокументаЗаказПоставщику(Источник, Отказ);
	КонецЕсли;

КонецПроцедуры

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

Процедура ВыполнитьЭкстреннуюПроцедуру(СтруктураЭП) Экспорт

    Источник = СтруктураЭП.Источник; 
    Отказ = СтруктураЭП.Отказ;       

    Если ТипЗнч(Источник) = Тип("ДокументОбъект.ЗаказПоставщику") Тогда
        ПодпискиНаСобытия.ПриЗаписиДокументаЗаказПоставщику(Источник, Отказ);
    ИначеЕсли ТипЗнч(Источник) = Тип("ДокументОбъект.ПлатежноеПоручениеВходящее") Тогда
        //...
        //Ваш любой код
        //...
    КонецЕсли;

КонецПроцедуры

Т.е. мы оставили стандартную обработку Заказа и добавили обработку Платежки. Теперь мы ждем 10 минут, пока запустится оперативный обмен данными с узлами или запускаем его вручную или вообще все это делаем в узле, как уж удобнее по ситуации. А затем говорим пользователю, что все готово и ему даже перезапускать сеанс не нужно. Здорово? Конечно, здорово!

С производительностью проблем нет. При начале работы сеанса делается один простенький запрос с выбором только активных записей из нашего нового регистра сведений и все данные помещаются сначала в структуру, а потом в параметр сеанса, т.е. все висит в памяти, но много ее не отъедает. Когда выполняются те 4 строчки кода в каждом модуле, то там происходит поиск записи по идентификатору в параметре сеанса. Если запись есть, то управление передается сначала в новый общий модуль, а затем во внешнюю обработку или в команду Выполнить(). Да, тут есть варианты на ваше усмотрение, либо использовать внешнюю обработку, либо команду Выполнить(). Это все указывается в записи регистра сведений. И там и там есть свои ограничения, действуйте по ситуации. В команде Выполнить() нельзя использовать оператор Возврат, его нужно предварительно заменить на метку Перейти, а саму метку поставить в конец процедуры. Эта замена тоже предусмотрена и делается все автоматом, т.е. парсится код процедуры и если есть Возврат, то он заменяется на Перейти ~ПерейтиВозврат; в конец процедуры добавляется ~ПерейтиВозврат:. При использовании команды Выполнить() не нужно передавать контекст. А при использовании внешней обработки нет проблем с оператором Возврат, но зато нужно передавать в нее весь необходимый контекст. Давайте покажу коротенький пример с командой Выполнить().

Имеем в какой-то процедуре такой код, в котором возникает ошибка деления на 0:

Если Источник.Дата <= Дата('20150101') Тогда
	Возврат;
КонецЕсли;

//В этом коде возникает ошибка деления на 0, будем ее исправлять
Источник.Прибыльность = Источник.СуммаВыручки / Источник.СуммаЗатрат;

Копируем этот текст в нашу запись регистра сведений и нажимаем волшебную кнопку "Заменить Возвраты". Получаем такой код:

Если Источник.Дата <= Дата('20150101') Тогда
	//Автозамена Возврата на метку ~ПерейтиВозврат
	Перейти ~ПерейтиВозврат;
КонецЕсли;

//В этом коде возникает ошибка деления на 0, будем ее исправлять
Источник.Прибыльность = Источник.СуммаВыручки / Источник.СуммаЗатрат;

//Добавляется метка в конец процедуры
~ПерейтиВозврат:

Остается только исправить ошибку, что мы и делаем:

Если Источник.Дата <= Дата('20150101') Тогда
	//Автозамена Возврата на метку ~ПерейтиВозврат
	Перейти ~ПерейтиВозврат;
КонецЕсли;

//Исправляем ошибку деления на 0
Если Источник.СуммаЗатрат <> 0 Тогда
	Источник.Прибыльность = Источник.СуммаВыручки / Источник.СуммаЗатрат;
КонецЕсли;

//Добавляется метка в конец процедуры
~ПерейтиВозврат:

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

Если мы сначала хотим протестировать, то что мы внесли во внешнюю обработку, то без проблем можем даже воспользоваться отладчиком, он отлично заходит в нашу обработку (при условии, что она выполняется на клиенте, конечно).

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

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

Корректно обрабатываются процедуры с пометкой "Сервер", "Клиент" (обычный и управляемый).

Требования к системе:

Работает на обычных и управляемых формах, прикрутить можно к любой конфигурации на восьмерке (8.0, 8.1, 8.2, 8.3), при необходимости доработать под свои нужды - все модули открыты.

Техподдержка бесплатная на весь период. Вопросы задавайте здесь же или в личку.

Поставка:

1. Файл выгрузки конфигурации (для обычных или управляемых форм)

2. Инструкция по внедрению и описание доработки в одном файле. Вам нужно будет самостоятельно объединить вашу конфигурацию с конфигурацией поставки.

3. Обработка с дополнительными примерами вызова экстренных процедур (находятся в модуле обработки).

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

Если будут предложения по доработке, которые пригодятся для всех, т.е. универсальные, то выполню их бесплатно.

Вроде все, жду ваших вопросов и предложений. Могу за умеренную плату доработать именно под ваши нужды. Час = 700 рублей, минимум 2 часа. Всем добра!)

ВНИМЕНИЕ!!! Пока доступна только конфигурация для обычного приложения. Буквально на днях закончу конфигу и для управляемого приложения, о чем сообщу дополнительно.

Гарантия возврата денег

Гарантия возврата денег

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

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

Для возврата оплаты просто свяжитесь с нами.

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

Наименование Файл Версия Размер Кол. Скачив.
Инструкция по работе с доработкой
.pdf 933,66Kb
07.06.15
7
.pdf 933,66Kb 7 Бесплатно
Дополнительные примеры вызова экстренных процедур
.epf 4,94Kb
07.06.15
5
.epf 4,94Kb 5 Бесплатно
Обработка Добавление вызова экстренной процедуры в начало процедур модуля
.epf 7,86Kb
07.06.15
5
.epf 7,86Kb 5 Бесплатно
Конфигурация "Экстренные обновления" для 8.х (ТОЛЬКО ОБЫЧНОЕ ПРИЛОЖЕНИЕ)
07.06.2015
1900 руб.

Моментальная
доставка

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. Евгения Карук (ekaruk) 08.06.15 18:40
Жуть какая.
Уж лучше динамическое обновление.

upd. В принципе, допустимый подход для отладки и при использовании нового кода в тяжелых конфигурациях.
Но сама мысль о встраивании безусловных переходов во все объекты мне очень не нравится.
artbear; Восьмой; dj_serega; qwinter; Uncore; IvanBoychuk123; Brawler; GROOVY; spogo; +9 Ответить 2
2. Василий Коровин (vasyak319) 08.06.15 19:03
(1) ekaruk, для отладки всякого хардкора есть загрузка текста модуля из файла на диске (ни разу не пользовался, но есть в языке такая инструкция препроцессора), а этот парень прикольную жуть сделал. Я бы, конечно, себе это не воткнул (хватит с меня уже имеющихся нестабильностей в программе), но и громить эту работу, по-моему, не за что.
PowerBoy; u_n_k_n_o_w_n; +2 Ответить 2
3. A T (knocking) 08.06.15 19:10
>>Уж лучше динамическое обновление.
Так обычно говорят, до первого треша... потом перестают делать динамические обновления. Это то случай, когда лучше поучиться на чужом опыте;)
Mi4man; Зеленоград; +2 Ответить 1
4. A T (knocking) 08.06.15 19:13
>>Но сама мысль о встраивании безусловных переходов во все объекты мне очень не нравится.
Во все и не нужно. Можно только в те места, что недавно разработали, чтобы оперативно все можно было исправить или просто доработать. Как вариант еще можно сделать несколько подписок на разные случаи и в них добавить вызов экстренных процедур. Тогда в любой момент сможете повлиять практически на любой алгоритм системы.
5. Михаил Зотов (ZOMI) 08.06.15 19:15
Не должно быть "экстренных обновлений" в принципе. Лучше "пару-тройку" часов потратить на создание регламентов и согласование с руководством о порядке внедрения изменений. Закладывать в планы время на тестирование/отладку/документирование и т.д.
Anchoret; sh_max; dj_serega; qwinter; Prometeus2011; +5 Ответить 1
6. A T (knocking) 08.06.15 19:20
(5) ZOMI, >>Не должно быть "экстренных обновлений" в принципе
Согласен, что не должно, но опыт показывает какой бы супер-пупер ни была команда (руководители, проектировщики, разработчики, тестеры), то все равно бывают ошибки, которые всплывают только во время опытной эксплуатации. А такой механизм поможет быстро все подправить. Да и речь не только о исправлении ошибок идет, но и просто о доработках. С ними, конечно, можно и подождать и обновиться как положено, но часто бывает, что это нужно прям сейчас.
7. Михаил Зотов (ZOMI) 08.06.15 19:24
(6) knocking, ну и "экстренных изменений" ))
8. A T (knocking) 08.06.15 19:33
(2) vasyak319, >>хватит с меня уже имеющихся нестабильностей в программе
Сейчас эта доработка крутится на 3-х УППшках 1.3. В одной из них 60! узлов по всему СНГ, 250 пользователей, работают практически круглосуточно с базой из-за разных временных зон. Всего там около 20 только прогеров работает, каждый день кто-то косячит, хотя есть четкий регламент как все должно обновляться (процесс непростой, пока все дадут добро не один день проходит). Так вот с этой доработкой всем стало жить чуточку легче. Выгнать 250 пользователей из базы не так-то просто, особенно продавцов оставить без проги. Начал с одного, на другое отвлекся) Так я к тому, что для обычных форм все отлажено и вероятность появления ошибки минимальна, если так можно выразиться. Для управляемых пока еще в тесте, ну их я не выкладываю пока.
9. Евгения Карук (ekaruk) 08.06.15 21:39
(2) vasyak319,
для отладки всякого хардкора есть загрузка текста модуля из файла на диске (ни разу не пользовался, но есть в языке такая инструкция препроцессора)

Насколько я знаю, нет такой возможности.
Разве что через "выполнить".
Подскажи, что за директива, если есть.
10. Евгений Сосна (pumbaE) 09.06.15 00:23
(1) ekaruk, безусловные - странно. Но сам принцип успешно применяется, для возможности дожить до регламентного обновления. Просто сравниваетса версия модуля и версия обработки, в случаии отличия, вызывается процедура из обработки.

(9) ekaruk, то в 7.7 можно было, сейчас уже нет.
11. Павел Чистов (GROOVY) 09.06.15 03:18
Я, ИМХО, видать не понял смысл.
А, нельзя разве просто, если уж мы заглушки ставим вручную везде, просто вызвать выполнение текстового файла как модуля, предварительно выгрузив тексты конфигурации? И опять таки, можно не все выгрузить. И кода меньше писать, и "перейти" не нужно, и править можно как в конфигураторе, так и блокнотом. И от режима не зависит...
alex_4x; Karmerruk; AnryMc; the1; u_n_k_n_o_w_n; +5 Ответить 1
12. Призрак (davdykin) 09.06.15 05:42
(11) GROOVY, Думаю вы очень сильно упадете в производительности, она и так не на высоте. А вообще данный способ мне представляется весьма сомнительным по нескольким причинам:
1. допущенная ошибка может быть в теле обработчика события до или после вызова процедуры и вызывать исключение и не лечиться в принципе таким способом (т.е. область решаемых ошибок не особо большая)
2. Вставлять такие переходы в каждый модуль с которым я работаю тоже представляется довольно сомнительным способом.

Вот если бы в 1С можно было динамические подписки создавать, в том числе и на события формы, это бы во многом решило 2-й вопрос :)
u_n_k_n_o_w_n; +1 Ответить 3
13. Василий Коровин (vasyak319) 09.06.15 08:49
(9) ekaruk, хм, думал, что есть, а таки уже нету. Была в 7.7 #ЗагрузитьИзФайла, но, видимо, никто ей не пользовался.
14. Анянов Михаил (insurgut) 09.06.15 09:17
Вот когда 1С даст инструменты доработки конфигураций без снятия конфигурации с поддержки (хотя бы на уровне тех же событий), тогда будет прорыв, а пока извращаемся как можем :)
15. Анянов Михаил (insurgut) 09.06.15 09:21
(9) ekaruk, а чем не устраивает Выполнить? Читаем содержимое текстового файла в переменную Стр, затем делаем Выполнить(Стр).

Выполнить("а=1;б=2;с=а+б;сообщить(с)");


Если Стр пустая, то ничего и не произойдет. По большому счету предложенный метод лишь избавляет от необходимости перекидывать текстовый файл в случае наличия распределенных точек. В остальном - можно точно так же и с применением способа, Выполнить содержимое текстовых документов, сделать.
16. Павел Чистов (GROOVY) 09.06.15 09:30
(12) davdykin,
1. Я имел в виду, что модуль полностью выносится во внешний файл, и вместо него используется команда Выполнить().
2. Так тут же предлагается тоже самое.
17. Евгения Карук (ekaruk) 09.06.15 09:46
(3) knocking, Да нормально работают динамические обновления.
Бекапьте на всякий случай системные таблицы перед обновлением.
Этого достаточно для быстрого восстановления при сбое обновления.
Все равно это проще и надежнее, чем предлагаемый вариант.

(12) davdykin, Ну так есть же уже динамические подписки на события форм.
Называются "Расширения".
Подключаются в режиме предприятия без обновления конфигурации.
18. Алекс Ю (AlexO) 09.06.15 09:50
Автор, а в чем новация? В любое место кода, где может возникнуть ошибка - дополнительных проверок не вставишь. Это раз.
Два - я, например, давно использую подобный механизм, только в несколько более цивилизованном виде:
Во всех "проблемных" местах (конечно, только своих разработок! что там в типовых происходит или произойдет - не знают сами разработчики типовых, и гадать здесь совершенно бессмысленно) стоят проверки "флагов" (как раз чтение параметра из спецрегистра).
Выставляем, например, в регистре "тест" - и получаем полный список происходящего при выполнении. Или права повышаем/урезаем онлайн. А также такой регистр крайне удобен для хранения всяческих "сеансовых" параметров (и вообще любых параметров "уровня базы" - ведь мы не ограничены булевыми Константами), которые вообще не удобно прописывать/проверять каждый раз заново в конфигурации.
19. Алекс Ю (AlexO) 09.06.15 09:51
(17) ekaruk,
Да нормально работают динамические обновления.
Не работают ДО. Есть большая вероятность порушить структуру базы, и зависит эта вероятность от "набивки" данными: много пользователей, много данных набивается одновременно - весьма высокая вероятность.
20. Алекс Ю (AlexO) 09.06.15 09:53
(17) ekaruk,
Ну так есть же уже динамические подписки на события форм.
Динамические - имелось в виду, чтобы выполнялись не всегда, а "по приказу сверху", т.е. от администратора базы.
А такого не будет, пока 1С не ООП.
21. Алекс Ю (AlexO) 09.06.15 09:57
Автор, как бесплатный "совет" я бы вашу разработку посмотрел, и даже бы похвалили (рацио есть немного), но почти 100% "заинтересованных" покупать такого "монстра" не будут (которого, к тому же, нужно еще и постоянно "кормить" - следить, чтобы сам механизм "доработки на скорую руку" и выполняемый им код не привели к новым, даже более серьезным ошибкам).
22. Анянов Михаил (insurgut) 09.06.15 10:08
(21) AlexO, а что тут покупать? Если программист в организации есть, то идея ясна для реализации. Если программиста нет - то нафиг это покупать? :)
23. Сергей Пшеничников (Зеленоград) 09.06.15 10:17
(12) davdykin, У них со словом "динамические" какая-то ерунда получается.
И если вдруг разработчики платформы победят глюки демонического обновления, то новые сущности странной формы и логики нам не придётся придумывать.

PS На PostgreSQL динамические обновления не роняли базу. Делали их часто, повторно - но сломать не смогли. База большая, нетиповая, с закрытыми модулями. Случайность или постгри работает в этом плане надёжней?
24. Алекс Ю (AlexO) 09.06.15 10:35
(22) insurgut,
Если программист в организации есть, то идея ясна для реализации.
Это не идея, это концепция на стадии "бета". И реализовать её можно десятком различных способов.
Пару других я уже привел.
25. Сергей (ret-Phoenix) 09.06.15 10:55
Действительно, если уж вставлять в критические блоки что-то, то можно и так: http://itpath.ru/1cv8-classes-with-extforms/
Вся логика в файле, чуть что подправил.
26. A T (knocking) 09.06.15 11:09
(15) insurgut, Выполнить не понимает оператора Возврат - вылетает с ошибкой, но зато контекст не нужно в него передавать. Т.е. он может решить лишь часть проблем. Вторую часть проблем решает внешняя обработка, она понимает Возвраты, но нужно в нее контекст передавать.
27. A T (knocking) 09.06.15 11:11
(16) GROOVY, команда Выполнить вылетит с ошибкой, если в ней будет Возврат или из нее будет вызываться какая-то другая процедура, где есть Возврат.
28. Павел Чистов (GROOVY) 09.06.15 11:12
(20) AlexO, так расширения подключаются в предприятии. Захотел включил, не нужно - выключил.
29. A T (knocking) 09.06.15 11:19
(22) insurgut, ну да, можно и УПП самому написать заново лет так за N, зачем покупать, если программист есть). Тут тоже самое. Я на это потратил около 3-х недель (не чистого времени) пока все отладил и все возможные ситуации предусмотрел. Просто не рационально делать это самому (как минимум несколько дней), когда можно купить за не так уж и дорого;)
30. Анянов Михаил (insurgut) 09.06.15 11:50
(29) knocking, слишком "многофакторно" все, чтобы даже делать этот предмет разговора - предметом для споров :)
31. Алекс Ю (AlexO) 09.06.15 12:02
(29) knocking,
Я на это потратил около 3-х недель (не чистого времени)
А придумывали сколько?
32. A T (knocking) 09.06.15 12:15
(31) AlexO, ¡vete a saber!... это так важно?
33. Призрак (davdykin) 09.06.15 13:06
(16) GROOVY, Не совсем. Тут предлагается выносить не модули (ведь в модуле может быть несколько процедур и через "Выполнить" их нельзя вызвать, если я вас правильно понял) и самое главное что такой способ выполнения это "временная заплатка" до локального обновления конфигурации. А если вы вынесите бизнес-логику во внешний файл, то обращение к нему будут постоянны, что думаю незамедлит сказаться на производительности.

(17) ekaruk, А разве расширениями можно править в предприятии на периферийной базе, я так понял это механизм который позволяет "наложить" на конфигурацию (будем надеяться что только пока), довольно узкий круг доп функционала и делается он через конфигуратор?
34. Евгения Карук (ekaruk) 09.06.15 13:13
(33) davdykin, Делается через конфигуратор.
На наложить можно в любой базе, не выгоняя пользователь. Просто будет действовать только для вновь вошедших.
Можно и на переферийной использовать. Просто через обновление конфигурации расширение автоматом не передастся.
Нужно, чтобы пользователь на месте вручную подключил, либо дорабатывать типовые правила обмена, чтобы была возможность расширения автоматически передавать через правила обмена, обновлять и подключать.
Функционал не очень широкий, но для решения многих задач достаточный.
35. Алекс Ю (AlexO) 09.06.15 13:14
(32) knocking,
это так важно?
Да, раз упомянули про
Я на это потратил около 3-х недель (не чистого времени) пока все отладил и все возможные ситуации предусмотрел.
36. tixis1c tixis1c (qwed557) 09.06.15 18:36
У нас нечто подобное внедрено, все наиболее часто дорабатываемые функции вынесены во внешнюю обработку. практика использования показала, что это лишний, никому не нужный гемор. Обычно доработка проходит с добавлением\изменением реквизитов, а без монопольного обновления здесь не обойтись ни как. В итоге как обновляли монопольно, так и обновляем.
37. Павел Алексеенко (qwinter) 10.06.15 09:28
(34) ekaruk, в новой вроде обещали справочник под расширения, так что они и так должны будут ходить по рибу.
38. Алекс Ю (AlexO) 10.06.15 09:50
(34) ekaruk,
На наложить можно в любой базе, не выгоняя пользователь.
А оно все вообще, работает? Или, как обычно - гладко на бумаге? Технология временных файлов не изменилась, методы работы с tmp в 1С так и остались на пещерном уровне.
С чего новое "расширение" заработает как надо (а не просто "лучше" вообще небезопасного ДО)?
39. Алекс Ю (AlexO) 10.06.15 10:37
(28) GROOVY,
Захотел включил, не нужно - выключил.
Анализируем все проблемы 1С, и, т.к. все это еще на стадии теста 8.3.6, то на основе этого сделаем прогноз работы/стабильности по новым "Расширениям":
- Расширения позволят "подменять" только объекты из весьма узкого списка (например, только подменять УФ, подключать отчеты и обработки, новые роли - т.е. только те объекты, которые минимально влияют/не влияют вовсе на остальные объекты). То, что нужно реально - "твердые" объекты (справочники, документы, регистры, их реквизиты, etc) добавлять не дадут;
- Подмена форма и событий - на уровне "типовое событие не бери, бери теперь расширенное". Т.е. не расширение метода/свойства, а грубая банальная подмена;
- Заимствованные ("расширенные") типовые объекты будут работать только до того момента, пока присутствуют в типовой конфигурации и остаются неизменными в типовой по отношению к своему "слепку" на момент заимствования;
- Расширения смогут "объединяться" с типовым функционалом только на весьма примитивном уровне (как сейчас слияние модулей при обновлении);
- При определенных изменениях типовых работа "расширенного" функционала станет невозможна без пересоздания его "с нуля";
- Одни и те же версии расширения, измененное в двух разных базах двумя программистами, будут несовместимы между собой;
- Подключение и "горячая" обработка расширений приведет к еще большему падению производительности;
- Чем больше объектов будет "подменяться" в расширениях, тем больше будет глюков; следствие - в конце концов либо перестанет работать типовой "частично подмененный" функционал, либо - "расширенный"; а, зная 1С, вероятна ситуация - что оба перестанут работать корректно;
- Работа расширений "последовательно" (т.е. одно вызывает методы/основано на другом) будет невозможна;
- Расширения будут приводить сначала к краху структуры базы, потом - к краху сервера (т.к. сервер перестанет "понимать" мешанину из типовых и расширений к ним); хотя при крахе структуры - какая разница, работает еще, или уже нет, сервер, но у 1С почему-то всегда такая вот странная "последовательность" причинно-следственных проблем;
- Разные расширения одной типовой, сделанные в разных базах, будут несовместимы между собой;
- Расширения нельзя будет включать в "тиражное" решение как составляющую;
- Расширения нельзя будет передавать и подключать, если типовая изменилась - работа только и исключительно со "своей" родительской версией;
- Расширение "подключается" только после перезапуска сеанса;
- Расширения будут "продавливаться" вместо обкатанного и простого механизма подключения внешних отчетов/обработок, внося новые ошибки, и будут вынуждать писать мини-конфигурацию для добавления ВПФ;
- Функционал типовых станет в разы более запутанным: чтобы найти ПФ, нужно будет перетрясти несколько расширений и отследить все связи, включая подписки, и всевозможные пересечения подписок, объектов, расширений и т.д. Картинка поиска в таком нагромождении очень красочная вырисовывается;
... и т.д.
пока хватит.
Sintson; artbear; +2 Ответить
40. Allexey (alex_4x) 15.06.15 11:07
Бывают костыли, бывают инвалидные коляски, бывают машины для инвалидов, а бывает джет-пак для инвалидов!? Видимо да, бывает. Но зачем он нужен - никто не знает.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа