8.х Открыть управляемую форму по ссылке

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем kogor, 24 фев 2015.

  1. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Добрый день

    Платформа 1С:Предприятие 8.3 (8.3.4.482)

    Конфигурация Бухгалтерия предприятия, редакция 3.0 (3.0.29.5)

    Во внешней обработке пытаюсь открыть форму документа Реализация товаров и услуг

    Я создаю новый документ, но не записываю его, а хочу открыть его форму, чтобы пользователь посмотрел документ, оценил и сам принял решение записывать его или нет

    Делаю это так:

    Код:
    Документ = СоздатьДокументНаСервере(стрПараметры);
               
                ПараметрыФормы = Новый Структура("Ключ",Документ);
                ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаУслуги",ПараметрыФормы);
    
    В результате мне открывается ФормаДокументаТовары и абсолютно пустая, хотя реквизиты документа заполнены и я открываю ФормаДокументаУслуги

    Попробовал записать документ и открыть - все получилось, открылась нужная и заполненная ФормаДокументаУслуги

    Но как открыть ФормаДокументаУслуги для созданного документа (ДокументОбъект), не записывая документ?
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    А что в параметр Документ передаете ?
  3. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    ДокументОбъект, который создан так:

    Код:
    ДокументОбъект = Документы.РеализацияТоваровУслуг.СоздатьДокумент()
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Так этого объекта еще не существует в базе :)
    Получаете объект, заполняете его реквизиты, если нужно - показываете форму пользователю. Все, больше тут ничего не нужно.
  5. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Как раз у меня загвоздка как показать пользователю форму? Тот синтаксис который у меня (в первом посте) открывает абсолютно пустую форму, причем ФормаДокументаТовары, а не ФормаДокументаУслуги
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    А вы уверены что ФормаДокументаТовары и ФормаДокументаУслуги - это совсем разные формы ????
  7. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Я хочу открыть форму ФормаДокументаУслуги, потому что я заполняю ТЧ Услуги, а ТЧ Товары - пустая

    Но все равно какую бы я не открывал (не записывая документ), они пустые, хотя ДокументОбъект заполнен и ТЧ Услуги в нем тоже
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    А где вы заполняете эту табличную часть ????
    Вы открываете форму, делаете активной закладку - Услуги.
    Не вижу проблемы.
  9. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Обработка загружает данные из Excel в документ реализация товаров и услуг. При этом нежелательно записывать документ автоматически. Пользователь сам должен сначала увидеть документ и решить, записывать его в базу или нет

    Поэтому я создаю новый документ и заполняю его на основании данных из Excel. Остается только показать пользователю заполненную форме этого документа

    Вот как я это делаю:
    Код:
     &НаКлиенте
    Процедура Загрузить(Лист);
        
        стрПараметры = Новый Структура;
        ит=2;            
    
        //продолжаем цикл пока заполнена номенклатура
        Попытка
            Пока ЗначениеЗаполнено(СокрЛП(Лист.Cells(ит,1).Value)) Цикл
    
                стрПараметры.Вставить("Дата",СокрЛП(Лист.Cells(ит,13).Value));//дата сф
                стрПараметры.Вставить("Организация",НайтиОрганизациюНаСервере(СокрЛП(Лист.Cells(ит,1).Value)));
                стрПараметры.Вставить("Контрагент",НайтиКонтрагентаНаСервере(СокрЛП(Лист.Cells(ит,9).Value)));
                стрПараметры.Вставить("СуммаДокумента",СокрЛП(Лист.Cells(ит,4).Value)); //сумма услуги
                стрПараметры.Вставить("СуммаВключаетНДС",Истина);
                стрПараметры.Вставить("АдресДоставки",СокрЛП(Лист.Cells(ит,15).Value)); //адрес доставки
               
                НаименованиеНоменклатуры = СокрЛП(Лист.Cells(ит,3).Value);
                стрПараметры.Вставить("Номенклатура",НайтиНоменклатуруНаСервере(НаименованиеНоменклатуры));
                стрПараметры.Вставить("Количество",1);
                стрПараметры.Вставить("Цена",СокрЛП(Лист.Cells(ит,4).Value)); //сумма услуги
                стрПараметры.Вставить("СуммаНДС",СокрЛП(Лист.Cells(ит,16).Value)); //сумма НДС
               
                Документ = СоздатьДокументНаСервере(стрПараметры);
               
                ПараметрыФормы = Новый Структура("Ключ",Документ);
                ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаУслуги",ПараметрыФормы);
               
                ит = ит + 1;
              КонецЦикла;
          Исключение
              Сообщить("Ошибка по причине: "+ОписаниеОшибки());
          КонецПопытки;
    
    КонецПроцедуры
    
    &НаСервере
    Функция СоздатьДокументНаСервере(Параметры)
        ДокОбъект = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
        ДокОбъект.Дата = Параметры.Дата;
        ДокОбъект.УстановитьНовыйНомер();
        ДокОбъект.Организация = Параметры.Организация;
        ДокОбъект.Контрагент = Параметры.Контрагент;
        ДокОбъект.ДоговорКонтрагента = ДокОбъект.Контрагент.ОсновнойДоговорКонтрагента;
        ДокОбъект.ВидОперации = Перечисления.ВидыОперацийРеализацияТоваров;
        ДокОбъект.СуммаДокумента = Параметры.СуммаДокумента;
        ДокОбъект.СуммаВключаетНДС = Параметры.СуммаВключаетНДС;
        ДокОбъект.АдресДоставки = Параметры.АдресДоставки;
           
        НоваяСтрока = ДокОбъект.Услуги.Добавить();
        НоваяСтрока.Номенклатура = Параметры.Номенклатура;
        НоваяСтрока.Количество = Параметры.Количество;
        НоваяСтрока.Цена = Параметры.Цена;
        НоваяСтрока.СуммаНДС = Параметры.СуммаНДС;
        НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.НДС18;
       
       Возврат ДокОбъект;
    КонецФункции
    
  10. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Посмотрите как у вас табличная часть заполняется, похоже на бред, или на каждую позицию создается документ, это извините - бред.
  11. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Ну почему бред? В файле Excel содержится реестр оказанных услуг. В каждой строке: одна услуга, один контрагент, сумма и прочее. Поэтому вполне логично создаются отдельные документы с одной строкой-услугой.

    но суть проблемы то ведь не в том что одна строка в ТЧ документа, да хоть вообще нет строк. Проблема в том что на управляемых формах не получается сделать то, что на обычных я бы сделал

    Код:
    Форма = Документ.ПолучитьФорму("ФормаДокумента");
    Форма.Открыть();
  12. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Да все получается, не нужно тут мне лечить. Вы сначала разберитесь, как заполняются реквизиты объекта, а так же как работать с табличной частью в управляемых формах.
    Ваш алгоритм сводится всего навсего к трем пунктам.
    1) создаете объект
    2) трассируете экселевский файл, забиваете реквизиты
    3) открываете форму объекта
    ВСЁ
    С чего вы решили открыть форму с параметрами, да еще и табличную часть через нее заполняете ?
  13. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Я все так и делаю, Вы ведь видите код. На 3 этапе у меня есть готовый ДокументОбъект. В нем все что нужно заполнено. Я могу его записать в базу и открыть форму - тогда открывается заполненная форма документа, все круто, но если документ не записывать в базу, то форма выходит пустая

    Вы знаете как открыть упр. форму документа имея в готовом виде ДокументОбъект, но не записывая его в базу?
  14. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Так скажите, что реквизит формы "Объект" должен быть равен вашему только что созданному Документу.
    kogor нравится это.
  15. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Через параметры формы? Попробовал вот так:
    Код:
    ПараметрыФормы = Новый Структура("Объект",Документ);
                ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаУслуги",ПараметрыФормы);
    Но форма все равно пустая
  16. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Вариант раз:
    Код:
    Форма = ПолучитьФорму(бла-бла-бла);
    
    Форма.Объект = Документ;
    Форма.Открыть();
    Вариант два:
    Код:
    Форма = Документ.ПолучитьФорму(бла-бла-бла);
    Форма.Открыть();
    Оба не работают?
  17. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Да все работает, чел походу просто не может заполнить реквизиты объекта.
  18. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Первый вариант выдаает ошибку:
    Ошибка по причине: {Форма.Форма.Форма(80)}: Ошибка при установке значения атрибута контекста (Объект): Нельзя изменять поле, содержащее объект данных формы

    А второй выдает все равно пустую форму

    Документ у меня заполнен верно, все реквизиты и табличная часть. Нет только ссылки, потому что объект не записан
  19. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    С-П говорит нам следующее:
  20. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Я СП весь облазил по этим формам. Ссылку можно передать через параметр формы Ключ, а вот как передать объект - непонятно

Поделиться этой страницей