Имя: Пароль:
1C
1С v8
Заполнение документа из внешней обработки
0 BayoNet
 
27.01.12
13:27
Люди, подскажите возможно ли из внешней обработки, достучаться до процедур модуля формы документа? Или только до модуля объекта можно?
1 le_
 
27.01.12
13:31
Док.ПолучитьФорму().Процедура() не катит (процедура описана, как экспортная)?
2 BayoNet
 
27.01.12
13:36
(1) без экспорта не прокатит?
Да там много процедур, "нужно заполнить заказ покупателя" из XML-файла, так не хочется дублировать в обработке все эти процедуры, типа ПриВыбореКонтрагента(), ПриВбореДоговора(), ПриОткытии() и.т.д
3 BayoNet
 
27.01.12
13:37
(1) По моему в модуле формы все процедуры не экспортные
4 BayoNet
 
27.01.12
13:38
(1) Ну да сейчас проверил, то что мне нужно все без экспорта
5 Maxus43
 
27.01.12
13:39
(2) Объект и заполняй
6 hhhh
 
27.01.12
13:39
(4) ПодключитьОбработчикОжидания кури
7 BayoNet
 
27.01.12
13:41
(5) не понял про объект, не все процедуры которые мне нужны лежат в модуле объекта,
(6) Можно чуть поподробнее хоть пару тройку строк кода накидать?
8 Maxus43
 
27.01.12
13:43
(7) я к тому что заполняй Объект (реквизиты) сразу и правильно. например ПриВыбореКонтрагента() - смотрит чтоб юзер не косяцил, не выбрал договор другого контрагента и т.д. Ну программно то не накосячиш наверно?
9 korefana
 
27.01.12
13:44
(0) моменты по заполнению документа надо прописывать в "обработкаЗаполнения"
оттуда тянуть все необходимые процедуры
они должны быть прописаны в модуле обьекта или в общих модулях
так сделано в типовых и это правильно
10 le_
 
27.01.12
13:44
(2) Заказ покупателя заполняется довольно просто, нет каких-то особенных заморочек. Просто последовательно заполняй реквизиты из XML-ки и не нужно никаких процедур ни из формы, ни из модуля вызывать.
11 korefana
 
27.01.12
13:46
(10) или так если изменений в документ не вносить
12 BayoNet
 
27.01.12
13:47
(9) Так речь и идет о заполнении типолвого документа УПП "Заказ покупателя".
13 BayoNet
 
27.01.12
13:52
(10) Я уже реализовал загрузку контрагента и номенклатуры и количества в документ, так вот надо бы еще и ставки НДС и Скидки и цены, и валюты, счета учета подтянуть. Просто не хочется изобретать велосипед, когда это уже все прописано, но прописано по большей мере в модуле формы. А там ведь еще есть и управление доступностью и Видомостью
14 BayoNet
 
27.01.12
13:53
(8) Юзер вобще делать ниче не будет, просто нажимать кнопку "Загрузить"
15 Maxus43
 
27.01.12
13:53
(13) дак когда уже записаный объект откроеш - там доступность-видимость отработает номрально, она же не записывается вместе с доком. заполняй обычно, реквизиты объекта
16 Maxus43
 
27.01.12
13:54
(14) и? нажал кнопку - там ты заполняеш обхект, если ещё и форму открыть надо - получай форму записанного объекта и открывай
17 hhhh
 
27.01.12
13:54
(7)

Форма.ПодключитьОбработчикОжидания("ПриОткрытии", 0.1);
18 BayoNet
 
27.01.12
13:55
Документ не проведется, а может даже и не запишеться без НДС, без цены, Скидки и.т.д
19 Maxus43
 
27.01.12
13:56
(18) дак кто мешает их заполнить у объекта? я что-то не понимаю
20 Maxus43
 
27.01.12
13:56
(17) от 1 до 10 цифра только, или ("ПриОткрытии", 0.1, Истина);
21 Maxus43
 
27.01.12
13:58
(18) + на всякий случай включу КЭПа - Инфа с формы не храниться нигде в базе, всё в объекте, и если на форме что-то невидимо - значит при открытии формы это установилось. Абсолютно всё можно заполнить в объекте, форму заполнять - ересь. Если нет всей инфы для проведения - записывай а не проводи, а потом форму открывай
22 BayoNet
 
