Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Обработка изменений в ТЧ и перезаполнение          
Constantus Подменю пользователя
сообщение 15.10.16, 18:05
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Приветствую, форумчане!
УТ 10.3.14.1, 1с8.2, обычное

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

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

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

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

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


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

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

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


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

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

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


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

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


logist Подменю пользователя
сообщение 15.10.16, 18:21
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

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

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

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

sava1 Подменю пользователя
сообщение 15.10.16, 18:25
Сообщение #3

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Цитата(Constantus @ 15.10.16, 19:05) *
Сообщить(ДокументОбъект); // Не сообщает

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

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

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

logist Подменю пользователя
сообщение 15.10.16, 18:34
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(sava1 @ 15.10.16, 19:25) *
А что должно быть в сообщении ? документ скорее всего не записан.
Объект на то и объект - в ссылке ничего не поменяешь....

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

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



Signature
Личные бесплатные консультации не даю, для этого есть форум!

Constantus Подменю пользователя
сообщение 17.10.16, 7:11
Сообщение #5

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Цитата(logist @ 15.10.16, 21:21) *
Это должна быть не ссылка, а ДокументОбъект.

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


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

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

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


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

В моём же случае, Документ объект вообще не проявляется (я так думаю). Вот и вопрос: почему в типовой обработке всё нормально, и что я делаю не так в своей???

Constantus Подменю пользователя
сообщение 17.10.16, 8:49
Сообщение #6

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Цитата(logist @ 15.10.16, 21:21) *
Это должна быть не ссылка, а ДокументОбъект.

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



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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 25.04.24, 8:04
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!