![]() |
![]() |
![]() |
|
Вызов функции из другого модуля | ☑ | ||
---|---|---|---|---|
0
DasTPID
04.07.11
✎
16:19
|
Привет всем!
Допустим я пишу внешнюю обработку, в которой добавляются и заполняются строки документа РеализацияТоваровУслуг. Если я заполняю документ руками, то мне достаточно указать количество и цену, после ввода последней сработает событие и заполнит НДС, сумму и прочее. Так вот, в моей обработке я тоже хочу заполнить количество и цену, после чего вызвать функцию чтобы она сама всё остальное заполнила. Слазил в конфигурацию и узнал, что она называется Процедура ТоварыЦенаПриИзменении(Элемент) и находится в модуле "ФормаДокумента" документа РеализацияТоваровУслуг. Вопрос: как мне из моей внешней обработки выполнить эту процедуру? |
|||
1
AaNnDdRrEeYy
04.07.11
✎
16:21
|
Скопируй все что есть в этой процедуре и вставь себе в обработку.
|
|||
2
Господин ПЖ
04.07.11
✎
16:21
|
щас тайну открою - в ТоварыЦенаПриИзменении(Элемент) тоже что-то вызывается... а за дерганье обработчиков gui надо по рукам бить
|
|||
3
Dmitriy_76
04.07.11
✎
16:22
|
для начала сделай ее экспортной...
|
|||
4
MatrosoV AleXXXand_R
04.07.11
✎
16:22
|
Пятничный выпуск анекдотов уже закончился, до следующего - еще 5 дней ждать, что же вы так торопитесь ... :)
|
|||
5
AaNnDdRrEeYy
04.07.11
✎
16:22
|
(3) для начала пусть не трогает обработчик.
|
|||
6
Господин ПЖ
04.07.11
✎
16:23
|
(3) а за такое по яйкам с ноги...
|
|||
7
and2
04.07.11
✎
16:23
|
тут намедни один форму вызывал..... :(
|
|||
8
Pro-tone
04.07.11
✎
16:24
|
(0)
Лучше вызывать процедуры из модуля объекта, тогда ОбъектКонфы = Новый РеализацияТоваровУслуг; ОбъектКонфы.МояПроцедура(); Но корректнее сказано в (1), потому что модуль объекта тянет за собой вереницу целую переменных, которых у тебя нет |
|||
9
МишельЛагранж
04.07.11
✎
16:26
|
(8) и много вы так вызываете чего? Работает, видимо?
Эт не считая того, что предлагаете для вызова КАЖДОЙ внешней функции создавать целый объект )) |
|||
10
Pro-tone
04.07.11
✎
16:28
|
(9) ответ был на вопрос был по сабжу, автор же не обеспокоен тем, что ресурс увеличится =)
|
|||
11
DasTPID
04.07.11
✎
16:31
|
(1) При следующем обновлении конфы фирма 1С перепишет логику работы этой обработки, и в результате конфигурация и моя копипаста будут работать по-разному. Нехорошо.
(2) Простите, не понял. (3) Конфигурацию не трогаем, так что менять ничего не будем (4) Расскажите мне где я неправ - вместе посмеёмся (8) Это если у меня в цикле 10000 строк добавляется, то мне придётся создать 10000 ненужных объектов. Как-то монструозно, не находите? (all) Блин, ну в сях же #include <чегонибудь> и вызывай из чегонибудь всё, что там есть. В 1С не так? |
|||
12
AaNnDdRrEeYy
04.07.11
✎
16:46
|
(11) в обработчике при изменении вызывается другая процедура что то типа "ПеречитатьСтроку" вот если что то и изменят в типовой то точно не вызов этой процедуры а только ее реализацию. и вообще ты что обработку на века пишеш?
|
|||
13
DasTPID
04.07.11
✎
16:56
|
(12) Логика ясна :) Но всё-таки с точки зрения программирования это неверно. А правильно эту задачу решить можно?
|
|||
14
AaNnDdRrEeYy
04.07.11
✎
17:25
|
(13) в (12) верно, можешь объяснить посему не верно?
|
|||
15
DasTPID
04.07.11
✎
18:01
|
Потому что логика "я обработку не на века пишу" неправильная :))) Потому что копипаста - это всегда логическая ошибка в коде и последующие проблемы с поддержкой и доработкой.
|
|||
16
AaNnDdRrEeYy
04.07.11
✎
18:08
|
(15) ошибка потому что ошибка и потому что не правильно, серьезные аргументы, раз такой умный зачем вопросы такие тупые задаешь?
|
|||
17
DasTPID
04.07.11
✎
18:11
|
Потому что я в 1С чайник и не скрываю этого. Но когда я писал на дельфях или C# - меня бы не поняли если бы я начал копировать содержимое обработчика вместо того, чтобы подключить просто модуль и вызвать функцию оттуда.
|
|||
18
bazvan
04.07.11
✎
18:13
|
(17) Ну так и работал бы на сях, что ты на это поделку перешол. Всем жу известно что 1С УГ. Вот Си это круто
|
|||
19
DasTPID
04.07.11
✎
18:15
|
Оно работает замечательно; и наверняка 1С в реализацию этого метода не полезет пока НДС не заменят чем-нибудь повеселее или НСП не вернут; и наверняка моя эта обработка и пяти лет не проживёт - всё это я прекрасно понимаю. Просто мне кажется что это нельзя назвать хорошим стилем программирования, хотя повторюсь, в 1С я чайник и может быть здесь так принято :)
|
|||
20
Господин ПЖ
04.07.11
✎
18:17
|
никуа не верю что в c# дергать из объекта класса процедуры gui - хороший стиль...
|
|||
21
AaNnDdRrEeYy
04.07.11
✎
18:19
|
(17) напишика как в С# подключится к обработчику, только не говри что забыл или я новичок.
|
|||
22
DasTPID
04.07.11
✎
18:41
|
(21) Не особо понял вопроса, но пусть на форме лежит одна кнопка которая показывает содержимое Edit:
void button1_Click(object sender, EventArgs e) { ShowMessage(Edit1->Text); } Менять обработчик нельзя (изменение конфигурации). Нужно показывать Edit из разных модулей из разных мест из разных потоков наконец. Разумеется вызывать button1_Click с параметрами это тоже нехорошо, но в любом случае это лучше чем по коду плодить бесконечные ShowMessage, потому что впоследствие при изменении Edit1 на Edit2 возникнут серьёзные проблемы. Пример может и неудачный, но надеюсь основную мысль донёс. |
|||
23
DasTPID
04.07.11
✎
18:47
|
(20) Нехороший. Хороший - это вынести эту функцию в общий модуль и вызывать её и из моей обработки, и из стандартной. Но конфигурацию-то менять нельзя
|
|||
24
DasTPID
04.07.11
✎
18:47
|
И вообще мы от темы немного отклонились, не?
|
|||
25
AaNnDdRrEeYy
04.07.11
✎
20:16
|
(22) ерунда какая то. я просто спросил про
B.Click += new System.EventHandler(this.B_Click); и в C# нет -> (стрелочек) вот процедуры из конфигурации УПП // Рассчитать реквизиты табличной части. ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект); те че трудно в свою обработку скопировать вызовы этих процедур. если ты их скопируеш в свою обработку то думаю мир от этого не рухнет. |
|||
26
hhhh
04.07.11
✎
20:58
|
(24) Процедура ТоварыЦенаПриИзменении(Элемент) - это вообще-то процедура формы, то есть ты хочешь из-за какой-то формулы хочешь держать в памяти целую форму?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |