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

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

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
Просмотров: 21863
Последний ответ 16 Авг 2012, 12:07
от Will
Заполнение поля табличной части документа из табличной части справочника.

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

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

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

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

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

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

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

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

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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
67 Сообщений
oooo800
39 Сообщений
LexaK
31 Сообщений
Дмитрий Джей Дмитрий Джей
29 Сообщений
IL2016
28 Сообщений
antoneus antoneus
24 Сообщений
DmitriyF DmitriyF
17 Сообщений
Ann_
16 Сообщений
мадам брошкина
13 Сообщений
illiona
10 Сообщений

* Кто онлайн

  • Точка Гостей: 199
  • Точка Скрытых: 0
  • Точка Пользователей: 0

Нет пользователей онлайн.

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal