Имя: Пароль:
1C
1C 7.7
v7: Добавление новой строки с выбором из справочника
0 Масянька
 
24.01.14
15:02
День добрый!

Хочу сделать свою кнопку по типу "новая строка" (2-ая таб. часть в документе):

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

    мНомерСтр = СлужебнаяТаблица.КоличествоСтрок();
    СлужебнаяТаблица.НоваяСтрока();
    СлужебнаяТаблица.Номер          = мНомерСтр + 1;
    СлужебнаяТаблица.Номенклатура = Параметр;
    
КонецПроцедуры // ПоКнопкеНоваяСтрока

Чёт не работает: справочник открывает, но как только "жмакаешь" по строчке - открывается элемент справочника. А мне нужно впихнуть ее в строку документа.
Где косяк?
Спасибо.
1 KishMish
 
24.01.14
15:05
юзай ОткрытьПодбор
ОбработкаПодбора
2 Масянька
 
24.01.14
15:06
(1) Они уже заюзаны.
Говорю же, хочу по типу "Новая строка" (кнопочка для работы с таб. частью).
3 KishMish
 
24.01.14
15:08
(2)
Юзай процедуру ОткрытьПодбор для открытия формы справочника
Юзай процедуру ОбработкаПодбора для добавления строки
4 Масянька
 
24.01.14
15:09
(3) Да есть уже кнопка "Подбор" с подбором и обработкой подбора.
5 KishMish
 
24.01.14
15:10
(3)
ОткрытьФормуМодально("Справочник.Номенклатура.ДляВыбора", Параметр);
просто открывает форму, двойно щелчок открывает элемент, поэмтоу открыватеяс форма элемента

ОткрытьПОдбор - открывает форму для выбора, и передает выбранное значение в процедуру ОбработкаПодбора
6 KishMish
 
24.01.14
15:10
а чем кнопка "Подбор" будет отличатся от кнопки "Новая строка"?
7 KishMish
 
24.01.14
15:12
Можно используюя
ОткрытьФормуМодально()
, тада надо или создавать новую форму списка. Там сделать кнопку ВЫБРАТЬ
Закрывать, с передачей параметра в Форма.Параметр.
8 Масянька
 
24.01.14
15:20
(5) Да ладно.
А как же это работает?

Процедура ПриНачалеРедактированияСтроки()            
    Если Форма.ТекущаяКолонка() = "ТекстПокупатель" Тогда
        Параметр = "Выбор";
        ОткрытьФормуМодально("Справочник.Контрагенты.ДляВыбора", Параметр);
        Контрагент = Параметр;        
        Если Договор.Владелец <> Контрагент Тогда
            Договор = "";    
        КонецЕсли;
    ИначеЕсли Форма.ТекущаяКолонка() = "ТекстДоговор" Тогда
        Если Контрагент.Выбран() = 0 Тогда
            Параметр = "Выбор";
            ОткрытьФормуМодально("Справочник.Контрагенты.ДляВыбора", Параметр);
            Контрагент = Параметр;        
        КонецЕсли;
        Параметр = Контрагент;
        ОткрытьФормуМодально("Справочник.Договоры.ДляВыбора", Параметр);
        Договор = Параметр;        
    КонецЕсли;
КонецПроцедуры


Типовой код
9 KishMish
 
24.01.14
15:30
не знаю, могу лишь предположить что внутри предопределенной процедуры
ПриНачалеРедактированияСтроки()

ОткрытьФормуМодально() открывается в режиме выбора
10 Chum
 
24.01.14
15:44
ОткрытьФормуМодально() - за такое руки обрубают.

Есть, кстати, параметр, который отвечает за множественный подбор, т.е. после выбора строки форма не закрывается, чем обеспечивается множественный выбор.
11 varelchik
 
24.01.14
15:52
(2-ая таб. часть в документе):
Круто.
чем реализована?
12 varelchik
 
24.01.14
15:53
в 7.7 насколько мне помнится только одна многострочная часть.
вы случаем с 8.х не путаете?
13 ЧеловекДуши
 
24.01.14
15:54
(0) Лучше всего организовывать не выбор через Модальное окно, А через Подбор.
Модальное окошко маленькое и ни о чем :)
14 varelchik
 
