Имя: Пароль:
1C
1C 7.7
v7: Как при открытии строки таб. части указать родителя чтобы справочник открылся уже с нужной
,
0 Teh
 
05.03.18
11:42
Добрый день!

Есть документ с табличной частью. В каждой строке табличной части необходимо указать основное средство. Но хочется чтобы папка открывалась сразу машины и оборудование например, а не корень.

Как это можно настроить?
1 Хряк
 
05.03.18
11:52
а программа то откуда узнает, что надо машины и оборудование открыть?
2 Torquader
 
05.03.18
11:52
А разве оно автоматом так не делает, если вообще без кода открывать ?
3 Torquader
 
05.03.18
11:53
Потом, можно открыть форму, установить текущий элемент в папку, которая нужна - должно открыть то, что нужно.
4 Teh
 
05.03.18
11:54
У меня в шапке есть основное средство. В таблице нужно указать из той же папки что и оно.

Спр = СоздатьОбъект("Справочник.ОсновныеСредства");
    Спр.НайтиПоКоду(ОС_Шапка.Код);
    Род=Спр.Родитель;

Переменная Род будет содержать родителя.
5 Teh
 
05.03.18
11:56
(2) стандартно открывает справочник верхний уровень
6 Teh
 
05.03.18
12:00
(2) делает, если вручную строку создавать, после того как в предыдущей указано ос. Только у меня строки заполнены процедурой. И при открытии все время в верхний уровень открывает.
7 Torquader
 
05.03.18
12:03
// где-то примерно так.
Если ОткрытьФорму(,,Context)=1 Тогда
Если Спр.НайтиЭлемент(ЭлементВШапкеФормы)=1 Тогда
  Context.ТекущийЭлемент=Спр.ТекущийЭлемент();
КонецЕсли;
КонецЕсли;
8 IvaneS
 
05.03.18
12:03
А делай переменную в справочнике пользователя "ЛюбимаяПапкаОС" и по умолчанию фокусируй туда.
Можно при закрытии формы списка ОС запомнить позицию и вернуть при открытии... Последний я часто использовал)))
9 Ёпрст
 
05.03.18
12:04
(4) в ПриНачалеВыбораЗначения пишешь
Если Ид = "ИмяРеквизитаВТабЧасти" Тогда
   СтатусВозврата(0);
   конт = "";
   ОткрытьФорму("Справочник.ОсновныеСредства",Конт);
   Конт.ИспользоватьРодителя(ОснСредствоИзШапки.Родитель,1);
КонецЕсли;
10 Teh
 
05.03.18
13:48
(9) Спасибо, получилось. Остальные варианты слишком сложные для меня показались.

Процедура ПриНачалеВыбораЗначения(Ид)  
    Спр = СоздатьОбъект("Справочник.ОсновныеСредства");
    Спр.НайтиПоКоду(ОС_Шапка.Код);
    Род=Спр.Родитель;
    Если Ид = "ОС_Новый" Тогда
        СтатусВозврата(0);
        конт = "";
        ОткрытьФорму("Справочник.ОсновныеСредства",Конт);
        Конт.ИспользоватьРодителя(Род,1);
    КонецЕсли;
КонецПроцедуры

Всем благодарности.
11 1Сергей
 
05.03.18
13:50
(10) лишняя писанина и потенциальная ошибка


    //Спр = СоздатьОбъект("Справочник.ОсновныеСредства");
    //Спр.НайтиПоКоду(ОС_Шапка.Код);
    //Род=Спр.Родитель;
    Род=ОС_Шапка.Родитель;
12 Teh
 
05.03.18
13:55
(11) У меня до этого была процедура, которая создавала для ОС шапка папку и перемещала его туда. И проверка чтобы при повторном вызове не создавалась еще одна папка. Проверка не срабатывала, пока я не переписала "Род=ОС_Шапка.Родитель" в то что у меня (писанина). Хотя если я открывала это поле и закрывала, видимо в форме перечитывалось значение нового родителя и проверка работала. В общем может и лишняя, главное чтоб сюрпризов не было.
13 Teh
 
05.03.18
14:07
Все это делаю для разового разделения основных средств оприходованных на одну карточку (количества больше одного).
Выбираю основное средство, потом выбираю по нему документы прихода и перемещения. Для ос_шапка создаю папку и перемещаю его туда (для визуального удобства). Создаю дубли по количеству на остатке, записываю в ту же папку. Заполняю ими ячейки строк служебного документа (ос_новый) в тех строках где стоит документ прихода. А вот в строках перемещения возможно останется выбирать вручную, вот тогда пригодится открытие в нужной папке. Хотя может еще придумаю как это прописать автоматом.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс