Имя: Пароль:
1C
1С v8
Как делать запись одним документом в 2 регистра сведений по перечислениям
,
0 Ksor
 
26.12.21
22:56
Здравствуйте, недавно начал программировать в 1С, подскажите как записывать данные в два регистра сведений при проведении 1 документа, только в 1 регистр сведений данные должны идти если человеку объявлено взыскание, а в другой если человеку объявлены поощрения
1 Ненавижу 1С
 
гуру
26.12.21
22:57
(0) условный оператор
2 Ksor
 
26.12.21
23:03
Я понимаю что надо делать через условный оператор, только что мне нужно указать после ЕСЛИ в условии, что бы указать что если поощрение то записывать в этот регистр, а если иначе то в другой?

         Если  тогда
        Движение = Движения.Поощрения.Добавить();
        Движение.Дата = Дата;
        Движение.ФизическоеЛицо = ТекСтрокаТабличнаяЧасть1.ФизическоеЛицо;
        Движение.ВидПоощрения = ТекСтрокаТабличнаяЧасть1.ВидПоощренияВзыскания;
        Движение.ДокументПоощрения = Номер;
        
        // регистр Взыскания
        Иначе
        Движение = Движения.Взыскания.Добавить();
        Движение.Период = Дата;
        Движение.ФизическоеЛицо = ТекСтрокаТабличнаяЧасть1.ФизическоеЛицо;
        Движение.ВидВзыскания = ТекСтрокаТабличнаяЧасть1.ВидПоощренияВзыскания;
        Движение.ДокументВзыскания = ТекСтрокаТабличнаяЧасть1.ДокументСнимаемогоВзыскания;
        Движение.Активно = ИСТИНА;
        Движение.ДокументПоощрения = Номер;
    КонецЕсли;
    КонецЦикла;
3 Ненавижу 1С
 
гуру
26.12.21
23:10
(2) а как отличить взыскание от поощрения?
4 Ksor
 
26.12.21
23:13
Есть перечисления ТипыПоощренийВзысканий в них два значение Поощрение и Взыскания, в документе есть реквизит ТипыПоощренияВзыскания ссылочного типа на перечисления
5 Ksor
 
26.12.21
23:14
т.е. при заполнении документа я указываю что это Поощрение или Взыскание
6 acanta
 
26.12.21
23:18
А где вы видели цикл?
7 Ksor
 
26.12.21
23:21
Вот начало

Движения.Поощрения.Записывать = Истина;
    Движения.Взыскания.Записывать = Истина;
    Для Каждого ТекСтрокаТабличнаяЧасть1 Из ТабличнаяЧасть1 Цикл
        
        // регистр Поощрения
        Если  тогда
        Движение = Движения.Поощрения.Добавить();
        Движение.Дата = Дата;
8 acanta
 
26.12.21
23:24
А почему вы не хотите сделать две табличные части, отдельно поощрения и отдельно взыскания и перечисления не нужно?
9 Ksor
 
26.12.21
23:25
Задание такое
10 acanta
 
26.12.21
23:26
А почему вы не назвали табличную часть, раз уж она у вас одна как нибудь Начисления или ПоощренияВзыскания, раз уж задание такое..
11 Ненавижу 1С
 
гуру
26.12.21
23:41
Если ТвойРеквизит=Перечисления.ТипыПоощренийВзысканий.Поощрение Тогда
...
ИначеЕсли ТвойРеквизит=Перечисления.ТипыПоощренийВзысканий. Взыскание Тогда
...

Называйте реквизиты и переменные более осмысленно, вам это ещё и читать возможно придётся через некоторое время
12 Ksor
 
26.12.21
23:47
Большое спасибо, все получилось!