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

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

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

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

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

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

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

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

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

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


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

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



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

 

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

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

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

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

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

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

1 Comment

  1. DrAku1a

    Т.е. если надо заполнить 10 реквизитов — то 10 раз ищем предыдущий документ?! Жесть…

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *