К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

БП3_0_44 и расширенные страдания.

Гость
0 - 15.09.2016 - 13:26
Суть: БП3_0_44 на платформе 8.3.8 Теперь в режиме "без совместимости", и, значит, может использовать все прелести Расширений для 8.3.8. Ура.
Наконец-то можно часть правок выбросить за пределы типовой конфигурации, и несколько сократить трудозатраты по обновлениям.
Действительно, при добавлении Расширенной формы документа можно поиграться с отображением формы: раскрасить под попугая, поменять расположение элементов, добавить общую команду, вывести похабную картинку. Все это здорово.
Но есть неура: добавленная форма тащится из основной конфигурации без модуля. Что получается:
Если мы добавляем в модуль [исправленную] обработку события, конфигуратор злобно ругается, что такая процедура уже существует.
Если мы переименовываем обработку события (префиксом), то это событие обрабатывается, но после срабатывает и обработка этого же события на "родительской" форме. Что не всегда айс.
И самое гадкое, что отсечь "родительскую" обработку события никак не получается: УстановитьВыполнениеОбработчиковСобытия(Ложь) конфигуратор не дает.



Гость
1 - 15.09.2016 - 13:38
Поведение обработка расширения ->обработка "родительской формы" ожидаемо, и описано в документации. А вот что делать со вторым - не ясно. Дело в том, что при записи строки УстановитьВыполнениеОбработчиковСобытия(Ложь) появляется сообщение, что эта процедура доступна только в расширении. Т.е., конфигуратор рассматривает модуль расширенной формы совместно с модулем формы основной конфигурации. Как одно целое.
Это значит, расширяемую форму надо добавлять не через меню конфигурация -> Элемент->Добавить в расширение, а изнутри Расширения через "добавить".
Тогда все замечательно: образуется новая форма с префиксом в названии, Помошник подхватывет все реквизиты, но...
Но выстраивать их в нужную картинку придется ручками. Ручками размещать по панелям, редактировать представление, ручками же настраивать обработку событий, и т.д. Весь смысл расширения смазывается: получается проще при обновлении проставить "Порядок из основной конфигурации", чем, по сути, рисовать форму как свою. Вместо "точечной коррекции".

