Имя: Пароль:
1C
1С v8
Перезаполнение табличной части документа при проведении документа-основания
0 NovichokAlena
 
15.03.16
10:42
Доброго времени суток. При проведении документа "Реализация товаров и услуг" нужно автоматически создавать документ "Приходный ордер на товары". с этим проблем не возникло. а как перезаполнить ТЧ "ПрихОрдера", если документ реализации был изменен? и в каком месте должен прописываться код?

1с 8.3,   УПП 1.3 (1.3.24.2)

Вот код добавления документа "ПрихОрдера" при проведении реализации:

Если НЕ Отказ Тогда
        Если ЭтотОбъект.Организация = Справочники.Организации.НайтиПоКоду("000000009") И ЭтотОбъект.Контрагент = Справочники.Контрагенты.НайтиПоКоду("000000001") Тогда
            ЭтотОбъект.УтвержденоДиректором = Истина;
            ЭтотОбъект.Записать();
            ЗапросОснование = Новый запрос;
            ЗапросОснование.Текст = "ВЫБРАТЬ
                                |ПриходныйОрдерНаТовары.Ссылка
                                |ИЗ
                                |Документ.ПриходныйОрдерНаТовары КАК ПриходныйОрдерНаТовары
                                |ГДЕ
                                |НЕ ПриходныйОрдерНаТовары.ПометкаУдаления
                                |И ПриходныйОрдерНаТовары.Основание = &Основание";
            ЗапросОснование.УстановитьПараметр("Основание", Ссылка);
            Результат = ЗапросОснование.Выполнить().Выбрать();
            
            Если Результат.Количество() = 0 Тогда        
                новДокПрихОрдер = Документы.ПриходныйОрдерНаТовары.СоздатьДокумент();
                новДокПрихОрдер.Основание = ЭтотОбъект.Ссылка;
                новДокПрихОрдер.Дата = НачалоДня(ЭтотОбъект.Дата);
                новДокПрихОрдер.Организация = Справочники.Организации.НайтиПоКоду("000000002");
                новДокПрихОрдер.Склад = Справочники.Склады.НайтиПоКоду("000000031");
                новДокПрихОрдер.Контрагент = Справочники.Контрагенты.НайтиПоКоду("000000075");
                новДокПрихОрдер.Подразделение = ЭтотОбъект.Подразделение;
                новДокПрихОрдер.Ответственный = ЭтотОбъект.Ответственный;
                                
                Для каждого стр Из Товары Цикл
                    новСтр = новДокПрихОрдер.Товары.Добавить();
                    ЗаполнитьЗначенияСвойств(новСтр, стр);
                КонецЦикла;
                
                
                новДокПрихОрдер.БезПраваПродажи = Истина;
                новДокПрихОрдер.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
                
                
                Сообщить("Создан документ Приходный ордер на товары "+новДокПрихОрдер.Номер+" от "+новДокПрихОрдер.Дата);
            КонецЕсли;
            
            
КонецЕсли;
        КонецЕсли;
1 Rie
 
15.03.16
11:38
(0) Можно точно там же, где и при автоматическом создании, но с отложенным проведением документов.
Но, на мой непросвещённый взгляд, не стоит идти по этому пути.
2 George Wheels
 
15.03.16
11:46
Лучше в форме списка "Приходный ордер на товары" добавить колонку "Изменено основание" и если такое изменение было, то выделить строку например красным. Понятно, что периодически нужно туда заглядывать, чего многие юзвери делать не хотят, но иначе придётся программисту искать почему остатки не идут.
3 Rie
 
15.03.16
11:49
(2) Может заглядывать регламентное задание.