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