|
Доступ к незаписанному объекту | ☑ | ||
---|---|---|---|---|
0
Stolz
27.12.15
✎
17:17
|
Доброго всем времени суток!
Вероятно, уже все знают, что для того, чтобы получить доступ к данным нового, ещё не записанного объекта, - например, документа, - нужно проделать нечто вроде такого: СсылкаНового = Документы.НекийВидДокумента.ПолучитьСсылку(); ОбъектНовогоДокумента.УстановитьСсылкуНового(СсылкаНового); СсылкаНаНовыйДокумент = ОбъектНовогоДокумента.ПолучитьСсылкуНового(); Здесь ОбъектНовогоДокумента - объект нового документа. Всё это, конечно, замечательно работает при одном условии: если в данном контексте заранее известен объект ОбъектНовогоДокумента, например, он был ранее в этом же модуле создан методом СоздатьДокумент(). Но что делать, если объект неизвестен предварительно? Вот конкретная ситуация. Есть обработка, которая создаёт документ, не записывая его, заносит в него данные и открывает его форму. Можно ли каким-либо образом другою обработкой считать эти данные, не записывая документ? По причинам политического характера не хотелось бы изменять модули самого документа и создающей его обработки. Какие у кого есть идеи на этот счёт? |
|||
1
Fragster
гуру
27.12.15
✎
17:20
|
ДругаяОбработка.ЭуспортнаяФункция(незаписанныйОбъект)
|
|||
2
1С Коннект
27.12.15
✎
19:07
|
(0) В Другой обработке создать реквизиты и передать в эти реквизиты при создании обработки?
|
|||
3
Stolz
28.12.15
✎
06:51
|
(1)
Так в том-то и вопрос, как получить этот самый незаписанныйОбъект, чтобы его передать в ЭуспортнаяФункция или ещё куда-либо. (2) Та же проблема. Напомню, что: >> По причинам политического характера не хотелось бы изменять модули самого документа и создающей его обработки. |
|||
4
ЧеловекДуши
28.12.15
✎
06:59
|
(3) Зачем? Если документ создается Программно, то его структура всегда должна быть простой: Документ1 -> На Основании Документ 2 и т.д....
А не так, Документ 10 -> Документ 2 и т.д. по желанию непойми кого :) |
|||
5
Рэйв
28.12.15
✎
06:59
|
Для того чтобы получить доступ к новому УИД совсем не обязателен и даже где-то условен.
Достаточно Об=Документы.Какойто.СоздатьДокумент() |
|||
6
ЧеловекДуши
28.12.15
✎
07:01
|
+ >>> По причинам политического характера не хотелось бы изменять модули самого документа
Не меняй модуль документа, пиши Общий модуль для своего документа. А в сам документ уже вложи одну строчку перехода в свой модуль :) Можно баловаться и Подписками на события. |
|||
7
1С Коннект
28.12.15
✎
07:12
|
(3) Каким образом создается "другая обработка"? Или есть открытая форма документа и ты парарллельно открываешь другую обработку и хочешь из одной открытой формы другую открытую форму считать?
|
|||
8
Jokero
28.12.15
✎
07:17
|
+>>> По причинам политического характера не хотелось бы изменять модули самого документа
А потом другой программист будет ломать голову, кто и в какой обработке и в каком общем модуле меняет этот документ, который даже еще не успел записаться. За такую политику к стенке надо)) |
|||
9
Gray776
28.12.15
✎
07:24
|
Где-то в интернетах встречал описание как искали нужную форму. То есть перебирали открытые флормы и находили нужную, не то? Кажись где-то на инфострате
|
|||
10
Stolz
28.12.15
✎
21:23
|
(4)
Ввод на основании здесь ни при чём: >> Есть обработка, которая создаёт документ, не записывая его, заносит в него данные и открывает его форму. |
|||
11
Stolz
28.12.15
✎
21:25
|
(5)
Увы, уже пробовал до того, как задать вопрос. Если воспользоваться методом СоздатьДокумент(), то создаётся новый документ, не имеющий отношения к тому, что уже открыт. |
|||
12
Stolz
28.12.15
✎
21:30
|
(6)
Так вот одну-то строчку всё же придётся вложить, а это нежелательно. Подписки на события тоже рассматривал: для объекта типа Документ есть только одна вроде бы подходящая подписка - ОбработкаЗаполнения, прочие не годятся по определению. Да вот беда: не срабатывает она при программном создании документа. |
|||
13
Stolz
28.12.15
✎
21:32
|
(7)
Именно так: есть открытая форма документа, открывается форма второй обработки, и нужно ею считать данные из открытой формы документа. |
|||
14
Stolz
28.12.15
✎
21:34
|
(8)
Менять документ в данном случае не требуется, нужно лишь прочитать данные, которые в нём отображаются. Политика же, увы, определяется не мною. |
|||
15
Stolz
28.12.15
✎
21:36
|
(9)
Это возможно сделать в управляемом приложении, в обычном же, насколько мне известно, - нет. |
|||
16
hhhh
28.12.15
✎
22:58
|
запишите эти данные в xml на диске, а вторая обработка пусть их считает.
|
|||
17
RomanYS
28.12.15
✎
22:59
|
Проблема не понятна. Что именно не получается?
Вторая обработка запускается независимо и проблема найти в ней открытую форму? |
|||
18
Stolz
29.12.15
✎
06:59
|
(16)
Как это сделать, не затрагивая модули документа? |
|||
19
Stolz
29.12.15
✎
06:59
|
(17)
Именно так. |
|||
20
1С Коннект
29.12.15
✎
07:29
|
(13) Попроубй
Для Каждого Окно Из Приложение.ОткрытыеОкна Цикл Объект = Окно.ПолучитьОбъект(); Или через Окна = ПолучитьОкна(); Для Каждого Окно Из Окна Цикл Форма = Окно.ПолучитьСодержимое(); |
|||
21
ЧеловекДуши
29.12.15
✎
08:29
|
(19) Переделать обработку. Причем тут вообще форма?
Суть в (0) не отражает действительные надобности. Собирать информацию крохами, а оно мне надо? :) Опиши лучше нормально, что делаешь? И что нужно, что бы было, и не для тебя, а для заказчика :) |
|||
22
Stolz
29.12.15
✎
21:27
|
(19)
>> Переделать обработку. Причем тут вообще форма? Какую именно обработку переделать? Ту, что создаёт документ? - так если это было допустимо, то и вопрос бы не возник. Ту, что должна прочитать данные из открытой формы незаписанного документа? - так вопрос в том и состоит, как это можно сделать. Форма же здесь при том, что именно из неё нужно вытащить данные, - более их нигде нет. >> Опиши лучше нормально, что делаешь? Вроде бы, написано достаточно конкретно. Что именно неясно? >> И что нужно, что бы было, и не для тебя, а для заказчика Так в том-то и проблема, что заказчику нужно именно то, что описано: прочитать данные из открытой формы незаписанного документа. Будь оно нужно для меня, проблем бы не было: например, я записал бы этот документ, да и горя не знал. |
|||
23
Stolz
29.12.15
✎
21:31
|
(20)
Спасибо за подсказку, попробую, когда буду на рабочем месте. Но что-то мне подсказывает, что в режиме обычного приложения это не будет работать. Впрочем, отпишусь по результату. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |