Имя: Пароль:
1C
1С v8
Заполнение табличной части документа из формы выбора
0 VenedPS
 
25.06.14
16:47
Здравствуйте. Помогите пожалуйста с кодом:
Есть кнопка которая открывает форму выбора, после выбора данные должны заполнять табличную часть. Вот код:

&НаКлиенте
Процедура ВыборКомпонента(Команда)
ОткрытьФормуМодально ("Справочник.Комплектующие.ФормаВыбора");
КонецПроцедуры


&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
ЗаполнениеТабДок();
КонецПроцедуры

&НаСервере
Процедура ЗаполнениеТабДок()
Запрос = новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
| Наименование,
| Материал,
| КодКомпонента,
| Инд
|ИЗ
| Справочник.Комплектующие";
Результат = Запрос.Выполнить();
Выборка=Результат.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока =Объект.ТабДок.Добавить();
НоваяСтрока.НазваниеКомпонента = Выборка.Наименование;
НоваяСтрока.Материал = Выборка.Материал;
НоваяСтрока.КодКомпонента = Выборка.КодКомпонента;
НоваяСтрока.Инд=Выборка.Инд;
КонецЦикла;
КонецПроцедуры

Ошибок не выдает но и результат выбора из формы не заносится в таб часть
Смутно догадываюсь что теряю результаты выбора...
1 Господин ПЖ
 
25.06.14
16:49
(0) ты не теряешь, просто заполняешь объект и ищешь изменения на клиенте
2 Wobland
 
25.06.14
16:49
ОткрытьФормуМодально обязательно что-то возвращает. что у тебя возвращает форма?
3 VenedPS
 
25.06.14
16:57
Форма возвращает значение выбора а именно то комплектующее значение реквизитов которого нужно записать в таб часть.
4 Господин ПЖ
 
25.06.14
16:59
(3) ты набиваешь Объект (ДокументОбъект) на сервере. Клиент об этом не в курсе...
5 Wobland
 
25.06.14
16:59
(3) а что ты делаешь с этим самым знвчением выбора?
6 Wobland
 
25.06.14
16:59
(4) это при выборе, а не по кнопке ;)
7 Wobland
 
25.06.14
17:01
&НаКлиенте
Процедура Подбор(Команда)
    ОткрытьФорму("Обработка.ПодборТоваров.Форма");
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Если ИмяСобытия="АВотПодбор" Тогда
        НоваяСтрока=Объект.Товары.Добавить();
        НоваяСтрока.Номенклатура=Параметр;
    КонецЕсли;
КонецПроцедуры
8 Господин ПЖ
 
25.06.14
17:06
>Объект.Товары

это ТЧ, она на клиенте недоступна...
9 Wobland
 
25.06.14
17:07
(8) код довольно рабоч
10 Господин ПЖ
 
25.06.14
17:13
(9) может быть... тогда это ДанныеФормыКоллекция

путаюсь ху из кто иногда еще
11 Wobland
 
25.06.14
17:16
(10) ага. там бы ещё флаг модифицированности взводить или на сервер уходить. но я тогда только начинал дружить с УФ ;)
12 VenedPS
 
25.06.14
17:21
По кнопке у меня открывается форма выбора и в зависимости от выбора заполняется ТЧ.
Думаю что без серверной процедуры ТЧ не заполню, и моя процедура ЗаполнениеТабДок работает (отдельно ее запускал) но вот привязать к выбору из формы не получается(
13 Wobland
 
25.06.14
17:21
(12) может, тебе пример отсыпать?
14 VenedPS
 
25.06.14
17:22
Если не сложно)
15 Господин ПЖ
 
25.06.14
17:24
(12) так у тебя ни владельца формы не задано, где событие выбора всплывать должно...

ЗЫ и открывать формы модально уже не модно
16 Wobland
 
25.06.14
17:27
каков наглец

&НаКлиенте
Процедура Подбор(Команда)
    ОткрытьФорму("Обработка.ПодборТоваров.Форма", , ЭтаФорма);
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
    Если ИмяСобытия="АВотПодбор" Тогда
        МаршНаСервер(Параметр);
        Модифицированность=Истина;
    КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура МаршНаСервер(Параметр)
    объ=РеквизитФормыВЗначение("Объект");
    НоваяСтрока=объ.Товары.Добавить();
    НоваяСтрока.Номенклатура=Параметр;
    ЗначениеВРеквизитФормы(объ, "Объект");
КонецПроцедуры
17 Господин ПЖ
 
25.06.14
17:28
(16) а где Оповещение ? не по феншую.
18 Wobland
 
25.06.14
17:30
&НаКлиенте
Процедура НоменклатураВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    СтандартнаяОбработка=Ложь;
    Оповестить("АВотПодбор", ВыбраннаяСтрока);
КонецПроцедуры
19 VenedPS
 
25.06.14
17:36
3-ю неделю в 1С-е... понятия не имею что модно)
Ага... Открытию формы дописал  , ЭтаФорма)... выходит я назначил владельца формы?
Но в этом случае заполняются все элементы из справочника а не выбранный. Как понимаю нужно прописывать если и приравнивать элементы справочника с выбранным значением... щя покумекаю. Спасибо за помощь)
20 Wobland
 
25.06.14
17:38
>в этом случае заполняются все элементы из справочника а не выбранный
как ты этого добился?
21 Господин ПЖ
 
25.06.14
17:38
>Но в этом случае заполняются все элементы из справочника а не выбранный

а где написано что должен выбранный? У тебя в запросе и сказано - выгреби мне все что есть
22 VenedPS
 
25.06.14
17:52
Как добился?) В процедуре Заполнение ТабДок какрас и записываю значения. А Обработке Выбора просто исполняю эту процедуру. Вот и выгребает все.

Передал значение выбора в новую переменную
   Выбор = ВыбранноеЗначение;

Передал переменную Выбор серверной процедуре
   &НаСервере
   Процедура ЗаполнениеТабДок(Выбор)

Заключил Запрос в серверной процедуре в Если:
   Если Справочники.Комплектующие = Выбор  тогда
   //весь запрос
   КонецЕсли;

И опять ничего не происходит)
23 Wobland
 
25.06.14
18:08
юзер явно и недвусмысленно тычет мышью в какую-то комплектующую. но мы же программисты! нужен же запрос!
24 Господин ПЖ
 
25.06.14
18:12
&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
ЗаполнениеТабДок(ВыбранноеЗначение);
КонецПроцедуры

&НаСервере
Процедура ЗаполнениеТабДок(НеведомаяХрень)
Запрос = новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
| Наименование,
| Материал,
| КодКомпонента,
| Инд
|ИЗ
| Справочник.Комплектующие КАК Комплектующие
|ГДЕ Комплектующие.Ссылка = &НеведомаяХрень";

Запрос.УстановитьПараметр("НеведомаяХрень", НеведомаяХрень);

Результат = Запрос.Выполнить();
Выборка=Результат.Выбрать();
Выборка.Следующий();

НоваяСтрока =Объект.ТабДок.Добавить();
НоваяСтрока.НазваниеКомпонента = Выборка.Наименование;
НоваяСтрока.Материал = Выборка.Материал;
НоваяСтрока.КодКомпонента = Выборка.КодКомпонента;
НоваяСтрока.Инд=Выборка.Инд;
25 VenedPS
 
25.06.14
18:23
Блин, капец... параметры запроса потерял вот и не работало)
Спасибо большое, очень помогли. Может из меня и получится 1С-ник когда то)
26 Wobland
 
25.06.14
18:25
а НеведомаяХрень.Наименование не спасёт?
27 VenedPS
 
25.06.14
18:28
Спасибо еще раз. Все заработало.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.