Имя: Пароль:
1C
1С v8
Открыть существующий документ
,
0 Cyborg9
 
28.04.13
13:17
Народ! Не пеняйте сильно, но перерыл все и так не понял как в процедуре выполяющая на сервере "ОбработакаЗаполнения" открыть существующий документ? Про ОткрытьЗначение и ОткрытьФорму я в курсе, только интерактивная ошибка вылетает.
1 Флудер
 
28.04.13
13:26
На сервере нет форм
2 Cyborg9
 
28.04.13
13:32
а какой делегат на клиенте на ОбработкуЗаполнения работает???
3 Wobland
 
28.04.13
13:45
о, в 1С появились делегаты? с какой версии? можно подробнее
4 Cyborg9
 
28.04.13
13:58
Ну помогите по существу)
5 Флудер
 
28.04.13
14:20
(4) что тебе помочь? на сервере документ не открыть
6 Cyborg9
 
28.04.13
14:24
Какое решение при вводе на основании открыть существующий?
7 Любопытная
 
28.04.13
14:31
(6)получить его форму и открыть на клиенте
8 Cyborg9
 
28.04.13
14:42
(7) эт я и так знаю))) технически как реализуется?? В параметр при открытии как то передается полученная форма?
9 Cyborg9
 
28.04.13
15:14
Я от вас не отстану)
10 Kookish
 
28.04.13
15:16
У меня было такое как-то раз. На гугле забанили. Но потом разобрались, и я снова могу им пользоваться. Вот один из результатов:
v8: 1C 8.2 открыть форму сущ. документа в упр. режиме
11 Cyborg9
 
28.04.13
15:25
это на клиенте)) Как из ОбработкиЗаполнения в клиент в параметр форму передать?
12 Флудер
 
28.04.13
15:29
(11) Зачем форма в параметре???? Открывай спокойно на клиенте форму документа и все
13 Kookish
 
28.04.13
15:31
Месье не понимает намеков. И месье очень общительный. Ему проще два часа доставать народ на форуме, чем за минуту найти все ответы в интернете.
14 Cyborg9
 
28.04.13
15:33
(12) Открывается пустой док, как в параметр процедуры при открытии передать ссылку на док который нашел в процедуре ОбработкаЗаполнения???
15 Kookish
 
28.04.13
15:37
Чесслово, в (10) все есть.
16 Cyborg9
 
28.04.13
15:41
Издеваетесь, да?
17 Cyborg9
 
28.04.13
15:42
Оч много ссылок битых
18 Kookish
 
28.04.13
15:48
Ну почему все считают, что я издеваюсь? Я указал ссылку на тему на мисте. Нужно скопировать оттуда код и поместить здесь?
Пожалуйста.

...
Параметры = Новый Структура("Ключ", СсылкаНаДокумент);
ОткрытьФорму("Документ.ПоступлениеТоваров.ФормаОбъекта", Параметры);
...

И кто после этого издевается?
19 Cyborg9
 
28.04.13
15:49
как мне получить ссылкуНаДокумент из ОбработкаЗаполнения?????????????????
20 Kookish
 
28.04.13
15:52
ЭтотОбъект, я полагаю. Но это уже за гранью.
21 Мимохожий Однако
 
28.04.13
15:53
Встань отладчиком через F9 поищи .ссылка
22 Cyborg9
 
28.04.13
15:58
(20) ЭтотОбъект - доступен долько для чтения, ему нельзя передать найденный сущ. документ на сервере и испльзовать в тонком клиенте.
23 Cyborg9
 
28.04.13
15:59
В обычной конфе и 7-ке это реализуется элементарно, как подобное в управляемой конфе реализуется??
24 Kookish
 
28.04.13
16:07
Хорошо. Что, по-твоему означает "найденный сущ. документ на сервере"? Это разве не ссылка на документ?
Мне снова кажется, что надо мной кто-то издевается...
25 Cyborg9
 
28.04.13
16:22
(24) не придерайся к словам)) Как на сервере сделать чтобы ЭтотОбъект стал найденным документом?
26 Повелитель
 
28.04.13
16:29
ЭтотОбъект.Ссылка :)
27 Kookish
 
28.04.13
16:35
(26) Занавес!
28 Cyborg9
 
28.04.13
16:37
(26) Ошибка: поле для записи недоступно
29 Wobland
 
28.04.13
16:53
(28) а зачем ты туда пишешь?
30 Cyborg9
 
28.04.13
17:06
(29) Странный вопрос.. от незнания наверное))
31 hhhh
 
28.04.13
17:13
(30) вопрос был: открыть документ. Для этого писать в него не нужно.
32 Cyborg9
 
28.04.13
17:15
(31) Как открыть найденный документ из запроса вместо ЭтотОбъект.Ссылка (пустого) в процедуре ОбработкаЗаполнения???
33 hhhh
 
28.04.13
17:18
(32) написано в (0) "открыть существующий документ?". В существующем документе ссылка не пустая, чтоб ты знал.
34 Cyborg9
 
28.04.13
17:21
(33) я в курсе и в отладчике вижу, я эту ссылку получаю, а что дальше делать в обработкеЗаполнения я не знаю, на все попытки открыть пишет интерактивную ошибку
35 Повелитель
 
28.04.13
17:22
ТС начал в показаниях путаться ))
Напиши суть задачи, может так поможем лучше
36 Повелитель
 
28.04.13
17:23
Ты в (34) пишешь что ссылку видишь.
Подставь ее в (18)
37 Cyborg9
 
28.04.13
17:35
(36) так и сделал, пишет интерактивную ошибку. ссылку вижу не на клиенте, а на сервере, мне бы эту ссылку на клиент при открытии отправить
38 Cyborg9
 
28.04.13
17:36
+(36) в обработке заполнения
39 Любопытная
 
28.04.13
17:45
(38) Кури
&НаКлиенте
Процедура Передать(Команда)
ТекДанные = Объект.Ссылка;
Если ПолучитьТребование(ТекДанные) Тогда
Сообщить("На это требование уже оформлена передача");
Возврат;
КОнецЕсли;
Передача = СОздатьПередачу(ТекДанные);
Стр = новый Структура;
Стр.Вставить("Ключ",Передача);
Стр.Вставить("ДанныеЗаполнения",ТекДанные);
ЭтаФорма.Закрыть();
Форма = ПолучитьФорму("Документ.ПередачаТоваров.Форма.ФормаДокументаКПК",Стр);
Объект1 = ФОрма.Объект;
ЗаполнитьДок(ТекДанные,Объект1);
КопироватьДанныеФормы(Объект1,Форма.Объект);
ФОрма.ОТкрыть();  
КонецПроцедуры

&НаСервере
Функция СоздатьПередачу(Док)
НПередача = Документы.ПередачаТоваров.СоздатьДокумент();
НПередача.Дата = ТекущаяДата();
НПередача.Заполнить(Док);
Ссылка = НПередача.ПолучитьСсылкуНового();
Возврат Ссылка;
КонецФункции

&НаСервере
Функция ЗаполнитьДок(ДокОсн,Объект1)
ДокТТ = ДанныеФормыВЗначение(Объект1, Тип("ДокументОбъект.ПередачаТоваров"));
ДокТТ.Заполнить(ДокОсн);
ЗначениеВДанныеФормы(ДокТТ,Объект1);
КонецФункции
40 Cyborg9
 
28.04.13
17:54
(39) Спасибо, я это видел) Мне вообще забить на процедуру ОбработкаЗаполнения в модуле объекта? Заполнением заняться прямо на клиенте?
41 Мимохожий Однако
 
28.04.13
17:55
ОФФ: Если предложить забить на эту задачу, ты обидишься. Разжевали несколько раз, а толку мало.
42 Любопытная
 
28.04.13
17:58
(40) Да почему на клиенте? На сервере, только не в обработке заполнения, а в другой процедуре вызови процедуру Заполнить() своего документа.
43 Cyborg9
 
28.04.13
17:59
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
   //{{__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
   // Данный фрагмент построен конструктором.
   // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
   Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.Заказ") Тогда
       // Заполнение шапки
       ЗапросДок = Новый Запрос;
       ЗапросДок.Текст =
       "ВЫБРАТЬ ПЕРВЫЕ 1
       |    Закупка.ДокументОснование,
       |    Закупка.Ссылка
       |ИЗ
       |    Документ.Закупка КАК Закупка
       |ГДЕ
       |    Закупка.ДокументОснование = &ДокОсн";
       ЗапросДок.Параметры.Вставить("ДокОсн",ДанныеЗаполнения);
       ВыборкаДок = ЗапросДок.Выполнить().Выбрать();
       Если ВыборкаДок.Количество()>0 Тогда
           ВыборкаДок.Следующий();
           //Док = Документы.Закупка.ПолучитьСсылку(ВыборкаДок.Ссылка.ПолучитьОбъект());
           
           ////#Если Клиент Тогда
           Док = ВыборкаДок.Ссылка.ПолучитьОбъект();
           Д = Новый Структура("Ключ", ВыборкаДок.Ссылка);
           ЭтотОбъект.Ссылка.ПолучитьФорму("Документы.Закупка.ФормаДокумента",Д);
           
           //ОткрытьФорму(); интерактивная ошибка    
