|
v7: Редактирование документа из формы другого документа | ☑ | ||
---|---|---|---|---|
0
jah1111
22.09.21
✎
14:46
|
Здравствуйте, форумчане!
появилась необходимость открывать документ в форме другого документа. но не только открывать, но и редактировать и сохранять, и проводить. подробности: еть конфигурация,в которой есть расходные накладные двух типов: "Расходная накладная" (обычна форма для ПК) и "РасходТач" (адаптированная для планшета форма, все под тач интерфейс). Так вот задача открывать и редактировать обычные накладные на планшете в шкуре накладных для тач-экранов. С открытием проблем не возникло,а вот записью начались. посмотрите что делаю не так: перем Документ; //********************************************************************** Процедура ПриОткрытии() //....... Если ПустоеЗначение(Форма.Параметр)=0 Тогда команда = форма.параметр.получить("Команда"); Документ = Форма.Параметр.Получить("Контекст"); // контекст получаем из общего журнала КонецЕсли; //..... //******************************************************** Процедура ПриЗаписи() Если Команда = "трансф" Тогда // команда, котороя отвечает за открытие документа в "чужой" шкуре док = создатьобъект("Документ.РасходТочка"); док = Документ.ТекущийДокумент; док.датаДок = датаДок; док.НомерДок = НомерДок; док.клиент = клиент; док.склад = склад; док.касса = касса; док.авто = авто; док.оплачено = оплачено; док.сумаопл = сумаопл; док.Записать(); // сдесь ошибка - Не выбран документ! док.Провести(); КонецЕсли; |
|||
1
Mikeware
22.09.21
✎
14:50
|
док = создатьобъект("Документ.РасходТочка");
док = Документ.ТекущийДокумент; ??????? |
|||
2
jah1111
22.09.21
✎
14:53
|
(1) получаю из контекста журнала документ который хочу редактировать.... Если нельзя так, скажите как правильно, я новичек. в Отладчике значение переменной Док совпадает с нужным документом......
|
|||
3
Lazy Stranger
22.09.21
✎
15:00
|
док.НайтиДокумент(Документ)
|
|||
4
Lazy Stranger
22.09.21
✎
15:02
|
или док.НайтиДокумент(Документ.ТекущийДокумент)
|
|||
5
серый КТУЛХУ
22.09.21
✎
15:08
|
док = создатьобъект("Документ.РасходТочка");
//док = Документ.ТекущийДокумент; // херня какая-то док.НайтиДокумент(ТекущийДокумент); |
|||
6
серый КТУЛХУ
22.09.21
✎
15:12
|
только непонятно - нафига.
и - как ты будешь таким образом записывать новый документ? (подсказка: получишь новую ошибку). в оьщем - у тебя ысе неправильно с самого начала. если тебе нужны разные формы одного и того же документа для разных рабочих мест - в приоткрытии и привводенового проверяй соответствие текущей открываемой форме требованиям раб.места - и при надобности статусвозврата(0); открытьформу(...нужнаяформатогожесамого) |
|||
7
Mikeware
22.09.21
✎
15:18
|
(6) в клюшках только одна форма дока
|
|||
8
jah1111
22.09.21
✎
15:29
|
(7) ага...
новый документ на планшете это "РасходТач" и так она и запишется новый документ на компе это "РасходнаяНакладная" и так она и запишется но если вдруг на планшете надо посмотреть десктопную версию - то "РасходнаяНакладная" откроется в форме "РасходТач" но только как правльное ее записать пока недокумекал |
|||
9
jah1111
22.09.21
✎
15:29
|
(5) спасибо Вам, а я туплю
|
|||
10
Mikeware
22.09.21
✎
15:33
|
(8) сделай обработку, открывай в ней.
теоретически можно попытаться подменить контекст через 1с++, но я не пробовал. |
|||
11
Ёпрст
22.09.21
✎
15:49
|
(0) формексом можно подменять открываемую форму на свою.
|
|||
12
jah1111
22.09.21
✎
15:50
|
(10) интересно, даже не знаю что гиморнее переписать всю форму документа в обработку или разобраться с подменой контекста в ВК
|
|||
13
Mikeware
22.09.21
✎
15:55
|
(12) а ты думал, что в сказку попал? :-)
|
|||
14
jah1111
22.09.21
✎
15:56
|
(11) два слова в каком разделе руководства.
на данный секунд идея такая: - сохранение и проводка чужого документа будет в специальной процедуре ЗаписьЧужого(); - если приоткрытии вид.документа во внешнем контексте не будет совпадать видом открытой формы тогда стандартная кнопка ОК(#Записать?Провести?Закрыть) видимость = 0, а на ее место другая кнопка ОК с процедурой ЗаписьЧужого() |
|||
15
Mikeware
22.09.21
✎
15:59
|
(11) чот долго думал, даже спросил у мужика в кепке - не понял как.
|
|||
16
Mikeware
22.09.21
✎
16:07
|
(14) видимо, надо ковырять ПолучитьБазовыйКласс и ЗаменитьБазовыйОбъект
|
|||
17
Ёпрст
22.09.21
✎
16:37
|
(15)
Процедура ПриЗагрузкеФормы(<?>) КонецПроцедуры Синтаксис: Процедура ПриЗагрузкеФормы(<ИмяОбъекта>)КонецПроцедуры Назначение: Предопределенная процедура вызывается при загрузке диалога формы. Параметры: <ИмяОбъекта> - (Строка) полный путь к объекту, для которого загружается форма ЗАМЕЧАНИЕ: В качестве параметра в процедуру передается полный путь к загружаемому объекту внутри md ( список всех форм можно получить с помощью метода СписокВсехФорм / AllFormsList ). Если внутри процедуры изменить значение параметра ИмяОбъекта, то загрузится диалог в соответствии с этим новым путем. Если новый путь задан неверно, то будет загружен тот диалог, который предполагался изначально |
|||
18
HawkEye
22.09.21
✎
16:43
|
(12) правильнее сначала оторвать руки тому кто создал в метаданных "РасходТач"... потом забыть про этот тач, как страшный сон, а для планшета написать обработку которая будет создавать обычную Расходную накладную....
|
|||
19
jah1111
22.09.21
✎
18:20
|
(18) очень даже с Вами согласен, но без рук я как без рук :)
пока будет так, в будущем перепишу конфу так чтобы из обработки для планшета создавать и редактировать доки. когда начинал ваять это творчество банально не умел толком работать с ТЗ, даже не то чтобы не умел, а просто з ТЧ намного мне удобней было. Поэтому писал тач-интерфейс не с нуля, а переделывал простые доки под тач. а в общем это даже очень неправильно, фундаментально неправильно, согласен, учтю. |
|||
20
jah1111
22.09.21
✎
18:20
|
пс. хотя какая разница - создам я расходную накладную из формы дока или из формы обработки? главное - результат
|
|||
21
Злопчинский
22.09.21
✎
18:58
|
Какой ужас... Хоть бы в (0) написал этот код в форме обычного или планшетного дока. В написанном ужос и в коде аналогично.
|
|||
22
Злопчинский
22.09.21
✎
19:01
|
Вдобавок к этому ахеренная мегабомба в этом ужасном коде. Т. К. "документ" Это контекст журнала то в при записи документ. Текущийдокуиент может оказаться совсем не тем что в приоткрытии
|
|||
23
jah1111
22.09.21
✎
22:53
|
(22) почему? я беру контекст приоткрытии, документ - глобальная перем, сохраняется такой же до конца исполнения кода
//**************************************** Процедура ЗакрытиеЧужого() Если Команда = "трансф" Тогда Док = создатьобъект("Документ.РасходнаяНакладная"); Док.НайтиДокумент(Документ.ТекущийДокумент); пров = ?(док.проведен()=1,1,0); док.Удалить(0); док.СнятьПометкуУдаления(); док.датаДок = датаДок; док.НомерДок = НомерДок; док.клиент = клиент; док.склад = склад; док.касса = касса; док.авто = авто; док.оплачено = оплачено; док.суммаопл = суммаопл; //досюда работает док.УдалитьСтроки(); // а тут уже нет //короче немогу перезаполнить ТЧ документа из открытой формы ВыбратьСтроки(); Пока ПолучитьСтроку()=1 цикл док.НоваяСтрока(); док.товар = товар; док.партия = партия; док.брутто = брутто; док.КолЯщ = КолЯщ; док.тара = тара; док.Поддон = Поддон; док.кол = кол; док.вим = вим; док.цена = цена; док.сумма = сумма; конеццикла; Если пров=0 Тогда вопр= Вопрос("Сохранить документ?",3); Если вопр= 6 Тогда док.Записать(); форма.закрыть(0); ИначеЕсли вопр= 7 Тогда форма.закрыть(0); КонецЕсли; ИначеЕсли пров = 1 Тогда вопр= Вопрос("Сохранить документ? Документ будет перепроведен!",3); Если вопр= 6 Тогда док.записать(); док.провести(); форма.Закрыть(0); ИначеЕсли вопр= 7 Тогда форма.закрыть(0); КонецЕсли; КонецЕсли КонецЕсли; КонецПроцедуры поможете - буду признателен |
|||
24
jah1111
22.09.21
✎
23:29
|
(22) тоесть ловить Док.НайтиДокумент(Документ.ТекущийДокумент) надо еще в приоткрытии и док - глоб. перем? Правильно дошло?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |