8.х Внешние данные..Подскажите

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

  1. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    Только начала изучать программировани в 1с и возник следующий вопрос:
    Как передать значение переменой из одной формы(или документа) в другую.
    Т.е например:есть наименование товара,который находится в документах или в справочниках или в другой форме,а я делаю свою форму и мне нужно перенести значение из внешнего документа в мою форму,как это сделать в плане синтаксиса.Знаю есть такое,как ЭлементыФормы.ТекущиеДанные,но они как я поняла используются только при фокусе на определеном объекте и их нельзя приминить при Открытии Формы,а надо чтобы они при открытии формы уже попадали в нужные колонки.

    Заранее спасибо.
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    в плане синтаксиса перенос значения из формы в нужную переменную или реквизит делается следующим образом:

    ФормаИзКоторойбудемПереносить = Объект.ПолучитьФорму("ФормаОбъекта",ВладелецФормы);
    ФормаИзКоторойбудемПереносить.РежимВыбора = Истина;
    ФормаИзКоторойбудемПереносить.ЗакрыватьПриВыборе = Истина;(по вкусу :))
    Переменная = ФормаИзКоторойБудемПереносить.ОткрытьМодально();

    где
    Объект - Документ,Справочник...
    ВладелецФормы - может выступать как сама форма в которой работаете, так и отдельный элемент формы.
    ФормаЭлемента - название нужной формы как оно задано в конфигураторе.
  3. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    В справочнике есть номенклатура у которой есть уникальный артикул,так вот,как мне этот артикул забрать и получить в виде переменой в своей новой форме.
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Значит так:

    ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(,Этаформа);
    ФормаВыбора.РежимВыбора = Истина;
    ФормаВыбора.ЗакрыватьПриВыборе = Истина;
    Переменная = ФормаВыбора.ОткрытьМодально().Артикул;

    после этого в ПЕРЕМЕННАЯ будет значение АРТИКУЛ
  5. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    : Ошибка при вызове метода контекста (ПолучитьФормуВыбора): Недопустимое значение параметра (параметр номер '1')
    ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(ЭтаФорма);
    по причине:
    Недопустимое значение параметра (параметр номер '1')
    ... =(
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    не внимательно переписали строчку :)

    ещё раз:

    ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(,Этаформа);

    здесь нет ошибки, делайте скопировать-вставить
  7. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    Вы правы,извините.Не было запятой...
    Артикул достался =) Спасибо .... только вылазиит сообщение
    {Обработка.ПечатьЦенников.Форма.Форма(12)}: Значение не является значением объектного типа (Артикул)
    ЭлементыФормы.Товары.ТекущиеДанные.Артикул = Переменная;
    и сразу закрывается 1с =(
  8. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    В этом случае необходимо делать так:
    ЭлементыФормы.Товары.ТекущиеДанные.Артикул.Значение = переменная;

    только быстрее все же будет не через элементы формы работать, а через реквизит ТЧ/ТЗ, к которой привязан элемент формы типа ТабличнаяЧасть
  9. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    Процедура ПриОткрытии()
    Перем ЗаполнитьЦены, ПараметрыИзДокумента, Артикул, ФормаВыбора, Переменная;

    Перем НастройкиПостроителя;

    ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(,ЭтаФорма);
    ФормаВыбора.РежимВыбора = Истина ;
    ФормаВыбора.ЗакрыватьПриВыборе = Истина;
    Переменная = ФормаВыбора.ОткрытьМодально().Артикул;
    ЭлементыФормы.Товары.ТекущиеДанные.Артикул.Значение = переменная;

    ...


    Все равно выкидывает в windows с той же ошибкой
    {Обработка.ПечатьЦенников.Форма.Форма(12)}: Значение не является значением объектного типа (Артикул)
    ЭлементыФормы.Товары.ТекущиеДанные.Артикул.Значение = переменная;
  10. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    эээ....текущие данные в этом случае скорее всего ещё не определены, т.к. не выделена ни одна строка ТЧ на открывающейся форме.

    Задача какая стоит?
  11. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    а как встать на начало строки или типа фокуса на нее сделать чтобы было возможность обращаться к текущей или как обратится к элементу формы или столбцу чтобы туда записать? Задача надо при загрузке формы чтобы данные автоматически заполнялись по столбцам и строкам... понимаю все оч.просто(Зная 1с).=)
  12. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Данные чего заполнялись и чем заполнялись? Какие данные? какая форма открывается?
  13. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    как вообще происходит автоматическое заполнение формы данными при открытии?.... Я создала пустую форму и табличное поле и туда хочу загрузить например артикул из Номенклатуры автоматически при запуске формы.
  14. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Добавляй строку в ТаблицуЗначений напрямую, к которой привязана ТЧ на форме. ТЧ на форме у тебя должна служить своего вида монитором, не нужно пытаться с ней работать, тем более при открытии формы.
  15. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    мммм... а можно примером ? +) и что токое ТЧ =)
  16. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    Даже не знаю с чего начать......:)
    ТЧ - табличная часть(табличное поле). Само по себе оно, как правило, не существует, а привязано к какому-нибудь реквизиту объекта. Как правило, название реквизита и ТЧ совпадают. Самый распространеный тип реквизита, к которому привязывают ТЧ - это ТаблицаЗначений, либо ТабличнаяЧасть объекта(Обработка, документ, справочник и т.д.)

    Дык вот, ТЧ это всего лишь "интерактивная копия" реквизита ТаблицаЗначений или ТабличнаяЧасть. Програмно с ней работать не совсем удобно. Програмно удобно работать с самим реквизитом, т.е. с ТаблицейЗначений или ТабличнойЧастью объекта.

    А уж как работать с этими объектами - это отдельна тема, часа так на 1.5 - 2 курсов по 1С или чтения встроенного Синтаксис-Помощника до понимания :)
  17. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    почитайте ЖКК, несерьезно как-то :)
  18. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    Спасибо вам за помощь... Буду разбираться =)...
  19. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.581
    Симпатии:
    717
    Баллы:
    204
    пример:

    ЭлементФормы "ТабличноеПоле" привязан к реквизиту формы "ТабличноеПоле" с типом ТаблицаЗначений.

    Как минимум, у ТЧ на форме создана колонка "Артикул", с типом "Строка" длины 15 символов.

    Следовательно, можно сделать для формы:

    Код:
    Процедура При открытии()
    
    ТабличноеПоле.Очистить();
    ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(,ЭтаФорма);
    ФормаВыбора.РежимВыбора = Истина;
    ФормаВыбора.ЗакрыватьПриВыборе = Истина;
    
    НоваяСтрокаТЗ = ТабличноеПоле.Добавить();
    НоваяСтрокаТЗ.Артикул = ФормаВыбора.ОткрытьМодально().Артикул;
    
    КонецПроцедуры;
    
    
    При открытии формы, будет одна строка с заполненым артикулом той номенклатуры, которую выберет юзер.
  20. TopicStarter Overlay
    zayaroslava
    Offline

    zayaroslava Опытный в 1С

    Регистрация:
    27 янв 2010
    Сообщения:
    329
    Симпатии:
    1
    Баллы:
    26
    Все получилось =) спасибо...скажите как еще указать чтобы добовлялось уже в существующию колонку(т.е первую строчку) а не через Очистить в начале

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