Имя: Пароль:
1C
1С v8
Программное создание документа в упр приложении
0 Валидатор
 
20.02.14
13:58
Хочу создать документ ТТн на основании 2х заказов, написал запрос, заполнил документ, потом хочу его открыть, и он мне открывает его как в обычном приложении, почему так?:
ТТН=Документы.ТТН.СоздатьДокумент();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        ТТН.Организация = ВыборкаДетальныеЗаписи.Организация;
        ТТН.Дата = ВыборкаДетальныеЗаписи.Дата;
        ТТН.Контрагент = ВыборкаДетальныеЗаписи.Контрагент;
        
        НоваяСтрока = ТТН.Товары.Добавить();
        
        Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
            Продолжить;
        КонецЕсли;    
            
            НоваяСтрока.ЕдиницаИзмерения     = ВыборкаДетальныеЗаписи.ЕдиницаИзмерения;
            НоваяСтрока.Количество                 = ВыборкаДетальныеЗаписи.Количество;
            НоваяСтрока.Номенклатура             = ВыборкаДетальныеЗаписи.Номенклатура;
            НоваяСтрока.СтавкаНДС                 = ВыборкаДетальныеЗаписи.СтавкаНДС;
            НоваяСтрока.Сумма                     = ВыборкаДетальныеЗаписи.Сумма;
            НоваяСтрока.СуммаНДС                 = ВыборкаДетальныеЗаписи.СуммаНДС;
            НоваяСтрока.СуммаСНДС                 = ВыборкаДетальныеЗаписи.СуммаНДС + ВыборкаДетальныеЗаписи.Сумма;
            НоваяСтрока.Цена                     = ВыборкаДетальныеЗаписи.Цена;
            //НоваяСтрока.ЗаказВКарьер             = ВыборкаДетальныеЗаписи.ЗаказКлиента;
            
        КонецЦикла;
        
    ТТН.записать();
    ТТн.ПолучитьФорму("ФормаДокумента").Открыть();
1 Wobland
 
20.02.14
13:58
а если открыть значение?
2 Валидатор
 
20.02.14
13:59
(1) {Обработка.ОбработкаЗагрузкиТТН.Форма.Форма.Форма(115)}: Метод объекта не обнаружен (ОткрытьЗначение)
    ТТн.ПолучитьФорму("ФормаДокумента").ОткрытьЗначение();
3 Wobland
 
20.02.14
14:01
ну так-то конечно
4 Fedor-1971
 
20.02.14
14:02
тип формы - управляемая? может "ФормаДокумента" - это обычная форма
5 le_
 
20.02.14
14:02
(0) Форма-то "ФормаДокумента" управляемая?
6 Дмитрий666
 
20.02.14
14:04
ты так и не доделал)
вроде бы открыть форму можно только на клиенте... точно не помню, посмотри в синтакс-помошнике
7 Дмитрий666
 
20.02.14
14:06
УправляемаяФорма (ManagedForm)
Открыть (Open)
Синтаксис:

Открыть()
Описание:

Открывает форму и делает ее окно активным.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент.
Примечание:

В управляемом приложении не следует выполнять программное открытие и закрытие одной и той же формы в одном вызове встроенного языка.
8 Wobland
 
20.02.14
14:06
(6) спросим его по-другому: как он в Обработка.ОбработкаЗагрузкиТТН.Форма.Форма.Форма создаёт документ
9 Wobland
 
20.02.14
14:07
(8) не будем спрашивать, я знаю ответ
10 Валидатор
 
20.02.14
14:08
(9) вот так вот

   &НаКлиенте
   Процедура Команда1(Команда)
       НаСервере();    
   КонецПроцедуры

