|
Как открыть форму документа без записи оного ? | ☑ | ||
|---|---|---|---|---|
|
0
r1000
04.12.07
✎
16:02
|
Друзья ! Как можно открыть документ не записывая его в базу ?
Тоесть, я создаю программно документ, после создания хотелось бы показать его пользователю, чтобы он утвердил его и сам произвел запись... Спасибо. |
|||
|
1
quest
04.12.07
✎
16:04
|
Не поверишь - ОткрытьФорму()
|
|||
|
2
r1000
04.12.07
✎
16:04
|
Кроме как через Форма.Параметр никак да ?
|
|||
|
3
GrayT
04.12.07
✎
16:04
|
ОткрытьФорму("Документ.ТвойДокумен", Конт)
Через Конт заполнить его. Но есть один нюанс.... |
|||
|
4
r1000
04.12.07
✎
16:05
|
(1)И как же ? Ниче не получается...
Вот код: Док = СоздатьОбъект("Документ.РасходнаяНакладная"); Док.Новый(); Док.ДатаДок = ТекущаяДата(); Док.МестоХранения = Константа.ОсновнойСклад; Док.ВидОтгрузки = 1; Док.УчитыватьНП = 0; Док.ЗачитыватьАванс = 0; Док.Курс = ВыбПоступление.Курс; Док.ВариантРасчетаНалогов = Константа.ОсновнойВариантРасчетаНалогов; Док.НДСвключатьВСтоимость = 1; Док.ДокументПоступления = ""; Док.ТипЦен = ""; ВыбПоступление.ВыбратьСтроки(); Пока ВыбПоступление.ПолучитьСтроку() = 1 Цикл Док.НоваяСтрока(); Док.Товар = ВыбПоступление.Товар; Док.Количество = ВыбПоступление.Количество; Док.Цена = ВыбПоступление.Цена; Док.Сумма = ВыбПоступление.Сумма; Док.НДС = ВыбПоступление.НДС; Док.НП = ВыбПоступление.НП; Док.Всего = ВыбПоступление.Всего; КонецЦикла; ОткрытьФорму(Док.ТекущийДокумент()); |
|||
|
5
r1000
04.12.07
✎
16:06
|
(3)Ну тут нужно использовать Форма.Параметр...
Конфа типовая, хотелось оставить на обновлении... |
|||
|
6
GrayT
04.12.07
✎
16:07
|
(4)Все б ни че, но в данном случае перед ОткрытьФорму(Док.ТекущийДокумент()); придеться Док.Записать()
|
|||
|
7
r1000
04.12.07
✎
16:09
|
(6) А Вашем (3) нужно запускать жало в саму конфу. Прально я понимаю ?
|
|||
|
8
Ёпрст2
04.12.07
✎
16:10
|
(7) Нет.
|
|||
|
9
r1000
04.12.07
✎
16:11
|
Поделитесь плиз...как так сделать ? Это все штатно можно ? Буду очень признателен...
|
|||
|
10
GrayT
04.12.07
✎
16:11
|
(7)Угу :( Если не в форму дока, то в глобальник.
А можно по Ф9 во - нарыл..... Не получается заполнить ТаблЧасть нового дока из другого дока |
|||
|
11
GrayT
04.12.07
✎
16:12
|
(8)?
|
|||
|
12
Ёпрст2
04.12.07
✎
16:13
|
(11) Ну есть же ВК ... :)
|
|||
|
13
Ёпрст2
04.12.07
✎
16:13
|
+12 Для "лечения" ...
|
|||
|
14
GrayT
04.12.07
✎
16:15
|
(12)А-а-а-а-а - Так не честно :)))
|
|||
|
15
nop
04.12.07
✎
16:15
|
(0) никак
|
|||
|
16
Ленинград
04.12.07
✎
16:18
|
Док.Записать()
открытьФорму До.Удалить() |
|||
|
17
r1000
04.12.07
✎
16:20
|
(16)гы) Все просто, маладца... Спасибо за идею.
|
|||
|
18
GrayT
04.12.07
✎
16:20
|
:)
|
|||
|
19
r1000
04.12.07
✎
16:21
|
А, нифига, объект заблокирован)
|
|||
|
20
Ленинград
04.12.07
✎
16:49
|
цуко кто так делал, пошарься в поиске, сам так ни разу не страдал
|
|||
|
21
Gars
04.12.07
✎
17:19
|
А если так:
Процедура Сформировать() НачатьТранзакцию(); Док=СоздатьОбъект("Документ.Накладная"); Док.Новый(); Док.НомерДок="00001"; Док.НоваяСтрока(); Док.Количество=123; Док.Записать(); ОткрытьФормуМодально(Док.ТекущийДокумент()); ОтменитьТранзакцию(); КонецПроцедуры |
|||
|
22
Ёпрст2
04.12.07
✎
17:21
|
(21) Сам то пробовал? ..:)) Нафига ему "ничего" ?
|
|||
|
23
у лю 427
04.12.07
✎
17:25
|
(21) мизданется док потом.... при записи...
|
|||
|
24
Gars
04.12.07
✎
17:25
|
(22) Еще в 2003-ем годе подсказали на партнерском форуме...
:-) |
|||
|
25
у лю 427
04.12.07
✎
17:25
|
это в свое время выкладывали на т1с .... причем раньше партнерского
|
|||
|
26
Reaper_1c
04.12.07
✎
20:02
|
(23) - Отмену транзакции запихать в условие...
|
|||
|
27
Мимохожий Однако
04.12.07
✎
21:34
|
ход конем. В обработке открыть аналог документа
|
|||
|
28
АЛьФ
04.12.07
✎
21:39
|
formex.dorex.ru
|
|||
|
29
Дядя Васька
04.12.07
✎
21:39
|
а не проще поставить формекс?
ту (0), ничего извратного, просто если заполняешь шапку в несохраненном и потом его открываешь нет проблем в типовой, если табличную часть - ошибок нет, но она пустая. При установленном формексе все нормально, при том что код вполне стандартный... |
|||
|
30
Дядя Васька
04.12.07
✎
21:40
|
(28) гы ))
|
|||
|
31
Дядя Васька
04.12.07
✎
21:41
|
(28) Кстати, а правду говорят, что ты об этой особенности своей библиотеки случайно узнал, а сам ничего такого не делал?
|
|||
|
32
Чес
04.12.07
✎
22:10
|
21 +
Доморощенные самоучки, это единственно верное решение. Единственно: Процедура Сформировать() НачатьТранзакцию(); Док=СоздатьОбъект("Документ.Накладная"); Док.Новый(); Док.НомерДок="00001"; Док.НоваяСтрока(); Док.Количество=123; Док.Записать(); ОткрытьФормуМодально(Док.ТекущийДокумент()); Если Вопрос ("Записать?","Да+Нет") = "Да" Тогда ЗафиксироватьТранзакцию(); Иначе ОтменитьТранзакцию(); КонецЕсли; КонецПроцедуры |
|||
|
33
Михей
04.12.07
✎
22:18
|
(32) изврат
|
|||
|
34
Чес
04.12.07
✎
22:21
|
(33) Почему? Или абы ляпнуть? %;)
|
|||
|
35
r1000
04.12.07
✎
22:26
|
(34)Не кисло)))
Большое мерси ! |
|||
|
36
Ковычки
04.12.07
✎
22:26
|
НачатьТранзакцию
ОтменитьТранзакцию Но есть иное |
|||
|
37
АЛьФ
04.12.07
✎
22:31
|
2(31) Делал. Но потом забыл совсем, а мне напомнили... Так же, как о многом другом функционале :)
|
|||
|
38
Ковычки
04.12.07
✎
22:34
|
(37) а как открыть не открытый знаешь ?
|
|||
|
39
АЛьФ
04.12.07
✎
22:35
|
2(38) Знаю.
|
|||
|
40
Чес
04.12.07
✎
22:37
|
(39) А когда в 1С Будет подписка на событие при открытии формы, не знаешь? ;)
|
|||
|
41
АЛьФ
04.12.07
✎
22:40
|
2(40) В 1С++ уже давно есть. За саму 1С не скажу.
|
|||
|
42
Михей
04.12.07
✎
22:40
|
начинать транзакцию чтоб открыть форму, ИМХО не есть GOOD
+ Вопрос без таймаута |
|||
|
43
r1000
04.12.07
✎
22:41
|
+(32)Но если в модальном окне нажать на провести, вываливается узкое такое окно с кнопками. Закрываешь его и пользователю вопрос "Записать ?".
Пользователи не поймут. Как то недоработанно немного) |
|||
|
44
Чес
04.12.07
✎
22:45
|
(42)
1. Таймаут конечно :) Я общую схему показал 2. Хм, вариации на тему (сорри, 1с 7.7 не установлена) ... ОткрытьФормуМодально(Док.ТекущийДокумент()); Если Док.Записан() = 0 Тогда //или как там в 7.7 определить? ЭтоНовый()? //Выбран()? %) Если Вопрос ("Записать?","Да+Нет") = "Да" Тогда ЗафиксироватьТранзакцию(); Иначе ОтменитьТранзакцию(); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
|
45
Ковычки
04.12.07
✎
22:52
|
(39) я тоже ))
|
|||
|
46
Ковычки
04.12.07
✎
22:53
|
(42) а пофих на таймаут
начатьиранзакцию док.записть открытьформу(док.текущий отменитьтранзакцию )) |
|||
|
47
Чес
04.12.07
✎
22:54
|
46 Браво :)
|
|||
|
48
АЛьФ
04.12.07
✎
22:55
|
2(42)(43) Надо всего лишь загрузить FormEx и ни каких извратов не надо.
2(45) Молодец. |
|||
|
49
Ковычки
04.12.07
✎
22:59
|
(48) а че тебя не видать было ? ты наверное скрытый враг всего прогрессивного человечества ? ))
|
|||
|
50
Advan
04.12.07
✎
23:01
|
мдя - в 8-ке просто
|
|||
|
51
Ковычки
04.12.07
✎
23:02
|
(50) нелюблю восьморочников, они недочеловеки ))
|
|||
|
52
Guk
04.12.07
✎
23:04
|
(48) Ты кстати сам то въехал, почему так произошло? ;)...
|
|||
|
53
АЛьФ
04.12.07
✎
23:07
|
2(49) Вообще-то меня каждый день видно.
2(52) Тебе процитировать код, котрый исправляет глюк "недобавления строк через контекст"? |
|||
|
54
Advan
04.12.07
✎
23:07
|
(51)Зависть нехорошее чувство - хотя иногда и полезное...
|
|||
|
55
r1000
04.12.07
✎
23:07
|
(46)Я извиняюсь...не могли бы Вы пояснить)
Ну если не затруднит разумеется, а то я невкурил что то. |
|||
|
56
Злопчинский
04.12.07
✎
23:11
|
если программно заполняешь док - значит есть какой-то алгоритм/идеология заполнения дока - ты думаешь, юзер лучше тебя знает что должно получиться?
бред... если не уверен в результате работы дока - нехрен его программно заполнять... если приперло - интерактивно ввести новый док и нажать кнопочку "заполнить с проверкой" - заполнится... дальше юзер сам решит... |
|||
|
57
Ковычки
04.12.07
✎
23:12
|
(55) не слушай (46) оно конечно соответствует вопросу (0), но чтобы было надо выстрадать ))
|
|||
|
58
Guk
04.12.07
✎
23:14
|
(53) Если не очень длинный и на Си или на Делфи, то процитируй конечно. Всю жизнь мечтал на ночь глядя такое увидеть...
|
|||
|
59
АЛьФ
04.12.07
✎
23:14
|
2(52) Вот:
void SetEnableNewLine(CGetDoc7* pDoc) { if(!IS_KINDOF_RUNTIME_CLASS(pDoc, CGetDoc7)) return; CGroupContext *pCont = pDoc->GetGroupContext(); if (!pCont) return; for(int i = 0; i<pCont->GetSize(); i++) { CBLContext *pCont0 = pCont->GetContext(i); if(IS_KINDOF_RUNTIME_CLASS(pCont0, CDocContext)) // вот установка внутреннего флага разрешения добавления строк ((CDocContext*)pCont0)->SetEnableNewLine(1); } } |
|||
|
60
Ковычки
04.12.07
✎
23:14
|
(59) а где диспатч ?
|
|||
|
61
АЛьФ
04.12.07
✎
23:16
|
2(60) А зачем?
|
|||
|
62
Guk
04.12.07
✎
23:17
|
(59) Стесняюсь спросить, а что же у 1С было?...
|
|||
|
63
Чес
04.12.07
✎
23:18
|
(56) Выбрать контрагента, например, в приходном документе. Да вариантов уйма, не тупи. Да и просто - активное участие пользователя в процессе...
(60) А вы о чем? %) |
|||
|
64
АЛьФ
04.12.07
✎
23:20
|
2(62) А 1С для контекстов, которые создаются по ОткрытьФорму(), не вызывает собственного метода CDocContext::SetEnableNewLine(BOOL b);
Только не спрашивай почему они так делают. Может забыли, а может какой-то тайный смысл в этом заложен. |
|||
|
65
Ковычки
04.12.07
✎
23:21
|
глубокий умысел
|
|||
|
66
Ковычки
04.12.07
✎
23:23
|
нифига не понимаю в этих кракозябрах, мнеб на васике, там все ясно и понятно... ))
|
|||
|
67
zzzzz
04.12.07
✎
23:31
|
(0)Внешняя форма, полностью имитирующая документ, поможет. Геморойно. Номер дока не задашь.
|
|||
|
68
АЛьФ
04.12.07
✎
23:36
|
2(67) "полностью имитирующая документ" - а табличная часть? Или все же сойдемся на "частично имитирующая"?
|
|||
|
69
Ковычки
04.12.07
✎
23:38
|
(68) а в транзакции открыть и позырить ? ))
|
|||
|
70
АЛьФ
04.12.07
✎
23:47
|
2(69) Открой и позырь. Только не удивляйся, когда при обломе проведения получишь и облом фиксации первой транзакции. И документ будет не только не проведен, но и закроется тихонько без сохранения.
|
|||
|
71
Ковычки
04.12.07
✎
23:49
|
(70) а в форме отчетика данные останутся ? ))
|
|||
|
72
АЛьФ
04.12.07
✎
23:57
|
2(71) Это ты спроси у того, кто предлагает отчетик. Я вообще-то высказываюсь против всех этих извращений.
|
|||
|
73
Ковычки
05.12.07
✎
00:12
|
(72) согласен очень
|
|||
|
74
zzzzz
05.12.07
✎
00:42
|
(68) Но ведь у нас только проблема в одобрении юзвера. Как только одобрил - создать документ, открыть форму документа и закрыть форму обработки. Сохранен? Одобренный док и должен быть сохранен.
|
|||
|
75
zzzzz
05.12.07
✎
00:45
|
+ Если о V7 - то уже делал. Нормально фурычит.
|
|||
|
76
Такой вопрос
05.12.07
✎
12:00
|
Пока транзакция открыта другие юзвери смогут свои доки проводить?
|
|||
|
77
Ёпрст2
05.12.07
✎
12:22
|
(76) Нет.
|
|||
|
78
GrayT
05.12.07
✎
12:23
|
Вот и хрен то...
|
|||
|
79
Ёпрст2
05.12.07
✎
12:30
|
(78) Это смотря что в транзакцию запихнуть ... :)
|
|||
|
80
Ёпрст2
05.12.07
✎
12:33
|
+79 И в данном случае так и будет ...
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |