|
произвольная форма . требуется использовать функцию описанную в основной. | ☑ | ||
---|---|---|---|---|
0
andron81_81
21.12.18
✎
12:07
|
Я в 1с собаку не съел, опыта очень мало, поэтому мой вопрос скорее всего глупость полная .
Есть документ с основной формой . у него открывается произвольная форма по нажатию на кнопку в основной. 1. в произвольную передаются некоторые параметры из документа - с этим проблем никаких. 2. Но в произвольной форме так же производится расчет и нужны кое-какие данные документа уже после открытия произвольной формы исходя из того как заполнены пользователем данные в этой произвольной форме (поэтому передать до этого то есть в п.1 не представляется возможным ). Ситуация осложняется тем, что эти данные ещё надо найти , а функции поиска определены в модуле основной формы. Вопрос как воспользоваться функциями основной формы. Может их перенести куда-то ? |
|||
1
Конструктор1С
21.12.18
✎
12:11
|
Ищи в синтаксис-помощнике методы Оповестить() и ОповеститьОВыборе()
|
|||
2
FIXXXL
21.12.18
✎
12:11
|
(0) начни с простого: зачем тебе целая отдельная Форма? может страницы в основной форме хватит?
|
|||
3
palsergeich
21.12.18
✎
12:13
|
(2) Ой страница путь в ад. Потом все это обрастает костылями .
|
|||
4
FIXXXL
21.12.18
✎
12:14
|
(3) отдельными формами с копипастом выслана дорога в ад :)
|
|||
5
Alexandr_U1982
21.12.18
✎
12:19
|
(0)Функции, которые определены в основной форме и нужны в дополнительной, можно вынести в модуль менеджера документа или в общий модуль.
|
|||
6
andron81_81
21.12.18
✎
12:31
|
(2) так и сделано. в результате основная форма представляет собой такую кашу , я там мучу с панелями - отображать / скрывать. редкостное г....
|
|||
7
andron81_81
21.12.18
✎
12:32
|
(5) Конструктивно. попробую, спасибо
|
|||
8
palsergeich
21.12.18
✎
12:33
|
(4) Число отдельных форм конечно.
Копипаста - откройте для себя стандарты разработки и общие модули, единственное дублирование кода - вызов этих общих модулей. |
|||
9
palsergeich
21.12.18
✎
12:34
|
А эти формы с секретными, а иногда и с програмно генерируемыми закладками - путь в адище
|
|||
10
andron81_81
21.12.18
✎
12:41
|
(9) я тоже против мутить всё в одной форме - основной !
|
|||
11
andron81_81
21.12.18
✎
12:54
|
(5) а как я должен в общем модуле прописать процедуру ? если у меня ругань идет на обращение к табличной части документа ?
вот тут ругается на эту строку (на Лист) НайтиЛист=Листы.НайтиСтроки(Новый структура("ИДЛиста",ИДЛиста1)); Функция ПечатнаяМашинаСпуска(ИДСпуска1) Экспорт ИДЛиста1=ОпределитьИДЛистаПоСпуску(ИДСпуска1); НайтиЛист=Листы.НайтиСтроки(Новый структура("ИДЛиста",ИДЛиста1)); Если ОпределитьСторонуСпускаПоСпуску(ИДСпуска1)=1 тогда Если НайтиЛист.Количество()> 0 тогда Возврат НайтиЛист[0].ПечатнаяМашинаЛицо; КонецЕсли; Иначе Если НайтиЛист.Количество()> 0 тогда Возврат НайтиЛист[0].ПечатнаяМашинаОборот; КонецЕсли; конецЕсли; КонецФункции |
|||
12
andron81_81
21.12.18
✎
12:56
|
пишет "переменная не определена (Листы)"
а Листы это таб. часть документа. |
|||
13
Alexandr_U1982
21.12.18
✎
12:57
|
(11)Передавай "Листы" в качестве параметра.
|
|||
14
Alexandr_U1982
21.12.18
✎
13:03
|
Судя по всему, у тебя обычная форма, значит весь код выполняется на клиенте.
Общий модуль, в который переносишь процедуру, должен быть клиентским. Должен стоять флаг "Клиент (обычное приложение)". |
|||
15
andron81_81
21.12.18
✎
13:17
|
(13) блин, это переделывать всё !!! процедур и функций очень много наколбашено ))
|
|||
16
FIXXXL
21.12.18
✎
13:24
|
(15) есть великолепная возможность расколбасить эту форму и "открыть для себя стандарты разработки"
|
|||
17
palsergeich
21.12.18
✎
13:26
|
Из модуля формы перенос в общие модули с рефакторингом - не такая уж и сложная задача.
|
|||
18
FIXXXL
21.12.18
✎
13:28
|
(17) если изначально написано нормально, квалификация и время позволяет, почему бы и нет
|
|||
19
palsergeich
21.12.18
✎
13:33
|
Рано или поздно прийдется.
У автора такой момент настал) |
|||
20
andron81_81
21.12.18
✎
13:43
|
(16) то есть ? можно хоть немного подробнее ?
|
|||
21
Alexandr_U1982
21.12.18
✎
14:09
|
(20) Он говорит, что у тебя появилась прекрасная возможность переписать эту форму под стандарты разработки для платформы 1С:Предприятие.
https://its.1c.ru/db/v8std А заодно и изучить их. |
|||
22
FIXXXL
21.12.18
✎
14:44
|
(20) если не нравится нынешнее состояние, вариант один - переписать как нравится
|
|||
23
andron81_81
21.12.18
✎
16:02
|
(13) а могу я "объект" передать в качестве параметра функции из модуля менеджера ? а уже из него доставать что захочу ?
можно ли его использовать не только на чтение ? |
|||
24
Alexandr_U1982
21.12.18
✎
16:05
|
(23)Можно
|
|||
25
andron81_81
21.12.18
✎
16:26
|
(24) вот я в модуле менеджера объявил процедуру
Процедура Тест (Объект) Экспорт Сообщить (Объект.Дата) КонецПроцедуры столкнулся с незнанием теорий 1с совсем. может быть подскажите , а не пошлёте в учебники :) как я должен прописать -в модуле главной формы -в модуле произвольной формы |
|||
26
andron81_81
21.12.18
✎
16:27
|
(25) вызов я имею ввиду этой процедуры
|
|||
27
FIXXXL
21.12.18
✎
16:28
|
(25) Документы.ТвойДок.Тест()
НО, в модуле ПРОИЗВОЛЬНОЙ формы не будет Объекта |
|||
28
hhhh
21.12.18
✎
16:30
|
(25) Документы.ТвойДокумент.Тест(Объект);
|
|||
29
andron81_81
21.12.18
✎
16:53
|
(28) а передать смогу объект при помощи реквитата формы? Или же мне проще форму документа сделать, а там Обьект доступен будет
|
|||
30
FIXXXL
21.12.18
✎
17:13
|
(29) делай форму документа
|
|||
31
andron81_81
21.12.18
✎
21:28
|
(30) а ещё есть проблемнамна. ))
у меня в основной форме данные хранятся не в табличных частях документа , а в переменных типа таблица значений :) у меня таких переменных там пять штук: . ТЗРеквизитыЗаказа, ТЗРеквизитыЛиста, ТЗРеквизитыДетали, ТЗРеквизитыОперации, ТЗРеквизитыСпуска. И расчеты должны использовать их. Вопрос : Если меня в модуле менеджера большинство функций или процедур будет оформлю так : Функция МояФункция (..., ТЗРеквизитыЗаказа, ТЗРеквизитыЛиста, ТЗРеквизитыДетали, ТЗРеквизитыОперации, ТЗРеквизитыСпуска ) //телофункции КонецФункции Насколько это будет бить по ресурсам (хотя могу предположить, что это ссылки) ? |
|||
32
hhhh
21.12.18
✎
22:38
|
(31) да, ссылки. Вообще-то это массив структур на самом деле, если тип реквизита формы таблица значений.
|
|||
33
andron81_81
21.12.18
✎
23:08
|
(32) просто в моем случае придеться фактически в каждую функцию передавать объект документа - но это полбеды, а еще вот все глобальные пепеменные док-а, это тз. И это типа "правильно", "по понятиям"))
|
|||
34
andron81_81
21.12.18
✎
23:14
|
(32) а массив из таблиц значений? Нельзя сделать?
|
|||
35
palsergeich
21.12.18
✎
23:17
|
(33) Глобальные переменные - по сути уже являются изъяном архитектуры
|
|||
36
palsergeich
21.12.18
✎
23:18
|
Я слабо себе представляю что же должно твориться на форме - если надо постоянно передавать вообще всё
|
|||
37
palsergeich
21.12.18
✎
23:26
|
Если не происходит смена контекста - то передаются ссылки и влияние на производительность вызовов ну скажем так надо еще постараться смоделировать что бы заметить.
В этом плане очень хорошо и наглядный пример - посмотреть как в БСП реализована подсистема КонтактнаяИнформация. По факту в двух местах подключение, в одном запись и область которую можно просто тупо скопировать не думая. Внедрение подсистемы на новую форму - 2 минуты |
|||
38
palsergeich
21.12.18
✎
23:28
|
(33) Можно передать всю форму как параметр, вместе со ссылкой на форму (а по факту передается именно ссылка) будут доступны все реквизиты.
|
|||
39
andron81_81
21.12.18
✎
23:30
|
(36) передавать может и не надо постоянно всё. Но функции отвечающие за нормирование расчетные по идее должны постоянно редактироваться. что там прилетит в алгоритме из какой таблицы значения или из какого реквизита док-а надо взять данные - непредсказуемо. поэтому ради универсальности и гибкости передаем ВСЁ.
теперь почему я использую глобальные переменные это потому что у меня таб. поля на форме выводят не табличные части документа, а строки из регистра сведений, то есть эти строки в доку-те не сохраняются, поэтому я их храню в ТабЗначений. |
|||
40
andron81_81
21.12.18
✎
23:31
|
(38) я с этим поэкспериментировал с реквизитами проблем никаких. вопрос как передать в форму таблицы значений. Возможно наверно их впихнуть в массив и обращаться к таблицам по индексам на той форме .
|
|||
41
andron81_81
21.12.18
✎
23:32
|
таблицы значений имеется ввиду значения глобальных переменных, которые набиваются данными в основной форме
|
|||
42
palsergeich
21.12.18
✎
23:38
|
(39) Вы не путаете понятия реквизит формы и глобальная переменная?
|
|||
43
palsergeich
21.12.18
✎
23:39
|
(40) Смена контекста есть или нет.
Если смена контекста есть - то через массив структур |
|||
44
andron81_81
21.12.18
✎
23:46
|
(42) нет !
примерно вот так представляю себе это : перем ТЗ1 экспорт; перем ТЗ2 экспорт; Процедура ПриОткрытии() // Вставить содержимое обработчика. ТЗ1.Колонки.Добавить("ИД"); ТЗ1.Колонки.Добавить("Наименование"); ТЗ1.Колонки.Добавить("Количество"); ТЗ2.Колонки.Добавить("ИД2"); ТЗ2.Колонки.Добавить("Наименование2"); ТЗ2.Колонки.Добавить("Масса"); Р=ТЗ1.Добавить(); р.ИД=0; р.Наименование="ку-ку"; р.Количество=2001; Р=ТЗ1.Добавить(); р.ИД=2; р.Наименование="ку-ку2"; р.Количество=20001; Р=ТЗ1.Добавить(); р.ИД=3; р.Наименование="ку-ку3"; р.Количество=10001; Р=ТЗ2.Добавить(); р.ИД2=0; р.Наименование2="абра-катабра"; р.Масса=12; Р=ТЗ2.Добавить(); р.ИД2=2; р.Наименование2="абра-катабра2"; р.Масса=120; Р=ТЗ2.Добавить(); р.ИД2=3; р.Наименование2="абра-катабра3"; р.Масса=102; Документы.Документ1.Тесть(ДокументОбъект); Массив = Новый Массив; Массив.Добавить(ТЗ1); Массив.Добавить(ТЗ2); КонецПроцедуры ТЗ1=Новый ТаблицаЗначений; ТЗ2=Новый ТаблицаЗначений; |
|||
45
andron81_81
22.12.18
✎
00:02
|
(43) фантастика, всё передаёт корректно. в массив запихнул 2 таблицы значений разных по структуре(см. код) и передал в реквизит формы дополнительной формы . там прозвонил при помощи табло. да, там всё четко.
Массив "умеет" хранить таблицы значений причем разные по структуре ! перем ТЗ1 экспорт; перем ТЗ2 экспорт; Процедура ПриОткрытии() // Вставить содержимое обработчика. ТЗ1.Колонки.Добавить("ИД"); ТЗ1.Колонки.Добавить("Наименование"); ТЗ1.Колонки.Добавить("Количество"); ТЗ2.Колонки.Добавить("ИД2"); ТЗ2.Колонки.Добавить("Наименование2"); ТЗ2.Колонки.Добавить("Масса"); Р=ТЗ1.Добавить(); р.ИД=0; р.Наименование="ку-ку"; р.Количество=2001; Р=ТЗ1.Добавить(); р.ИД=2; р.Наименование="ку-ку2"; р.Количество=20001; Р=ТЗ1.Добавить(); р.ИД=3; р.Наименование="ку-ку3"; р.Количество=10001; Р=ТЗ2.Добавить(); р.ИД2=0; р.Наименование2="абра-катабра"; р.Масса=12; Р=ТЗ2.Добавить(); р.ИД2=2; р.Наименование2="абра-катабра2"; р.Масса=120; Р=ТЗ2.Добавить(); р.ИД2=3; р.Наименование2="абра-катабра3"; р.Масса=102; Документы.Документ1.Тесть(ДокументОбъект); Парам = Новый Массив; Парам.Добавить(ТЗ1); Парам.Добавить(ТЗ2); Форма = ПолучитьФорму("ФормаДокумента1"); Форма.Реквизит = Парам; Форма.Открыть(); КонецПроцедуры ТЗ1=Новый ТаблицаЗначений; ТЗ2=Новый ТаблицаЗначений; |
|||
46
andron81_81
22.12.18
✎
00:09
|
но всё равно это ЖЕСТЬ !!! передавать все данные основной в дополнительную . это просто ппц.
|
|||
47
Сияющий в темноте
22.12.18
✎
00:32
|
Храните все данные в одной структуре,тогда передавать придется только ее.
Главное-не напороться на изьяны сериализации,когда из одной структуры получится две. |
|||
48
Конструктор1С
22.12.18
✎
07:39
|
(44) в УФ такое не прокатывает. Таблица значений не доступна на клиенте
|
|||
49
andron81_81
22.12.18
✎
09:54
|
(48) попробую сейчас
|
|||
50
andron81_81
22.12.18
✎
11:05
|
(47) теоретически можно в одной тз все хранить. Ее и передать в форму.
|
|||
51
andron81_81
22.12.18
✎
15:35
|
(48) да в УФ всё сложнее. и кто их только придумал.
|
|||
52
andron81_81
22.12.18
✎
19:11
|
а почему никто не подсказал , что можно из вспомогательной запускать функции и процедуры (обычные формы) ?
достаточно эту функцию объявить как экспортную, а во вспомогательной сделать так : ВладелецФормы.МояФункция(); и она выполнится на форме владельца , будет возможность забрать всё : объект, глобальне переменные в общем что угодно. |
|||
53
andron81_81
22.12.18
✎
19:22
|
Из дополнительной формы запускать функции основной имел ввиду
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |