Имя: Пароль:
1C
1С v8
Записать реквизит табличной части документа из обработки.
0 Crimscon
 
09.08.18
12:21
Есть обработка, которая при выходе проверяет, остались ли данные в табличной части обработки. И если не все, то выдает сообщение о том, что не все отсканировано. Но если данных в ТЧ нет, то она должна ставить флажок "отсканирован" в табличной части документа. В общем-то вопрос. Как это сделать?

Процедура ВыходНажатие(Элемент)
     Запрос = Новый Запрос;
     Запрос.Текст = "ВЫБРАТЬ
                    |    РейсоваяНакладнаяДокументыРейса.Отсканирован,
                    |    РейсоваяНакладнаяДокументыРейса.Контрагент
                    |ИЗ
                    |    Документ.РейсоваяНакладная.ДокументыРейса КАК РейсоваяНакладнаяДокументыРейса
                    |ГДЕ
                    |    РейсоваяНакладнаяДокументыРейса.Документ В(&Ссылка)";
    
     Запрос.УстановитьПараметр("Ссылка", Настройки.Ссылка.ДокументыРейса.ВыгрузитьКолонку("Документ"));
    
     Отсканирован = Запрос.Выполнить().Выгрузить();
    
     Для Каждого Клиент из Отсканирован Цикл     
         Если Клиент.Контрагент.Наименование = Настройки.Контрагент И Клиент.Отсканирован = ЛОЖЬ И ТаблицаТоваров.Количество() = 0 Тогда
             Клиент.Отсканирован = ИСТИНА;
             //Настройки.Ссылка.Записать();
              ЭтаФорма.Закрыть();
         //ИначеЕсли ТаблицаТоваров.Количество() <> 0 Тогда
         //    Сообщить("Не все товары отсканированы!")
        КонецЕсли;    
     КонецЦикла;
КонецПроцедуры
1 hhhh
 
09.08.18
13:09
(0) что конкретно не получается?

ПолучитьОбъект()  у этого документа, сделать нужные действия, потом Записать()
2 КонецЕсли
 
09.08.18
13:50
В запросе добавить
|    РейсоваяНакладнаяДокументыРейса.Ссылка как ссылка,


" Клиент.Отсканирован = ИСТИНА;" < - убрать


ДокОбъект=Клиент.ссылка.ПолучитьОбъект();
ДокОбъект.Отсканирован = ИСТИНА;
ДокОбъект.Записать();
3 Crimscon
 
09.08.18
13:52
Ссылка у меня получена в реквизите "Настройки". Всем спасибо, получилось вот так.

    Накладная = Настройки.Ссылка.ПолучитьОбъект();
    
    Если ТаблицаТоваров.Количество() = 0 Тогда
        Для Каждого Стр из Накладная.ДокументыРейса Цикл
            Если Стр.Контрагент.Наименование = Настройки.Контрагент Тогда                                        
                Стр.Отсканирован = Истина;
                Накладная.Записать();            
                ЭтаФорма.Закрыть();
            КонецЕсли;
        КонецЦикла;
    Иначе
        Сообщить("Не все товары отсканированы!");
        ЭтаФорма.Закрыть();        
    КонецЕсли;
4 КонецЕсли
 
09.08.18
13:52
(2) + Ошибся. У тя галка в ТЧ.
5 КонецЕсли
 
09.08.18
13:55
(3) Записать() надо один раз, а не в цикле.
Проверяй Модифицированность()  и Записать() после цикла.
6 hhhh
 
09.08.18
14:36
(5) да у него всё равно ЭтаФорма.Закрыть(); потом.