|
v7: не заполняется ТЧ документа через внешнюю обработку | ☑ | ||
---|---|---|---|---|
0
mpbakunov
06.12.11
✎
23:05
|
в документе РН вызывается внешняя обработка, которая из xls файла заполняет ТЧ документа. Обработке передается Контекст документа
Процедура ЗапонитьПоЗаявке() ОткрытьФорму("Отчет",Контекст,"D:\1C\MEGA\Обработки\Заполнение РН на основании заявки.ert"); КонецПроцедуры // ЗапонитьПоЗаявке в обоаботке переменной Док присваивается переданный параметр док=Форма.Параметр; далее идет обработка xls таблицы, нахождение нужного ТМЦ и заполнение ТЧ документа РН код заполнения док.новаяСтрока(); док.Товар=спрТМЦ.ТекущийЭлемент(); док.Кво=кво; вот эти 3 строки выполняются и вижу через отладчик что и товар и Кво имеют значения, НО ТЧ документа не заполняется! Что я делаю не правильно? |
|||
1
andrewks
06.12.11
✎
23:06
|
баян
|
|||
2
Гость2
06.12.11
✎
23:09
|
Док.НайтиДокумент(бла-бла-бла);
|
|||
3
Mans
06.12.11
✎
23:14
|
(0) так не выйдет с ТЧ, алгоритм обработки в модуль дока засунь
|
|||
4
mdocs
06.12.11
✎
23:14
|
либо записывай док, потом заново открывай
|
|||
5
Гость2
06.12.11
✎
23:15
|
(3) Тук-Тук-Тук
|
|||
6
Mans
06.12.11
✎
23:15
|
(5) он что записан?
|
|||
7
mpbakunov
06.12.11
✎
23:17
|
документ при этом открыт!
|
|||
8
mpbakunov
06.12.11
✎
23:17
|
я ожидал что визуально увижу как заполняется ТЧ документа, ан нет!
|
|||
9
Mans
06.12.11
✎
23:19
|
заполняй ТЗ обработки и возвращай в док
|
|||
10
mpbakunov
06.12.11
✎
23:21
|
(9) да так и думал но хоочу понять почему мой метод не работает!
|
|||
11
Дядя Васька
06.12.11
✎
23:21
|
(8) С формексом увидишь, если хочешь. Если просто открыть форму дока, пока не запишешь, по ссылке не заполняется. Если же формекс подключить, то все норм. Пользоваться им можешь не уметь, достаточно просто подгрузить эту ВК.
|
|||
12
Ёпрст
06.12.11
✎
23:21
|
(0) одна строчка кода и твой код в(0) будет рабочим.
|
|||
13
andrewks
06.12.11
✎
23:23
|
(12)ЗагрузитьВнешнююКомпоненту()?
|
|||
14
mpbakunov
06.12.11
✎
23:25
|
(12) неужели надо будет танцевать чтобы узнать эту волшебную строчку!
|
|||
15
mdocs
06.12.11
✎
23:26
|
(14) Есть желание?
|
|||
16
mdocs
06.12.11
✎
23:26
|
Думаю это будет что-то типа Док.Записать()
|
|||
17
Дядя Васька
06.12.11
✎
23:27
|
(14) Тебе уже два раза сказали: ЗагрузитьВнешнююКомпоненту("Formex.dll")
|
|||
18
Ёпрст
06.12.11
✎
23:27
|
ответ в 11,13
|
|||
19
Дядя Васька
06.12.11
✎
23:27
|
(16) Тоже вариант, но не очень удобно. Может пользователь и не захочет его записывать. Удалять потом придется.
|
|||
20
Mans
06.12.11
✎
23:32
|
(14) из обработки открывай док, а там
ПриПовторномОткрытии() Форма.Параметр © КАМИН |
|||
21
mpbakunov
06.12.11
✎
23:34
|
попробую, спасибо
|
|||
22
Tonik
06.12.11
✎
23:43
|
(18) да фигню вы говорите, у меня такое работает без всяких ВК.
всю жизнь добавляю товар в ТЧ из внешних обработок. |
|||
23
Дядя Васька
06.12.11
✎
23:44
|
(22) Только если документ перед этим записан. Известный глюк движка, который сама 1С исправлять уже не собирается. А формекс как раз исправляет.
|
|||
24
Tonik
06.12.11
✎
23:45
|
(23) не фига. с новыми доками все работает.
|
|||
25
Дядя Васька
06.12.11
✎
23:47
|
(24) Значит ВК у тебя загружена, просто ты об этом не знаешь :) Либо мы говорим о разным и ты добавляешь в док сделанный через СоздатьОбъект(), а не в форму через контекст.
|
|||
26
Дядя Васька
06.12.11
✎
23:47
|
*о разном
|
|||
27
Злопчинский
06.12.11
✎
23:49
|
..или обработка вызвана модально..?
|
|||
28
Tonik
06.12.11
✎
23:50
|
(24) ни одной чужой ВК нет. тем более формекса. документ создается интерактивно, все это работает с очень старого релиза, примерно 22.
|
|||
29
Tonik
06.12.11
✎
23:53
|
(27) не модально, но принцип тотже: вызвали, юзер выбрал файл (или еще чего), форма закрылась. да, переключиться обратно в форму он не может.
но именно такое и требуется в (0) |
|||
30
Дядя Васька
06.12.11
✎
23:55
|
(29) поток бреда какой-то...
|
|||
31
Tonik
06.12.11
✎
23:58
|
(30) ну и что тут не понятного? вызов обработки происходит через ОткрытьФорму, а не ОткрытьФормуМодально об этом шла речь в (27). до этого момента все понятно?
далее пользователь может выбрать файл. при этом вернуться в документ он не может. здесь все понятно? далее он нажимает загрузить, обработка читает файл, закрывается. документ заполнен как надо. что здесь не понятно? или в (0) хотели что-то другое????? |
|||
32
mpbakunov
06.12.11
✎
23:59
|
требуется обработка заполнила ТЧ и закрылась и все должны остаться рады!
|
|||
33
andrewks
07.12.11
✎
00:00
|
(27) разве есть разница?
|
|||
34
Tonik
07.12.11
✎
00:03
|
(32) покажи код обработки. точнее вызов кода заполнения
|
|||
35
Mans
07.12.11
✎
00:05
|
(31) документ РКО? там ТЧ нет
|
|||
36
mpbakunov
07.12.11
✎
00:06
|
Процедура Сформировать()
док=СоздатьОбъект("Документ.Т_РасходнаяНакладнаяПрод_MG"); док=Форма.Параметр; ОчиститьОкноСообщений(); Попытка Excel = СоздатьОбъект("Excel.Application"); Исключение Сообщить("Возможно MS-Excel на компьютере не установлен. Необходимо выполнить установку/переустановку Excel.","!"); СтатусВозврата(0); Возврат; КонецПопытки; Если ФС.СуществуетФайл(ИмяФайла) = 0 Тогда Предупреждение ("Файл импорта: "+СокрЛП(ИмяФайла)+" - не обнаружен!"); Возврат; КонецЕсли; Excel.Workbooks.Open(Сокрлп(ИмяФайла)); Excel.Range("A"+СтрокаНомер).Activate(); Excel.ActiveCell.CurrentRegion.Select(); спрТМЦ=СоздатьОбъект("Справочник.ТМЦ"); спр=СоздатьОбъект("Справочник.РеквизитыТМЦПокупателей_MG"); //Строк = Excel.Selection.Rows.Count; Для к=СтрокаНомер По СтрокаНомер+КвоСтрок-1 Цикл КодПокупателя=Число(Excel.Cells(к, столбецТМЦ).Value); спр.ИспользоватьДату(док.ДатаДок); рез=0; спрТМЦ.ВыбратьЭлементы(); Пока спрТМЦ.ПолучитьЭлемент()=1 Цикл спр.ИспользоватьВладельца(спрТМЦ); спр.ВыбратьЭлементы(); Пока спр.ПолучитьЭлемент()=1 Цикл Если сокрЛП(спр.Артикул)=СокрЛП(КодПокупателя) Тогда рез=1; Прервать; КонецЕсли; КонецЦикла; Если рез=1 Тогда Прервать; КонецЕсли; КонецЦикла; Если рез=0 Тогда Сообщить("Код покупателя - " + КодПокупателя+ " не найден!"); Продолжить; КонецЕсли; Кво=Число(Excel.Cells(к, столбецКво).Value); док.новаяСтрока(); док.Товар=спрТМЦ.ТекущийЭлемент(); док.Кво=кво; док.форма.обновить(); КонецЦикла; КонецПроцедуры |
|||
37
mpbakunov
07.12.11
✎
00:06
|
добавил загрузку FormEx - заработало!
|
|||
38
Tonik
07.12.11
✎
00:06
|
(35) нет. любой где есть ТЧ.
|
|||
39
Злопчинский
07.12.11
✎
00:07
|
(36) первые два оператора по отдельности - пусть..
но вместе - полный бред |
|||
40
Дядя Васька
07.12.11
✎
00:07
|
(31) Ну все понятно. Вызов обработки через ОткрытьФорму(), а в самой обработке Док = СоздатьОбъект("Документ.НужногоВида")... Ты не понял о чем сабж. Там через ОткрытьФорму() открывается новый документ, далее идет заполнение его ТЧ через контекст, в результате пользователь должен видеть перед собой новый документ с заполненной ТЧ, при этом не сохраненный. При желании можно его закрыть отказавшись от записи. У тебя совершенно другое.
|
|||
41
Злопчинский
07.12.11
✎
00:07
|
Если ФС.СуществуетФайл(ИмяФайла) = 0 Тогда
- поставить самым первым оператором |
|||
42
mpbakunov
07.12.11
✎
00:09
|
(39) да это я уже пробовал всякое. согласен! изначально была одна строка.
|
|||
43
Злопчинский
07.12.11
✎
00:10
|
если реквизит артикул - с галкой "сортировка"
используй вместо цикла в цикле Спр.НайтиПоРеквизиту() - юудет быстрее раз в 10... . Господи, забери леди гагу, тимати, бритни спирс, токио отель, да хоть всех сразу и верни нам фредди меркури. |
|||
44
mpbakunov
07.12.11
✎
00:11
|
(43) Артикул - Периодический
|
|||
45
andrewks
07.12.11
✎
00:11
|
(43) лучше Кобейна
|
|||
46
mpbakunov
07.12.11
✎
00:12
|
(43) Спр.НайтиПоРеквизиту() - не покатит
|
|||
47
mpbakunov
07.12.11
✎
00:12
|
(45) Поддерживаю!
|
|||
48
Tonik
07.12.11
✎
00:12
|
(41) ну и где ты это вычитал? в (28) я писал, что документ открывает пользователь.
и что надо в (0) я прекрасно понял. у меня именно таки и реализованно. товар добавляется в открытый пользователем не записанный документ. никаких СоздатьОбъект нету |
|||
49
Злопчинский
07.12.11
✎
00:13
|
(44) Артикул..? Периодический..? это сильное колдунство!
|
|||
50
Tonik
07.12.11
✎
00:14
|
(36) а вызов Сформировать где?
|
|||
51
mpbakunov
07.12.11
✎
00:14
|
(49) это артикул - код Покупателя ТМЦ в его ИБ его нет в типовойЮ он периодический потому что может изменится у покупателя
|
|||
52
mpbakunov
07.12.11
✎
00:14
|
(50) в обработке
|
|||
53
Злопчинский
07.12.11
✎
00:14
|
(48) ну ничего.. ничего...
|
|||
54
andrewks
07.12.11
✎
00:15
|
(48) хорош уже свистеть-то.
|
|||
55
Tonik
07.12.11
✎
00:15
|
(54) на спор?
|
|||
56
Tonik
07.12.11
✎
00:16
|
(54) на коньячок?
|
|||
57
mpbakunov
07.12.11
✎
00:17
|
Ладно, народ! Спасибо за помощь! Все заработало! И кому то еще помогу коньячок выспорить! :)
|
|||
58
andrewks
07.12.11
✎
00:19
|
(55) давай. и вопли потом, что ты перепутал добавление/удаление строк ТЧ с изменением строк ТЧ не кидай. ты несколько раз повторил, что всё понял
|
|||
59
Дядя Васька
07.12.11
✎
00:20
|
(55) Вот дятел упертый. Создай пустую конфу без ВК, с одним справочником, документом и обработкой которая создаст этот документ описанным способом. Кидай сюда. Если получится - снимаем шляпу. Только нифига у тебя не получится.
|
|||
60
Tonik
07.12.11
✎
00:23
|
(58) итак есть конфа. в ней 1 документ у него ТЧ. один справочник.
по клику из открытого и еще не записанного пользователем документа вызывается внешняя обработка, в нее передан контекст этого документа. она добавит несколько строк в этот документ, закроется, пользователь увидит свой не записанный документ с новыми строками. никакие ВК не использовать. я правильно все изложил? ставка 0.7 Henessy VSOP. (59) сам дятел |
|||
61
Дядя Васька
07.12.11
✎
00:25
|
(60) Ну как вариант. Вообще не совсем так: есть обработка, нажимаешь на кнопку, открывается форма нового дока с заполненной ТЧ, док не записан. Впрочем по твоей версии тоже ничего не выйдет.
|
|||
62
Tonik
07.12.11
✎
00:26
|
(61) ты ставочку-то поддерживаешь?
|
|||
63
Дядя Васька
07.12.11
✎
00:27
|
(62) Если сделаешь как в (61) то удваиваю :)
|
|||
64
Дядя Васька
07.12.11
✎
00:28
|
+(63) (60) я думаю тоже не получится, но с этой стороны не проверял, (61) не получится точно.
|
|||
65
andrewks
07.12.11
✎
00:29
|
(60) уточни релиз платформы, а также - не собираешься ли из этой обработочки открывать форму дока
|
|||
66
Tonik
07.12.11
✎
00:30
|
(63) так не делал, врать не буду. может и не заработает.
(65) 7.70.027. обработка только заполнит ТЧ |
|||
67
Дядя Васька
07.12.11
✎
00:31
|
(65) Думаю это непринципиально. Если документ не записан, через контекст он ТЧ не заполнит. Если не работает на 27-м, вряд ли заработает на более древнем. Попал он на пиво при любых условиях задачи :)
|
|||
68
Tonik
07.12.11
✎
00:32
|
(67) т.е. ставку ты ставишь?
|
|||
69
Дядя Васька
07.12.11
✎
00:32
|
(66) Ждем мд :)
|
|||
70
Дядя Васька
07.12.11
✎
00:32
|
(68) Да легко )
|
|||
71
Дядя Васька
07.12.11
✎
00:33
|
+(70) Единственное условие - документ именно не записан. Записать, а потом Удалить(1) не считается.
|
|||
72
Tonik
07.12.11
✎
00:34
|
(70) принято. завтра к 12-13 часам. щас пока поработать надо.
|
|||
73
Tonik
07.12.11
✎
00:34
|
(71) естественно.
|
|||
74
Дядя Васька
07.12.11
✎
00:35
|
(72) Надеешься что утонет? Тут кнопка есть - темы с моим участием :)
|
|||
75
Tonik
07.12.11
✎
00:37
|
(74) нет. мне стыднее сбежать, чем признать поражение.
а щас просто надо доделать, а то клиент ноет |
|||
76
Дядя Васька
07.12.11
✎
00:39
|
(75) ну лады... В обед правда у клиента буду, возможно и не до мисты будет. Но вечерком загляну.
|
|||
77
andrewks
07.12.11
✎
00:49
|
(66) ты слишком шикарно поставил на такой безвыигрышный лот. если сделаешь - вышлю тебе на арарат 0,5 и выскажу мегареспект. если проиграешь - удовлетворюсь публичным посыпанием пепла типа "ах, я такой-сякой дятел, не слушал, а мне ведь говорили. беру свои слова обратно"
|
|||
78
GreyK
07.12.11
✎
01:07
|
(0) Вставляешь во внешнюю печатную форму, проверяешь и убеждаешься, что для этой задачи формекс не нужен :)
//****************************************************************************** // Печать(Докум) // // Параметры: // Нет // // Возвращаемое значение: // Нет // // Описание: // Процедура Печать(Докум, Устройство=0, КолвоКопий=1) Перем НачПовт, КонПовт; //Бла,бла,бла КоличествоПользователейФормексаВНенужнуыхМестах = 9999; Для Сч = 1 По КоличествоПользователейФормексаВНенужнуыхМестах Цикл Докум.НоваяСтрока(); КонецЦикла; КонецПроцедуры // Печать() |
|||
79
Злопчинский
07.12.11
✎
01:10
|
(78) а где присовение какого-нить реквизита...?
|
|||
80
GreyK
07.12.11
✎
01:13
|
(79) Совсем обленился? Ну можешь в количество (если оно есть в тч) загнать количество любителей ВК на форуме :)
|
|||
81
GreyK
07.12.11
✎
01:24
|
(0) Если конфа типовая, тогда меняем:
ОткрытьФорму("Отчет",Контекст,"D:\1C\MEGA\Обработки\Заполнение РН на основании заявки.ert"); на : ОткрытьФорму("Отчет",глВзятьКонтекст(Контекст),"D:\1C\MEGA\Обработки\Заполнение РН на основании заявки.ert"); |
|||
82
Злопчинский
07.12.11
✎
03:27
|
(81) неа.. не получается...
|
|||
83
Злопчинский
07.12.11
✎
03:40
|
тестовый набор: вперед!
http://zalil.ru/32215890 |
|||
84
Дядя Васька
07.12.11
✎
03:49
|
(83) На windows 7 кстати работает...
|
|||
85
Дядя Васька
07.12.11
✎
03:52
|
+(84) Ажно ради интересу на виртуалку 2003 стал ставить. На вынь 7 если сидишь в форме дока, т.е. как в сабже, работает на заведомо пустой конфе, с одним доком. Если новый док делать через ОткрытьФорму() как в (61) описал, не работает, что в общем неудивительно.
|
|||
86
Дядя Васька
07.12.11
✎
03:56
|
Хотя не, гоню, в твоей версии не работает. Вот, лови: http://zalil.ru/32215906
|
|||
87
Злопчинский
07.12.11
✎
04:10
|
(86) так не прокатит ;-)
сделай чтобы форма обработки открылась, и пользователь интерактивно в открытой форме поработал... |
|||
88
Дядя Васька
07.12.11
✎
04:14
|
(87) Вон оно чо Михалыч... Ну тогда получается что с Tonik'ом у нас боевая ничья :)
|
|||
89
Злопчинский
07.12.11
✎
04:18
|
(88) нифига. финт со статусом возврата - это не полноценная работа внешней формы;
вариант-то из 87 - не работает... условий на вариант использования внешней обработки не было наложено; итого: испытываем в общем случае; товой вариант - узкий частный случай... |
|||
90
Злопчинский
07.12.11
✎
04:20
|
со статусом возрата работает видимо потому, что до тех пор, пока не отработала ПриОткрытии - в параметре сохраняется контекст. а как только форма полноценно открылась - все пипец.. - почитай что возвращает ОткрытьФорму в переданном параметере...
|
|||
91
Дядя Васька
07.12.11
✎
04:20
|
(89) Ну я о чем и говорю. Т.е. теоретически без ВК заполнить можно, практически к сабжу неприменимо, так как там еще загрузка из файла идет, соответственно в обработке как минимум это самый файл выбрать надо, и ПриОткрытии() не катит.
|
|||
92
Дядя Васька
07.12.11
✎
04:22
|
(90) Внутри обработки в нем все еще контекст. Но кривенько.
|
|||
93
GreyK
07.12.11
✎
04:35
|
(67) А так работает и с открытой формой :)
//====================================================================== Процедура кнЗаполнить() ОткрытьФормуМодально("Отчет",глВзятьКонтекст(Контекст),КаталогИБ()+"ExtForms\ЗаполнитьТЧбезИзвратов.ert"); КонецПроцедуры // кнЗаполнить |
|||
94
GreyK
07.12.11
✎
04:35
|
(93) > (87)
|
|||
95
Дядя Васька
07.12.11
✎
04:46
|
(93) Не работает.
|
|||
96
Дядя Васька
07.12.11
✎
04:47
|
+(95) В (83) как раз этот вариант.
|
|||
97
GreyK
07.12.11
✎
05:21
|
(95) В (83) немодально.
|
|||
98
GreyK
07.12.11
✎
06:28
|
Ещё можно вот так:
Перем КонтекстДокумента; //******************************************* Процедура кнСформировать() Перем Конт; Спр = СоздатьОбъект("Справочник.Нечто"); Если Спр.Выбрать(" выбери Нечто",)=0 Тогда Возврат; КонецЕсли; ТаблЗначен = СоздатьОбъект("ТаблицаЗначений"); ТаблЗначен.НоваяКолонка("Нечто"); ТаблЗначен.НоваяСтрока(); ТаблЗначен.Нечто = Спр.ТекущийЭлемент(); КонтекстДокумента.ОткрытьПодбор("Обработка.КакаяТоСуществующаяОбработка",,Конт,,); Конт.Форма.ВыполнитьВыбор(ТаблЗначен); Конт.Форма.Закрыть(); КонецПроцедуры //====================================================================== Процедура ПриОткрытии() КонтекстДокумента = Форма.Параметр; КонецПроцедуры // ПриОткрытии В документе обрабатываем подбор. |
|||
99
Песец
07.12.11
✎
07:19
|
(0) Во внешней обработке:
Процедура ПриОткрытии() ддд=глВзятьКонтекст(Контекст); ОткрытьФормуМодально("Отчет",ддд,КаталогИБ()+"ExtForms\ЫшшоОднаФорма.ert"); Докум = Форма.Параметр.Получить("Контекст"); Докум.НоваяСтрока(); Докум.РеквизитСтроки = ддд; Статусвозврата(0); Возврат; КонецПроцедуры // ПриОткрытии() ЫшшоОднаФорма.ert Процедура Сформировать() Форма.Параметр=ддд;//ддд реквизит формы для интерактивной работы КонецПроцедуры |
|||
100
KRV
07.12.11
✎
07:23
|
! сто! (а тема о чем?)
|
|||
101
ksupalo
07.12.11
✎
07:28
|
Используй стандартный механизм Обработка заполнения ТЧ - -там передается Объект и его ТЧ - его и заполняем
В HELP все подробно есть. |
|||
102
Mikeware
07.12.11
✎
07:31
|
(100) как всегда, о соотношении радиусов, и дефектах длинной полимерной молекулы...
|
|||
103
GreyK
07.12.11
✎
07:41
|
(102) Так и запишем, ты не участвуешь в распитии коньяка из спора в (56)-(58)
|
|||
104
Mikeware
07.12.11
✎
07:44
|
(103) ок. Вообще предпочитаю не пить :-)
|
|||
105
Песец
07.12.11
✎
07:46
|
(103) Дык, это... (99) соответствует требованиям (60) или как?
|
|||
106
Песец
07.12.11
✎
07:49
|
(105)+ ...и/или (71)
|
|||
107
Tonik
07.12.11
✎
09:55
|
каюсь, обманул, у меня, в конечном счете, модально открывается форма. точнее первая обработка открывает вторую модально. но это не так важно.
есть 2 варианта: 1. открыть форму модально. это не противоречит, а скорее, наоборот приветствуется в (0). 2. все делать в процедуре ПриОткрытии внешней формы. например так Перем Док; Процедура ЗагрузитьИзФайла() ИмяФ = ""; ФС.ВыбратьФайл(0, ИмяФ,,,); Сообщить("Буду грузить товар из " + ИмяФ); СпрТов = СоздатьОбъект("Справочник.Номенклатура"); Док.НоваяСтрока(); СпрТов.НайтиПоКоду(1); Док.Товар = СпрТов.ТекущийЭлемент(); Док.НоваяСтрока(); СпрТов.НайтиПоКоду(2); Док.Товар = СпрТов.ТекущийЭлемент(); КонецПроцедуры Процедура ПриОткрытии() Док = Форма.Параметр.Получить("Док"); ЗагрузитьИзФайла(); Форма.Закрыть(); КонецПроцедуры пример http://zalil.ru/32216303 |
|||
108
Ёпрст
07.12.11
✎
09:58
|
(107)Короче, коньяк проср@л.
|
|||
109
Mans
07.12.11
✎
10:07
|
(107) да, коньяк те еще рано, начинай с тоника
|
|||
110
Tonik
07.12.11
✎
10:09
|
(108) с фига ли? работает, ровно так, как требовалось в (0) и в (60)
|
|||
111
Ёпрст
07.12.11
✎
10:21
|
(110) Читай вниматочно - требовалось заполнение табличной части документа через контекст открытой формы, НЕ МОДАЛЬНО и БЕЗ передачи параметра в открываемую форму документа, просто через контекст.
Так что раз проср@Л, не будь тряпкой - отдай долг. |
|||
112
Tonik
07.12.11
✎
10:25
|
(111) где условие про модальность?
и что в твоем понимании "просто через контекст"? просто передаем контекст во внешнюю форму. если имеется в виду это "ОткрытьФорму("Отчет",Контекст...", то у меня ровно так и сделано. а передача контекста через список значений это для удобства, если убрать список, то ничего не изменится |
|||
113
Mans
07.12.11
✎
10:25
|
один черт (0) конфу правит, можно попробовать:
ТупоЖдем=глМегаУниверсальныйЧитательЕхеля(Контекст,..........................); |
|||
114
Ёпрст
07.12.11
✎
10:28
|
(112)Ладно, будем считать тебя тряпочкой.
А так, читай ветку с начала. |
|||
115
GreyK
07.12.11
✎
11:07
|
(114) Смею заметить что решение (61) через подбор (ограничения на подбор нет) показанно в (98).
Т.к. по заявлению в (61) профит удваивается, то я расчитываю на бутылочку каньяка :) |
|||
116
GreyK
07.12.11
✎
11:19
|
+(114) В условиях задания не указано, что форма обязательно должна быть открыта, там сказано про "некое действие".
Т.к. этот код: //====================================================================== Процедура ПриОткрытии() Перем КонтекстДокумента; КонтекстДокумента = Форма.Параметр; Спр = СоздатьОбъект("Справочник.Нечто"); Пока Спр.Выбрать(" выбери Нечто",)=1 Цикл КонтекстДокумента.НоваяСтрока(); КонтекстДокумента.Нечто = Спр.ТекущийЭлемент(); КонецЦикла; СтатусВозврата(0); КонецПроцедуры // ПриОткрытии добавляет строки в контекст, то спор выигран! |
|||
117
GreyK
07.12.11
✎
11:21
|
(116) +(115)
|
|||
118
Ёпрст
07.12.11
✎
11:23
|
Ёпта.. через правку документа можно сделать х-вой тучей способов.
Речь была за создание строк через контекст открытой формы. Так что, спор проср@н. |
|||
119
Mikeware
07.12.11
✎
11:28
|
(118) учись выкручиваться, как проср@вшие :-))
|
|||
120
GreyK
07.12.11
✎
11:34
|
(118) Притензии не принимаются :)
Во первых: в типовых обычно всегда есть ОбработкаПодбора() и тогда (98) прокатывает: //******************************************* Процедура Сформировать(КакиеТоДанные) Перем Конт; ОткрытьФорму("Документ.Учет",Конт,); КонтекстДокумента.ОткрытьПодбор("Обработка.КакаяТоСуществующаяВстроеннаяОбработка",,КонтОбработки,,); КонтОбработки.Форма.ВыполнитьВыбор(КакиеТоДанные); КонтОбработки.Форма.Закрыть(); КонецПроцедуры Во вторых: в (0) документ самопальный, можно писать хоть что. В третих: в типовых есть дополнительные печатные формы, т.ч. можно сделать заполнение ничего недописывая. |
|||
121
Tonik
07.12.11
✎
11:50
|
(119) +1
(120) могу только чуть-чуть подправить. во внешней обработке Процедура Сформировать() Конт2=""; Док.ОткрытьПодбор("Справочник.Номенклатура",,Конт2,,); Конт2.Форма.ВыполнитьВыбор(""); Док.ПолучитьСтрокуПоНомеру(Док.КоличествоСтрок()); Док.Форма.Обновить(); Конт2.Форма.Закрыть(); КонецПроцедуры ну а саму внешнюю обработку открываем через ОткрытьФорму("Отчет",Контекст |
|||
122
andrewks
07.12.11
✎
16:23
|
чё-то я совсем запутался, кто кому проср@л.
мудрый all, рассуди вариант с подбором интересен, но не соответствует условиям спора. отсутствие модальности было оговорено в не заполняется ТЧ документа через внешнюю обработку , подразумевалось при споре, но прямо в посте со спором не указано. у меня двойственные чувства, взываю к коллективному разуму |
|||
123
orefkov
07.12.11
✎
17:32
|
(122)
Тут два варианта - либо использовать ВК (formex точно, turbobl, 1C++ - вроде тоже помогают) Либо извращаться с повторным открытием, но тогда док должен сам уметь заполняться, что не совсем точно соответствует чистой задаче. |
|||
124
Tonik
07.12.11
✎
17:53
|
(123) чистая задача: внешняя обработка должна заполнить документ.
про модальность или наличие интерфейса пользователя у этой обработки в задаче нет ни слова. |
|||
125
Песец
07.12.11
✎
18:59
|
(122) В каких буквах какого поста "отсутствие модальности было оговорено" или "подразумевалось при споре"?
Tonik 60 - 07.12.11 - 00:23 (58) итак есть конфа. в ней 1 документ у него ТЧ. один справочник. по клику из открытого и еще не записанного пользователем документа вызывается внешняя обработка, в нее передан контекст этого документа. она добавит несколько строк в этот документ, закроется, пользователь увидит свой не записанный документ с новыми строками. никакие ВК не использовать. я правильно все изложил? ставка 0.7 Henessy VSOP. Дядя Васька 61 - 07.12.11 - 00:25 (60) Ну как вариант. Вообще не совсем так: есть обработка, нажимаешь на кнопку, открывается форма нового дока с заполненной ТЧ, док не записан. Впрочем по твоей версии тоже ничего не выйдет. Tonik 62 - 07.12.11 - 00:26 (61) ты ставочку-то поддерживаешь? Дядя Васька 63 - 07.12.11 - 00:27 (62) Если сделаешь как в (61) то удваиваю :) За 0,7 предложено несколько решений, путем вызова из первой обработки из ПриОткрытии() второй модальной обработки можно не менять конфу, задействовав механизм внешних печатных форм. |
|||
126
Злопчинский
07.12.11
✎
20:01
|
Внешняя форма должна представлять полную функциональность общения с конфигурацией - любые действия пользователь может выполнить из обработки - окрыть по кнопкам разные что надо, заполнить на форме обработки любые принадлежащие обработкке реквизиты, в т.ч запполнить табличную часть нового незаписанного документа. все остальное - это сушественное ограничение функциональности внешней обработки и не может быть признано как удовлетворяющей задаче. Исполнители хитрят, пользуясь тем что полностью условия не обговорены были или обговорены туманно - и реализуют мелкий частный работающий вариант с ограниченной функциональностью, хотя имхо - если не оговорены граничные условия - задача д.б. решена на поле общих (т.е. максимально возможных требований/возможностей).
|
|||
127
Злопчинский
07.12.11
✎
20:03
|
(99)
Во внешней обработке: Процедура ПриОткрытии() ддд=глВзятьКонтекст(Контекст); . Контекст - это что? . |
|||
128
Злопчинский
07.12.11
✎
20:03
|
Присоединяюсь к (111) - Тоник слил.
|
|||
129
Tonik
07.12.11
✎
20:31
|
(126) 1 - модально. 2 - через подбор. никаких ограничений.
ни логике, ни условиям это не противоречит. |
|||
130
andrewks
07.12.11
✎
22:28
|
(125) читай ветку сначала - с зарождения спора, с 22-го поста. там про модальность как раз и обсасывалось.
в 60-м посте это прямо не указано - да, косяк. один забыл, второй проморгал. но контекст разговора очевиден. но в ветке промелькнуло решение, которое удовлетворяет контексту спора - оно в (86). ведь ничто не мешает воткнуть в ПриОткрытии() ФС.ВыбратьФайл(), а обязательность выбора файла именно кнопкой с морды обработки не была заявлена. посему готов выслать Дяде Ваське на телефон денежный эквивалент арарата :) |
|||
131
Ёпрст
07.12.11
✎
22:32
|
(130) высылай мне, правда я пью Наири или Праздничный, на крайний случай, Ахтамар.
|
|||
132
andrewks
07.12.11
✎
22:33
|
(131) :) ты-то с какого боку?
|
|||
133
Ёпрст
07.12.11
✎
22:46
|
(132) не жмись!
а я так, просто так. |
|||
134
Злопчинский
08.12.11
✎
00:25
|
(129) Если форма внешней обработки открыта, показана юзеру на экран, и юзер может совершить некие интерактивные действия !!на форме внешней обработки!! - например: жмакнуть кнопку "подбор" - подобрать нужный состав - и через такой подбор контекст родительского документа (нового, незаписанного) успешно заполниться - то вообщем, тут можно и согласиться что в какой-то мере условие выполнено, но в какой-то мере - ибо над подобранным составом (номенклатуры) могут потребоваться совершить какие-то дополнительные действия - отфильтровать по неким сложным условиям, провести некую предварительный "обсчет" подобранного состава перед тем, как его запихнуть в ТЧ дока (самый тривиальный вариант такого обсчета - приведение цен к виду "НДС и сверху и в составе рассчитывается без погрешностей округления")... да, можно возразить что такие действия можно вынести в форму подбора и обрабатывать все там...
. я открыт к консенсусу... вопрос с формой подбора надо посмотреть внимательнее... посмотрю по (1210 - может быть интересное... |
|||
135
GreyK
08.12.11
✎
05:35
|
Осталось услышать (60)
|
|||
136
Злопчинский
08.12.11
✎
07:31
|
(135) из соображенйи Поппера или как его там - по (60) автор из 60 - говорит сделю так значит задача решена (типа я привожу утверждение, которое подтверждает что некая теория верна). Я же говорю - что также как у автора в (60) сделаю также как автор - пользователь не получит того чего хотел, т.е. я приведу утвеждение в контексте тех же исходных данных что в (60) и покажу что в противовес утверждения (60) - не сработает - значит утверждение автора (60) об истинности теории - ложно.. ;-) а как известно, достаточно одной ложности, чтобы опровергнуть 100 истинностей, т.к. истины - истинны в частных случаях, а в общем случае - теория ложная... автор (60) может выдвинуть возражение что никто _вроде бы_ не требовал общего решения задачи... - но тогда у автора не решение научно й задачи, а всего лишь курсововй проект ;-)
|
|||
137
GreyK
08.12.11
✎
08:20
|
(136) Ну ты выдал...
Но эта речь не тянет на бутылку коньяка. Истина дороже! :) |
|||
138
Mans
08.12.11
✎
08:34
|
а как звучало (22), хоть на трнспарант, а счас чет скуксился, виляет, ну хоть Гжелку sms-кой вышли
|
|||
139
Песец
08.12.11
✎
13:02
|
(127) Контекст первой формы.
//Модуль первой обработки, форма которой открывается из документа //с передачей в нее контекста документа (возможно нового не записанного): Процедура ПриОткрытии() ПеременнаяДляОбменаДаннымиСоВторойОбработкой=глВзятьКонтекст(Контекст); //открывается модально другая обработка для ничем не ограниченных интерактивных действий с базой данных. ОткрытьФормуМодально("Отчет",ПеременнаяДляОбменаДаннымиСоВторойОбработкой,КаталогИБ()+"ExtForms\ЫшшоОднаФорма.ert"); //сюда попадаем после всех интерактивных действий во второй обработке и ее закрытия Докум = Форма.Параметр.Получить("Контекст"); Докум.НоваяСтрока(); Докум.РеквизитТабличнойЧастиДокумента = ПеременнаяДляОбменаДаннымиСоВторойОбработкой; Статусвозврата(0); Возврат; КонецПроцедуры // ПриОткрытии() //Модуль второй обработки ЫшшоОднаФорма.ert Процедура Сформировать() Форма.Параметр=РеквизитВторойФормыДляИнтерактивнойРаботы; КонецПроцедуры //Наверное, можно обойтись и одной обработкой, //открывая две ее формы и проверяя что передано в параметре. |
|||
140
GreyK
08.12.11
✎
16:09
|
(138) Это ты зря. Всё показано и расписанно. И этими методами я давно пользуюсь.
Формекс в таких задачах для ленивых, тупых фикси, которые суют в конфу всё что могут, лишь-бы мозги не напрягать. А мне, как фришнику, можно использовать только встроенныые в платформу и ОС средства. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |