Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Использование таблицы значений несколько раз за процедуру

v7: Использование таблицы значений несколько раз за процедуру
Я
   JuixyJes
 
20.05.19 - 11:39
Для заполнения данных макета используется несколько разных ТЗ. Можно ли использовать перезаполнение 1й ТЗ и брать данные из перезаполненной тз, если да, то как?
 
 
   JuixyJes
 
1 - 20.05.19 - 11:40
кл=ТекущийЭлемент();
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ТЗ.НоваяКолонка("ФИО");
    ТЗ.НоваяКолонка("РодственнаяСвязь");
    ТЗ.НоваяКолонка("ПолныхЛет");
    ТЗ.НоваяКолонка("ДатаРождения");
    спрдети=СоздатьОбъект("Справочник.Проживающие");
    спркл=СоздатьОбъект("Справочник.Клиенты");
    спрдети.ИспользоватьВладельца(кл);
    спрдети.ВыбратьЭлементы();  
    Пока спрдети.ПолучитьЭлемент()=1  Цикл
        возраст = (РабочаяДата() - спрдети.ТекущийЭлемент().ФизЛицо.ДатаРождения)/365;
        Если возраст < 14 Тогда
            ТЗ.НоваяСтрока();
            ТЗ.ФИО=спрдети.ТекущийЭлемент().ФизЛицо;    
            ТЗ.РодственнаяСвязь= спрдети.ТекущийЭлемент().Принадлежность ;
            возраст = (РабочаяДата() - спрдети.ТекущийЭлемент().ФизЛицо.ДатаРождения)/365;
            ТЗ.ПолныхЛет = Цел(возраст);
            ТЗ.ДатаРождения = спрдети.ТекущийЭлемент().ФизЛицо.ДатаРождения;
        КонецЕсли;
    КонецЦикла;
    стр=0;    
    Если ТЗ.ВыбратьСтроку(стр,"Выберите регистрируемого ребёнка") = 0 тогда
        Предупреждение("Не выбран ребенок") ;
        Возврат ;
    КонецЕсли; 
    ТЗ.УдалитьСтроки();
     
    ТЗ.НоваяСтрока();
    ТЗ.ФИО= кл.ФизЛицо;
    ТЗ.РодственнаяСвязь=кл.ФизЛицо.Родств;
    возрасткл = (РабочаяДата() - кл.ФизЛицо.ДатаРождения)/365;
    ТЗ.ПолныхЛет = Цел(возрасткл);
    ТЗ.ДатаРождения = кл.ФизЛицо.ДатаРождения;
    Пока спрдети.ПолучитьЭлемент()=1  Цикл 
        возраст = (РабочаяДата() - спрдети.ТекущийЭлемент().ФизЛицо.ДатаРождения)/365;
        Если (возраст > 18)   тогда 
            ТЗ.НоваяСтрока();
            ТЗ.ФИО=спрдети.ТекущийЭлемент().ФизЛицо;    
            ТЗ.РодственнаяСвязь=спрдети.ТекущийЭлемент().Принадлежность;
            ТЗ.ПолныхЛет = Цел(возраст);
            ТЗ.ДатаРождения = спрдети.ТекущийЭлемент().ФизЛицо.ДатаРождения;
        КонецЕсли;
    КонецЦикла;
    стр1=0;    
    Если ТЗ.ВыбратьСтроку(стр1,"Выберите законного предтавителя") = 0 тогда
        Предупреждение("Не выбран законный представитель.") ;
        Возврат ;
    КонецЕсли;
   JuixyJes
 
2 - 20.05.19 - 11:41
В обоих случаях результат одинаковый

ТЗ.ПолучитьЗначение(стр,1).ПолнНаименование = 
ТЗ.ПолучитьЗначение(стр1,1).ПолнНаименование =
   mikecool
 
3 - 20.05.19 - 11:42
1. можно
2. так же, как и до перезаполнения, изменения тз идет по ссылке
   JuixyJes
 
4 - 20.05.19 - 11:43
(3) а можно по подробнее?
   mikecool
 
5 - 20.05.19 - 11:45
(4)
ТЗ.ПолучитьЗначение(стр,1).ПолнНаименование = здесь старое значение
ТЗ.УстановитьЗначение(стр,1, "Новое значение")
теперь будет новое значение
только с синтаксисом я не помню
   HawkEye
 
6 - 20.05.19 - 11:48
(0) что в итоге то надо, в первой ТЗ все кто младше 14 во второй все кто старше 18?
   JuixyJes
 