&Насервере
Процедура НаСервере()
    
    СписокЗнач=новый СписокЗначений;
    
    Для Каждого Стр из Объект.ЗаказВКарьер Цикл
        СписокЗнач.добавить(Стр.ЗаказВКарьерКлиента);
    КонецЦикла;
    
    Запрос=Новый Запрос;
    Запрос.Текст=      
    "ВЫБРАТЬ
    |    ЗаказыКлиентовОстатки.Номенклатура,
    |    ЗаказыКлиентовОстатки.ЗаказаноОстаток,
    |    ЗаказыКлиентовОстатки.СуммаОстаток,
    |    ЗаказыКлиентовОстатки.ЗаказКлиента,
    |    ЗаказыКлиентовОстатки.ЗаказКлиента.Ссылка
    |ПОМЕСТИТЬ втОстатки
    |ИЗ
    |    РегистрНакопления.ЗаказыКлиентов.Остатки КАК ЗаказыКлиентовОстатки
    |ГДЕ
    |    ЗаказыКлиентовОстатки.ЗаказаноОстаток > 0
    |    И ЗаказыКлиентовОстатки.ЗаказКлиента В(&СписокЗнач)
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    втОстатки.Номенклатура,
    |    ЗаказВКарьерТовары.Цена,
    |    ЗаказВКарьерТовары.СтавкаНДС,
    |    ЗаказВКарьерТовары.ЕдиницаИзмерения,
    |    втОстатки.ЗаказаноОстаток КАК Количество,
    |    втОстатки.СуммаОстаток КАК СуммаСНДС,
    |    втОстатки.ЗаказаноОстаток * ЗаказВКарьерТовары.Цена КАК Сумма,
    |    ВЫБОР
    |        КОГДА втОстатки.ЗаказаноОстаток = 0
    |            ТОГДА 0
    |        ИНАЧЕ ЗаказВКарьерТовары.СуммаНДС / ЗаказВКарьерТовары.Количество * втОстатки.ЗаказаноОстаток
    |    КОНЕЦ КАК СуммаНДС,
    |    ЗаказВКарьерТовары.Ссылка.Контрагент КАК Контрагент,
    |    ЗаказВКарьерТовары.Ссылка.Дата КАК Дата,
    |    ЗаказВКарьерТовары.Ссылка.Менеджер КАК Менеджер,
    |    ЗаказВКарьерТовары.Ссылка.Организация КАК Организация
    |ИЗ
    |    втОстатки КАК втОстатки
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказВКарьер.Товары КАК ЗаказВКарьерТовары
    |        ПО втОстатки.Номенклатура = ЗаказВКарьерТовары.Номенклатура
    |            И втОстатки.ЗаказКлиентаСсылка = ЗаказВКарьерТовары.Ссылка
    |ГДЕ
    |    ЗаказВКарьерТовары.Ссылка В(&СписокЗнач)";
                  
                                  
    Запрос.УстановитьПараметр("СписокЗнач", СписокЗнач);
    Результат = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
    
    ТТН=Документы.ТТН.СоздатьДокумент();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        ТТН.Организация = ВыборкаДетальныеЗаписи.Организация;
        ТТН.Дата = ВыборкаДетальныеЗаписи.Дата;
        ТТН.Контрагент = ВыборкаДетальныеЗаписи.Контрагент;
        
        НоваяСтрока = ТТН.Товары.Добавить();
        
        Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
            Продолжить;
        КонецЕсли;    
            
            НоваяСтрока.ЕдиницаИзмерения     = ВыборкаДетальныеЗаписи.ЕдиницаИзмерения;
            НоваяСтрока.Количество                 = ВыборкаДетальныеЗаписи.Количество;
            НоваяСтрока.Номенклатура             = ВыборкаДетальныеЗаписи.Номенклатура;
            НоваяСтрока.СтавкаНДС                 = ВыборкаДетальныеЗаписи.СтавкаНДС;
            НоваяСтрока.Сумма                     = ВыборкаДетальныеЗаписи.Сумма;
            НоваяСтрока.СуммаНДС                 = ВыборкаДетальныеЗаписи.СуммаНДС;
            НоваяСтрока.СуммаСНДС                 = ВыборкаДетальныеЗаписи.СуммаНДС + ВыборкаДетальныеЗаписи.Сумма;
            НоваяСтрока.Цена                     = ВыборкаДетальныеЗаписи.Цена;
            //НоваяСтрока.ЗаказВКарьер             = ВыборкаДетальныеЗаписи.ЗаказКлиента;
            
        КонецЦикла;
        
    ТТН.записать();
    ТТн.ПолучитьФорму("ФормаДокумента");
    //ОткрытиеФормы(ТТН);
    //ТТн.поткрыть();
КонецПроцедуры

&НаКлиенте
Процедура ОткрытиеФормы(Документ)
    
КонецПроцедуры
11 Wobland
 
20.02.14
14:09
отдай уже клиенту ссылку, она ему нужнее
12 Валидатор
 
20.02.14
14:10
&НаКлиенте
Процедура ОткрытиеФормы(Документ)
    
КонецПроцедуры
это все равно не работает, в процедуре НаСервере он не видит жтой функции про открытие формы
13 Валидатор
 
20.02.14
14:11
{Обработка.ОбработкаЗагрузкиТТН.Форма.Форма.Форма(91,2)}: Процедура или функция с указанным именем не определена (ОткрытиеФормы)
    <<?>>ОткрытиеФормы(ТТН); (Проверка: Сервер)
14 Wobland
 
20.02.14
14:12
(11) и пусть он заоткрывает её насмерть
15 Валидатор
 
20.02.14
14:13
(14) есть нормальные рекомендации? кто кого понаоткрывает?
16 Дмитрий666
 
20.02.14
14:13
&НаКлиенте
   Процедура Команда1(Команда)
       НаСервере();
    открытьформу()
   КонецПроцедуры

вот здесь открывай
17 Fram
 
20.02.14
14:18
(15) В синтаксис помощнике набери "Ключ"
18 Fram
 
20.02.14
14:24
(15)
1. Переделай НаСервере() в функцию, возвращающую ссылку созданного документа
2. На клиенте открыть форму по полученной ссылке. Смотри (17)
3. Много читать про модель клиент-сервер в УФ
19 Victor111
 
20.02.14
15:01
создавай документ на клиенте и там ево заполняй, потом и открыеш там форму безпроблем!
Док = ПолучитьФорму("Документ.ТТН.ФормаОбъекта",,ЭтаФорма); //создаем документ

а значение для заполнения получай в функции, потом возвращай значение.
2 + 2 = 3.9999999999999999999999999999999...