Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка при проведении документа
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
Alex007
Здравствуйте. Необходимо было сделать, чтобы при изменении в уже проведенной Приходной накладной копировались изменения табл.части в подчиненной "РасходнаяНакладная_1". Были дописаны соответствующие условия В КОНЦЕ Модуля документа. Теперь возникает проблема при системном проведении доков ("Операции-Проведение документов"):

Док.ВыбратьПодчиненныеДокументы(НачГода(ТекущаяДата()),,ТекущийДокумент());
{Документ.Т_ПриходнаяНакладная.Модуль Документа(882)}: Не выбран документ!

При обычном проведении Приходной из журнала все нормально. Где накосячил подскажите.

    
Конец Процедуры  //ОбработкаПроведения()

Спр = СоздатьОбъект("Справочник.Контрагенты");
                Док = СоздатьОбъект("Документ");

    Док.ВыбратьПодчиненныеДокументы(НачГода(ТекущаяДата()),,ТекущийДокумент());
    
  Пока Док.ПолучитьДокумент()=1 Цикл
      
    Если Док.Вид()="Т_РасходнаяНакладная1"  Тогда  
        Док.удалитьСтроки();
        ТаблЧ = СоздатьОбъект("ТаблицаЗначений");
            ВыгрузитьТабличнуюЧасть(ТаблЧ);
        
            Док.ЗагрузитьТабличнуюЧасть(ТаблЧ);
        
            док.Записать();
            док.Провести();
        КонецЕсли;
        
  КонецЦикла;
Acid
Если переместить этот блок в процедуру ОбработкаПроведения, ошибка выскакивает?
Alex007
Цитата(Acid @ 09.10.15, 13:48) необходимо зарегистрироваться для просмотра ссылки
Если переместить этот блок в процедуру ОбработкаПроведения, ошибка выскакивает?


Тогда ругается на Док.Провести() , т.е. на попытку проведения другого документа
nysysimara
Цитата(Alex007 @ 09.10.15, 12:51) необходимо зарегистрироваться для просмотра ссылки
Тогда ругается на Док.Провести() , т.е. на попытку проведения другого документа

можна обойти это:
вместо Док.Провести() вызвать внешнюю обработку, в которой провести подчиненный док
Alex007
Цитата(nysysimara @ 09.10.15, 14:02) необходимо зарегистрироваться для просмотра ссылки
можна обойти это:
вместо Док.Провести() вызвать внешнюю обработку, в которой провести подчиненный док


не совсем понимаю, как во внешней обработке прописать, что нужно провести подчиненный именно этому текущему документу, так же надо прописать диапазон выборки подчиненных документов привязанный к дате текущего документа, чтобы не лопатить всю базу в выборке
nysysimara
передаете в обработку ссылку на док, а внутри проводите
например:
  
Если Док.Вид()="Т_РасходнаяНакладная1"  Тогда  
    Док.удалитьСтроки();
    ТаблЧ = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТаблЧ);
        
    Док.ЗагрузитьТабличнуюЧасть(ТаблЧ);
        
    док.Записать();
    ОткрытьФорму("Обработка",Док.ТекущийДокумент(),КаталогИБ() + "ExtForms\ПровестиТ_РасходнаяНакладная1.ert");
            
КонецЕсли;

а в обработке
Процедура ПриОткрытии()     
    Если ПустоеЗначение(Форма.Параметр) = 0 Тогда      
        Док = СоздатьОбъект("Документ.Т_РасходнаяНакладная1");
        Док.НайтиДокумент(Форма.Параметр);
        Док.Провести();
        СтатусВозврата(0);
    КонецЕсли;
КонецПроцедуры
Alex007
сделал не внешнюю, а в конфигурацию вставил обработку
ОткрытьФорму("Обработка.ПровестиРасх1",Док.ТекущийДокумент());



не получилось обойти
{Обработка.ПровестиРасх1.Форма.Модуль(6)}: Данная операция недоступна при проведении документа!
Домовик
концептуально как-то неверно получается. еще в процессе перепроведения приходной уже перепроводится расходная....

по идее, при проведении расходной вы только должны куда-то занести информацию, что нужно поменять состав табличной части у соотв. расходной.
nysysimara
Цитата(Alex007 @ 09.10.15, 16:09) необходимо зарегистрироваться для просмотра ссылки
не получилось обойти

{Обработка.ПровестиРасх1.Форма.Модуль(6)}: Данная операция недоступна при проведении документа!


да, вспомнила, обработку по проведению подчиненного дока я вызывала не из модуля проведения основного,
а вешала на кнопку "Провести" на форме документа.
Соответственно это действие выполнялось только при интерактивном нажатии на кнопку,
а при системном проведении доков, подчиненные не перепроводились.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.