7 - 20.05.19 - 11:50
(6) в первой тз выбирается младше 14 лет, во второй родитель этого младше, и как мне заполнить в макете и того и того используя перезаполнение тз, я не понимаю
   Mikeware
 
8 - 20.05.19 - 11:53
1с:инцест
   JuixyJes
 
9 - 20.05.19 - 12:00
(8) еще остроты будут? или Вы поможете?
   HawkEye
 
10 - 20.05.19 - 12:05
(7) т.е. ты сначала хочешь в макет засунуть все данные из ТЗ1, а потом в этот-же макет, под данными ТЗ1 добавить данные из ТЗ2, так?
   hhhh
 
11 - 20.05.19 - 12:05
(9) в твоем тексте вообще нет такого слова ПолнНаименование. Ты наверно хохмишь, произвольный кусок текста сюда фигакнула.
   JuixyJes
 
12 - 20.05.19 - 12:08
(11) ПолнНаименоваие - реквизит который имеется и у СПРКЛ и у СПРДЕТИ
   JuixyJes
 
13 - 20.05.19 - 12:09
(10) Ну тоесть сначала выбираю данные в ТЗ1 , выбираю данные в ТЗ2 а потом они заполняют макет.
   Bigbro
 
14 - 20.05.19 - 12:10
мой мозг взрывается от таких формулировок.
"брать данные из перезаполненной" - те что были до перезаполнения - нет нельзя. те что оказались после перезаполнения - разумеется можно, какая разница что там было раньше, создана была новая ТЗ или перезаполнена существующая.
не понимаю
   hhhh
 
15 - 20.05.19 - 12:11
(13) вам надо выбросить эту дебильную мысль из головы. Про одну ТЗ и так далее. Это наверно после выходных у вас. Используйте 2 ТЗ  - это гораздо кошернее.
   HawkEye
 
16 - 20.05.19 - 12:11
(13) ты имела ввиду, что выбираешь данные ИЗ ТЗ?
   JuixyJes
 
17 - 20.05.19 - 12:14
(16) Происходит это дело так:
1.Открывается ТЗ, заполненное данными, выбирается нужная строка.
2.ТЗ перезаполняется новыми данными, снова выбирается новая строка.
3.Макет заполняется значением первого выбора и значением второго выбора.
   Bigbro
 
18 - 20.05.19 - 12:16
(17) я бы предложил один раз перебрать справочник, и лучше запросом. выбираете жео дно и то же только с двумя условиями <14 или >18.
выборка выгружается в два списка (или ТЗ) для выбора значения с фильтром.
   JuixyJes
 
19 - 20.05.19 - 12:17
+ (17) и возможно ли это сделать используя одну ТЗ или все таки новую создавать надо?
   JuixyJes
 
20 - 20.05.19 - 12:19
(18) в две разных тз уже было сделано, но был предложен вариант использовать одну с перезаполнением, но как реализовать не сказали(
   Bigbro
 
21 - 20.05.19 - 12:21
судя по 3 пункту - в момент вывода соответствующей области макета ТЗ должна быть еще не испорчена. если перезаполняем ТЗ то надо вывести ту часть где использовались данные ТЗ, затем перезаполнить и выводить дальше области с данными из новой ТЗ.
потом показать()
   Bigbro
 
22 - 20.05.19 - 12:23
а если заполняется только значением выбора то ТЗ вообще не нужны - значения выбора запоминаем и их а не ТЗ используем для вывода. и все.
   JuixyJes
 
23 - 20.05.19 - 12:23
(21) сейчас попробую
   JuixyJes
 
24 - 20.05.19 - 12:25
(22) господи, гениально! Сама что-то не додумалась, предполагала, но не попробовала..
   Ёпрст
 
25 - 20.05.19 - 12:25
(0)
ТЗ.УдалитьСтроки();
зачет..
всё что делали первый раз - коту под хвост
   HawkEye
 
26 - 20.05.19 - 12:32
(17) ок. после первого цикла выбора что происходит? снова выбираем из первых данных?
если да, то откуда выбирать, если ты ТЗ перезаполнила другими данными?
   JuixyJes
 
27 - 20.05.19 - 12:43
(26) (25) Проблему решила, спасибо Bigbro!
   hhhh
 
28 - 20.05.19 - 12:43
(26) ну, в принципе (22) прав. Зачем вообще заполнять эти тз, если просто можно выбрать ребенка из справочника дети.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.