Имя: Пароль:
1C
 
Дерево значений интерактивный ввод строки
0 Широкий
 
22.06.09
11:13
Не могу сообразить.. на форме есть дерево значений.
Стандартная кнопка ввода новой строки добавляет лишь подчиненные строки.. Есть ли какой нить параметр с помошью которого можно было бы регулировать родителя, в котором надо создать строку?
1 Stepa86
 
22.06.09
11:35
Родителем становиться ТекущаяСтрока дерева
2 Широкий
 
22.06.09
11:36
(1) Я в курсе.. как программно указать нужного родителя?
3 Stepa86
 
22.06.09
11:40
(2) не понял задачи, если нужно добавить в корень новую строку, то
НовСтрока = лДерево.Строки.Добавить();
НовСтрока.Поле1 = Чтото1;
НовСтрока.Поле2 = Чтото2;

Если конкретному родителю, то:
КонкретныйРодитель.Строки.Добавить();
НовСтрока.Поле1 = Чтото1;
НовСтрока.Поле2 = Чтото2;
4 Stepa86
 
22.06.09
11:40
*(3)НовСтрока = КонкретныйРодитель.Строки.Добавить();
5 Stepa86
 
22.06.09
11:41
а интерактивно: только выбором текущего родителя
6 Широкий
 
22.06.09
11:42
Упрощенно: Нужно добавить код чтобы при вводе новой строки (нажатием стандартной кнопки) строка добавлялась всегда в корень дерева
7 Stepa86
 
22.06.09
11:45
НовСтрока = лДерево.Строки.Добавить();
ЭлементыФормы.лДерево.ТекущаяСтрока = НовСтрока;
ЭлементыФормы.лДерево.ИзменитьСтроку();

вроде бы
8 Stepa86
 
22.06.09
11:48
(7) проверил, работает так, как я понял задачу... если текущая строка - корень дерева, то F9 тоже помогает
9 Широкий
 
22.06.09
11:51
(7) Это уже проходил.. оказаться от добавления нельзя (через ESC)
10 Stepa86
 
22.06.09
11:53
ПередОкончаниемРедактирования флажок ОтменаРедактирования?
11 Широкий
 
22.06.09
11:55
(10) Да не..  попробуй в любом табличном поле добавить строку - строка будет новая и если юзер нажимает ESC - строка не создастся.
В твоем слечае - я строку добалю по любому.. просто введу ее в режим редактирования
12 Stepa86
 
22.06.09
12:06
Процедура ТабличноеПоле1ПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель)
   
   Если Не Копирование
       И ТабличноеПоле1.Строки.Количество() > 0 Тогда
       
       Отказ = Истина;
       
       ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока = ТабличноеПоле1.Строки[0];
       
       WshShell = Новый COMОбъект("WScript.Shell");
       WshShell.SendKeys("{F9}");
       
   КонецЕсли;
   
КонецПроцедуры
13 Stepa86
 
22.06.09
12:09
Почему то если ПередНачаломдобавления сменить Родителя, то ничего не происходит =(
14 Широкий
 
22.06.09
12:12
(13) Насчет скриптов - ты перегнул .. есть стандартный метод копирования.. Это тоже проходил...  минус в том что еще и структура строк копируется
15 Stepa86
 
22.06.09
12:30
Перем ПрограммноеКопирование;

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

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

ПрограммноеКопирование = Ложь;
16 Stepa86
 
22.06.09
12:32
то есть вот так

Процедура ТабличноеПоле1ПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
   
  Если ПрограммноеКопирование = Истина
      И НоваяСтрока Тогда
       
      Элемент.ТекущиеДанные.Колонка1 = "";

Элемент.ТекущиеДанные.Строки.Очистить();
       
      ПрограммноеКопирование = Ложь;
       
  КонецЕсли;
   
КонецПроцедуры
17 Широкий
 
22.06.09
12:42
(16) Вроде подходит.. сейчас еще потестю
18 Stepa86
 
22.06.09
12:44
*ушел рисовать звездочку на системник
19 Широкий
 
22.06.09
12:53
(18) Рисуй сразу большую.. алгоритм подходит.
Спасибо
2 + 2 = 3.9999999999999999999999999999999...