Имя: Пароль:
1C
1С v8
Упр.приложение 1С 8.2: как получить ТЧ документа в общем модуле?
0 Kleo
 
25.11.13
19:15
Добавлена новая команда в Общие команды, в ней написан код:


&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
     МойОбщийМодуль.СоздатьВыпуск(ПараметрКоманды);
КонецПроцедуры


где параметр команды - Реализация товаров и услуг

а МойОбщийМоудль - модуль в общих модулях


далее пишу в общем модуле:


&НаКлиенте
Процедура СоздатьВыпуск(ПараметрКоманды)   Экспорт
    сообщить("Создание выпуска"+ПараметрКоманды);
    
Конецпроцедуры    


так вот, отладчиком смотрю параметрКоманды - имеет тип ДокументСсылка.РеализацияТоваровУслуг.


Подскажите, пожалуйста, как обратить к табличной части этого документа "Товары". Пробую пишет, что нужно на сервере получать объект, а затем ТЧ. но эти методы не работают на клиенте, а на сервере не могу никак передать из процедуры СоздатьВыпуск(ПараметрКоманды)  в другую процедуру НаСервере - пишет ошибку, что не обнаружена процедура с таким именем.


подскажите, как обратиться к табличной части документа, который выражен в переменной параметрКоманды?
1 Ерепень
 
25.11.13
19:16
то есть, на сервер упорно ходить не хотим
2 Kleo
 
25.11.13
19:23
(1)хотим. как? ругается, что имя процедуры не обнаружено
3 Ерепень
 
25.11.13
19:24
вызов сервера надо модулю разрешить
4 Kleo
 
25.11.13
19:25
Передала из команды в общий мдуль ПараметрВыполненияКоманды


Процедура СоздатьВыпуск(ПараметрКоманды,ПараметрыВыполненияКоманды)   Экспорт


нахожу ПараметрыВыполненияКоманды.Источник.Объект.Товары - тип значения - ДанныеФормыЗначения. и что это дает? ничего.... как быть? как в управляемых формах все сложно. получить табличную часть документа, из которго вызываешь команду - такая проблема!!
5 samozvanec
 
25.11.13
19:28
(0) чего хочешь то? точно общая команда нужна?
6 Ерепень
 
25.11.13
19:28
(4) ты ж ссылку получил
7 Kleo
 
25.11.13
19:31
(5) хочу из Командной панели формы: Создать наосновании документа Реализации товаров и услуг вызвать команду, которая на откроет модуль, который создаст на основаниидокумента документ Выпуска продукции
8 samozvanec
 
25.11.13
19:32
(6) у нее, видимо, этот же объект открыт на редактирование в форме. толку ей от ссылки?
(4) ну ее и редактируй, чего не так?
9 Kleo
 
25.11.13
19:33
(3) поставила галочку Вызов сервера, пишу в общем модуле:



&НаКлиенте
Процедура СоздатьВыпуск(ПараметрКоманды,ПараметрыВыполненияКоманды)   Экспорт
    сообщить("Создание выпуска"+ПараметрКоманды);
    Сообщить("Тип "+ТипЗнч(ПараметрКоманды));
        ДокОсн = ПараметрКоманды;
      
    
    ПолучитьДокОсн(ДокОсн);
    
Конецпроцедуры    

&НаСервере
Процедура    ПолучитьДокОсн(ДокОсн) Экспорт
    Сообщить("ДокОсн "+ДокОсн);
КонецПроцедуры    


ошибка:

{ОбщийМодуль.МойОбщийМодуль.Модуль(19,2)}: Процедура или функция с указанным именем не определена (ПолучитьДокОсн)
    <<?>>ПолучитьДокОсн(ДокОсн); (Проверка: Тонкий клиент)
10 samozvanec
 
25.11.13
19:33
(7) самое простое, что ты можешь сейчас сделать - это посмотреть, как работает конструктор ввода на основании, и сделать как тебе надо, только правильно. общие команды здесь не при чем.
11 Kleo
 
25.11.13
19:34
(8) редактировать мне табличную часть реализации не нужно. мне нужно получить данные этой табличной части, чтобы на основании создать выпуск продукции и заполнить табличн.часть этого документа
12 samozvanec
 
25.11.13
19:34
(9) не надо в одном общем модуле и клиентские и серверные процедуры писать
13 samozvanec
 
