Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Обработка изменений в ТЧ и перезаполнение
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Constantus
Приветствую, форумчане!
УТ 10.3.14.1, 1с8.2, обычное

Пытаюсь сделать аналог обработки "ОбработкаТабличнойЧастиТовары"

Имеется самописный документ "ВозвратТоваровПоОрганизациям".
Имеется самописная обработка "ОбработкаПодборВозврата". Обработка отрабатывает все необходимые изменения. В обработке, реквизит "ДокументОбъект" стоит как ссылка на указанный документ.

На форме открываю обработку: (срабатывает нормально)

Процедура КоманднаяПанельТоварыДействие10(Кнопка)
    
    ИзменениеТабличнойЧастиТовары      = Обработки.ОбработкаПодборВозврата.Создать();
    ФормаИзменениеТабличнойЧастиТовары = ИзменениеТабличнойЧастиТовары.ПолучитьФорму(,ЭтаФорма);
    
    ФормаИзменениеТабличнойЧастиТовары.ДокументОбъект             = ЭтотОбъект;
    ФормаИзменениеТабличнойЧастиТовары.мФормаДокумента            = ЭтаФорма;

    ФормаИзменениеТабличнойЧастиТовары.Кому = Организация;
    ФормаИзменениеТабличнойЧастиТовары.ОтКого = ОрганизацияПолучателя;
    
    ФормаИзменениеТабличнойЧастиТовары.Склад = СкладКонтрагента;
    ФормаИзменениеТабличнойЧастиТовары.СкладНа = СкладОрдер;
    
    ФормаИзменениеТабличнойЧастиТовары.Открыть();//ОткрытьМодально();
    
КонецПроцедуры


ТЧ в основной форме и ТЧ обработки - полные аналоги, т.е. все реквизиты совпадают один-к-одному.

Пытаюсь завершить операцию изменений:

Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Сообщить(ДокументОбъект); // Не сообщает
    
   ДокументОбъект.Товары.Очистить(); // Не срабатывает


    ДокументОбъект[мИмяТабличнойЧастиДокумента].Очистить(); //Не срабатывает

    мФормаДокумента.Товары.Очистить();  //Работает
    
    ДокументОбъект.Товары.Очистить();
    Для Каждого СтрокаТаб из Товары Цикл
        Если СтрокаТаб.ДаНет Тогда
            НоваяСтрока = ДокументОбъект.Товары.Добавить();
            //НоваяСтрока.Количество= 5;
            ЗаполнитьЗначенияСвойств(НоваяСтрока,СтрокаТаб);
        КонецЕсли;      
    КонецЦикла;
    
    
    мФормаДокумента.ДоговорСПоставщиком = ДолговорПоставок; //Работает
    
    ЭтаФорма.Закрыть();
    

    
КонецПроцедуры


Никаких изменений не происходит. См ремарки против каждой строки.
Складывается впечатление, что "ДокументОбъект" либо не сохранился, либо стал пустым, либо я не правильно к нему обращаюсь.
Попытался сделать аналогично типовой обработки, но результатов также нет.

Подскажите, как правильно сделать данную обработку???

logist
Цитата(Constantus @ 15.10.16, 19:05) необходимо зарегистрироваться для просмотра ссылки
В обработке, реквизит "ДокументОбъект" стоит как ссылка на указанный документ.

Это должна быть не ссылка, а ДокументОбъект.

Проверяйте в ПередОткрытием чем заполнен ДокументОбъект
sava1
Цитата(Constantus @ 15.10.16, 19:05) необходимо зарегистрироваться для просмотра ссылки
Сообщить(ДокументОбъект); // Не сообщает

А что должно быть в сообщении ? документ скорее всего не записан.
Объект на то и объект - в ссылке ничего не поменяешь....

вот так отлично все работает

    ИначеЕсли ТипЗнч(ДокументОбъект) = Тип("ДокументОбъект.Продажа") Тогда    
            ТЧ = ДокументОбъект.ТабличнаяЧасть1;
            Если Фл Тогда
                Если ТЧ.Количество() > 0 Тогда
                    Ответ = Вопрос("Табличная часть уже содержит строки."
                                  + Символы.ПС + "При заполнении они будут удалены!" + Символы.ПС,
                                   РежимДиалогаВопрос.ДаНет);
                    Если Не Ответ = КодВозвратаДиалога.Да Тогда
                        Закрыть();
                        Возврат;
                    КонецЕсли;
                    ТЧ.Очистить();
                КонецЕсли;                
            КонецЕсли;
            //
            Для каждого стр Из ТабличнаяЧасть1 Цикл
                Если стр.ВыбКво=0 Тогда Продолжить;                
                КонецЕсли;
                нс = тч.Добавить();
                ЗаполнитьЗначенияСвойств(нс,стр);
logist
Цитата(sava1 @ 15.10.16, 19:25) необходимо зарегистрироваться для просмотра ссылки
А что должно быть в сообщении ? документ скорее всего не записан.
Объект на то и объект - в ссылке ничего не поменяешь....

Мы друг-друга не понимать smile.gif

Что вы поняли из этой фразы
Цитата
Проверяйте в ПередОткрытием чем заполнен ДокументОбъект

Constantus
Цитата(logist @ 15.10.16, 21:21) необходимо зарегистрироваться для просмотра ссылки
Это должна быть не ссылка, а ДокументОбъект.

Проверяйте в ПередОткрытием чем заполнен ДокументОбъект


В Реквизите формы обработки стоит
Наименование реквизита: ДокументОбъект
Тип ссылки: ссылки на соответствующие документы, которые используются для изменения ТЧ и из них вызывается эта обработка.

Перед открытием стоит тот же код, что и в типовой обработке "ОбработкаТабличнойЧастиТовары"

    // Если не установлено значения объекта редактируемого документа,
    // то форму обработки открывать не нужно.
    Если ДокументОбъект = Неопределено Тогда
        Отказ = Истина;
        Предупреждение("Не задан документ для обработки! "
                       + "Эта обработка вызывается из формы документа.", , Заголовок);
        Возврат;
    КонецЕсли;


Цитата
А что должно быть в сообщении ? документ скорее всего не записан
.
Да, документ не записан. Аналогично работе типовой обработки. Но Сообщить(ДокументОбъект) в типовой обработки всегда выводит соответствующее сообщение об объекте:
1. Если записан, то выводит полное наименование документа с номером и датой
2. Если не записан, то выводит только название нового открытого документа без номера.

В моём же случае, Документ объект вообще не проявляется (я так думаю). Вот и вопрос: почему в типовой обработке всё нормально, и что я делаю не так в своей???
Constantus
Цитата(logist @ 15.10.16, 21:21) необходимо зарегистрироваться для просмотра ссылки
Это должна быть не ссылка, а ДокументОбъект.

Проверяйте в ПередОткрытием чем заполнен ДокументОбъект



Благодарю!!! Действительно не обратил сразу внимание на наличие различных типов ссылок...
Пойду к окулисту схожу :-)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.