|
Табличные части во внешних обработках | ☑ | ||
---|---|---|---|---|
0
JonSilver
07.12.20
✎
12:16
|
Доброго всем времени суток!
Подскажите пожалуйста, каково время существования данных Табличной части внешней обработки и стоит ли там сохранять данные аналогично Реквизитам внешней обработки? Конкретизирую ситуацию: имеется внешняя обработка с несколькими Формами и несколькими табличными частями. Хотелось-бы использовать данные Табличной части обработки в нескольких окнах последовательно, т.е. заполнил в одной Форме - получил в другой, вернулся и восстановил значения не из Параметра Владельца а из Табличной части обработки. |
|||
1
1Сергей
07.12.20
✎
12:20
|
Пока существует Объект ВнешняяОбработка(Отчет)
|
|||
2
JonSilver
07.12.20
✎
12:28
|
Тогда подскажите как с ними работать. Бьюсь который день, но при закрытии окна источника данных Табличная часть обнуляется. Пробовал как с привязкой ТЧ обработки к ТЧ Формы через свойство Данные, так и без нее. Результат один и тот-же. Набираю Таблицу значений (в последнем варианте обработки), выгружаю или перебором в ТЧ обработки, считаю - данные есть. Закрываю окно - данных нет. Как будто ТЧ существует для каждого экземпляра объекта обработки по отдельности, да еще и по ключу уникальности.
|
|||
3
Василий Алибабаевич
07.12.20
✎
12:29
|
(2) "Как будто ТЧ существует для каждого экземпляра объекта обработки по отдельности"
Так точно. |
|||
4
Йохохо
07.12.20
✎
12:30
|
(3) а если клиент сервер с мс скл подключенный по шаред мемори?
|
|||
5
JonSilver
07.12.20
✎
12:30
|
Функций типа Сохранить(), Записать() и т.д. для ТЧ не существует или я не прав?
|
|||
6
1Сергей
07.12.20
✎
12:31
|
(5) нет. Куда записывать то?
|
|||
7
Василий Алибабаевич
07.12.20
✎
12:32
|
+ (3) Нужны данные не в базе 1С - храните во внешней. MSSQL, MYSQL, просто файлы ...
|
|||
8
JonSilver
07.12.20
✎
12:32
|
Как-же тогда объявить данные ТЧ обработки общими для всех объектов обработки?
|
|||
9
JonSilver
07.12.20
✎
12:33
|
Данные нужны только для текущего сеанса работы с обработкой, при следующем открытии они уже не нужны.
|
|||
10
1Сергей
07.12.20
✎
12:34
|
(8) ну, есть, например, параметры сеанса. Если нужно прям хранить данные, то Константы, Справочники, Документы, Регистры и т.д.
|
|||
11
1Сергей
07.12.20
✎
12:35
|
(9) а как получается так, что у тебя много экземпляров одной обработки?
|
|||
12
Михаил Козлов
07.12.20
✎
12:37
|
Несколько форм критично? Может можно в одной форме интерфейс организовать?
|
|||
13
JonSilver
07.12.20
✎
12:40
|
Сомневаюсь, что это мне подойдет. Обработка внешняя пусть и зарегистрирована, ТЧ - 4, Форм пока тоже 4 ну и т.д.. Подбор строк в ТЧ Формы осуществляю через запрос с отбором значений, пользователь осуществляет выбор из этих данных и скидывает в одну ТЧ. Данные этой ТЧ я и хочу использовать в нескольких Формах последовательно.
|
|||
14
Малыш Джон
07.12.20
✎
12:42
|
(13) так это несколько разных форм одного экземпляра обработки или одна форма нескольких экземпляров обработки? И это ОФ или УФ?
|
|||
15
Kassern
07.12.20
✎
12:44
|
(13) Дак помести ты во временное хранилище, и получай из него в нужной форме
|
|||
16
JonSilver
07.12.20
✎
12:49
|
Извините что упустил из виду: Формы - обычные, платформа - 8.3.16. Обработка зарегистрирована как печатная форма документа.
Применением ТЧ в обработке хотел избежать лишнего кода типа ИзСтруктуры - ВСтруктуру и т.п. |
|||
17
Малыш Джон
07.12.20
✎
12:53
|
(16) если обычные - проще всего использовать СохранитьЗначение("МояТЗ",ТЗ); и ТЗ = ВосстановитьЗначение("МояТЗ");
|
|||
18
JonSilver
07.12.20
✎
12:54
|
Повторю вопрос: Можно-ли сделать данные ТЧ обработки общими для всех объектов обработки в текущем сеансе? Ничего не могу найти по этой проблеме.
|
|||
19
ДенисЧ
07.12.20
✎
12:54
|
(18) Нет. Сохраняй/восстанавливай сам.
|
|||
20
JonSilver
07.12.20
✎
12:55
|
(16) А МояТЗ - это Реквизит Обработки?
|
|||
21
JonSilver
07.12.20
✎
12:56
|
Или придется ее передавать как Параметр к Владельцу?
|
|||
22
Малыш Джон
07.12.20
✎
12:57
|
(20) "МояТЗ" - это название по которому потом восстанавливается значение. Может быть любое, главное, чтоб уникальное в пределах сеанса
|
|||
23
JonSilver
07.12.20
✎
12:58
|
(22) Типа Глобальной переменной?
|
|||
24
Малыш Джон
07.12.20
✎
13:00
|
(23) нет, это просто строка, это имя которое ты даешь сохраняемому значению, чтобы отличать его от других сохраняемых значений
|
|||
25
JonSilver
07.12.20
✎
13:03
|
А для чего тогда эти ТЧ в обработках присутствуют, только как шаблон набора колонок и их ТиповЗначений?
|
|||
26
Малыш Джон
07.12.20
✎
13:05
|
(25) для хранения данных в течении жизненного цикла экземпляра обработки
|
|||
27
JonSilver
07.12.20
✎
13:11
|
(25) Так вот у меня примерно так и обстоит: из Формы1 я вызываю Форму2, набираю данные в ТЧ4 и хочу их обработать в Форме1, но только не передавая их как Параметр. В Форме1 существует поле со строковым выражением Данных ТЧ4, редактирование этой строки в ручном режиме пока не планирую, но все может быть. Не исключено что пользователь вызовет Форму2 еще раз, для добавления или редактирования текущих записей ТЧ4.
|
|||
28
JonSilver
07.12.20
✎
13:13
|
Спасибо всем за помощь, уже час держу Вас на этой теме.
|
|||
29
Pro-tone
07.12.20
✎
13:14
|
(26) реквизиты обработки не сохраняют значения, это просто что-то типа временных переменных в пределах активности (сеанса) обработки, нужны они чтоб взаимодействовать с пользователем в основном для последующего получения результата (подбора данных, замены, отчета и тп)
|
|||
30
Малыш Джон
07.12.20
✎
13:16
|
(29) "для хранения данных в течении жизненного цикла экземпляра обработки" = "это просто что-то типа временных переменных в пределах активности (сеанса) обработки"
|
|||
31
JonSilver
07.12.20
✎
13:18
|
Может при вызове Формы2 я чего-то упускаю, синтаксис таков:
Процедура КомуНачалоВыбора(Элемент, СтандартнаяОбработка) ОткрытьФорму("ВнешняяОбработка.МояОбработка.Форма.ПодборПолучателей",,ЭтаФорма.ЭлементыФормы.Кому); КонецПроцедуры |
|||
32
Малыш Джон
07.12.20
✎
13:19
|
(31) судя по всему ты в ОФ пытаешься применять навыки программирования УФ
|
|||
33
Малыш Джон
07.12.20
✎
13:23
|
(31) В реквизитах обработки - создаешь свою ТЧ.
На формах - создаешь табличные поля, куда в качестве данных указываешь свою ТЧ. Всё. |
|||
34
Pro-tone
07.12.20
✎
13:23
|
(31)
Синтаксис: ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>) 2й параметр обычно тип структура, 3й- ЭтаФорма, нужно для работы оповещений / событий выбора, привязанных к форме |
|||
35
Малыш Джон
07.12.20
✎
13:25
|
А вообще - вот идея
У форм создаешь два методы оповещения: событие "ЗапросДанных" и событие "РассылкаДанных". В обработке оповещения формы по событию "ЗапросДанных" - делаешь оповещение "РассылкаДанных" с данными ТЧ, по событию "РассылкаДанных" - обновляешь данные текущей формы. При открытии формы - делаешь оповещение "ЗапросДанных" Практически MAS получается |
|||
36
JonSilver
07.12.20
✎
13:25
|
(31) Первый вариант был именно таким, но закрытие Формы2 очищает данные ТЧ4.
|
|||
37
JonSilver
07.12.20
✎
13:32
|
(35) А поподробнее? В синтаксис помощнике ничего такого не нахожу.
|
|||
38
JonSilver
07.12.20
✎
13:40
|
(29) (30) Мед вроде есть, и его сразу нет)))
|
|||
39
Малыш Джон
07.12.20
✎
13:44
|
(38) так это все таки несколько обработок одинаковых открываются или у одной и той же обработки несколько разных форм?
|
|||
40
Pro-tone
07.12.20
✎
13:44
|
(38) не, это не мед, а соты пасечника пустые из воска, и улей без пчел, а медом с пчелами ты сам заполняешь
|
|||
41
JonSilver
07.12.20
✎
14:40
|
(39) Обработка одна, но вызавается из Форм разных документов как по экземпляром так и по видам. (40) Так как мне объявить одну "соту" как "общая" с медом доступным для всех "пчел" одного сеанса. Т.е. я могу зайти в один документ, создать свой набор записей, обработать записи и закрыть. Все данные ТЧ4 мне больше не нужны, сеанс закрыт. Но в пределах сеанса мне данные ТЧ4 нужны в любой Форме этой обработки.
|
|||
42
Kassern
07.12.20
✎
14:59
|
(41) Используй справочник ДополнительныеОтчетыИОбработки. Пихай в него свою обработку. Там в реквизит ХранилищеОбработки помещай нужные данные. При открытии формы бери данные из этого хранилища.
|
|||
43
Serg_1960
07.12.20
✎
15:28
|
(42) Вредный совет без дополнительного разъяснения :(
|
|||
44
JonSilver
07.12.20
✎
15:36
|
Вот что странно, реквизит обработки хранит Данные во время сеанса, например реквизит "СсылкаНаОбъект". И "ДополнительныеПараметры" тоже, а Табличные части - как прорва.
|
|||
45
Kassern
07.12.20
✎
15:41
|
(42) не в реквизит ХранилищеОбработки ,а в ХранилищеНастроек. Опечатался чутка.
|
|||
46
Андроны едут
07.12.20
✎
15:44
|
(44) В в доп.параметры можно запихнуть ТЧ или ТЗ?
|
|||
47
Serg_1960
07.12.20
✎
15:48
|
А что мешает автору сделать реквизит с типом ХранилищеЗначений? Или нужна подсказка как туда записать табличную честь (точнее таблицу значений)?
|
|||
48
Жан Пердежон
07.12.20
✎
15:49
|
(44) смотри реквизиты формы "Сохранять значения" и "Сохраняемые значения"
|
|||
49
Serg_1960
07.12.20
✎
15:59
|
(45) А может быть и не опечатались. Не исключено, что у автора справочник называется ВнешниеОбработки, а реквизит - ХранилищеВнешнейОбработки. Намекаю на старые типовые конфигурации на обычных формах (не управляемых).
|
|||
50
JonSilver
07.12.20
✎
16:10
|
(46) ДопПараметры служит для приема данных из конфигурации. (48) В свойствах обычной Формы такого параметра нет, Реквизит Формы это и есть реквизит и живет в пределах времени открытия Формы как переменная определенного Типа. (49) Вот из Синтаксис помощника: "Замечание! Не рекомендуется хранить в реквизитах типа ХранилищеЗначения ссылки на другие объекты базы данных." А мне это и надо.
|
|||
51
JonSilver
07.12.20
✎
16:11
|
(49) Да действительно Внешняя обработка зарегистрирована в данном справочнике и название аналогичное.
|
|||
52
Жан Пердежон
07.12.20
✎
16:13
|
||||
53
JonSilver
07.12.20
✎
16:53
|
(52) За напоминание этого свойства Формы спасибо, скоро тоже понадобится. Я лишь хотел создать в обработке Реквизит в виде Структуры = ТабличнаяЧасть, данные которой(ого) будут доступны из любого объекта обработки (в т.ч. Формы) в текущем сеансе. При следующем сеансе и открытии этой Формы значение реквизита должно быть пустым.
(29) (30) Вот такая постановка вопроса меня устраивает, но данные ТЧ4 в Форме1, сформированные в подчиненной Форме2, почему-то пропадают. И как обойти (3) я не услышал. Может много хочу, уж Вы извините. Тем не менее, всем спасибо за внимание и участие в обсуждении. |
|||
54
Serg_1960
07.12.20
✎
17:14
|
(51) Если у Вас справочник называется "ВнешниеОбработки" - тогда Вы можете хранить произвольные данные в реквизите ХранилищеВнешнейОбработки и/или в аналогичном реквизите табличной части Принадлежность записи справочника. Это зависит от вида обработки. См. https://its.1c.ru/db/metod8dev/content/4259/hdoc
|
|||
55
Йохохо
07.12.20
✎
17:20
|
ОбработкаОбъект.ПолучитьФорму? https://cloud.mail.ru/public/2vSb/3yAVNYDrJ
|
|||
56
JonSilver
07.12.20
✎
17:32
|
(54) В Таблице Принадлежность хранится информация, о том с какими Объектами конфигурации ассоциируется ВнешняяОбработка. Для внешних печатных форм - Вид документа, справочника и т.п. название Печ.формы и формы, которую она замещает и Набор параметров примитивного типа (число, строка, булево и т.д.) Для внешних обработок табличных частей - вообщем вы и Сами все знаете. По моему тут хранить негде. Может какие-то поля этой ТЧ и лишние в моем контексте, но я эту ТЧ в работе уже использую.
|
|||
57
JonSilver
07.12.20
✎
17:35
|
(55) Вы склоняетесь к передаче параметров при открытии-закрытии Формы? Жаль что без этого не обойтись. Жаль, что из двух соседних окон я не могу видеть один и тот-же стул))).
|
|||
58
Йохохо
07.12.20
✎
17:36
|
(57) получи как (55) и потом открой, в ОФ объект будет один стул
|
|||
59
JonSilver
07.12.20
✎
17:40
|
(54) Кстати, вот метод моей регистрации обработки и доп.параметров к ней: https://expert.chistov.pro/public/60272/. Может кому пригодится. Хотя навряд-ли, кто использует обычные формы теперь?)))
|
|||
60
JonSilver
07.12.20
✎
18:38
|
(58) Тоже самое я могу получить через "ОписаниеОповещенияОЗакрытии".
|
|||
61
mistеr
07.12.20
✎
19:02
|
(60) Ты лучше опиши желаемый сценарий работы пользователя. Найдем решение.
|
|||
62
JonSilver
07.12.20
✎
19:35
|
(61) Ок.
1) Пользователь открывает Форму1, ТЧ4 (ТабличнаяЧасть Обработки) - пустая, т.к это первое открытие (запуск) Обработки. В Форме1 есть Поле2 - символьное представление ТЧ4, оно владелец вызова Формы2 (тут могут быть Ваши предложения). 2) По кнопке Выбора открываем Форму2, в которой есть ТЧ - визуальное представление ТЧ4. 3) Пользователь заполняет ТЧФормы и одновременно ТЧ4 (уже проверено). 4) Нажимает кнопку "ВернутьЗначения" и сохраняет Данные ТЧ4 обработки. Данными ТЧ4 функция "ПреобразоватьТЧвСтроку" заполняет Поле2 Формы1. Вот 4 пункт никак не работает, при закрытии Формы2, ТЧ4 очищается. Как я полагаю и (3) Данные в ТЧ4 существуют только пока открыта Форма2. Функции Сохранить(), Записать() данные ТЧ Обработки не существует. А Форма1 не является владельцем данных Формы2. Оторвать ТЧ Формы2 от ТЧ4 Обработки я тоже пытался, результат тотже. |
|||
63
Малыш Джон
07.12.20
✎
19:40
|
(62) "ты пошто так скотину тиранишь то?"
вот посмотри, это то что ты хочешь?: https://yadi.sk/d/Li-gyDRKGf9lYA |
|||
64
JonSilver
07.12.20
✎
19:41
|
Почему Реквизит "СсылкаНаОбъект" жив до закрытия последнего окна (Формы) обработки, а эти ТабличныеЧасти умирают? Может COVID виноват?)))
|
|||
65
JonSilver
07.12.20
✎
19:46
|
(63) Т.е. В Форме1 должна присутствовать не только Строка с форматированными данными, но и ТЧ=ТЧ4?
|
|||
66
Малыш Джон
07.12.20
✎
19:50
|
(65) а зачем строка?
|
|||
67
Малыш Джон
07.12.20
✎
19:51
|
(65) ТЧ у тебя одна на всю обработку, а на каждой форме - свое табличное поле, каждое из которых привязано к этой единственной ТЧ. Табчасть одна, доступов к ней много, по одному из каждой формы
|
|||
68
JonSilver
07.12.20
✎
19:54
|
(66) Строка нужна для визуального представления выбранной информации, так короче отобразить информацию ТЧ4.
Уже пробую на своей обработке. |
|||
69
mistеr
07.12.20
✎
19:55
|
(62) Это не то, что я просил. Отвлекись от своих текущих попыток.
Опиши, как это выглядит для пользователя. На его языке. Если это печатная форма, то для какого дока. Как пользователь ее использует. |
|||
70
JonSilver
07.12.20
✎
20:23
|
(69) Вы извините, пожалуйста, но все уже решилось. В (31) посте я выложил строку вызова Формы2 и это оказалось решающим моментом, т.е. ошибкой. Данный синтаксис разрывает связь между объектами в текущем сеансе, или создает новый сеанс (не знаю что вернее). Открытие Формы2 через "ПолучитьФорму" все решило. Я никак не мог обратиться к данному методу пока не создал РеквизитФормы с Типом ссылка на свою обработку "ВнешняяОбработка.МояОбработка". Не хватает навыков стратегического мышления построения Обработки, до этого все работало, пока не решил вызывать подчиненную Форму.
Всем БОЛЬШОЕ спасибо. Был рад увидеть столько откликов. Малышу Джону, отдельное спасибо. Нужно стараться программировать без кода. |
|||
71
JonSilver
07.12.20
✎
20:26
|
Если ни у кого больше нет ко мне вопросов, то тему можно считать закрытой.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |