|
общий метод для формы и объекта | ☑ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
qeos
23.10.13
✎
13:28
|
8.2 УФ БП 3.0
есть у меня заполнение ТЧ. по феншую куда я этот метод должен вставить чтобы вызвать его и из формы и из кода при создании объекта? Чтото функции не доступны ни в модуле обекта ни менеджера... |
||||||||||||||||
1
Maxus43
23.10.13
✎
13:28
|
в модуле объекта конечно, что где недоступно - непонятно
|
||||||||||||||||
2
Maxus43
23.10.13
✎
13:29
|
вот
Модуль объекта |
||||||||||||||||
3
qeos
23.10.13
✎
13:31
|
(1) а из формы вызывать через РеквизитФормыВЗначение??
|
||||||||||||||||
4
Maxus43
23.10.13
✎
13:35
|
(3) например так. можно по разному
|
||||||||||||||||
5
Lenka_Boo
23.10.13
✎
13:35
|
(0) к имени функции слово "Экспорт" дописать не забыл?
Модуль объекта |
||||||||||||||||
6
qeos
23.10.13
✎
13:36
|
(5) не забыл
не видна она из формы |
||||||||||||||||
7
Зойч
23.10.13
✎
13:37
|
(1) создатели бп30 с тобой не согласны
|
||||||||||||||||
8
Maxus43
23.10.13
✎
13:38
|
|||||||||||||||||
9
Maxus43
23.10.13
✎
13:38
|
(7) фу на них
|
||||||||||||||||
10
zak555
23.10.13
✎
13:39
|
(8) только РеквизитФормыВЗначение/ЗначениеВРеквизитФормы делает два лишних движения
|
||||||||||||||||
11
qeos
23.10.13
✎
13:39
|
(8) вот и я думаю что так -- это изврат
|
||||||||||||||||
12
Euguln
23.10.13
✎
13:40
|
(0) А в форме когда вызывается? По команде?
|
||||||||||||||||
13
zak555
23.10.13
✎
13:41
|
> чтобы вызвать его и из формы
перезаполнить существующий документ ? |
||||||||||||||||
14
Maxus43
23.10.13
✎
13:41
|
дак тогда надо дублировать код, и в форме и в объекте, чтоб телодвижений не было... или как?
|
||||||||||||||||
15
qeos
23.10.13
✎
13:41
|
(12) ну да. а есть другие варианты? тогда №5 и прошу изложить мысль.
|
||||||||||||||||
16
qeos
23.10.13
✎
13:42
|
(13) да. перезаполнить табличную часть
|
||||||||||||||||
17
Euguln
23.10.13
✎
13:43
|
Я бы в менеджер запихал.
Модуль менеджера |
||||||||||||||||
18
qeos
23.10.13
✎
13:44
|
(17) вызывать также через РеквизитФормыВЗначение?
|
||||||||||||||||
19
BlueSky
23.10.13
✎
13:45
|
Менеджер не катит. Работаем ведь с объектом?
1. Модуль объекта |
||||||||||||||||
20
BlueSky
23.10.13
✎
13:46
|
Менеджер не катит. Работаем ведь с объектом?
Модуль объекта |
||||||||||||||||
21
Euguln
23.10.13
✎
13:46
|
(18) нет, напрямую через менеджер. Только момент один, в менеджере нет контекста объекта, его передавать надо.
|
||||||||||||||||
22
Euguln
23.10.13
✎
13:47
|
(19) не вижу противоречий. Можно передавать как сам объект, так и просто нужную инфу.
|
||||||||||||||||
23
Maxus43
23.10.13
✎
13:47
|
в стандартах разработки 1с как раз упоминается что если работаем с конкретным экземпляром объекта - то модуль объекта, если нет - то менеджер
|
||||||||||||||||
24
Spieluhr
23.10.13
✎
13:48
|
имхо удобнее
Модуль менеджера |
||||||||||||||||
25
Euguln
23.10.13
✎
13:49
|
(23) заполнение ТЧ суть не есть работа с объектом. Задача - получит ТЗ и залить в ТЧ ))))
|
||||||||||||||||
26
qeos
23.10.13
✎
13:49
|
(21) хм. вроде вариант не плох, можно же данные формы..
|
||||||||||||||||
27
Maxus43
23.10.13
✎
13:49
|
(25) не передёргивайте понятия) это работа с конкретным экзэмпляром объекта
|
||||||||||||||||
28
qeos
23.10.13
✎
13:50
|
с тем же успехом и в общий модуль
Общий модуль |
||||||||||||||||
29
Euguln
23.10.13
✎
13:52
|
(27) Тогда чегой-то в типовых заполнения документов зачастую в менеджер вынесены, и передается объект.
|
||||||||||||||||
30
qeos
23.10.13
✎
13:53
|
(29) я с ними еще не плотно общался, поэтому и спрашиваю.
|
||||||||||||||||
31
Maxus43
23.10.13
✎
13:55
|
(29) открою секрет - типовые не прошли бы тест на 1с совместимо, двойные стандарты сэр. разработчики типовых не сдадут экзамен даже на специалиста
|
||||||||||||||||
32
Maxus43
23.10.13
✎
13:56
|
(31) сдать то сдадут конечно, но за реализацию некоторых штук как в типовых - режут на экзамене
|
||||||||||||||||
33
Euguln
23.10.13
✎
13:57
|
(31) Это не новость, большая часть прошедших 1С:Совместимо на самом деле тоже бы не прошли тест, если все делать по букве требований.
|
||||||||||||||||
34
Maxus43
23.10.13
✎
13:58
|
(33) вот и осталось понять - делать согласно стандартам, или быдлокодить как в типовых
|
||||||||||||||||
35
Euguln
23.10.13
✎
14:03
|
(34) с этой точки зрения конструкцию вида
Документ = РеквизитФормыВЗначение("Объект"); Документ.Пересчитать(); ЗначениеВРеквизитФормы(Документ, "Объект"); Можно считать быдлокодом априори )) |
||||||||||||||||
36
Maxus43
23.10.13
✎
14:04
|
(35) ну тут надо смотреть кстати, если именно полностью перезаполнить ТЧ не используя данные текущие в ней - имхо будет проще, перезаполняем ТЧ, обновляем данные на форме. На сервер тянуть что уже в ТЧ не надо
|
||||||||||||||||
37
Maxus43
23.10.13
✎
14:07
|
хотя не... ну короче делать как велит сердце а не разум, благо везде делают по разному
|
||||||||||||||||
38
zak555
23.10.13
✎
14:11
|
(36) на сервер же можно передать только ТП ?
|
||||||||||||||||
39
Maxus43
23.10.13
✎
14:17
|
(38) вроде нет, по крайней мере смысла в этом не вижу что-то
|
||||||||||||||||
40
Infsams654
23.10.13
✎
14:47
|
что такое "есть у меня заполнение ТЧ" - имеется в виду заполнение по команде ? Тогда, т.к. обозначено что это УФ БП 3.0 , то делай, как там. Например, в документе "Возврат товаров от покупателя".
Т.е. для того, чтоб все было как в БП 3.0 - все в форме делается. Модуль формы |
||||||||||||||||
41
qeos
23.10.13
✎
14:59
|
(40) а если создается группа документов? у меня ТЧ заполняется из файла.
|
||||||||||||||||
42
qeos
23.10.13
✎
15:01
|
у меня тут еще возникла проблема. я разве не могу вызвать функцию в том же модуле менеджера, но из функции &НаКлиенте вызвать &НаСервере?
|
||||||||||||||||
43
zak555
24.10.13
✎
08:06
|
(42) езё раз
|
||||||||||||||||
44
Rovan
гуру
24.10.13
✎
08:09
|
(10) в УФ стало больше лишних движений - привыкай
|
||||||||||||||||
45
zak555
24.10.13
✎
08:13
|
(44) проще тогда (38) в ОМ
ведь работа с ФТ и ТЧ одинакова |
||||||||||||||||
46
Feunoir
24.10.13
✎
08:24
|
(0) Я тут поднимал такую тему полгодика назад. Тогда тоже долго обсуждали. Я для себя принял решение v8: Вызов метода модуля объекта из управляемой формы
И нормально оно работает. Из модуля объекта в процедуру заполнения передается объект, из модуля формы - структура данных формы. Внутри для процедуры заполнения они выглядят одинаково, при этом объект лишний раз не создается. Модуль менеджера |
||||||||||||||||
47
jsmith82
24.10.13
✎
08:29
|
На самом деле без разницы где
Когда данные объекта передаются на форму (при открытии объекта в режиме предприятия), форма объекта сама становится неким объектом Это концептуальный вопрос в рамках технологии УФ Если считать, что форма это лишь каркас объекта, то тогда нужно все абсолютно методы вызывать в сочетании с РеквизитФормыВЗначение ЗначениеВРеквизитФормы что, конечно же, будет абсолютно некошерно. Поэтому разработчик должен выходить на следующий уровень абстракции и не гнушаться даже дублированием функций (например, один и тот же метод и в модуле формы, и в модуле объекта). Что касается модуля менеджера или общего модуля, то тут тоже зависит от того, откуда передаётся управление. Например, это может быть и ДанныеФормыКоллекция и ДокументОбъект. То есть вызываемая процедура должна проверять тип значения. Ну это если писать код в рамках инкапсуляции. Самый безобидный вариант это создание какого-то класса, который будет оперировать таблицей значений, но тут тоже могут быть нюансы. Другой вариант |
||||||||||||||||
48
zak555
24.10.13
✎
08:32
|
(46) так ты когда из модуля формы вызываешь модуль менеджера -- данные на форме меняются ?
|
||||||||||||||||
49
jsmith82
24.10.13
✎
08:33
|
(48) конечно
|
||||||||||||||||
50
zak555
24.10.13
✎
08:36
|
(49) вон, смотри его пост v8: Вызов метода модуля объекта из управляемой формы
Процедура ЗаполнитьСервер() Документы.гт_ВыполнениеРабот.ЗаполнитьДокумент(Объект); ТипЗНЧ(Объект) <> ДокументОбъект |
||||||||||||||||
51
jsmith82
24.10.13
✎
08:40
|
(50) ну это то, что я говорил в (47)
>>Что касается модуля менеджера или общего модуля, то тут тоже зависит от того, откуда передаётся управление. Например, это может быть и ДанныеФормыКоллекция и ДокументОбъект. То есть вызываемая процедура должна проверять тип значения. |
||||||||||||||||
52
jsmith82
24.10.13
✎
08:42
|
имхо, модуль манагера вообще в таких случаях трогать не надо
это же статические методы как бы хотя не труъ статические |
||||||||||||||||
53
zak555
24.10.13
✎
08:46
|
(51) и как автор перезаполнять ДанныеФормыКоллекция ?
|
||||||||||||||||
54
zak555
24.10.13
✎
08:46
|
*ДанныеФормыСтруктура
|
||||||||||||||||
55
Feunoir
24.10.13
✎
08:49
|
(51) Не должна, если не вызываются какие то специфические методы объекта или структуры данных. Очистить, добавить они одинаковы и для объекта и для коллекции.
|
||||||||||||||||
56
jsmith82
24.10.13
✎
08:49
|
(55) ну так-то да, при прочих равных условиях
|
||||||||||||||||
57
jsmith82
24.10.13
✎
08:50
|
но это всё равно против феншуя ;)
|
||||||||||||||||
58
Feunoir
24.10.13
✎
08:53
|
(57) Зато унификация и минимизация кода. Не надо помнить, что в случае изменений надо менять в нескольких местах.
|
||||||||||||||||
59
jsmith82
24.10.13
✎
08:54
|
(58) утилитарность
|
||||||||||||||||
60
jsmith82
24.10.13
✎
08:54
|
дёшево и сердито
|
||||||||||||||||
61
jsmith82
24.10.13
✎
08:57
|
а вот ответьте на другой коварный вопрос
когда нужно использовать табличную часть обработки, а когда реквизит формы? если ТЧ, то можно использовать модуль объекта, а когда реквизит формы, то только модуль формы где здесь феншуй? |
||||||||||||||||
62
jsmith82
24.10.13
✎
09:01
|
и вообще, не является ли табличная часть обработки лишней? ;))
ТЧ документа хранит данные в базе, ТЧ обработки ничего не хранит )) |
||||||||||||||||
63
zak555
24.10.13
✎
09:02
|
(62) например, в ТЧ обработки хранить "список" организаций по которым нужно сделать свёртку
|
||||||||||||||||
64
jsmith82
24.10.13
✎
09:03
|
(63) но данные в базу не записываются, с таким же успехом можно юзать реквизит формы типа таблица значений
|
||||||||||||||||
65
Feunoir
24.10.13
✎
09:04
|
(61) Феншуя нет.
(62) А вариант, что обработка может быть без формы ты не рассматриваешь? |
||||||||||||||||
66
jsmith82
24.10.13
✎
09:05
|
(65) рассматриваю, конечно, но форма существует и на сервере
|
||||||||||||||||
67
zak555
24.10.13
✎
09:05
|
(64) так обработку можно вызвать программно
|
||||||||||||||||
68
zak555
24.10.13
✎
09:06
|
(66) если её открыть
|
||||||||||||||||
69
Поросенок Петр
24.10.13
✎
09:19
|
Объект и коллекция данных это разные объекты, с различными методами (ВыгрузитьКолонку() в ТЧ и т.п.) Передавать это в одну функцию, а в ней проверять типы это мастурбация.
Модуль объекта |
||||||||||||||||
70
zak555
24.10.13
✎
09:26
|
(69) так есть
ДанныеФормыКоллекция (FormDataCollection) Выгрузить (Unload) Вариант синтаксиса: Выгрузить колонки Синтаксис: Выгрузить(<Строки>, <Колонки>) |
||||||||||||||||
71
Поросенок Петр
24.10.13
✎
09:36
|
(70) ВыгрузитьКолонку
Да и вообще копаться в кишках переданного в параметрах объекта не комильфо. |
||||||||||||||||
72
Feunoir
24.10.13
✎
09:41
|
(71) А зачем выгружать колонку, если и у коллекции, и у табличной части объекта есть просто Выгрузить? Выгружают они обе таблицу значений, так что дальнейшая работа будет одинаковая.
|
||||||||||||||||
73
zak555
24.10.13
✎
09:43
|
(72) +1
есть же загрузить |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |