|
Обработка заполнения таб части на Управляемых формах | ☑ | ||
---|---|---|---|---|
0
Юзер123
naïve
02.02.16
✎
17:21
|
Доброго дня.
САБЖ опять же. делаю все по инструкции http://catalog.mista.ru/public/84119/ http://prosto1s.ru/index.php/19-sozdanie-vneshnej-obrabotki-zapolneniya-tablichnykh-chastej-v-upravlyaemom-prilozhenii-na-primere-konfiguratsii-1s-bukhgalteriya-predpriyatiya разные пробовал. В итоге ничего не получается. Идея такая. Необходимо что бы обработка данные из Экселя подтягивала в таб часть документа. Можно сделать конечно что то типа обработки где просто указывать в какой документ грузить данные. Но хочется разобраться именно с обработкой заполнения таб части. Обрабоку делаю и в модуле объекта все прописываю. Она прекрасно подключается к документу и появляется кнопочка "Заполнить". Вопрос КАК сказать обработке в каком именно документе мы находимся? ВладелецФормы.Объект у меня не работает почему то. Делаю 1 в 1 как в примерах |
|||
1
Юзер123
naïve
02.02.16
✎
17:44
|
НАтолкните на мысль то
|
|||
2
sonne666
02.02.16
✎
18:39
|
(0) в модуле объекта при подключении тип использование у команды какой? ОткрытиеФормы?
|
|||
3
sonne666
02.02.16
✎
18:40
|
ДобавитьКоманду(ТаблицаКоманд,
"Загрузить услуги из excel", "Загрузить услуги из excel", "ОткрытиеФормы", Истина); |
|||
4
Cyberhawk
02.02.16
✎
18:51
|
Без фото не взлетит
|
|||
5
Cyberhawk
02.02.16
✎
18:51
|
(имею в виду код)
|
|||
6
Юзер123
naïve
03.02.16
✎
08:22
|
ДобавитьКоманду(ТаблицаКоманд,
"Заполнить документ", "Заполнить документ", "ОткрытиеФормы", Истина); вот что у меня прописано. |
|||
7
Fedor-1971
03.02.16
✎
08:49
|
(0) в качестве мысли: ВладелецФормы - это форма (тип Данныеформы, а не объект хранения в БД) владелец текущей открытой формы и доступна НаКлиенте.
(6) имелся в виду код заполнения ТЧ или его начало, там где получаешь доступ к данным формы |
|||
8
Юзер123
naïve
03.02.16
✎
09:07
|
(7)
А можно как то владельца формы , точнее по владельцу формы , получить ссылку на документ из которого открыта обработка? Как в примере.. &НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт //Если ИдентификаторКоманды = "Заполнить" Тогда // // Документ = ОбъектыНазначения[0]; // КонецЕсли; //Спросим у пользователя разрешение на продолжение обработки Режим = РежимДиалогаВопрос.ДаНет; Текст = "Текущие данные документа будут заменены новыми без возможности восстановления. |Продолжить?"; Ответ = Вопрос(Текст, Режим, 0); Если Ответ = КодВозвратаДиалога.Да Тогда //Если пользователь дал разрешение на продолжение, то начнем перебирать все //документы, у которых мы планируем заполнить табличную часть Для каждого Элемент из ОбъектыНазначения Цикл //Зададим ключ поиска документа, из которого вызвана данная обработка, //чтобы получить ссылку на редактирумый документ в удобном виде для //функции ОткрытьФорму() КлючПоиска = Новый Структура("Ключ", Элемент); //Но нам не надо открывать новую форму (окно) для изменяемого документа, а //Нам надо все изменения показать в уже открытых у клиента окнах Окна = ПолучитьОкна(); Для каждого Окно из Окна Цикл |
|||
9
Fedor-1971
03.02.16
✎
09:21
|
(8) из команды не скажу, а из самой формы:
НаКлиенте Через ЭтаФорма.Владелец можно получить данные формы владельца. |
|||
10
Юзер123
naïve
03.02.16
✎
09:24
|
(9) Спачибо. Сейчас проверю
|
|||
11
Юзер123
naïve
03.02.16
✎
09:27
|
(9)
ЭтаФорма.Владелец = Управляемая форма. Ссылки на документ нет( |
|||
12
Юзер123
naïve
03.02.16
✎
09:30
|
ЭтаФорма.Владелец.Заголовок сообщает название моего документа. Уже хорошо)
|
|||
13
Defender aka LINN
03.02.16
✎
09:32
|
(11) ЭтаФорма.Владелец.Объект
|
|||
14
Юзер123
naïve
03.02.16
✎
09:34
|
(13) ДанныйФормыСтруктура.
|
|||
15
Юзер123
naïve
03.02.16
✎
09:48
|
Не догоняю зачем так было усложнять. неужели нельзя было сделать ссылочку на реквизит хотя бы строковый. По которому всегда можно было бы найти Документ.
|
|||
16
Defender aka LINN
03.02.16
✎
09:49
|
(14) Да. И?
(15) Открой глаза до щелчка и вперься в (13) |
|||
17
Юзер123
naïve
03.02.16
✎
10:02
|
Объект = ЭтаФорма.ВладелецФормы.Объект;
ВыбДок = ПолучитьДокументНаСервере(Объект); &НаСервере Функция ПолучитьДокументНаСервере(Заголовок) Док = ДанныеФормыВЗначение(Заголовок,Тип("ДокументОбъект.ПоступлениеТоваровУслуг")); Возврат(Сокрлп(Док)); КонецФункции Ругается на не соответствие типов 1 |
|||
18
Defender aka LINN
03.02.16
✎
10:16
|
(17) Нахфига тебе получать объект? Что мешает работать с данными формы?
|
|||
19
Юзер123
naïve
03.02.16
✎
10:21
|
(18)
Можно любой пример? Имею на клиенте ДанныйФормыСтруктура Как мне получить Ссылку на документ. Или доступ к таб части документа в которм я сейчас открыл обработку? |
|||
20
Fedor-1971
03.02.16
✎
10:32
|
(17) Объект = ЭтаФорма.ВладелецФормы.Объект; - вот это, это просто 5. Не надо использовать имя переменной Объект для получения неких внешних данных, придумай своё.
(19) Вот тебе пример: ПапаСРемнём = ЭтаФорма.ВладелецФормы.Объект; - получишь ДанныеФормы тч=ПапаСРемнём.НужнаяТЧформы - доступ к ТЧ, того, что на форме, но ещё не в БД вСсылка=ПапаСРемнём.Ссылка - раз уж хочешь именно ссылку |
|||
21
Defender aka LINN
03.02.16
✎
10:33
|
(19) НАХРЕНА тебе ссылка? А если объект новый?
Строка = Объект.Товары.Добавить(); - такой доступ не подойдет, не? |
|||
22
Юзер123
naïve
03.02.16
✎
10:36
|
(20) (21)
На клиенте. ? Объект = ЭтаФорма.ВладелецФормы.Объект; - вот это, это просто 5. Это поправил сразу после того как написал 17. |
|||
23
Юзер123
naïve
03.02.16
✎
10:40
|
(21)
Все прекрасно. Простите что долго тупил. Спасибо огромное) |
|||
24
Юзер123
naïve
03.02.16
✎
10:50
|
А теперь самое интересно). Как обновить форму документа которая открыта?)
|
|||
25
Fedor-1971
03.02.16
✎
11:02
|
(24) Через Оповестить("ОбновисьФормаОднако") и ОбработкаОповещения на форме.
Только ты изменял саму форму, что собрался обновлять? |
|||
26
Юзер123
naïve
03.02.16
✎
11:24
|
(25)
Я менял таб часть. Потом записывал Док. Но пользователь этого не видит пока не закроет и откроет док опять. |
|||
27
Юзер123
naïve
03.02.16
✎
11:24
|
Можно это проделать автоматом. т.е. закрыть форму документа, а потом открыть.
|
|||
28
Юзер123
naïve
03.02.16
✎
11:37
|
Или я продолжаю тупить дико?(
|
|||
29
FIXXXL
03.02.16
✎
11:39
|
(28) попробуй ЗначениеВДанныеФормы, если ты с документом на сервере игрался
|
|||
30
Fedor-1971
03.02.16
✎
11:58
|
(28) ты что сделал то? в предыдущем, просто изменил форму, соответственно она обновляется автоматически.
Если изменил и записал сам объект в БД, тогда ЭтаФорма.Прочитать() - вытащит то, что записано из БД на форму |
|||
31
Юзер123
naïve
03.02.16
✎
12:01
|
(30)
Я получил ссылку на объект. Потом на сервере получил объект, сделал то что надои записал его. |
|||
32
Fedor-1971
03.02.16
✎
12:02
|
(31) когда вернёшься в форму ЭтаФорма.Прочитать();
|
|||
33
Юзер123
naïve
03.02.16
✎
12:03
|
(32) А что она должна прочитать? все данные же в документе хранятся а не на форме)
|
|||
34
Юзер123
naïve
03.02.16
✎
12:03
|
(32) Да и нет такой функции у ЭтаФорма
|
|||
35
Fedor-1971
03.02.16
✎
12:13
|
(34) Обманываешь
|
|||
36
Юзер123
naïve
03.02.16
✎
12:15
|
(35)
ЭтаФорма - форма обработки верно?. В ней я выбираю только Файл из которого гружу, и храню в ней данные из этого файла + ссылку на документ из которого запускаю обработку. |
|||
37
Юзер123
naïve
03.02.16
✎
12:16
|
У меня обработка заполнения Таб части. Т.е. я открываю документ и его заполняю данными.
|
|||
38
Fedor-1971
03.02.16
✎
12:22
|
(36) шутник, ты изменил Объект документа, а хочешь прочитать его в форму обработки?
По порядку: Открыл документ (ф1), вызвал обработку (ф2), в ней изменил данные объекта, ПередЗакрытием в ф2 отправляешь оповещение Оповестить("ИзмениласьТЧТвоегоДокумента"), в ф1 в ОбработкаОповещения: Если событие="ИзмениласьТЧТвоегоДокумента" тогда ЭтаФорма.Прочитать(); КонецЕсли; Результат: обновлённая форма твоего документа с данными которые ты втянул и потерянными данными того, что пользователь изменял до вызова обработки. |
|||
39
Юзер123
naïve
03.02.16
✎
12:32
|
(38) В параметре передавать Структуру?
|
|||
40
Fedor-1971
03.02.16
✎
12:34
|
(39) в параметре чего?
|
|||
41
Юзер123
naïve
03.02.16
✎
12:38
|
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Запись_СчетФактураПолученный" И ТипЗнч(Параметр) = Тип("Структура") И Параметр.Свойство("ДокументыОснования") И Параметр.ДокументыОснования.Найти(Объект.Ссылка) <> Неопределено Тогда ПоступлениеТоваровУслугФормыКлиентСервер.ЗаполнитьРеквизитыПроСчетФактуру(ЭтаФорма, Параметр.РеквизитыСФ); УправлениеФормой(ЭтаФорма); ИначеЕсли ИмяСобытия = "ОбработанаТабличнаяЧастьТовары" И ТипЗнч(Параметр) = Тип("Структура") И Параметр.Свойство("ИдентификаторВызывающейФормы") И Параметр.ИдентификаторВызывающейФормы = УникальныйИдентификатор Тогда ОбработкаОповещенияОбработкиТабличнойЧастиТоварыНаСервере(Параметр); ИначеЕсли ИмяСобытия = "ОбновитьСостояниеЭД" Тогда УстановитьТекстСостоянияЭДНаСервере(); ИначеЕсли ИмяСобытия = "ОбновитьДокументИБПослеЗаполнения" И Параметр.Найти(Объект.Ссылка) <> Неопределено Тогда Прочитать(); ИначеЕсли ИмяСобытия = "ИзмененСтатусДокументов" Тогда Вот процедура в форме документа. Я про оповещении попадаю в нее. Меня устраивает Вот этот вариант ИначеЕсли ИмяСобытия = "ОбновитьДокументИБПослеЗаполнения" И Параметр.Найти(Объект.Ссылка) <> Неопределено Тогда Прочитать(); Что бы ничего не пилить в конфиге. |
|||
42
Fedor-1971
03.02.16
✎
12:44
|
(41) я бы дописал свою строку с ИмяСобытия="", но если хочешь использовать то, что уже есть, тогда передавай Параметр так, что-бы попасть в нужное тебе условие.
|
|||
43
Fedor-1971
03.02.16
✎
12:46
|
42+ Для начала просто допиши, проверь работоспособность, а потом будешь стараться попасть в то, что уже есть. Может тебе такой вариант не подойдёт, только время потеряешь пытаясь использовать стандартное.
|
|||
44
Юзер123
naïve
03.02.16
✎
12:46
|
(42) (43) ок. попробую сейчас.
А вообще какой тип должен былть для параметра?) |
|||
45
Fedor-1971
03.02.16
✎
12:50
|
(44) любой тебе удобный, как передашь, так и обрабатаешь
|
|||
46
Юзер123
naïve
03.02.16
✎
12:52
|
(45) Там именно что бы Найти работало.
|
|||
47
Юзер123
naïve
03.02.16
✎
12:58
|
(43) Работает Прочитать(). . Осталось параметр верно передать)
|
|||
48
Fedor-1971
03.02.16
✎
13:01
|
(47) Дерзай! Удачи.
|
|||
49
Юзер123
naïve
03.02.16
✎
13:19
|
(48) cgfcb,j)
|
|||
50
Юзер123
naïve
03.02.16
✎
13:19
|
(49) Спасибо
|
|||
51
Юзер123
naïve
03.02.16
✎
16:00
|
Поместил ссылку на документ в массив и передал как параметр массив. Типовой код его скушал.
Все хорошо работает и обновляет данные. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |