Заполнение реквизитов документов из предыдущего документа

Публикация № 995017

Программирование - Практика программирования

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

2
Функция для автоматического заполнения реквизитов документов.

В типовых в 8-ке есть механизм, который запоминает предыдущие выбранные значения в документах и автоматически подставляет их при создании новых. Удобно и полезно. 

Вспомнилось, что такую же вещь мы делали когда-то для своих конфигураций еще на 1С 7.7. 

С точки зрения затрат - минимум, но благодарности от бухгалтеров - максимум. 

Для начала пример использования: 

Склад = глВзятьРеквизитИзПредыдущегоДокумента(Вид(),ДатаДок,"Склад");

ОтпускРазрешил = глВзятьРеквизитИзПредыдущегоДокумента(Вид(),ДатаДок,"ОтпускРазрешил");

// Номер бланка строгой отчетности. 

Номер            = Число(глВзятьРеквизитИзПредыдущегоДокумента(Вид(),ДатаДок,"Номер")) + 1; 


//В процедуре ВводНаОсновании(), когда ряд реквизитов уже заполнен из основания, или просто в процедуре, например, ВыборКонтрагента

    ДеталиПлатежа = глВзятьРеквизитИзПредыдущегоДокумента(Вид(),ДатаДок,"ДеталиПлатежа","Контрагент",Контрагент);



//Ну и сама функция.

 

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

Список реквизитов определяется экономикой и логикой, поэтому универсального заполнения всего и вся не делали. 

Проверки на проведенный документ нет - потому что ряд документов в базе не проводится.

Можно добавить проверку на пометку на удаление, но это кусок из живой конфигурации, без "фотошопа". 

Цель публикации - увидел, сказал "о, надо брать" и сделать ctrl+c и ctrl+v.

Ну и попробовать первую публикацию на Инфостарт :) 

2

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. DrAku1a 1299 07.02.19 09:09 Сейчас в теме
Т.е. если надо заполнить 10 реквизитов - то 10 раз ищем предыдущий документ?! Жесть...
Оставьте свое сообщение