8.х Записать реквизит формы

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

  1. TopicStarter Overlay
    Zeta
    Offline

    Zeta Опытный в 1С

    Регистрация:
    8 ноя 2009
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте! Мне необходимо из обработки создать новую запись справочника и заполнить реквизиты, но не только справочника, а еще и формы элемента. Создаю изаписываю так:

    Код:
    НоваяЗапись = Справочники.Спр1.СоздатьЭлемент();
    ФормаЭлементаЗаписи = НоваяЗапись.ПолучитьФорму("ФормаЭлемента");
    ФормаЭлементаЗаписи.ЕдиницаИзмерения = НужнаяЕдиницаИзмерения;
    ФормаЭлементаЗаписи.Номенклатура = НужнаяНоменклатура;	
    НоваяЗапись.Наименование = НужноеИмя;
    НоваяЗапись.Количество = 1;
    Попытка
    НоваяЗапись.Записать();
    Исключение
    ...
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/конецпопытки')">КонецПопытки	</span>
    
    
    В итоге новая запись создается, реквизиты самого справочника заполняются, а реквизиты формы остаются пустыми. Подскажите, как их заполнить?
  2. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Не совсем понятно. У вас формы элемента привязанны к реквизитам ? Если они не привязанны то системе неоткуда брать данные когда она открываает форму (если конечно в самой форме это не прописанно). А так если все элементы приявязаны к реквизитам то достаточно заполнить реквизиты
  3. koshak
    Offline

    koshak Опытный в 1С

    Регистрация:
    28 май 2009
    Сообщения:
    57
    Симпатии:
    0
    Баллы:
    26
    Здесь все дело в том, что если элементы на форме не связаны ни с какими реквизитами базы данных, то они соответственно ни как не сохраняются. Разве что механизмом сохранения и восстановления значений в форме. Т.е. если Вы получите форму документа и заполните ее реквизиты программно, то и открывать форму нужно так же программно из той же переменной, в которую получили форму.

    Код:
    НоваяЗапись = Справочники.Спр1.СоздатьЭлемент();
    НоваяЗапись.Наименование = НужноеИмя;
    НоваяЗапись.Количество = 1;
    Попытка
    НоваяЗапись.Записать();
    
    ФормаЭлементаЗаписи = НоваяЗапись.ПолучитьФорму("ФормаЭлемента");
    ФормаЭлементаЗаписи.ЭлементыФормы.ЕдиницаИзмерения.Значение = НужнаяЕдиницаИзмерения;
    ФормаЭлементаЗаписи.ЭлементыФормы.Номенклатура.Значение = НужнаяНоменклатура;
    ФормаЭлементаЗаписи.Открыть();
    
    Исключение
    ...
    КонецПопытки
    
  4. TopicStarter Overlay
    Zeta
    Offline

    Zeta Опытный в 1С

    Регистрация:
    8 ноя 2009
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    А можно как-то без открытия формы обойтись?
  5. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Задачу опешите? просто не совсем понятно предназначение на форме полей которые не связаны с реквизитами
  6. TopicStarter Overlay
    Zeta
    Offline

    Zeta Опытный в 1С

    Регистрация:
    8 ноя 2009
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Комплексная автоматизация, редакция 1.0 (1.0.4.1) Там есть справочник СпецификацииНоменклатуры, Номенклатура, Количество, ХарактеристикаНоменклатуры являются там реквизитами формы, а мне нужно создать новую запись и заполнить эти реквизиты формы из обработки, не открывая формы.
  7. Draco
    Offline

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

    Регистрация:
    28 окт 2009
    Сообщения:
    13.639
    Симпатии:
    948
    Баллы:
    204
    Просто то что вы хотите заполнить это реквизиты Табл части Выходное изделие

    Код:
    НоваяЗапись = Справочники.СпецификацииНоменклатуры.СоздатьЭлемент();
    НоваяЗапись.Наименование = "Специф1";
    НоваяЗапись.ВидСпецификации=Перечисления.ВидыСпецификаций.Сборочная;
    ВыхИзделия=НоваяЗапись.ВыходныеИзделия.Добавить();
    ВыхИзделия.Количество = 1;
    ВыхИзделия.Номенклатура=Справочники.Номенклатура.НайтиПоКоду("М24566");
    ВыхИзделия.ЕдиницаИзмерения= Справочники.Номенклатура.НайтиПоКоду("М24566").ЕдиницаХраненияОстатков;
    Попытка
    НоваяЗапись.Записать();
    Исключение
    КонецПопытки
    
  8. TopicStarter Overlay
    Zeta
    Offline

    Zeta Опытный в 1С

    Регистрация:
    8 ноя 2009
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Ой, действительно вы правы, не углядела! Большое Вам спасибо!)

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