27.01.12
14:01
(19) Ну так по-любому получается дублировать уже написанные процедуры. Например тот же счет учет по регистру сведений выбирать надо.
Попробую ОбработчикОжидания, что это за зверь такой ))
23 BayoNet
 
27.01.12
14:07
(21) Пля, я повторяю вопрос был можно ли обойти дублирование процедур в обработке, можно ли использовать уже существующие но только в модуле объекта, а и в модуле формы. В процедуре ПриОткрытии таже Организация устанавливаетя для каждого пользователя своя. А там есть рекизиты и по важнее Организации, для которых надо запросы писать что бы получить теже скидки и цены, а также счета учета и.т.д. Не ужели это не понятно
24 Maxus43
 
27.01.12
14:26
(23) Это понятно, так нельзя. В файле воще инфы нет чтоли? контрагент и номенклатура с количеством? при любой загрузке программной заполняется весь объект, независимо от того сколько строчек кода лень писать было разработчикам, ибо это и называется автоматизация ручного труда)
25 pessok
 
27.01.12
14:29
ПриВыбореКонтрагента(), ПриВбореДоговора(), ПриОткытии() и.т.д
это обработчики событий. какое, нафик, заполнение документа из xml?
26 pessok
 
27.01.12
14:32
(0) раз УПП, то смотри общий модуль - ЗаполнениеДокументов. А свои данные уже подпихивай
27 BayoNet
 
27.01.12
14:33
(25) я вобще не понял что ты хотел сказать
28 pessok
 
27.01.12
14:34
(26) уже посмотри, и будет тебе счастье. И вообще, имеет смысл изучать типовые механизмы
29 BayoNet
 
27.01.12
14:35
(26) ну примерно так я сейчас и делаю только не через общий модуль, а через модуль объекта документа
30 Mort
 
27.01.12
14:36
На самом деле в типовых часто встречается косвенное заполнение одних реквизитов по другим в форме. Для чистоты кодирования нужно дублировать это в обработке. Собсно все важные вещи вытащены в общие модули. Но есть моменты. Т.е. надо копаться. Можно, конечно, наг*кодить с формой, но не стоит имхо?
31 BayoNet
 
27.01.12
14:38
(28) Ооооооой блин, че ж все такие умные, думаешь я этого не знаю, я так делал уже, но вопрос был в другом можно ли сделать по другому, и кроме hhhh мне ни кто нового ниче не сказал, только понты
32 pessok
 
27.01.12
14:39
(29) зачем? зачем тебе модуль документа? ты там процедуры делаешь экспортными чтоль? смысл в этом какой?

Док = Документы.ЗаказПокупателя.СоздатьДокумент();
ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(Док);
Док.Контрагент = ВыборкаШапка.Контрагент;

ВыборкаТовары = ВыборкаШапка.Выбрать()
Пока ВыборкаТовары.Следубщий Цикл

НСтр = Док.Товары.Добавить();
ЗаполнитьЗначенияСвойств(НСтр, ВыборкаТовары);

КонецЦикла

Док.Записать(РежимЗаписиДокумента.Запись);

Док.ПолучитьФорму("ФормаДокумента").Открыть();    

всех дел...
33 BayoNet
 
27.01.12
14:39
(30) Ты прав конечно есть моменты кто это делал знает, бывает так что глобальные переменные надо из обработки заново объявлять
34 pessok
 
27.01.12
14:40
(31) зачем делать по-другому, если ты не хочешь велосипедить?
35 BayoNet
 
27.01.12
14:42
(32) ну вобще согласен, лучше сразу в общий модуль залезть, чем в модуль объекта. Просто там такие процедуры как при выборе контрагента уже Экспортная
36 pessok
 
27.01.12
14:45
(25) такие вещи, как договор контрагента лучше устанавливать самому. Вообще я тоже го*нокод написал, потому что сначала надо заполнять договор, а потом договор.владелец :)
37 pessok
 
27.01.12
14:45
(36) 2 (35)
Основная теорема систематики: Новые системы плодят новые проблемы.