согласование заказа покупателя в ут 11.2согласование заказа покупателя в ут 11.2

Задача:

Согласование нужно только для определенных контрагентов.

Возможно условия согласования потом еще добавятся.

Хочет просто - пользователь с правами "ОтделР" и полными правами видит флажок "согласован" в заказе покупателя, если контрагент избран для согласования.

Он может установить галочку, что будет означать что заказ согласован.

Хочет потом отчет в котором отобразятся согласованные и не согласованные заказы покупателя.

Реализация:

добавляем в объект «заказКлиента» реквизит заказСогласован = булево

и вытаскиваем на форму.

Док «заказКлиента» модуль формы «при открытии» меняем на


&наСервере

функция рольОтделРдоступна()
если РольДоступна("ОтделР") тогда возврат истина иначе возврат ложь; конецЕсли;
конецфункции

&НаКлиенте
Процедура ПриОткрытии(Отказ)
МенеджерОборудованияКлиент.ПодключитьОборудованиеПриОткрытииФормы(ЭтаФорма, "СканерШтрихкода");
// если роль отделР доступна то показываем "согласован"
если рольОтделРдоступна()тогда Элементы.ЗаказСогласован.Видимость=истина
иначе
Элементы.ЗаказСогласован.Видимость=ложь;
конецЕсли;

Создаем регстр сведений «согласование документов»

измерение — партнер («справочники.партнеры»)

реквизит СогласовыватьЗаказПокупателя — («булево») по умолчанию истина.

Подсистемы — управления торговлей и продажи — проведение сделок

Права:

базовые права ут, бухгалтер, нач смены, нач производства — чтение, просмотр

отделР, полныеПрава — все права

Документ «заказКлиента» - приИзмененииПартнера меняем на

&насервере
Процедура требуетсяСогласованиеЗаказа()
запрос=новый запрос;
запрос.Текст= "ВЫБРАТЬ
| согласованиеДокументов.СогласовыватьЗаказПокупателя
|ИЗ
| РегистрСведений.согласованиеДокументов КАК согласованиеДокументов
|ГДЕ
| согласованиеДокументов.Партнер = &партнер" ;
запрос.УстановитьПараметр("партнер",объект.Партнер);
если запрос.Выполнить().Пустой() тогда Объект.заказСогласован=истина; возврат; конецЕсли;
рез=запрос.Выполнить().Выбрать();
рез.Следующий();
если рез.согласовыватьЗаказПокупателя тогда Объект.заказСогласован=ложь;
иначе
Объект.заказСогласован=истина;
конецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура ПартнерПриИзменении(Элемент)
Если Не ЗначениеЗаполнено (Объект.Партнер) Тогда
ДоставкаТоваровКлиентСервер.ОчиститьРеквизитыДоставки(Элементы,Объект);
Возврат;
КонецЕсли;
ПриИзмененииПартнераСервер();
СкидкиНаценкиКлиент.СброситьФлагСкидкиРассчитаны(ЭтаФорма);
Если ЗначениеЗаполнено(Объект.Соглашение) И ИспользоватьСоглашенияСКлиентами Тогда
ПродажиКлиент.ОповеститьОбОкончанииЗаполненияУсловийПродажПоУмолчанию();
КонецЕсли;

// согласование заказа
// проверяем нужно ли согласование заказа покупателя с этим партнером
требуетсяСогласованиеЗаказа();
КонецПроцедуры

Если заказ клиента сделан методом копирования или менеджеры хотят подредактировать старый док, то будет проблема т. к. галочка «заказСогласован» ставится только при выборе партнера поэтому нужно:

1 в процедуру ПередЗаписью в самое начало добавить строчку вызова проц СогласованиеЗаказаПриЗаписиДокумента();


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

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
// согласование заказа Дмитрий
СогласованиеЗаказаПриЗаписиДокумента();
// конец согласование заказа Дмитрий

док. «заказКлиента» - модуль объекта — при проведении

в самое начало добавляем.

 
// если не согласован - отказ
если НЕ ЗаказСогласован тогда сообщить("необходимо согласовать документ"); отказ=истина; возврат; конецЕсли;

в заказеКлиента-права. Для роли ОтделР добавить изменение, проведение, редактирование, интерактивное проведение оперативное и не оперативное, интерактивная отмена проведения.

в результате получаем:

вот так согласование выглядит в заказе покупателя