Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   БП3_0_44 и расширенные страдания. (http://forums.kuban.ru/f1040/bp3_0_44_i_rasshirennye_stradaniya-8000853.html)

VZ 15.09.2016 13:26

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

VZ 15.09.2016 13:38

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

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

USSR 15.09.2016 14:09

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

VZ 15.09.2016 14:28

2-USSR > Верь, не верь - но либо пользуешься тем, что есть, и есть здесь, и сегодня, либо ковыряешь конфу по всему пространству. Со всеми положенными следствиями.
"При всем богатстве выбора..." (с)
Или:
"Каждый может купить у меня автомобиль любой марки, и любого цвета. При условии выбора черного T-Ford." (с) Форд.

Климов Сергей 15.09.2016 14:34

2(1) На its.1c.ru, кажется, были примеры как чередовать свои обработчики со встроенными.

nordbox 15.09.2016 15:15

Ну если я правильно понял, то вроде как есть такая директива &Вместо

nordbox 15.09.2016 15:16

+5
[url]https://wonderland.v8.1c.ru/blog/rasshirenie-moduley/[/url]

VZ 15.09.2016 15:24

4-Климов Сергей > Смотрел. Замечательные примеры, где текст обработчика состоит из Сообщить("Это обработчик из расширения 1)", ...Сообщить("Это обработчик из расширения 2)", т.п.
Но моя проблема в том, что не могу|не умею|не знаю как сформировать расширенную форму со всеми примбамбасами: панелями, кнопоцками, индикаторами, подмигивающим Распутиным[b][u] не через импорт из Конфигурации[/u][/b].
Через импорт ("Добавить в расширение") всё прекрасно, расположение всех элементов копируются, но модули объеденяются (поэтому можно не писать то, что работает как надо в Основной форме, и потому первоначально Модуль пуст), и в Расширение автоматически попадают связанные элементы из Основной конфигурации. И форма имеет то же самое Наименование.
И не могу вставить УстановитьВыполнениеОбработчиковСобытия()
Если же не пользоваться копированием формы, а самостоятельно создать в Расширении, то и форма получает Наименование с префиксом, и Модуль"отвязывается" от Модуля из Основной конфигурации, и можно вставлять УстановитьВыполнениеОбработчиковСобытия(). Только вот примбамбасы - тоже на мне. А это - муторно.

VZ 15.09.2016 15:30

6-nordbox > Большое спасибо

VZ 15.09.2016 15:39

+(6) Только это точно для 8.3.8? Не для 8.3.9? А то в тексте там про общие модули,которых для 8.3.8 нет.

nordbox 15.09.2016 15:58

(9) VZ 8.3.9 только планируется, на users посмотри, там хоть и сказали что на 14 число планируют, но пока ничего нет

nordbox 15.09.2016 16:03

+10 8.3.9 Есть только для тестирования

nordbox 15.09.2016 16:07

+11 и дату публикации ссылки которую дал посмотри в верху
дата= 24.03.2016

VZ 15.09.2016 16:13

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

P.S. Если чО, движок 8.3.8.2054

nordbox 15.09.2016 16:33

Ну так ты читай внимательно чо он написал
Он не видит "ПродукцияНоменклатураПриИзменении "
Ты попробуй пустую ее сделай конструктором выше директивы

nordbox 15.09.2016 16:34

И пробельчик убери ("ПродукцияНоменклатураПриИзменени[b]и ")[/b]

VZ 15.09.2016 17:20

14-nordbox > Низзя "ПродукцияНоменклатураПриИзменении"- это обработчик модуля формы Основной конфигурации. Ругается,чтотакая процедура уже есть.

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

15-nordbox > И да, после [em]&Вместо[/em] никакого пробела нет. В (11) копипастом строки писал.
Почему он выдает [em]&Вместо[b]<<?>>[/b]([/em] - я не понял. И добавлял/удалял пробел, и скобки удалял/добавлял -никак ;(

nordbox 15.09.2016 17:33

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

nordbox 15.09.2016 17:47

VZ а ведь правда, это планируется в 8.3.9
сейчас пециаяльно рылся на эту тему и на сайте 1с нашел четко сказанное вот тут:
[url]http://v8.1c.ru/o7/201603module/index.htm[/url]
Ну извини, чем мог ((((

VZ 15.09.2016 17:55

18-nordbox > Да я уже обнаружил:) Все равно полезно: обновил закладки.

nordbox 15.09.2016 18:10

VZ а ты пиши на тестовой 8.3.9, пока напишешь и выйдет уже нормальная ))))

Reaper 15.09.2016 19:24

20-nordbox > Не взлетит. Все фичи доступны только если конфигурация не использует режим совместимости с 8.3.8.

nordbox 16.09.2016 07:48

Reaper, Ну это и так очевидно )))
если эти фичи есть только 8.3.9, о каком режиме совместимости может идти речь...

newreactive 07.11.2016 13:50

В Интернет пишут, что можно без снятия режима совместимости через выгрузку .dt.
У кого-нибудь получилось?


Текущее время: 03:56. Часовой пояс GMT +3.