И как с этим бороться, я пока не знаю. Может, есть какой-то хитрый прием?
Конечно, "точечная коррекция" формы останется, но будет гораздо реже. И разнесено в пространстве. И отдельно сохранятся.
Гость
2 - 15.09.2016 - 14:09
Какой-то жуткий суррогат ООП ) Там то элементарно можно было либо вызывать метод базового класса, либо целиком переопределять его. Мне кажется (глубоко не вникал, поэтому могу ошибиться) и ООП уже подзабыл, что эти расширения - тупиковый путь. Надо делать либо полноценный ООП с полноценным наследованием, либо не маяться дурью и оставить как было. Не верю я в полноценные расширения ))
Гость
3 - 15.09.2016 - 14:28
2-USSR > Верь, не верь - но либо пользуешься тем, что есть, и есть здесь, и сегодня, либо ковыряешь конфу по всему пространству. Со всеми положенными следствиями.
"При всем богатстве выбора..." (с)
Или:
"Каждый может купить у меня автомобиль любой марки, и любого цвета. При условии выбора черного T-Ford." (с) Форд.
4 - 15.09.2016 - 14:34
2(1) На its.1c.ru, кажется, были примеры как чередовать свои обработчики со встроенными.
Гость
5 - 15.09.2016 - 15:15
Ну если я правильно понял, то вроде как есть такая директива &Вместо
Гость
6 - 15.09.2016 - 15:16
+5
https://wonderland.v8.1c.ru/blog/rasshirenie-moduley/
Гость
7 - 15.09.2016 - 15:24
4-Климов Сергей > Смотрел. Замечательные примеры, где текст обработчика состоит из Сообщить("Это обработчик из расширения 1)", ...Сообщить("Это обработчик из расширения 2)", т.п.
Но моя проблема в том, что не могу|не умею|не знаю как сформировать расширенную форму со всеми примбамбасами: панелями, кнопоцками, индикаторами, подмигивающим Распутиным не через импорт из Конфигурации.
Через импорт ("Добавить в расширение") всё прекрасно, расположение всех элементов копируются, но модули объеденяются (поэтому можно не писать то, что работает как надо в Основной форме, и потому первоначально Модуль пуст), и в Расширение автоматически попадают связанные элементы из Основной конфигурации. И форма имеет то же самое Наименование.
И не могу вставить УстановитьВыполнениеОбработчиковСобытия()
Если же не пользоваться копированием формы, а самостоятельно создать в Расширении, то и форма получает Наименование с префиксом, и Модуль"отвязывается" от Модуля из Основной конфигурации, и можно вставлять УстановитьВыполнениеОбработчиковСобытия(). Только вот примбамбасы - тоже на мне. А это - муторно.
Гость
8 - 15.09.2016 - 15:30
6-nordbox > Большое спасибо
Гость
9 - 15.09.2016 - 15:39
+(6) Только это точно для 8.3.8? Не для 8.3.9? А то в тексте там про общие модули,которых для 8.3.8 нет.
Гость
10 - 15.09.2016 - 15:58
(9) VZ 8.3.9 только планируется, на users посмотри, там хоть и сказали что на 14 число планируют, но пока ничего нет
Гость
11 - 15.09.2016 - 16:03
+10 8.3.9 Есть только для тестирования
Гость
12 - 15.09.2016 - 16:07
+11 и дату публикации ссылки которую дал посмотри в верху
дата= 24.03.2016
Гость
13 - 15.09.2016 - 16:13
12-nordbox > Не вышел Каменный цветок:
Строки
&Вместо("ПослеЗаписиНаСервере")
Процедура Расш1_ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)

были издевательски отвергнуты:
{Расширение1 Документ.ОтчетПроизводстваЗаСмену.Форма.ФормаДокум ента.Форма(26,8)**: Ожидается определение процедуры/функции
&Вместо<<?>>("ПродукцияНоменклатураПриИзменении ") (Проверка: Сервер)


P.S. Если чО, движок 8.3.8.2054
Гость
14 - 15.09.2016 - 16:33
Ну так ты читай внимательно чо он написал
Он не видит "ПродукцияНоменклатураПриИзменении "
Ты попробуй пустую ее сделай конструктором выше директивы
Гость
15 - 15.09.2016 - 16:34
И пробельчик убери ("ПродукцияНоменклатураПриИзменении ")
Гость
16 - 15.09.2016 - 17:20
14-nordbox > Низзя "ПродукцияНоменклатураПриИзменении"- это обработчик модуля формы Основной конфигурации. Ругается,чтотакая процедура уже есть.

Собственно,там три обработчика,и все три оформил одинаково.
И обругались все одинакого.
Только я немножко ;) перепутал сообщения об ошибках - скопировал директиву и название функции для первого обработчика, а текст ошибки компиляции - для второго.

15-nordbox > И да, после &Вместо никакого пробела нет. В (11) копипастом строки писал.
Почему он выдает &Вместо<<?>>( - я не понял. И добавлял/удалял пробел, и скобки удалял/добавлял -никак ;(
Гость
17 - 15.09.2016 - 17:33
На мисте сегодня подобную проблему обсуждали, могу ссылку дать если модераторы не против
Гость
18 - 15.09.2016 - 17:47
VZ а ведь правда, это планируется в 8.3.9
сейчас пециаяльно рылся на эту тему и на сайте 1с нашел четко сказанное вот тут:
http://v8.1c.ru/o7/201603module/index.htm
Ну извини, чем мог ((((
Гость
19 - 15.09.2016 - 17:55
18-nordbox > Да я уже обнаружил:) Все равно полезно: обновил закладки.
Гость
20 - 15.09.2016 - 18:10
VZ а ты пиши на тестовой 8.3.9, пока напишешь и выйдет уже нормальная ))))
Гость
21 - 15.09.2016 - 19:24
20-nordbox > Не взлетит. Все фичи доступны только если конфигурация не использует режим совместимости с 8.3.8.
Гость
22 - 16.09.2016 - 07:48
Reaper, Ну это и так очевидно )))
если эти фичи есть только 8.3.9, о каком режиме совместимости может идти речь...
Гость
23 - 07.11.2016 - 13:50
В Интернет пишут, что можно без снятия режима совместимости через выгрузку .dt.
У кого-нибудь получилось?


К списку вопросов






Copyright ©, Все права защищены