![]() |
![]() |
|
Копировать документ программно Ø |
☑ | ||
---|---|---|---|---|
0
Walentin
31.08.05
✎
17:14
|
Как программно ( с помощью кнопки или ... )
скопировать существующий документ ? ( Чтобы работало по образу журнала документов ? ) |
|||
1
Alexaha
31.08.05
✎
17:23
|
я думаю ВводНового() тебе поможет
|
|||
2
Макс 1С
31.08.05
✎
17:26
|
(0) пиши процедурку используя (1)... ;-)
|
|||
3
Sasha
31.08.05
✎
17:26
|
программно копировать документ можно только перебором реквизитов (шапки и табличной части с перебором строк) через метаданные
|
|||
4
lemon
31.08.05
✎
17:34
|
(0) как вапиант:
ОткрытьФорму нового документа... 3-й параметр... |
|||
6
Walentin
02.09.05
✎
14:36
|
Другие мнения есть ?
|
|||
7
Муму после всплытия
02.09.05
✎
14:40
|
"Чего ж тебе еще надо, собака"??
|
|||
8
Alexaha
02.09.05
✎
14:43
|
6. ну раз тебе совсем не нравится (1) и (2), то что тебе мещает в качестве 3-го параметра использовать оригинал для копирования и процу ВводНаОсновании()?
|
|||
9
Kapres
02.09.05
✎
14:43
|
ВводНового(<ПризнКопирования>,<ОбъектКопирования>)
|
|||
10
vasy
02.09.05
✎
14:46
|
(+3)
Функция ПриВводеНаОсновании(ДокументОснование) Экспорт Перем Рез; Рез=1; ТДок=Метаданные.Документ(ВнКонт.Вид()); н=1; Для н=1 По Метаданные.ОбщийРеквизитДокумента() Цикл Идент = Метаданные.ОбщийРеквизитДокумента(н).Идентификатор; ЗнРекв = ДокументОснование.ПолучитьАтрибут(Идент); ВнКонт.УстановитьАтрибут(Идент,ЗнРекв); КонецЦикла; Для н=1 По ТДок.РеквизитШапки() Цикл Идент=ТДок.РеквизитШапки(н).Идентификатор; ЗнРекв = ДокументОснование.ПолучитьАтрибут(Идент); ВнКонт.УстановитьАтрибут(Идент,ЗнРекв); КонецЦикла; ТаблицаДокумента=СоздатьОбъект("ТаблицаЗначений"); ДокументОснование.ВыгрузитьТабличнуюЧасть(ТаблицаДокумента); ВнКонт.ЗагрузитьТабличнуюЧасть(ТаблицаДокумента); ВнКонт.УстановитьНовыйНомер(ВнКонт.Фирма.ПрефиксНомеровДокументов); ВнКонт.ДокОснование=ДокументОснование; Возврат Рез; КонецФункции |
|||
11
Alexaha
02.09.05
✎
14:47
|
9. ну что ты пристал к нему с ВводомНового()? ему про это еще два дня назад сказали...Не нравится ему это метод, не-нра-вит-ся
|
|||
12
Kapres
02.09.05
✎
14:51
|
(11) да? как он может не нравиться? такой красивый...
|
|||
13
Alexaha
02.09.05
✎
15:03
|
12. да если бя знал:((
|
|||
15
Макс 1С
05.09.05
✎
11:51
|
(14) ты не знаешь как создать новый документ?.... может вопросы научимся задавать....
|
|||
18
Bot
05.09.05
✎
12:00
|
(17) тогда делай через ВводНаОсновании()...
При копировании вводишь новый на основании копируемого документа. Вот тебе и форма откроется... |
|||
19
Kapres
05.09.05
✎
12:00
|
(14) похоже понял о чем это ты... посмотри в ТиС меню "Действия" и обработку КопированиеДокумента
|
|||
21
dralex
05.09.05
✎
13:02
|
(20) FormEx поможет тебе решить эту ситуации. Без нее, штатными средствами - никак.
|
|||
22
VZ
05.09.05
✎
13:11
|
Ситуация разрешима. Для этого нужно просто сформулировать задачу, а не шлепать код по смутным желаниям.
Если инициатива создания нового документа исходит от юзера, то лучшим выходом, ИМХО, использовать ВводНового(ПризнакКопирования,ОбъектКопирования) Если инициатива исходит не от юзера, а юзеру преподносится новый документ, как факт, то опять есть вариант: 1. он имеет право не согласится с созданием документа (не записать его), 2. Фиолетово, нравится юзеру или нет - докумет создан. В зависимости от варианта следует либо использовать ПриОткрытии(), или вначале создаем и записываем док, затем, в качестве любезности, ОткрытьФорму()............. |
|||
23
Kapres
05.09.05
✎
13:20
|
(20) вот, блин...
делаешь вызов процедуры ОткрытьФорму в качестве параметра (2-й параметр) перекидываешь список значений где твой документ и какой-нить признак. читаешь эту ветку еще раз. ВводНового в каждом виде документа прописываешь. типа если параметр такойто, то... перенос из документа-оригинала в твой можно в глобальнике ч/з Метаданные наваять и совершенно без разницы от вида документа. |
|||
24
Макс 1С
05.09.05
✎
13:25
|
(20) клиника?
|
|||
25
dralex
05.09.05
✎
13:43
|
(24) А ты сам пробовал открыть форму, заполненную данными документа, созданного через СоздатьОбъект("Документ.XXX") и не сохраненного?
|
|||
26
Kapres
05.09.05
✎
13:53
|
(25) чего сказал???
|
|||
27
Макс 1С
05.09.05
✎
14:03
|
(25) ты как то того....
определись что хочешь сказать то..... открыть форму и заполнить её данными? - пробовал... получалось.... или вопрос не в этом? |
|||
28
Walentin
05.09.05
✎
14:03
|
(25) Согласен.
|
|||
29
Макс 1С
05.09.05
✎
14:05
|
(28) с чем?
|
|||
30
Kapres
05.09.05
✎
14:07
|
(25)(28) мужики. попробуйте написать как в (23). море документов уже так понаписано. и из отчетов заполняются и хоть как...
|
|||
31
Макс 1С
05.09.05
✎
14:19
|
(28) ты если вопрос задашь по человечески, глядишь и ответ получишь... на вопрос из (0) тебе ответили практически неделю назад.... используя формекс, я только что, написал то что ты хочешь и то что не может dralex за 5 минут.... без использования формекса, это займет больше времени и придестся исправлять некоторые модули конфигурации, но в лююом случае проблема решается максимум за 30 - 40 минут....
зы. ветке неделя, а ни одной строчки твоего кода нет.... странно, да? |
|||
32
dralex
05.09.05
✎
14:32
|
>> и то что не может dralex
Это чего я не могу? Ты только свои посты читаешь, или чужие тоже? |
|||
33
Макс 1С
05.09.05
✎
14:38
|
(32) свои не читаю, я их пишу ;-)
твои вот щас перечитал, реакция: "FormEx поможет тебе решить эту ситуации. Без нее, штатными средствами - никак." - а почему штатными никак? я что не могу в откывающуюся форму что-нибудь передать? формексом бестрее, проще - да, но и штатными можно..... зы. и еще я отвечаю на вопросы которые обращены непосредственно ко мне ;-) |
|||
34
dralex
05.09.05
✎
14:46
|
(33) Ты прав, и я был неточен. Надо было так:
FormEx поможет тебе решить эту ситуации. Без нее, штатными средствами, не меняя конфигурации - никак. Штатными можно, но только вмешавшись в конфигурацию, а это не всегда желательно. Но в (31) ты написал, что я чего-то там не могу? Что конкретно ты имел ввиду? |
|||
35
Alexaha
05.09.05
✎
14:50
|
33 и 34 брэк! все равно длиннее у меня:)))))))
|
|||
36
Anton R
05.09.05
✎
14:56
|
Кто сказал, что нельзя скопировать? Можно:
Конт = ""; ОткрытьФорму("Журнал."+Док.Вид(), Конт); Конт.УстановитьИнтервал(Док.ДатаДок, Док.ДатаДок); Конт.АктивизироватьОбъект(Док); WSHShell = СоздатьОбъект("WScript.Shell"); WSHShell.SendKeys("%дк"); Конт.Форма.Закрыть(); |
|||
37
Макс 1С
05.09.05
✎
14:58
|
(34) "FormEx поможет тебе решить эту ситуации. Без нее, штатными средствами - НИКАК" - все таки можно. совсем не обязательно лезть в конфигуратор, причем можно ведь просто спросить пользователя записывать или нет? и потом открывать если записали...хотя конечно не красиво но......, короче вариантов море.....
тем не менее извиняюсь за фразу: "и то что не может dralex"... давай её уберем из того сообщения (31)..... |
|||
38
Макс 1С
05.09.05
✎
15:00
|
(35) а ты девоча или мальчик? ;-)
зы. "в споре рождается истина" (кто-то из древних... ) |
|||
39
Alexaha
05.09.05
✎
15:06
|
38. уж точно не девочка:)))))))))))))))))))))))0
|
|||
40
Макс 1С
05.09.05
✎
15:08
|
(39) успокоил... а то я думаю вдруг девочка.... чем с ней мерится ;-).....
|
|||
41
Alexaha
05.09.05
✎
15:23
|
40. с ними меряться еще интереснее О-)
|
|||
42
Anton R
05.09.05
✎
15:32
|
Жду критику на (36)
|
|||
43
di1978
05.09.05
✎
15:49
|
(36) хорошо, но еще в (10) дан ответ, только не через вводнаосновании(), а просто заполнять через контекст ОткрытьФорму()
|
|||
44
Anton R
05.09.05
✎
15:51
|
(43) Через контекст "ОткрытьФорму()" нет доступа к табличной части без использования FormEx.
|
|||
45
di1978
05.09.05
✎
15:55
|
У меня релизован импорт из банка и создается документ "Выписка", именно новый, а не записанный и открытый. А также создание счф на аванс из тз. Что значит нет доступа к тч документа? НоваяСтрока(), загрузить ТЧ?
|
|||
46
di1978
05.09.05
✎
15:58
|
Например,
Процедура Сформировать() Перем Конт; ОткрытьФорму("Документ.Счет", Конт); Конт.НоваяСтрока(); Конт.Количество = 100; Конт.Форма.Обновить(); КонецПроцедуры |
|||
47
Anton R
05.09.05
✎
15:59
|
Значит у тебя гдето (может в глобальнике "ПриОткрытии") загружается FormEx.
|
|||
48
di1978
05.09.05
✎
16:01
|
1cpp, там и FormEx, а что он стандартные методы объекта Форма переопределяет в плане обновить?
|
|||
49
Anton R
05.09.05
✎
16:01
|
+(47) Вернее, "ПриНачалеРаботыСистемы". Ну или еще где-нибудь.
|
|||
50
di1978
05.09.05
✎
16:03
|
Вот блин, точно. Тогда только записывать и открывать.
|
|||
51
Anton R
05.09.05
✎
16:03
|
(48) Именно так. По словам АЛьФА - устанавливает флаг возможности обновления ТЧ.
|
|||
52
di1978
05.09.05
✎
16:08
|
Да просто не люблю конфу править, подключил 1цпп.ДЛЛ и забыл про всякие глюки 1С ;)
|
|||
53
di1978
05.09.05
✎
16:11
|
а такой изврат:
Процедура Сформировать() док=СоздатьОбъект("Документ.Счет"); док.Новый(); док.НоваяСтрока(); док.Количество = 100; начатьтранзакцию(); док.записать(); открытьформу(док.ТекущийДокумент()); отменитьтранзакцию(); КонецПроцедуры |
|||
54
dralex
05.09.05
✎
16:12
|
(53) Попробуй теперь сохранить документ.
|
|||
55
Anton R
05.09.05
✎
16:12
|
(53) Не прокатит: попытаешься сохранить - 1с-ка вылетит.
|
|||
56
di1978
05.09.05
✎
16:17
|
Ладно, пользуем тада 1цпп
|
|||
57
Макс 1С
05.09.05
✎
16:22
|
уф.... вернулся.... шаровую ездил менять.....
(41) с ними не мерятся надо а ......... (all) завязываете вы.... слишком много условностей, и ни одной строчки кода от автора.... (36) твой код не смотрел, но использовал скрипт для раскрытия на полное окно формы документа.... не всегда отрабатывает, почему не знаю..... :-( |
|||
58
Alexaha
05.09.05
✎
16:26
|
57. именно:)) а это и есть своего рода "мерянье"
|
|||
59
Anton R
05.09.05
✎
16:30
|
Вот так работает, проверяйте:
Перем Флаг, Док; //****************************************************************************** // Сформировать() // Процедура Сформировать() Док = СоздатьОбъект("Документ.тра-ля-ля"); Док.Новый(); Док.НоваяСтрока(); Док.НоваяСтрока(); Док.Записать(); Конт = ""; ОткрытьФорму("Журнал."+Док.Вид(), Конт); Конт.УстановитьИнтервал(Док.ДатаДок, Док.ДатаДок); Конт.АктивизироватьОбъект(Док); WSHShell = СоздатьОбъект("WScript.Shell"); WSHShell.SendKeys("%"); WSHShell.SendKeys("дк"); Конт.Форма.Закрыть(); Флаг = 0; Форма.ОбработкаОжидания("Удаление", 1); КонецПроцедуры // Сформировать() //****************************************************************************** // Удаление() // Процедура Удаление() Док.Удалить(); Форма.ОбработкаОжидания("Удалить", 0); КонецПроцедуры // Удаление() /////************************************** |
|||
60
Anton R
05.09.05
✎
16:35
|
+(59) Это - создание нового документа. Для копирования уже существующего - см. 36.
Минус - увеличивается номер при автонумерации :((( |
|||
61
Макс 1С
05.09.05
✎
16:36
|
(59) я не говорю, что не работает, я говорю что при использовании скриптов для раскрытия на полный экран формы... не всегда этот скрипт отрабатывается...
а по коду.. зачем сначала создаем док, потом удаляем? (если честно то лень конфигуратор открывать глядеть.... у меня формекс есть, с ним все намного проще работает.....) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |