Доработка стандартного механизма ВПФ для отраслевой конфигурации ВДГБ: Ломбард 3.3.36.1 + сами печатные формы договоров и залогового билета.

02.06.15

Задачи пользователя - Адаптация типовых решений

Решил выложить начатые и не доведенные до ума в свое время наработки по данному релизу ВДГБ: Ломбард, редакция 3.3 (3.3.36.1). Надеюсь, кому-то могут быть полезными данные внешние печатные формы и методика внесения изменений в конфигурацию (да и вообще работе с этой конфигурацией).
Также тема была поднята на форуме ранее "Правильная модификация решения: механизм учета доп. характеристик и свойств, надстройки к механизму ВПФ Залоговый билет". Для хранения списка вещей конфигурацию пришлось править...

Скачать исходный код

Наименование Файл Версия Размер
ВДГБ_ВПФ_ЗалоговыйБилет
.epf 24,03Kb
12
.epf 1.0 24,03Kb 12 Скачать
ТестВДГБ_Ломбард_3_3_ВПФ_ЗАЯВЛЕНИЕ_ОБ_ОТКАЗЕ
.epf 11,46Kb
0
.epf 1.0 11,46Kb Скачать
ТестВДГБ_Ломбард_3_3_ВПФ_ПРОЧИЕ_УСЛОВИЯ_ДОГОВОРА_ЗАЙМА
.epf 11,96Kb
0
.epf 1.0 11,96Kb Скачать
Стандартная форма БО-7 (панель с кнопками обработка конфигурации)
.erf 24,11Kb
2
.erf 1.0 24,11Kb 2 Скачать
Служебная - для отладки ВПФ
.epf 8,11Kb
0
.epf 1.0 8,11Kb Скачать
Договор займа 2014 (версия)
.epf 11,45Kb
2
.epf 1.0 11,45Kb 2 Скачать
Договор залога
.epf 21,94Kb
3
.epf 1.0 21,94Kb 3 Скачать
Договор залога ПТС
.epf 11,49Kb
1
.epf 1.0 11,49Kb 1 Скачать
Измененные и добавленные объекты в отраслевую конфигурацию ВДГБ ломбард 3.3
.cf 309,96Kb
1
.cf 1.0 309,96Kb 1 Скачать

В продолжении темы поднятой ранее на форуме "Правильная модификация решения: механизм учета доп. характеристик и свойств, надстройки к механизму ВПФ Залоговый билет" по данному отраслевому решению выкладываю свои наработки (требующие серьезной отладки под Ваше решение). Камнем преткновения стала печатная форма Залогового билета. Особенность в том, что сам документ содержит очень много специфических данных, рассчитываемых по алгоритмам самого документа. Естественно, что все это дело вытащить без потерь функциональности без ошибок проблематично. Я поступил так:

1. Создал панель кнопок в документе (см рисунок 1).

Рисунок 1 - кнопки документа

 

2. Вставил в конфигурацию нижеприведенный код: 

//###Дор+

//Описание доработки: Вызов ВПФ для печати:
Процедура ДействияФормыпДоговорЗалога(Кнопка)
	ПечатьИзВПФ("ВДГБ_ВПФ_ДоговорЗалога"); // Приходится передавать ДокументОбъект!
КонецПроцедуры

Процедура ДействияФормыпЗалоговыйБилет(Кнопка)	
	ПечатьИзВПФ("ВДГБ_ВПФ_ЗалоговыйБилет"); // Приходится передавать ДокументОбъект!
КонецПроцедуры

Процедура ДействияФормыпДоговорЗайма2014(Кнопка)	
	ПечатьИзВПФ("ВДГБ_ВПФ_ДоговорЗайма2014"); // Приходится передавать ДокументОбъект!
КонецПроцедуры

Процедура ДействияФормыпДоговорЗалогаПТС(Кнопка)
	ПечатьИзВПФ("ВДГБ_ВПФ_ДоговорЗалогаПТС"); // Приходится передавать ДокументОбъект!
КонецПроцедуры


// Описание доработки: Вызывает данные функции из справочника ВПФ по строгому соответствию имени и передает им объект.
Процедура ПечатьИзВПФ(ИмяВПФ);
	СсылкаНаВПФ = Справочники.ВнешниеОбработки.НайтиПоНаименованию(ИмяВПФ);
	Если СсылкаНаВПФ.Пустая() Тогда
		Сообщить("В справочнике 'Внешние обработки' не нашли внешнюю печатную форму с наименованием '"+ИмяВПФ+"'");
		Возврат;
	КонецЕсли;
		
	Попытка
		ИмяВременногоФайла = КаталогВременныхФайлов()+"тмп_впф.epf";
	Исключение
		Сообщить ("Невозможно создать файл обработке в каталоге временных файлов <<"+
		+КаталогВременныхФайлов()+">>. Возможно, не хватает прав доступа в Windows в папку для данного сеанса 1С ");
		Возврат;
	КонецПопытки;	
	
	ДвоичныеДанные = СсылкаНаВПФ.ХранилищеВнешнейОбработки.Получить();		
	ДвоичныеДанные.Записать(ИмяВременногоФайла);
	
	Попытка
		ОбрОбъект = ВнешниеОбработки.Создать(ИмяВременногоФайла);
		ОбрОбъект.ДокОбъект = ЭтотОбъект; // НЕ исп. метод скопировать. Передать ТАК - особенности ВДГБ;
	Исключение
		Сообщить("Ошибка создания объекта из временного файла обработки "+ИмяВременногоФайла);
		Возврат;
	КонецПопытки;
	
	// Проба печати
	Попытка
		ТаблДок = ОбрОбъект.Печать();
		ТаблДок.Вывести();
	Исключение
		А=1; // Точка останова для отладки!
		Сообщить(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке() )); // ВНЕШНЮЮ печатную форму из справончика ВПФ можно спокойно поправить!
	КонецПопытки;	
			
КонецПроцедуры	
//###Дор- 

3. Создал "с нуля" ВПФ для залогового билета (и параллельно обычные ВПФ договоров ПТС и прочих без использования данного механизма (фрагменты тут в статье и приложениях в виде объектов конфигурации в *.cf и внешних отчетов и обработок. 

4. По залоговым вещам (вроде) добавил регистр сведений и еще что-то(см рисунки 2 и 3 по объектам учета)...


Рисунок 2 - вариант 1 с регистором сведений

Рисунок 3 - вариант 2 с регистром сведений

Далее, фрагменты кода из конфигурации:

 
Перем мУчетнаяПолитикаЛомбарда Экспорт; // Хранит настройки учетной политики ломбарда.

Перем мДокументОбъект Экспорт; // Хранит объект вызвавшего документа. СЮДА передадим для ЗалоговогоБИЛЕТА!

Перем мВалютаРегламентированногоУчета; // Хранит значение константы "Валюта регламентированного учета"

Перем мДанныеКредитования; 

Перем мСхема;

///Перем СсылкаНаОбъект;

//---------------

//---------------


Функция ПолучитьУсловияПоСхемеКредитования()
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.Период,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.СхемаКредитования,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ИзмерениеКредита,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ИзмерениеХранения,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ИзмерениеПросрочки,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ИзмерениеОценки,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ИзмерениеСнятияСРеализации,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ПериодКредита,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ПериодХранения,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ПериодПросрочки,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ВариантРасчетаСуммыЗаКредит,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ВариантРасчетаСуммыЗаХранение,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ВариантРасчетаСуммыЗаОценку,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ВариантРасчетаСуммыЗаПросрочку,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ЗаКредит,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ЗаХранение,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ЗаПросрочку,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ЗаОценку,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ЗаСнятиеСРеализации,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ОграничениеНачисленияЗаКредит,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.МинимальныйСрокКредит,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.МинимальныйСрокХранение,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.МинимальнаяСуммаКредит,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.МинимальнаяСуммаХранение,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ОснованиеРасчетаКредита,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ОснованиеРасчетаХранения,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ОснованиеРасчетаПросрочки,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ОснованиеРасчетаОценки,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.ОснованиеРасчетаСнятияСРеализации,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.УдалитьОтСуммыСсудыКредит,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.УдалитьОтСуммыСсудыХранение,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.УдалитьОтСуммыСсудыПросрочку,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.УдалитьОтСуммыСсудыОценку,
	|	ЛМБ_УсловияПредоставленияКредитаСрезПоследних.УдалитьОтСуммыСсудыСнятиеСРеализации
	|ИЗ
	|	РегистрСведений.ЛМБ_УсловияПредоставленияКредита.СрезПоследних(&ДатаДок, СхемаКредитования = &Схема) КАК ЛМБ_УсловияПредоставленияКредитаСрезПоследних";
	Запрос.УстановитьПараметр("ДатаДок", ДокОбъект.Дата);
	Запрос.УстановитьПараметр("Схема", ДокОбъект.СхемаКредитования);
	
	Результат = Запрос.Выполнить();
	Если Результат.Пустой() Тогда
		Сообщить("Ошибка получения схемы кредитования для документа (схема не установлена в документе) "+ДокОбъект);
		ВызватьИсключение("Ошибка получения схемы кредитования для документа"+ДокОбъект);
		Возврат Неопределено;
	КонецЕсли;
	
	Выборка = Результат.Выбрать();
	Выборка.Следующий(); // Точно есть один!
	
	Возврат Выборка;
	
КонецФункции	

Функция ПолучитьПроцентПоКредиту()
	Возврат мСхема.ЗаКредит;       
КонецФункции	

Функция ПолучитьПроцентЗаХранение()
	Возврат мСхема.ЗаХранение;
КонецФункции


Функция ПолучитьСтруктуруХарактеристикВещи (Вещь)
	Стр = Новый Структура("Имя, Значение"); // Имя и значение характерискик АВТО (если они есть)
	Если ТипЗнч(Вещь) <> Тип("СправочникСсылка.ЛМБ_ЗалоговыеВещи") Тогда
		Возврат Стр; // не тот тип 
	КонецЕсли;	
	
	Если Вещь.ПустаяСсылка() Тогда
		Возврат Стр; // пустая
	КонецЕсли;	
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ЗначенияСвойствОбъектов.Значение,
	|	ЗначенияСвойствОбъектов.Свойство КАК ДопРеквизит
	|ИЗ
	|	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
	|ГДЕ
	|	ЗначенияСвойствОбъектов.Объект = &Вещь
	|	И НЕ ЗначенияСвойствОбъектов.Свойство.ПометкаУдаления";
	Запрос.УстановитьПараметр("Вещь", Вещь);
	Результат = Запрос.Выполнить();
	Если Результат.Пустой() Тогда
		Возврат Стр; // Пусто или прав не хватило для прочтения(маловероятно) - тогда для ошибки периода исп. убрать РАЗРЕШЕННЫЕ
	КонецЕсли;	
	
	Выборка = Результат.Выбрать();
	Пока Выборка.Следующий() Цикл
		Стр.Вставить(Выборка.ДопРеквизит, Выборка.Значение);
	КонецЦикла;	
	
	Возврат Стр;
	
КонецФункции	

Функция ХарактеристикиВещиТекстомВВидеСписка (Вещь)
	стр = ""; // На выходе Марка машины: ГАЗ + переносСтроки и.т.д.
	Структ = ПолучитьСтруктуруХарактеристикВещи(Вещь);
	
	Если Структ.Количество() = 0 Тогда
		Возврат стр; // Вернем пустую строку
	КонецЕсли;
	
	Для каждого ЭлемСтр Из Структ Цикл
		Стр = Стр + ЭлемСтр.Ключ +": "+ЭлемСтр.Значение+Символы.ПС;
	КонецЦикла;	
	
	Возврат Стр;
	
КонецФункции	
 

Зачем ТАК спросите Вы? ВПФ все-таки проще править и заменить, чем лезть в конфигурацию. Хотя именно залоговый билет с глюками и пригодится как строительный материал программистам, которым по долгу службы в принудительном порядке или уже добровольно придется дорабатывать ТАКОЕ отраслевое решение.  Печатные формы кроме залогового билета (по ней основная сложность) могут быть работоспособны. 

Надеюсь, данная методика и материалы могут пригодиться.

P.S. Ниже буду приводить редкие материалы, посвященные разработе по данной тематике

- интересное решение //infostart.ru/public/205109/ - Подбор залоговых вещей в документ "Подготовка к продаже" в конфигурации "ВДГБ: Ломбард 3"

ВДГБ ломбард ВПФ расчет процентов займ отраслевая конфигурация печатная форма залоговый билет операция по залоговому билету ломбард

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4697    10    5    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3126    4    0    

20

Каждому менеджеру нужен свой Excel

Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    3026    dimanich70    6    

14

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1771    dimanich70    8    

14

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

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

1 стартмани

27.10.2023    2129    19    avmartynov    14    

44
Оставьте свое сообщение