Имя: Пароль:
1C
 
v7: Как создать автоматический ввод новой строки?
0 xxxkosta
 
02.11.06
22:39
Люди обрые помогите.
Представьте документ по списанию некоторых элементов. В конце месяца нужно списатьодним документом около 9000 элементов. Поэтому дя упрощения работы я пытаюсь облегчить движения пользователя, что б при окончании редактирования строки , сразу актовизировалась следующая строка (не через Ins)
1 Стрелок
 
02.11.06
22:48
Свойства ТЧ поставь галку "Автоматически ввод новой строки"
2 Стрелок
 
02.11.06
22:48
а в БЗ рекомендовать не надо
3 xxxkosta
 
02.11.06
22:49
Спасибо друг, а ты не работал с процедурой Актовизировать и активизировать строку?
4 Lals1
 
02.11.06
22:49
открой в конфе этот документ. (который тебе нужен). Выбери форма - диалог в диалоге сделай выделеной табличную часть и в свойствах поставь галочку "автоматический ввод новой строки"
5 xxxkosta
 
02.11.06
22:50
уже сделал и работает, не догадался, хотя мысля насчет этого возникала
6 Lals1
 
02.11.06
22:50
(3)а зачем тебе ее активизировать?
7 Стрелок
 
02.11.06
22:51
(3) работал
8 xxxkosta
 
02.11.06
22:52
расскажи как ею пользоваться я попытался у меня не получилось. Строка прыгала в ТЧ, да и почему она работает из обработкиподбора, по другому никак?
9 Токс2
 
02.11.06
22:53
(2) А че, там это уже есть?
10 xxxkosta
 
02.11.06
22:54
и гле я могу найти более интересную книгу по 1с предприятие, просто у меня есть книги но они однотипные, хотелось бы почитать и посмотреть на реальные примеры
11 Стрелок
 
02.11.06
22:54
АктивизироватьСтроку(<?>);
Синтаксис:
АктивизироватьСтроку(<НомСтроки>)
Назначение:
Установить курсор на указанной строке  многострочной части документа.
Параметры:
<НомСтроки> - необязательный параметр. Номер строки, которую следует активизировать. Если параметр опущен, то активизируется текущая строка многострочной части документа.
Замечание:
Метод доступен только в Модуле формы документа и работает с документом доступным в локальном контексте.

АктивизироватьСтроку(<?>);
Синтаксис:
АктивизироватьСтроку(<НомСтроки>)
Назначение:
Установить курсор на указанной строке  многострочной части документа.
Параметры:
<НомСтроки> - необязательный параметр. Номер строки, которую следует активизировать. Если параметр опущен, то активизируется текущая строка многострочной части документа.
Замечание:
Метод доступен только в Модуле формы документа и работает с документом доступным в локальном контексте.

так что работает и там и там
12 Стрелок
 
02.11.06
22:55
(9) ну мне кажется есть...
13 xxxkosta
 
02.11.06
22:57
да нет , он так не пашет я и давал заранее новую строку не хочет.у меня в хелпе пишется он вызывается из под процедуры ОбработкаПодбора
14 Стрелок
 
02.11.06
23:00
(13) читай внимательно - "Номер строки, которую следует активизировать" - если ты с её помощью пытался активизировать новую строку - естественно не работает
15 xxxkosta
 
02.11.06
23:02
вот что я написал
Процедура Проокончанииредактированиястроки()
преме ч    
НоваяСтрока()
ч=количаствострок();
активизировать(ч)    
КонецПроцедуры

не работает
16 Стрелок
 
02.11.06
23:04
не вздумай это применять
17 xxxkosta
 
02.11.06
23:05
почему?
18 Токс2
 
02.11.06
23:05
Не удивительно...
19 Стрелок
 
02.11.06
23:06
(17) подумай что будет если юзер захочет отредактировать строку в документе?
20 xxxkosta
 
02.11.06
23:06
можно все это обойти и применить , но только через обработкуподбора
21 xxxkosta
 
02.11.06
23:07
да тут правильно. вдруг он захочет исправить одну и тут же создастся другая
22 xxxkosta
 
02.11.06
23:09
и еще подскажи как создавать на лету секции в таблице документа при печати. у меня есть примеры но я сам не догоняю
23 Стрелок
 
02.11.06
23:09
"на лету" это как?
24 xxxkosta
 
02.11.06
23:11
представь у меня зарезервировани несколько столобцов для такого же количества элементов, но вдруг добавляется еще элемент, и что б каждый раз не перерисовывать таблицу, можно добавить автоматически сецию (присоединитьсекцию()), просто напиши что выпаолняет каждый оператор
25 Стрелок
 
02.11.06
23:12
(24) глянь любую печатную форму в твоей конфигурации
26 xxxkosta
 
02.11.06
23:13
ну и
27 Стрелок
 
02.11.06
23:13
ВывестиСекцию(<?>); - выводит новую секцию с левого края на НОВОЙ строке
ПрисоединитьСекцию(<?>); - присоединяет секцию к последней выведенной (присоединённой) справа
28 xxxkosta
 
02.11.06
23:14
да но как это объясняется
Таб.ПрисоединитьСекцию("ОТ|ИтогоНач");
29 Стрелок
 
02.11.06
23:15
(28) до вертикальной черты - секция по горизонту, после - по вертикалу

а эта запись означает вывести секцию на пересечении указанных
30 xxxkosta
 
02.11.06
23:16
понятно, спасибо
мне просто никто этого не объяснял и поэтому до всего сам докумекиваю
31 xxxkosta
 
02.11.06
23:17
у тебя ася есть?
32 Стрелок
 
02.11.06
23:17
(30) Не вопрос - в карточке есть аська - если будут вопросы - милости прошу
33 xxxkosta
 
02.11.06
23:18
спаисбо за помощь
34 Стрелок
 
02.11.06
23:18
НМЗЩО
35 xxxkosta
 
02.11.06
23:25
Процедура Выполнить()
   Перем х, д, д1;
   
   хх=СоздатьОбъект("ТаблицаЗначений");
   хх.НоваяКолонка("КА", "Справочник.Контрагенты");
   хх.НоваяКолонка("Дог", "Справочник.Договора");
   
   СписТалонов=СоздатьОбъект("Документ.СписаниеТалонов");
   СписТалонов.ВыбратьДокументы(НачМесяца(Дата1), КонМесяца(Дата1));
   
   СФ1.ПорядокНаименований();
   СФ1.ВыбратьЭлементы();

   Д1=Строка(Лев(Дата1,2)+Сред(Дата1,4,2)+Прав(Дата1,2));
   ТЗ=СоздатьОбъект("ТаблицаЗначений");
   ТЗ.НоваяКолонка("Наименование","Строка",26,,"Наименование",);
   Пока СФ1.ПолучитьЭлемент()=1 Цикл
       Если Д1=Лев(СФ1.Наименование,6) Тогда
           ТЗ.НоваяСтрока();
           ТЗ.Наименование=Лев(СФ1.Наименование,21);
       КонецЕсли;
   КонецЦикла;
   
   ТЗ.ВыбратьСтроки();
   Пока СписТалонов.ПолучитьДокумент()=1 Цикл
       Пока СписТалонов.ПолучитьСтроку()=1 Цикл
           Хх.НоваяСтрока();
           Хх.КА = СписТалонов.Контрагент;
           Хх.Дог = СписТалонов.Договор;
       КонецЦикла;
       хх.Свернуть("КА, Дог",);
       хх.ВыбратьСтроки();
       Пока хх.ПолучитьСтроку()=1 Цикл
           Если хх.КА=Константа.СобстОрганизация Тогда
               Продолжить;
           КонецЕсли;
           Д=Строка(Лев(СписТалонов.ДатаДок,2)+Сред(СписТалонов.ДатаДок,4,2)+Прав(СписТалонов.ДатаДок,2));
           Д=Д+Строка(ДополнитьСтроку(СокрЛП(СписТалонов.НомерДок),0,5,1));
           Д=Д+ДополнитьСтроку(Хх.КА.Код,0,5,1);
           Д=Д+ДополнитьСтроку(Хх.Дог.Код,0,5,1);
           Д=Д+Строка("00000");
тут ошибка не находит-    Если ТЗ.НайтиЗначение(Д,х,"Наименование")=1 Тогда
               Продолжить;
           КонецЕсли;
           Если СФ1.НайтиПоНаименованию(Д,1,1)=1 Тогда
               Продолжить;
           Иначе
               СФ.Новый();
               СФ.Наименование=Д;
               СФ.Записать();
           КонецЕсли;
           Д="";
       КонецЦикла;
       хх.удалитьстроки();
   КонецЦикла;
КонецПроцедуры
36 Vippi
 
03.11.06
00:03
(36)
тут ошибка не находит-     Если ТЗ.НайтиЗначение(Д,х,"Наименование")=1 Тогда

х=0;
Если ТЗ.НайтиЗначение(Д,х,"Наименование")=1 Тогда

Ты так и говоришь, как пишешь? ;)
37 xxxkosta
 
03.11.06
00:26
в смысле
я это оставил стрелку, я его попросил просмотреть эту обработку, в с строке где написано про ошибку мне дает оператор 0, а нужно 1
38 Vippi
 
03.11.06
00:32
(37) Ты и правда говоришь, как пишешь.:))

Обнуляй переменную х для правильного приема найденной строки.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший