Создается
1. Справочник ГенДов с полями «От» (Дата), «Срок» (Дата) , «Кому» (Строка)
Подчиненность — «Клиент», Уровень — 1
2. Модифицируется форма Элемента «Клиент» — вставляется ТаблицаЗначений «ГенДов» и добавляется код
// =========================================================
Функция Ген_Дов()
ГенДов.УдалитьСтроки();
Спр = СоздатьОбъект(«Справочник.ГенДов»);
Спр.ИспользоватьВладельца(ТекущийЭлемент());
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
Если (Спр.ТекущийЭлемент().ПометкаУдаления() = 0) Тогда
ГенДов.НоваяСтрока();
ГенДов.Номер = Спр.ТекущийЭлемент().Наименование;
ГенДов.От = Спр.ТекущийЭлемент().Дата;
ГенДов.До = Спр.ТекущийЭлемент().Срок;
ГенДов.ФИО= Спр.ТекущийЭлемент().ФИО;
КонецЕсли;
КонецЦикла;
Возврат «»;
КонецФункции
3. Рядом в форме вставляется кнопка с кодом «ОткрытьФорму(«Справочник.ГенДов»)»
4. В теле модуля Расходного Документа находится процедура печати и в нее добавляется следующее
ГенДов=«»;
Спр = СоздатьОбъект(«Справочник.ГенДов»);
Спр.ИспользоватьВладельца(Клиент);
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент() = 1 Цикл
Если (ТекущаяДата() >= Спр.ТекущийЭлемент().Дата) И (ДатаДок <= Спр.ТекущийЭлемент().Срок) Тогда
ГенДов=ГенДов + СокрЛП(Спр.ТекущийЭлемент().Наименование) + » від «+Спр.ТекущийЭлемент().Дата + » на «+СокрЛП(Спр.ТекущийЭлемент().ФИО) + «;»; //+»№ «
Если (Нрег(Сред(ГенДов,1,3))<>«за «) Тогда
ГенДов=«За «+ГенДов;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ПустоеЗначение(ГенДов)=1
Тогда ГенДов=«Отримав » + СокрЛП(Получил) + » за дов. «+СокрЛП(ДовСерия) +» № «+ СокрЛП(ДовНомер) + » від «+ ДовДата;
// Иначе ГенДов=»за ген.дов.№ » + Клиент.ГенДов.Получить(ДатаДок).Наименование + » від «+ Клиент.ГенДов.Получить(ДатаДок).Дата +» на «+ Клиент.ГенДов.Получить(ДатаДок).ФИО;
КонецЕсли;
Место вывода в документе этой переменной, мне кажется, несложно..
Заполняется либо паспортными данными, либо собственно доверенностями.
Для «обычных» доверенностей рекомендую добавить в «Клиенте» 2 поля—счетчики
1.- К—во полученных доверенностей
2. — К—во отгруженных накладных.
Автоинкрементация — процесс несложный, выполняемый при проведении документа (с проверкой предыдущего состояния).
Процедура ОбработкаПроведения()
…..
Если Проведен()=0 Тогда
ТекКлиент = СоздатьОбъект(«Справочник.Клиенты»);
Если ТекКлиент.НайтиЭлемент(Клиент)<>0 Тогда
ТекКлиент.СчетчикРН=Клиент.СчетчикРН + 1;
ТекКлиент.Записать();
КонецЕсли;
КонецЕсли;
……
В моем случае пришлось еще модифицировать глобальный подуль — процедуры отмены проведения
Например
Процедура ПриОтменеПроведенияДокумента(Конт)
…..
Если Конт.ТекущийДокумент().Вид() = «РасходнаяНакладная» Тогда
ТекКлиент = СоздатьОбъект(«Справочник.Клиенты»);
Если ТекКлиент.НайтиЭлемент(Конт.ТекущийДокумент().Клиент)<>0 Тогда
ТекКлиент.СчетчикРН=Конт.ТекущийДокумент().Клиент.СчетчикРН — 1;
ТекКлиент.Записать();
КонецЕсли;
…..
Процедура ПриУдаленииДокумента(Докум, Режим)
…..
Если Докум.Вид() = «РасходнаяНакладная» Тогда
ТекКлиент = СоздатьОбъект(«Справочник.Клиенты»);
Если ТекКлиент.НайтиЭлемент(Докум.Клиент)<>0 Тогда
ТекКлиент.СчетчикРН=Докум.Клиент.СчетчикРН — 1;
ТекКлиент.Записать();
КонецЕсли;
КонецЕсли;
…..
Аналогично решается вопрос с инкрементацией дополнительного документа — Входящая доверенность.