Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
15 Дек 2017, 05:54
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Из ТЗ в форму документа  (Прочитано 4778 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dimkostav

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-10-28
  • Сайт: 
Добрый день. Помогите новичку.
Есть документ ПередачаВСалоны. У этого документа есть ФормаДокумента. На ФормаДокумента есть поле ввода, данные которого <Реквизит табличной части> этого документа. Сам же  <Реквизит табличной части> имеет тип СправочникСсылка.<ИмяСправочника>.
При нажатии на поле ввода открывается ФормаВыбора из соответствующего справочника. На этой ФормаВыбора есть ТаблицаЗначений. В ней данные из запроса. Как же вернуть выбранное значение из этой ТаблицаЗначений в ФормаДокумента? :dfbbdrfb:


Оффлайн Dimkostav

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-10-28
  • Сайт: 
Cейчас примерно такая ситуация получается:

В модуле формы документа
Процедура КартриджиКартриджНачалоВыбора(Элемент, СтандартнаяОбработка)
//передаём в реквизит формы "Вызывает" параметр, чтобы знать кто её вызвал
СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.Картриджи.ПолучитьФормуВыбора("Форма", Элемент);
    Если Не ФормаВыбора.Открыта() Тогда
ФормаВыбора.МножественныйВыбор = Ложь;
ФормаВыбора.РежимВыбора = Истина;
ФормаВыбора.Вызывает = 1;
ФормаВыбора.ОткрытьМодально();
ТекущаяСтрока = ФормаВыбора.ЭлементыФормы.ТЗ.ТекущаяСтрока;
ЭтотОбъект.Метаданные().ТабличныеЧасти.Картриджи.Реквизиты.Картридж = ТЗСтрока.Код;
Иначе
ФормаВыбора.Активизировать();
ФормаВыбора.МножественныйВыбор = Ложь;
        ФормаВыбора.РежимВыбора = Истина;
        СтандартнаяОбработка = Ложь;
    КонецЕсли;
КонецПроцедуры

А в модуле ФормыВыбора так:

Процедура ПриОткрытии()
Если ЭтаФорма.Вызывает = "1" Тогда
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
               | Картриджи.Код КАК Код,
               | Картриджи.Наименование КАК Модель
               |ИЗ
               | Справочник.Картриджи КАК Картриджи";
Результат = Запрос.Выполнить();
       ТЗ = Результат.Выгрузить();
         ЭлементыФормы.ТЗ.СоздатьКолонки();
         
//////////////////////////////////////////////////////////////////////////////////
ИначеЕсли ЭтаФорма.Вызывает = "2" Тогда
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
   | Картриджи.Код КАК Код,
   | Картриджи.УникальныйНомерКартриджа,
   | Картриджи.Наименование,
   | Картриджи.ЮрЛицо.Наименование
   |ИЗ
   | Справочник.Картриджи КАК Картриджи";
Результат = Запрос.Выполнить();
   ЭлементыФормы.ТЗ.СоздатьКолонки();
КонецЕсли
КонецПроцедуры


Процедура КоманднаяПанель1Действие1(Кнопка)
Закрыть(ЭлементыФормы.ТЗ.ТекущиеДанные.Код);
Сообщить(ЭлементыФормы.ТЗ.ТекущиеДанные.Код);
КонецПроцедуры

Но ругается на: ЭтотОбъект.Метаданные().ТабличныеЧасти.Картриджи.Реквизиты.Картридж = ТЗСтрока.Код;
Поле объекта недоступно для записи (Картридж)

Оффлайн mdv

  • *
  • Сообщений: 16
  • РЕПУТАЦИЯ: 2
  • КПД: 13%
  • Регистрация: 2010-10-29
  • Сайт: 
В форме документа, в обработчике выбора значения свойства картридж надо писать как то так:
Форма = Справочник.Катриджи.ПолучитьФормуВыбора();
ТекКатридж = Форма.ОткрытьМодально(мКатридж);

А в форме выбора использовать обработчик табличной части "Выбор", через параметры обработчика получить значение выбранного элемента и написать так:
ЭтаФорма.Закрыть(ЗначениеВыбранногоЭлемента);

Таким образом в переменную ТекКатридж получите значение выбора.

Оффлайн Dimkostav

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-10-28
  • Сайт: 
Да, так намного красивее получается. Только попадает в переменную. А как записать значение в реквизит табличной части?

Форма документа:
Процедура КартриджиКартриджНачалоВыбора(Элемент, СтандартнаяОбработка)
//передаём в реквизит формы "Вызывает" параметр, чтобы знать кто её вызвал
СтандартнаяОбработка = Ложь;
ФормаВыбора = Справочники.Картриджи.ПолучитьФормуВыбора("Форма", Элемент);
Если Не ФормаВыбора.Открыта() Тогда
ФормаВыбора.МножественныйВыбор = Ложь;
ФормаВыбора.Вызывает = 1;
ФормаВыбора.ЗакрыватьПриВыборе = Истина;
ТекСтрока =  ФормаВыбора.ОткрытьМодально();
ЭтотОбъект.Метаданные().ТабличныеЧасти.Картриджи.Реквизиты.Картридж = ТекСтрока; //Поле объекта недоступно для записи (Картридж)
    Иначе
ФормаВыбора.Активизировать();
ФормаВыбора.МножественныйВыбор = Ложь;
        ФормаВыбора.РежимВыбора = Истина;
        СтандартнаяОбработка = Ложь;
КонецЕсли;
КонецПроцедуры
Форма выбора:
Процедура ПриОткрытии()

ЭтаФорма.РежимВыбора = Истина;

Если ЭтаФорма.Вызывает = "1" Тогда
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
   | Картриджи.Код КАК Код,
   | Картриджи.УникальныйНомерКартриджа КАК УникальныйНомерКартриджа,
   | Картриджи.Наименование КАК Наименование,
   | Картриджи.ЮрЛицо.Наименование КАК ЮрЛицо
   |ИЗ
   | Справочник.Картриджи КАК Картриджи";
   Результат = Запрос.Выполнить();
   ТЗ = Результат.Выгрузить();
   ЭлементыФормы.ТЗ.СоздатьКолонки();
КонецПроцедуры

Процедура ТЗВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
ЭтаФорма.Закрыть(ВыбраннаяСтрока.Код);
КонецПроцедуры


Оффлайн mdv

  • *
  • Сообщений: 16
  • РЕПУТАЦИЯ: 2
  • КПД: 13%
  • Регистрация: 2010-10-29
  • Сайт: 
Элемент.Значение = ТекКатридж;


Оффлайн Dimkostav

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-10-28
  • Сайт: 
У ТекСтрока есть необходимое значение. А вот в Элемент.Значение ничего не падает. В отладчике оно пустое :(

Оффлайн mdv

  • *
  • Сообщений: 16
  • РЕПУТАЦИЯ: 2
  • КПД: 13%
  • Регистрация: 2010-10-29
  • Сайт: 
Надо вместо вот этого
ЭтотОбъект.Метаданные().ТабличныеЧасти.Картриджи.Реквизиты.Картридж = ТекСтрока;

написать вот это:
Элемент.Значение = ТекСтрока;

Оффлайн Dimkostav

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-10-28
  • Сайт: 
Да я ж так и сделал.

Оффлайн mdv

  • *
  • Сообщений: 16
  • РЕПУТАЦИЯ: 2
  • КПД: 13%
  • Регистрация: 2010-10-29
  • Сайт: 
Процедура ТЗВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
   ЭтаФорма.Закрыть(ВыбраннаяСтрока.Код);
КонецПроцедуры

В переменную текСтрока попадает код справочника (тип строка), а тебе надо ссылку получить на элемент

Оффлайн Dimkostav

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2010-10-28
  • Сайт: 
Тогда так?
Процедура ТЗВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
   ЭтаФорма.Закрыть(Элемент);
КонецПроцедуры


Теги:
 

Автоматическое заполнение табличной части документа из табличной части другого

Автор WillРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 15934
Последний ответ 16 Авг 2012, 12:07
от Will
Заполнение поля табличной части документа из табличной части справочника.

Автор Kurt_WagnerРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 4199
Последний ответ 06 Апр 2015, 20:08
от Kurt_Wagner
Заполнение табличной части документа реквизитами табличной части справочника

Автор kaf_infoРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 629
Последний ответ 10 Май 2017, 20:44
от ilnur75
Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 7745
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984
"Не совпадают сумма документа и общая сумма по платежным ведомостям"

Автор yunovoРаздел Пользователям "1С - Предприятие 8"

Ответов: 1
Просмотров: 4783
Последний ответ 11 Янв 2015, 02:55
от MuI_I_Ika

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
175 Сообщений
ilyay ilyay
69 Сообщений
oleg-x
48 Сообщений
alex0402
44 Сообщений
AIFrame
39 Сообщений
andron81_81
38 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
31 Сообщений
BuhRust
30 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 290
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal