Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
11 дек 2024, 14:02

Заполнить ТЧ документа данными из ТЧ произвольной формы выбора

Автор deman_ru, 09 окт 2013, 16:52

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

deman_ru

Уважаемые форумчане, помогите новичку разобраться, суть проблемы такова.
Есть документ, в нем есть табличная часть "Номенклатура" с полями "Препарат" и "Количество"
Добавляю в табличную часть новую строку, далее из поля "Препарат" вызываю произвольную в режиме выбора произвольную форму. На этой форме расположено табличное поле, в которое помещаются данные из следующего запроса:


Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстатки.Препарат,
| ОстаткиНоменклатурыОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки";

Выборка = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТабличноеПоле1.Значение = Выборка;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();



Как мне сделать так, чтобы при двойном клике по нужной строке табличного поля (Выборе записи) данные строки попали в текущую строку табличной части документа, из которой осуществлялся выбор, и форма закрылась.
Как если бы это было при какой-нибудь стандартной форме выбора.
Подскажите пожалуйста!?

GRADUS

Цитата: deman_ru от 09 окт 2013, 16:52
Уважаемые форумчане, помогите новичку разобраться, суть проблемы такова.
Есть документ, в нем есть табличная часть "Номенклатура" с полями "Препарат" и "Количество"
Добавляю в табличную часть новую строку, далее из поля "Препарат" вызываю произвольную в режиме выбора произвольную форму. На этой форме расположено табличное поле, в которое помещаются данные из следующего запроса:


Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОстаткиНоменклатурыОстатки.Препарат,
| ОстаткиНоменклатурыОстатки.КоличествоОстаток
|ИЗ
| РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки";

Выборка = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТабличноеПоле1.Значение = Выборка;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();



Как мне сделать так, чтобы при двойном клике по нужной строке табличного поля (Выборе записи) данные строки попали в текущую строку табличной части документа, из которой осуществлялся выбор, и форма закрылась.
Как если бы это было при какой-нибудь стандартной форме выбора.
Подскажите пожалуйста!?

При вызове формы (ПолучитьФормуВыбора )надо правильно указать владельца (элемент), режимвыбора = истина и оно само все сделает

deman_ru

Цитировать
При вызове формы (ПолучитьФормуВыбора )надо правильно указать владельца (элемент), режимвыбора = истина и оно само все сделает

В обработчике события ПриВыборе, поля Препарат, табличной части Номенклатура документа, пишу следующий код:

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

Нужная форма с данными открывается, но при двойном щелчке по строке (пытаюсь выбрать) ничего не происходит, программа не реалигует, может нужно еще что то прописать в обработчике события Выбор, табличного поля формы?

GRADUS

Цитата: deman_ru от 09 окт 2013, 18:36
Цитировать
При вызове формы (ПолучитьФормуВыбора )надо правильно указать владельца (элемент), режимвыбора = истина и оно само все сделает

В обработчике события ПриВыборе, поля Препарат, табличной части Номенклатура документа, пишу следующий код:

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

Нужная форма с данными открывается, но при двойном щелчке по строке (пытаюсь выбрать) ничего не происходит, программа не реалигует, может нужно еще что то прописать в обработчике события Выбор, табличного поля формы?

Тут все правильно, в вызываемой форме при 2-ом клиеке не отрабатывает функция ОповеститьОВыборе() по неким причинам. Вызываешь её и закрываешь форму.

deman_ru

Цитировать
Тут все правильно, в вызываемой форме при 2-ом клиеке не отрабатывает функция ОповеститьОВыборе() по неким причинам. Вызываешь её и закрываешь форму.
А откуда ее вызывать?
Если из формы:

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
ОповеститьОВыборе(ЗначениеВыбора);
КонецПроцедуры

При двойном клике (выбираю запись) вообще ничего не происходит.

Если вызываю из табличного поля формы, обработчик Выбор:
Процедура ТабличноеПоле1Выбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
ОповеститьОВыборе(ВыбраннаяСтрока);
КонецПроцедуры

Дочерняя форма закрывается, в табличную часть родительской ничего не заносится(
что не так?

GRADUS

Цитата: deman_ru от 09 окт 2013, 19:25
Цитировать
Тут все правильно, в вызываемой форме при 2-ом клиеке не отрабатывает функция ОповеститьОВыборе() по неким причинам. Вызываешь её и закрываешь форму.
А откуда ее вызывать?
Если из формы:

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
ОповеститьОВыборе(ЗначениеВыбора);
КонецПроцедуры

При двойном клике (выбираю запись) вообще ничего не происходит.

Если вызываю из табличного поля формы, обработчик Выбор:
Процедура ТабличноеПоле1Выбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
ОповеститьОВыборе(ВыбраннаяСтрока);
КонецПроцедуры

Дочерняя форма закрывается, в табличную часть родительской ничего не заносится(
что не так?

Это надеюсь в форме выбора написано?

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
   ОповеститьОВыборе(ЗначениеВыбора);
КонецПроцедуры


deman_ru

Цитировать

Это надеюсь в форме выбора написано?

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
   ОповеститьОВыборе(ЗначениеВыбора);
КонецПроцедуры



Да! Я прошу простить меня за мою тупость) я хотя бы понял механизм.
В "ЗначениеВыбора" содержится строка таблицы значений, т.е. данные выбранные из строки табличной части формы выбора.
У меня теперь загвоздка, как выбрать данные из таблицы значений и поместить их в поля табличной части документа?

GRADUS

Цитата: deman_ru от 09 окт 2013, 21:17
Цитировать

Это надеюсь в форме выбора написано?

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
   ОповеститьОВыборе(ЗначениеВыбора);
КонецПроцедуры



Да! Я прошу простить меня за мою тупость) я хотя бы понял механизм.
В "ЗначениеВыбора" содержится строка таблицы значений, т.е. данные выбранные из строки табличной части формы выбора.
У меня теперь загвоздка, как выбрать данные из таблицы значений и поместить их в поля табличной части документа?

в форме выбора должен быть список значений по идеи, а не ТЧ. Кто мешает передавать "ЗначениеВыбора.Номенклатура" ?
Добавлено: 09 окт 2013, 21:29


Что насчет отладчика в событии "ОповещениеОВыборе" в форме владельца? Чтонить там есть?

deman_ru

Цитата: GRADUS от 09 окт 2013, 21:27
Цитата: deman_ru от 09 окт 2013, 21:17
Цитировать

Это надеюсь в форме выбора написано?

Процедура ОбработкаВыбора(ЗначениеВыбора, Источник)
   ОповеститьОВыборе(ЗначениеВыбора);
КонецПроцедуры



Да! Я прошу простить меня за мою тупость) я хотя бы понял механизм.
В "ЗначениеВыбора" содержится строка таблицы значений, т.е. данные выбранные из строки табличной части формы выбора.
У меня теперь загвоздка, как выбрать данные из таблицы значений и поместить их в поля табличной части документа?

в форме выбора должен быть список значений по идеи, а не ТЧ. Кто мешает передавать "ЗначениеВыбора.Номенклатура" ?
Добавлено: 09 окт 2013, 21:29


Что насчет отладчика в событии "ОповещениеОВыборе" в форме владельца? Чтонить там есть?
В ЗначениеВыбора, хранились данные выбранной строки формы выбора, данные в виде таблицы значений, но они там хранились в один столбец. Я в форме выбора создал новую таблицу и ее столбцы, заполнил данными строки и передал в родительскую форму. Потом оттуда считал и записал в поля табличной части документа.
Зашел из далека) но хотя бы разобрался)
Спасибо Вам за помощь!

Похожие темы (5)

Рейтинг@Mail.ru

Поиск