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

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