Иначе
           
           ДокументОснование = ДанныеЗаполнения;
           Для Каждого ТекСтрокаЗапчасти Из ДанныеЗаполнения.Запчасти Цикл
               Запрос = Новый Запрос;
               Запрос.Текст =
               "ВЫБРАТЬ
               |    ОстатокНаСкладеОстатки.Товар КАК Товар,
               |    ОстатокНаСкладеОстатки.Склад,
               |    ОстатокНаСкладеОстатки.КоличествоОстаток КАК КоличествоОстаток
               |ИЗ
               |    РегистрНакопления.ОстатокНаСкладе.Остатки КАК ОстатокНаСкладеОстатки
               |ГДЕ
               |    ОстатокНаСкладеОстатки.Товар = &ТоварНаСкладе
               |ИТОГИ
               |    СУММА(КоличествоОстаток)
               |ПО
               |    Товар";
               
               Запрос.Параметры.Вставить("ТоварНаСкладе",ТекСтрокаЗапчасти.ТоварСпр);
               Выборка = Запрос.Выполнить().Выбрать();
               Если Выборка.Следующий() Тогда
                   Если Выборка.КоличествоОстаток > 0 Тогда
                       Продолжить;
                   КонецЕсли;                
               КонецЕсли;
               
               НоваяСтрока = СписокТоваров.Добавить();
               НоваяСтрока.Артикул = ТекСтрокаЗапчасти.Артикул;
               НоваяСтрока.Количество = ТекСтрокаЗапчасти.Количество;
               НоваяСтрока.Сумма = ТекСтрокаЗапчасти.Сумма;
               НоваяСтрока.Номенклатура = ТекСтрокаЗапчасти.ТоварСпр;
               НоваяСтрока.Цена = ТекСтрокаЗапчасти.Цена;
           КонецЦикла;
       КонецЕсли;
   КонецЕсли;
   //}}__КОНСТРУКТОР_ВВОД_НА_ОСНОВАНИИ
КонецПроцедуры
44 Cyborg9
 
28.04.13
18:00
при вводе на основании из модуля объекта заставить открыть существующий документ???
45 Любопытная
 
28.04.13
18:04
ввод на основании ты откуда вызываешь?
46 Cyborg9
 
28.04.13
18:16
(45) модуль объекта
47 Любопытная
 
28.04.13
18:24
(46) так не делают, меняй задачу
48 Cyborg9
 
28.04.13
18:34
(47) В смысле? конструктор сам так сделал
49 Cyborg9
 
28.04.13
18:34
я лишь добавил условие, по тексту все ясно.. как тогда реализовать задуманное?
50 Любопытная
 
28.04.13
18:56
(49) Мы говорим о разных вещах. Конструктор заполнил стандартную процедуру, которая отрабатывается при вызове метода объекта Заполнить(). Ты где этот метод вызывать собрался?
С самого начала начни: что ты делаешь? Если ты просто хочешь чтобы по ПКМ-На основании - твой документ, то он сам прекрасно заполнится и откроется, без лишних телодвижений. Если ты где-то в обработке ПРОГРАММНО хочешь создать документ, то сделай это так, как в коде написано, который я тебе скопипастила сюда
51 Cyborg9
 
28.04.13
19:36
Спасибо всем! Я понял, надо создавать команду и писать в модуле формы. Конструктор под такую задачу не катит.
52 Любопытная
 
28.04.13
19:39
Застрелицца мне из пальца... Ничего ты, дружище, не понял. И это печально
53 Torquader
 
28.04.13
20:58
Мне кажется, что проще в обработке заполнения выставить флаг, что документ такой уже есть, а уже при открытии его формы попытаться открыть другую форму, а эту закрыть и разрушить документ.
P.S. управляемые формы г. полное - нельзя сначала создать документ, а потом открыть его форму, не сохраняя документ.