Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Табличные части во внешних обработках

Табличные части во внешних обработках
Я
   JonSilver
 
07.12.20 - 12:16
Доброго всем времени суток!
Подскажите пожалуйста, каково время существования данных Табличной части внешней обработки и стоит ли там сохранять данные аналогично Реквизитам внешней обработки? Конкретизирую ситуацию: имеется внешняя обработка с несколькими Формами и несколькими табличными частями. Хотелось-бы использовать данные Табличной части обработки в нескольких окнах последовательно, т.е. заполнил в одной Форме - получил в другой, вернулся и восстановил значения не из Параметра Владельца а из Табличной части обработки.
   1Сергей
 
1 - 07.12.20 - 12:20
Пока существует Объект ВнешняяОбработка(Отчет)
   JonSilver
 
2 - 07.12.20 - 12:28
Тогда подскажите как с ними работать. Бьюсь который день, но при закрытии окна источника данных Табличная часть обнуляется. Пробовал как с привязкой ТЧ обработки к ТЧ Формы через свойство Данные, так и без нее. Результат один и тот-же. Набираю Таблицу значений (в последнем варианте обработки), выгружаю или перебором в ТЧ обработки, считаю - данные есть. Закрываю окно - данных нет. Как будто ТЧ существует для каждого экземпляра объекта обработки по отдельности, да еще и по ключу уникальности.
   Василий Алибабаевич
 
3 - 07.12.20 - 12:29
(2) "Как будто ТЧ существует для каждого экземпляра объекта обработки по отдельности"
Так точно.
   Йохохо
 
4 - 07.12.20 - 12:30
(3) а если клиент сервер с мс скл подключенный по шаред мемори?
   JonSilver
 
5 - 07.12.20 - 12:30
Функций типа Сохранить(), Записать() и т.д. для ТЧ не существует или я не прав?
   1Сергей
 
6 - 07.12.20 - 12:31
(5) нет. Куда записывать то?
   Василий Алибабаевич
 
7 - 07.12.20 - 12:32
+ (3) Нужны данные не в базе 1С - храните во внешней. MSSQL, MYSQL, просто файлы ...
   JonSilver
 
8 - 07.12.20 - 12:32
Как-же тогда объявить данные ТЧ обработки общими для всех объектов обработки?
   JonSilver
 
9 - 07.12.20 - 12:33
Данные нужны только для текущего сеанса работы с обработкой, при следующем открытии они уже не нужны.
   1Сергей
 
10 - 07.12.20 - 12:34
(8) ну, есть, например, параметры сеанса. Если нужно прям хранить данные, то Константы, Справочники, Документы, Регистры и т.д.
   1Сергей
 
11 - 07.12.20 - 12:35
(9) а как получается так, что у тебя много экземпляров одной обработки?
   Михаил Козлов
 
12 - 07.12.20 - 12:37
Несколько форм критично? Может можно в одной форме интерфейс организовать?
   JonSilver
 
13 - 07.12.20 - 12:40
Сомневаюсь, что это мне подойдет. Обработка внешняя пусть и зарегистрирована, ТЧ - 4, Форм пока тоже 4 ну и т.д.. Подбор строк в ТЧ Формы осуществляю через запрос с отбором значений, пользователь осуществляет выбор из этих данных и скидывает в одну ТЧ. Данные этой ТЧ я и хочу использовать в нескольких Формах последовательно.
   Малыш Джон
 
14 - 07.12.20 - 12:42
(13) так это несколько разных форм одного экземпляра обработки или одна форма нескольких экземпляров обработки? И это ОФ или УФ?
   Kassern
 
15 - 07.12.20 - 12:44
(13) Дак помести ты во временное хранилище, и получай из него в нужной форме
   JonSilver
 
16 - 07.12.20 - 12:49
Извините что упустил из виду: Формы - обычные, платформа - 8.3.16. Обработка зарегистрирована как печатная форма документа.
Применением ТЧ в обработке хотел избежать лишнего кода типа ИзСтруктуры - ВСтруктуру и т.п.
   Малыш Джон
 
17 - 07.12.20 - 12:53
(16) если обычные - проще всего использовать СохранитьЗначение("МояТЗ",ТЗ);  и ТЗ = ВосстановитьЗначение("МояТЗ");
   JonSilver
 
18 - 07.12.20 - 12:54
Повторю вопрос: Можно-ли сделать данные ТЧ обработки общими для всех объектов обработки в текущем сеансе? Ничего не могу найти по этой проблеме.
   ДенисЧ
 
19 - 07.12.20 - 12:54
(18) Нет. Сохраняй/восстанавливай сам.
   JonSilver
 
20 - 07.12.20 - 12:55
(16) А МояТЗ - это Реквизит Обработки?
   JonSilver
 
21 - 07.12.20 - 12:56
Или придется ее передавать как Параметр к Владельцу?
   Малыш Джон
 
22 - 07.12.20 - 12:57
(20) "МояТЗ" - это название по которому потом восстанавливается значение. Может быть любое, главное, чтоб уникальное в пределах сеанса
   JonSilver
 
23 - 07.12.20 - 12:58
(22) Типа Глобальной переменной?
   Малыш Джон
 
24 - 07.12.20 - 13:00
(23) нет, это просто строка, это имя которое ты даешь сохраняемому значению, чтобы отличать его от других сохраняемых значений
   JonSilver
 
25 - 07.12.20 - 13:03
А для чего тогда эти ТЧ в обработках присутствуют, только как шаблон набора колонок и их ТиповЗначений?
   Малыш Джон
 
26 - 07.12.20 - 13:05
(25) для хранения данных в течении жизненного цикла экземпляра обработки
   JonSilver
 
27 - 07.12.20 - 13:11
(25) Так вот у меня примерно так и обстоит: из Формы1 я вызываю Форму2, набираю данные в ТЧ4 и хочу их обработать в Форме1, но только не передавая их как Параметр. В Форме1 существует поле со строковым выражением Данных ТЧ4, редактирование этой строки в ручном режиме пока не планирую, но все может быть. Не исключено что пользователь вызовет Форму2 еще раз, для добавления или редактирования текущих записей ТЧ4.
   JonSilver
 
28 - 07.12.20 - 13:13
Спасибо всем за помощь, уже час держу Вас на этой теме.
   Pro-tone
 
29 - 07.12.20 - 13:14
(26) реквизиты обработки не сохраняют значения, это просто что-то типа временных переменных в пределах активности (сеанса) обработки, нужны они чтоб взаимодействовать с пользователем в основном для последующего получения результата (подбора данных, замены, отчета и тп)
   Малыш Джон
 
30 - 07.12.20 - 13:16
(29) "для хранения данных в течении жизненного цикла экземпляра обработки" = "это просто что-то типа временных переменных в пределах активности (сеанса) обработки"
 
 Рекламное место пустует
   JonSilver
 
31 - 07.12.20 - 13:18
Может при вызове Формы2 я чего-то упускаю, синтаксис таков:

Процедура КомуНачалоВыбора(Элемент, СтандартнаяОбработка)
    
    ОткрытьФорму("ВнешняяОбработка.МояОбработка.Форма.ПодборПолучателей",,ЭтаФорма.ЭлементыФормы.Кому);
    
КонецПроцедуры
   Малыш Джон
 
32 - 07.12.20 - 13:19
(31) судя по всему ты в ОФ пытаешься применять навыки программирования УФ
   Малыш Джон
 
33 - 07.12.20 - 13:23
(31) В реквизитах обработки - создаешь свою ТЧ.
На формах - создаешь табличные поля, куда в качестве данных указываешь свою ТЧ.
Всё.
   Pro-tone
 
34 - 07.12.20 - 13:23
(31)

Синтаксис:
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>) 

2й параметр обычно тип структура, 3й- ЭтаФорма, нужно для работы оповещений / событий выбора, привязанных к форме
   Малыш Джон
 
35 - 07.12.20 - 13:25
А вообще - вот идея
У форм создаешь два методы оповещения: событие  "ЗапросДанных" и событие "РассылкаДанных".
В обработке оповещения формы по событию "ЗапросДанных" - делаешь оповещение "РассылкаДанных" с данными ТЧ, по событию "РассылкаДанных" - обновляешь данные текущей формы. 
При открытии формы - делаешь оповещение "ЗапросДанных"

Практически MAS получается
   JonSilver
 
36 - 07.12.20 - 13:25
(31) Первый вариант был именно таким, но закрытие Формы2 очищает данные ТЧ4.
   JonSilver
 
37 - 07.12.20 - 13:32
(35) А поподробнее? В синтаксис помощнике ничего такого не нахожу.
   JonSilver
 
38 - 07.12.20 - 13:40
(29) (30) Мед вроде есть, и его сразу нет)))
   Малыш Джон
 
39 - 07.12.20 - 13:44
(38) так это все таки несколько обработок одинаковых открываются или у одной и той же обработки несколько разных форм?
   Pro-tone
 
40 - 07.12.20 - 13:44
(38) не, это не мед, а соты пасечника пустые из воска, и улей без пчел, а медом с пчелами ты сам заполняешь
   JonSilver
 
41 - 07.12.20 - 14:40
(39) Обработка одна, но вызавается из Форм разных документов как по экземпляром так и по видам. (40) Так как мне объявить одну "соту" как "общая" с медом доступным для всех "пчел" одного сеанса. Т.е. я могу зайти в один документ, создать свой набор записей, обработать записи и закрыть. Все данные ТЧ4 мне больше не нужны, сеанс закрыт. Но в пределах сеанса мне данные ТЧ4 нужны в любой Форме этой обработки.
   Kassern
 
42 - 07.12.20 - 14:59
(41) Используй справочник ДополнительныеОтчетыИОбработки. Пихай в него свою обработку. Там в реквизит ХранилищеОбработки помещай нужные данные. При открытии формы бери данные из этого хранилища.
   Serg_1960
 
43 - 07.12.20 - 15:28
(42) Вредный совет без дополнительного разъяснения :(
   JonSilver
 
44 - 07.12.20 - 15:36
Вот что странно, реквизит обработки хранит Данные во время сеанса, например реквизит "СсылкаНаОбъект". И "ДополнительныеПараметры" тоже, а Табличные части - как прорва.
   Kassern
 
45 - 07.12.20 - 15:41
(42) не в реквизит ХранилищеОбработки ,а в ХранилищеНастроек. Опечатался чутка.
   Андроны едут
 
46 - 07.12.20 - 15:44
(44) В в доп.параметры можно запихнуть ТЧ или ТЗ?
   Serg_1960
 
47 - 07.12.20 - 15:48
А что мешает автору сделать реквизит с типом ХранилищеЗначений? Или нужна подсказка как туда записать табличную честь (точнее таблицу значений)?
   Жан Пердежон
 
48 - 07.12.20 - 15:49
(44) смотри реквизиты формы "Сохранять значения" и "Сохраняемые значения"
   Serg_1960
 
49 - 07.12.20 - 15:59
(45) А может быть и не опечатались. Не исключено, что у автора справочник называется ВнешниеОбработки, а реквизит - ХранилищеВнешнейОбработки. Намекаю на старые типовые конфигурации на обычных формах (не управляемых).
   JonSilver
 
50 - 07.12.20 - 16:10
(46) ДопПараметры служит для приема данных из конфигурации. (48) В свойствах обычной Формы такого параметра нет, Реквизит Формы это и есть реквизит и живет в пределах времени открытия Формы как переменная определенного Типа. (49) Вот из Синтаксис помощника: "Замечание! Не рекомендуется хранить в реквизитах типа ХранилищеЗначения ссылки на другие объекты базы данных." А мне это и надо.
   JonSilver
 
51 - 07.12.20 - 16:11
(49) Да действительно Внешняя обработка зарегистрирована в данном справочнике и название аналогичное.
   Жан Пердежон
 
52 - 07.12.20 - 16:13
   JonSilver
 
53 - 07.12.20 - 16:53
(52) За напоминание этого свойства Формы спасибо, скоро тоже понадобится. Я лишь хотел создать в обработке Реквизит в виде Структуры = ТабличнаяЧасть, данные которой(ого) будут доступны из любого объекта обработки (в т.ч. Формы) в текущем сеансе. При следующем сеансе и открытии этой Формы значение реквизита должно быть пустым.
(29) (30) Вот такая постановка вопроса меня устраивает, но данные ТЧ4 в Форме1, сформированные в подчиненной Форме2, почему-то пропадают. И как обойти (3) я не услышал.
Может много хочу, уж Вы извините.
Тем не менее, всем спасибо за внимание и участие в обсуждении.
   Serg_1960
 
54 - 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
   JonSilver
 
56 - 07.12.20 - 17:32
(54) В Таблице Принадлежность хранится информация, о том с какими Объектами конфигурации ассоциируется ВнешняяОбработка. Для внешних печатных форм - Вид документа, справочника и т.п. название Печ.формы и формы, которую она замещает и Набор параметров примитивного типа (число, строка, булево и т.д.) Для внешних обработок табличных частей - вообщем вы и Сами все знаете. По моему тут хранить негде. Может какие-то поля этой ТЧ и лишние в моем контексте, но я эту ТЧ в работе уже использую.
   JonSilver
 
57 - 07.12.20 - 17:35
(55) Вы склоняетесь к передаче параметров при открытии-закрытии Формы? Жаль что без этого не обойтись. Жаль, что из двух соседних окон я не могу видеть один и тот-же стул))).
   Йохохо
 
58 - 07.12.20 - 17:36
(57) получи как (55) и потом открой, в ОФ объект будет один стул
   JonSilver
 
59 - 07.12.20 - 17:40
(54) Кстати, вот метод моей регистрации обработки и доп.параметров к ней: https://expert.chistov.pro/public/60272/. Может кому пригодится. Хотя навряд-ли, кто использует обычные формы теперь?)))
   JonSilver
 
60 - 07.12.20 - 18:38
(58) Тоже самое я могу получить через "ОписаниеОповещенияОЗакрытии".
 
 Рекламное место пустует
   mistеr
 
61 - 07.12.20 - 19:02
(60) Ты лучше опиши желаемый сценарий работы пользователя. Найдем решение.
   JonSilver
 
62 - 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
   JonSilver
 
64 - 07.12.20 - 19:41
Почему Реквизит "СсылкаНаОбъект" жив до закрытия последнего окна (Формы) обработки, а эти ТабличныеЧасти умирают? Может COVID виноват?)))
   JonSilver
 
65 - 07.12.20 - 19:46
(63) Т.е. В Форме1 должна присутствовать не только Строка с форматированными данными, но и ТЧ=ТЧ4?
   Малыш Джон
 
66 - 07.12.20 - 19:50
(65) а зачем строка?
   Малыш Джон
 
67 - 07.12.20 - 19:51
(65) ТЧ у тебя одна на всю обработку, а на каждой форме - свое табличное поле, каждое из которых привязано к этой единственной ТЧ. Табчасть одна, доступов к ней много, по одному из каждой формы
   JonSilver
 
68 - 07.12.20 - 19:54
(66) Строка нужна для визуального представления выбранной информации, так короче отобразить информацию ТЧ4.
Уже пробую на своей обработке.
   mistеr
 
69 - 07.12.20 - 19:55
(62) Это не то, что я просил. Отвлекись от своих текущих попыток.
Опиши, как это выглядит для пользователя. На его языке. Если это печатная форма, то для какого дока. Как пользователь ее использует.
   JonSilver
 
70 - 07.12.20 - 20:23
(69) Вы извините, пожалуйста, но все уже решилось. В (31) посте я выложил строку вызова Формы2 и это оказалось решающим моментом, т.е. ошибкой. Данный синтаксис разрывает связь между объектами в текущем сеансе, или создает новый сеанс (не знаю что вернее). Открытие Формы2 через "ПолучитьФорму" все решило. Я никак не мог обратиться к данному методу пока не создал РеквизитФормы с Типом ссылка на свою обработку "ВнешняяОбработка.МояОбработка". Не хватает навыков стратегического мышления построения Обработки, до этого все работало, пока не решил вызывать подчиненную Форму.
Всем БОЛЬШОЕ спасибо. Был рад увидеть столько откликов.
Малышу Джону, отдельное спасибо. Нужно стараться программировать без кода.
   JonSilver
 
71 - 07.12.20 - 20:26
Если ни у кого больше нет ко мне вопросов, то тему можно считать закрытой.


Список тем форума
Рекламное место пустует  Рекламное место пустует
Компьютер — устройство разработанное для ускорения и автоматизации человеческих ошибок.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.