25.11.13
19:35
(11) юзай конструктор. он тебе все сделает, поправишь просто как тебе надо
14 Kleo
 
25.11.13
19:36
(10) но именно в общей команде я указываю Группу размещения моей команды. ив  ней тип команды РеализацияТоваровУслуг. задача такая - создать команды, общие моудли новые, но не трогать функционал типового документа Реализация товаров и услуг
15 Kleo
 
25.11.13
19:37
(12) почему? как быть? констурктор создания на основани мне не нужен. раньше все работало в БП 2.0 с помощью внешней обработки, которая создавала документ выпуска. при этом типовое решение не корректировалась и доки типовые тоже. а в 3.0 решила создать с помощью команды
16 Мимохожий Однако
 
25.11.13
19:41
Какие параметры у общего модуля МойОбщийМодуль?
17 Kleo
 
25.11.13
19:46
просто вопрос: что нельзя в общем модуле из одной процедуры на клиенте перейти в процедуру на сервере?
18 Kleo
 
25.11.13
19:48
(16) имеется ввиду свойства? поставила галочки "Вызов сервера" , "Клиент, "Сервер"
19 Kleo
 
25.11.13
20:01
убрала галочку Клиент, теперьв  общем модуле ошибки нет. возникает ошибка в модуле команды

{ОбщаяКоманда.СоздатьВыпуск.МодульКоманды(4,3)}: Переменная не определена (МойОбщийМодуль)
     <<?>>МойОбщийМодуль.СоздатьВыпуск(ПараметрКоманды,ПараметрыВыполненияКоманды); (Проверка: Тонкий клиент)
20 Мимохожий Однако
 
25.11.13
20:13
Посмотри как сделаны типовые команды в конфигурации и повтори в своих объектах. Гадать и телепатить, что там у тебя, долго и непрактично.
21 Kleo
 
25.11.13
20:53
разобралась Поставила Вызов сервера и Сервер. а в модуле убрала НаКлиенте и НаСервере слова от процедур.


но вот теперь проблем другая  - хочу открыть из общего модуля форму созданного выпуска - пишет, что нельзя использовать интерактивные команды
22 Мимохожий Однако
 
25.11.13
21:02
Открывай из другого места
23 Kleo
 
25.11.13
21:17
(22) из какого?
24 Kleo
 
25.11.13
21:17
у меня создается новый док. все прописывается в прееменную новыйДок. и получается это нужно сохранить и потом открыть форму, но как и где?
25 m-serg74
 
25.11.13
21:55
(24) может пригодится и все упростит:


&НаКлиенте
Процедура Команда(Команда)
    Форма = ПолучитьФорму("Документ.НашДокумент.ФормаОбъекта");
    ДанныеФормы = Форма.Объект; // Получаем объект формы в переменную
    ЗаполнитьДокументНаСервере(ДанныеФормы); // Заполняем документ на сервере
    КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копируем наш объект в объект формы и далее открываем ее
    Форма.Открыть();
КонецПроцедуры

// Можно использовать безконтекстный вызов, оптимизируем передачу данных
&НаСервереБезКонтекста
Функция ЗаполнитьДокументНаСервере(ДанныеФормы);
    Док = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.НашДокумент")); // Получаем объект из данных формы ИЛИ
    Док = Документы.НашДокумент.СоздатьДокумент();
    // Заполняем реквизиты объекта или другие действия ********
    ЗначениеВДанныеФормы(Док, ДанныеФормы); // Кладем обратно в объект формы уже созданный документ
КонецФункции
26 Kleo
 
25.11.13
21:57
Сделала!!! В модуле команды:


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

а в общем моудле добавила строчку:

ЗначениеВДанныеФормы(НовыйДок,ДанныеФормы);
27 m-serg74
 
25.11.13
21:58
+ (25) причем открывается форма нового еще не записанного документа, т.е. пользователь сам примет решение записывать/не записывать, может еще чего решит поменять.
В функцию ЗаполнитьДокументНаСервере добавь параметр с ссылкой твоего дока основания, и пропиши заполнение
28 Kleo
 
25.11.13
21:58
Спасибо всем!!!
29 Kleo
 
25.11.13
21:59
(27) совершенно верно! именно это мне и нужно было!!! Все сделала!!! спасибо!
30 m-serg74
 
25.11.13
21:59
(29) носите на здоровье:-)