Имя: Пароль:
1C
1С v8
Модифицированность() перед записью
,
0 Vladislava-smile
 
01.03.16
07:05
Есть ли возможность проверять не все реквизиты при данной проверке?
1 Записьдампа
 
01.03.16
07:10
ОбработкаПроверкиЗаполненияНаСервере
2 Vladislava-smile
 
01.03.16
07:29
Обычная форма, не хотелось бы перебирать все реквизиты, которые требуется проверять на модифицированность, так как их много, а вот исключить из проверки нужно только 2.
3 ILM
 
гуру
01.03.16
07:34
Разработчики типовых 1С, обычно записывает в переменные при открытии старые значения, а при записи сравнивают с новыми.
4 Vladislava-smile
 
01.03.16
07:36
(3) Ага, спасибо, попробую, просто в цикле перебрать все из метаданных, так? И записать в структуру например ...
5 s_newbi
 
01.03.16
07:44
(4) можно никуда не записывать старые значения,они и так записаны:
объект - текущие значения
объект.ссылка - старые
6 Vladislava-smile
 
02.03.16
03:39
(5) - Спасибо, кому интересно сделала так:

Изменены = Ложь;    
    // Проверка реквизитов
    Для каждого реквизит из ЭтотОбъект.Метаданные().Реквизиты Цикл
        Если реквизит.Имя <> "СогласованоКоммерческимОтделом" и реквизит.Имя <> "СогласованоФинансовымОтделом" тогда
            Если ЭтотОбъект[Реквизит.Имя] <> ЭтотОбъект.Ссылка[Реквизит.Имя] тогда
                Изменены = Истина;
            КонецЕсли;
        КонецЕсли;    
    КонецЦикла;
    
    // Проверка реквизитов ТЧ
    Для каждого ТЧ из ЭтотОбъект.Метаданные().ТабличныеЧасти Цикл
        ТЗОбъекта = ЭтотОбъект[ТЧ.Имя].Выгрузить();
        ТЗСсылкиНаОбъект = ЭтотОбъект.Ссылка[ТЧ.Имя].Выгрузить();
            Если ТЧ.Имя = "Товары" тогда
            ТЗОбъекта.Колонки.Удалить(14);
            ТЗСсылкиНаОбъект.Колонки.Удалить(14);
            КонецЕсли;
        ТЗОбъекта = ЗначениеВСтрокуВнутр(ТЗОбъекта);
        ТЗСсылкиНаОбъект = ЗначениеВСтрокуВнутр(ТЗСсылкиНаОбъект);
        Если ТЗОбъекта <> ТЗСсылкиНаОбъект Тогда
            Изменены = Истина;    
        КонецЕсли;
    КонецЦикла;
Возврат Изменены;
7 ЧеловекДуши
 
02.03.16
06:17
(2) Что значит Проверять на модифицированность?
Укажи, при модификации, что документ изменен и все :)
8 ЧеловекДуши
 
02.03.16
06:21
(6) Зачем?
Что это даст?
Вообще что даст этот гемор с анализом реквизитов?
Почему бы просто не указать "Модифицирован = Истина" и забить? :)

//...............
Если реквизит.Имя <> "СогласованоКоммерческимОтделом" и реквизит.Имя <> "СогласованоФинансовымОтделом" тогда

Хорошая проверка, зачем вообще метаданные? :)
9 su_mai
 
02.03.16
06:28
(0) А галочка "Изменяет данные..." у реквизита не поможет?
10 zak555
 
02.03.16
06:59
(3) нет, они пишут в дополнительныеСвойства старые движения
11 Vladislava-smile
 
02.03.16
11:08
Реквизит СогласованоКоммерческимОтделом, реквизит СогласованоФинансовымОтделом и ркуизит ТЧ товары СебестоимостьКорректировки не должны проверяться при записи.
12 ЧеловекДуши
 
02.03.16
11:17
(11) Сори, не обратил внимание
Но все же, "зачем? Зачем так извращаться?" так и по вис воздухе :)
13 Vladislava-smile
 
02.03.16
11:22
(12) - Сюда написала, так как был вопрос как проверять не все реквизиты, подсказали сравнением. Так и сделала.
14 Vladislava-smile
 
02.03.16
11:23
(12) Как придумала, так и написала )
15 ДемонМаксвелла
 
02.03.16
11:39
(11) такие вещи делают через регистр сведений, а не через реквизиты документа
16 Vladislava-smile
 
03.03.16
02:59
(15) А какая разница, простите, откуда проверять? Срабатывает этот код при проверке быстро. Хоть и в регистре быстрее было бы, конечно. Но создавать для этого новый ...