24.01.14
15:54
если все таки это 7.7 то используй ТабличноеПоле.
15 Mikeware
 
24.01.14
15:55
(14) советовал уже. не хочет...
16 varelchik
 
24.01.14
15:56
по крайней мере я использую для заполнения большого количества табличных частей на одной форме именно его.
17 Масянька
 
24.01.14
15:57
(14) (15) Я уже разобралась со служебным док-ом. Очень даже ничего.
(13) Говорю же - кнопка "Подбор" есть. Хочу типа по стандарту - добавить строку.
(16) Дай пример. Желательно, для блондинок :))) Пожалуйста.
18 Масянька
 
24.01.14
15:58
(16) Кстати, по поводу табличного поля - а как потом данные в отчеты собирать?
19 Chum
 
24.01.14
16:00
(11) что сложного?

Вариант 1: держать данные в табличной части, использовать реквизит для определения принадлежности строки к той или иной таблице. Применять танцы с переливкой ТЧ в ТЗ и обратно;
вариант 2: создавать документ того же вида, но со смещением лет на 10 назад. Держать в нем данные второй и т.д. ТЧ.
20 Mikeware
 
24.01.14
16:00
(18) данные-то у тебя в документах...
а табполе - росто способ доступа к документам
21 Mikeware
 
24.01.14
16:01
(19) некрасиво. ну и небольшие сложности с определением "редактировался/нередактировался". хотя формексом это решается.
22 Diter
 
24.01.14
16:03
Выбрать() уже предлагали?
23 Масянька
 
24.01.14
16:05
(20) По-моему, поняла.
(22) Где?
24 Diter
 
24.01.14
16:09
в коде.. где же ещё? ну типа
Спр.Выбрать();

и все собственно

Спр=СоздатьОбъект("Справочник.Номенклатура");
Спр.ВыборГруппы(0);
Спр.Выбрать();
Если пустоеЗначение(Спр.ТекущийЭлемент())=0 Тогда
ТЗ.НоваяСтрока();
бла бла бла
КонецЕсли;
25 varelchik
 
24.01.14
16:12
стучись в аську кину простенький МД тама примеров фатает.
да и как организовавать у документов много табличных частей тоже.
26 Diter
 
24.01.14
16:13
(25) а что там сложного то? у меня есть  доки с пятью-шестью ТЧ. - подчиненные документы и вуаля
27 Масянька
 
24.01.14
16:24
Почему так происходит?

Процедура ПоКнопкеНоваяСтрока()
    
    Параметры = СоздатьОбъект("СписокЗначений");

    ОткрытьФормуМодально("Справочник.Номенклатура.ДляВыбора", Параметры);

Сообщить("1 - " + Параметры.Получить("ВыбЗначение") + " - " + Параметры.РазмерСписка());    

    мНомерСтр = СлужебнаяТаблица.КоличествоСтрок();
    СлужебнаяТаблица.НоваяСтрока();
    СлужебнаяТаблица.Номер          = мНомерСтр + 1;
    СлужебнаяТаблица.Номенклатура = Параметры.ПолучитьЗначение("ВыбЗначение");
    
КонецПроцедуры // ПоКнопкеНоваяСтрока


Сообщить выводит номенклатуру, а в таблицу не добавляет - пишет "Индекс не входит в границы списка значений".
28 KishMish
 
24.01.14
16:25
(27) Параметры.ПолучитьЗначение("ВыбЗначение");
это по номеру строки
Параметры.Получить("ВыбЗначение");
это по текстовом представлению
29 Масянька
 
24.01.14
16:44
Дядьки! А у меня получилось (представили, что я стою на пьедестале и показываю всем язык) :)))))
30 Mikeware
 
24.01.14
16:46
(29) у нас все равно длиннее...
31 Масянька
 
24.01.14
16:47
(30) Ну, извините :))))
32 KishMish
 
24.01.14
16:47
(29) молдец
33 varelchik
 
24.01.14
16:51
(26) Да так ничего.
просто тута предложения выдвигались на счет документа того же вида только в непонятном году.
2 + 2 = 3.9999999999999999999999999999999...