Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Записать реквизит табличной части документа из обработки.

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

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

              ЭтаФорма.Закрыть();
        //ИначеЕсли ТаблицаТоваров.Количество() <> 0 Тогда

        //    Сообщить("Не все товары отсканированы!")

        КонецЕсли;     
     КонецЦикла;
КонецПроцедуры
 
 
   hhhh
 
1 - 09.08.18 - 13:09
(0) что конкретно не получается?

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


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


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

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