|
Зачем выносить код обработки проведения в модуль менеджера? | ☑ | ||
---|---|---|---|---|
0
bahtik
29.11.12
✎
22:58
|
В типовой БП 3.0 например, в документе ВводОстатков весь код по формированию движений вынесен в модуль менеджера. Что это дает?
|
|||
1
Undefined vs NULL
29.11.12
✎
22:59
|
ничего, они идиоты, не различают понятий статических методов, от методов-объектов
|
|||
2
zulu_mix
29.11.12
✎
23:01
|
||||
3
Fragster
гуру
29.11.12
✎
23:40
|
(0) не надо создавать объект чтобы сформировать движения, например программно
|
|||
4
Undefined vs NULL
29.11.12
✎
23:41
|
(3) система такая, она не может нужно-тонких объектов создавать
|
|||
5
Alex375
30.11.12
✎
07:46
|
Есть еще применение - формирование печатных форм. Если ты запросом получаешь только нужные данные, тогда зачем тебе получать перед этим весь объект? Так что это хорошая вещь.
|
|||
6
Живой Ископаемый
30.11.12
✎
08:20
|
это лучше чем наоборот. создать объект только для того чтобы воспользоваться экспортными фукнциями его модуля которые выберут много объектов этого и даже других видов и что-то с ними сделают. например проведут.
|
|||
7
Infsams654
30.11.12
✎
08:24
|
(1) как раз и знают, читай (5), (6)
|
|||
8
Нуф-Нуф
30.11.12
✎
08:25
|
А все таки в чем прикол? Срабатывает обработка проведения и зачем в ней обращаться к менеджеру документа? Какой смысл? Может быть чтобы потом с помощью процедур менеджера формировать новые движения без перепроведения самого документа?
|
|||
9
Infsams654
30.11.12
✎
08:38
|
(8) а почему нет ? Ввод остатков, как известно может многое.
По мере его разрастания (в следующих релизах) зачем перепроводить старое. |
|||
10
Infsams654
30.11.12
✎
08:50
|
(9)+ пример: документ проводит движения Р1, Р2, Р3. Решили в следующем релизе, что вместо Р3, нужно Р3.1, Р3.2. При переходе на релиз, обновление ИБ выполняет не перепроведение (могут и ручные корректировки быть), а только движение из Р3 в Р3.1 и Р3.2
|
|||
11
Undefined vs NULL
30.11.12
✎
08:51
|
(7) тогда вообще зачем объект?
по хорошему я должен сам управлять контентом объекта, но увы |
|||
12
Infsams654
30.11.12
✎
08:59
|
(11) так это и не отменяется. В менеджер (читай статический метод) передается ссылка на объект, а там уж решается поднимать или нет сам объект, и вызывать любые его экспортные методы.
|
|||
13
Undefined vs NULL
30.11.12
✎
09:23
|
(12) это все понятно, но как быть если я хочу распечатать массив документов разного типа?
|
|||
14
Infsams654
30.11.12
✎
09:33
|
(13) так в типовых под УФ (БГУ 2.0, БП 3.0 ...) печать как раз и выведена в менеджер, в (5) об этом. Удобно из формы списка (или распечатать массив документов разного типа).
|
|||
15
Undefined vs NULL
30.11.12
✎
09:39
|
(14) ты мне пример кода для (13) кинь
|
|||
16
Infsams654
30.11.12
✎
10:12
|
(15) посмотри для начала в демо БГУ 2.0 - выделяешь в списке документов несколько, Все действия - Печать -.
А если разнотиповые, то примерно так: Для Каждого ДокСтрока Из СпискаДокументов Цикл Если ТипЗнч(ДокСтрока.Док) = Тип("ДокументСсылка.<твой тип>) Тогда МассивОбъектов = Новый Массив(); МассивОбъектов.Вставить(ДокСтрока.Док.ПолучитьОбъект()); Документы[<твой тип>].Печать(МассивОбъектов,... КонецЦикла; можно покрасивее сделать, типа, сразу формировать массивы объектов одного типа и вызов печати для них, и т.д. |
|||
17
Undefined vs NULL
30.11.12
✎
10:35
|
(16) мне одному кажется, что ты только что поднял объекты полностью?
|
|||
18
Reset
30.11.12
✎
10:47
|
Ненавидящий говорит об отсутвии менеджера ссылки
|
|||
19
Нуф-Нуф
30.11.12
✎
10:50
|
Печать в модуле менеджера - это правильный подход. Туда передавать ссылку (массив ссылок) и получать данные для печати запросом без получения объекта.
А вот проведение - имхо под вопросом |
|||
20
Infsams654
30.11.12
✎
10:51
|
(17) см. (12). хочешь - поднимай или не поднимай.
(19) пример в (10) |
|||
21
Нуф-Нуф
30.11.12
✎
10:55
|
(20) имхо сомнительный пример
|
|||
22
Undefined vs NULL
30.11.12
✎
10:55
|
(20) ну так ты приведешь нормальный пример без поднятия объекта для разных видов документов в массиве?
|
|||
23
SanGvin
30.11.12
✎
10:57
|
(2) спасибо, исчерпывающе
|
|||
24
Infsams654
30.11.12
✎
11:31
|
(22) а без данных объекта, как думаешь его печатать ? Еще раз объясняю, статический метод позволяет брать от объекта только то, что ему нужно
|
|||
25
Undefined vs NULL
30.11.12
✎
11:36
|
(24) слив засчитан
|
|||
26
Reset
30.11.12
✎
11:37
|
(24) Статический метод нельзя нормально вызвать, имея ссылку(и не зная ее тип), только громоздя конструкции иначеЕсли
|
|||
27
Reset
30.11.12
✎
11:38
|
+(26) или выдергиваением имени из метаданных и манипуляциями с ним, что тоже неудобно
|
|||
28
Команданте
30.11.12
✎
11:39
|
я делаю так
Процедура ОбработкаПроведения() ИДокумент.Провести(ЭтотОбъект); КонецПроцедуры ИДокумент (или ЯДокумент) - интерфейс, реализованный в виде общего модуля |
|||
29
Команданте
30.11.12
✎
11:41
|
+(28)
Процедура Провести(ДокОбъект, Отказ, РежимПроведения) Экспорт Перем Таблица; ИмяДок = ДокОбъект.Метаданные().Имя; ДокСсылка = ДокОбъект.Ссылка; Движения = ДокОбъект.Движения; СтрПр = ПолучитьСтрПр(ДокСсылка); СоответствиеТаблиц = Документы[ИмяДок].ПолучитьСоответствиеТаблиц(); Для Каждого КлючИЗначение Из СоответствиеТаблиц Цикл Выполнить("Таблица = Документы[ИмяДок]." + КлючИЗначение.Ключ + ("(СтрПр);")); ОтразитьДвижение(Движения, КлючИЗначение.Значение, Таблица, Отказ); КонецЦикла; ДокОбъект.Движения.Записать(); КонецПроцедуры |
|||
30
Undefined vs NULL
30.11.12
✎
11:53
|
(29)и в чем прэлесть?
|
|||
31
Команданте
30.11.12
✎
12:13
|
(30) всё объектно-ориентированно
модуль менеджера документа содержит функции получения таблиц то есть всё что документ должен сделать это запросы и вернуть эти таблицы в метод Провести() технология с3.14жжена из ут 11, доработана под ООП |
|||
32
Undefined vs NULL
30.11.12
✎
12:17
|
(31) честно говоря - я не вижу тут ООП ну никак
|
|||
33
Infsams654
30.11.12
✎
12:18
|
(31) с3.14жжена, прикольно: 3.14 - число "пи"
|
|||
34
Fragster
гуру
30.11.12
✎
12:18
|
(29) за "выполнить" и "вычислить" надо давать по голове
|
|||
35
Команданте
30.11.12
✎
12:20
|
(29) согласен, но 1с не поддерживает делегатов
|
|||
36
Команданте
30.11.12
✎
12:21
|
(32) шо ты тут не видишь, а
экземпляр документа, событие событие вызывает метод интерфейса статитеский метод документа возвращает таблицы по-моему ООП тут просто воняет |
|||
37
Команданте
30.11.12
✎
12:22
|
(35) к (34)
|
|||
38
DailyLookingOn Sunset
30.11.12
✎
12:22
|
Зачем, зачем.
Просто разделение на ДокументОбъект и ДокументСсылка весьма условное и иногда нужно проведение для ссылки (данные документа при проведении не меняются же). |
|||
39
DailyLookingOn Sunset
30.11.12
✎
12:23
|
А нужно например для актуальности разделов учета, когда по отдельным регистрам движения документа формируются позже, обработкой восстановления актуальности учета.
|
|||
40
Undefined vs NULL
30.11.12
✎
12:44
|
(36) не впечатлило ни разу
|
|||
41
Лефмихалыч
30.11.12
✎
12:45
|
(0) это дает возможность перепроведения без получения и записи объекта документа
|
|||
42
Лефмихалыч
30.11.12
✎
12:47
|
(1) ты бы пальцы чтоль поуже сделал, я не знаю... теперь ведь тебе надо доказать, что метод формирования движений документа обязан быть методом объекта и не может быть статическим методом класса. Иначе ты получается пустую предъяву кинул
|
|||
43
Undefined vs NULL
30.11.12
✎
12:58
|
(42) я требую (18)
|
|||
44
Undefined vs NULL
30.11.12
✎
13:00
|
(41) перепроведи мне таким образом массив документов, но документы там разного вида
|
|||
45
Команданте
30.11.12
✎
13:22
|
чем отличается статический метод от метода экземпляра?
тем, что метод экземпляра оперирует данными экземпляра впрочем, ничто не мешает все методы экземпляра перевести в статические, используя ссылку на экземпляр говоря языком ООП, грамотная реализация статистических методов подразумевает грамотное использование наследования 1С, как известно, совершенно не поддерживает наследование, поэтому рефакторинг там плакал и смеялся (много дублирующегося кода, псевдо-статические методы, псевдо-вызов виртуальных методов, псевдо-полимормфизм и т.д.) касаемо проведения документа, важно как мы построим абстракцию меня лично всегда удивляло, что метод записи движений документа в базу является методом документа имхо, это какой-то другой класс, его даже нельзя назвать псевдо-статическим методом скорее это метод абстрактного класса (или интерфейса), как уже было мною приведено выше ихь бин не труЪ ООПшник, так что извиняйте, если чо где не так сказал |
|||
46
ssh2006
30.11.12
✎
13:29
|
(26) > Статический метод нельзя нормально вызвать, имея ссылку(и не зная ее тип), только громоздя конструкции иначеЕсли
Для разных видов, должна ведь сработать конструкция, если имя процедуры универсальное Документы[ДокСсылка.Метаданные().Имя].Печать(ДокСсылка) |
|||
47
Undefined vs NULL
30.11.12
✎
13:35
|
(46) точно! этот гофнокод меня не радует
отражения в топку! |
|||
48
pumbaEO
30.11.12
✎
13:43
|
А меня больше волнует, что при подписки на событие проведения документа никак не смогу отреагировать на вызов доп записи движений из модуля менеджера.
Вроде хитрые алгоритмы выносим из модуля объекта в подписки и обновлять хорошо и т.д., все хорошо. Только вот теперь надо еще смотреть нет ли спец процедурки в модуле менеджера и там по старинке лепить свой вызов процедуры... |
|||
49
Команданте
30.11.12
✎
13:48
|
до тех пор пока 1с не станет полноценной ООП-системой, будет продолжаться этот неумолимый срач
|
|||
50
Undefined vs NULL
30.11.12
✎
13:52
|
(49) вообще то да, но я все равно хочу вкурить цимус (28)+(29)+(45) но чего-то не могу, помоги а?
|
|||
51
Infsams654
30.11.12
✎
15:11
|
(50) не вкуриваешь, забудь. Делай как все.
|
|||
52
Undefined vs NULL
30.11.12
✎
15:13
|
(51) не хочу как все
|
|||
53
Infsams654
30.11.12
✎
15:21
|
(48) pumba, в подписке вызываются методы общих модулей, что и есть "статические" методы с источником в параметре.
|
|||
54
Infsams654
30.11.12
✎
15:27
|
(52) ну тогда крути мозгами, вроде как все уже выяснили
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |