Удобный выбор документа расчета в РМК. Розница 2.3

У клиента в РМК при нажатии кнопки «Документ расчета (Ctrl+F11)» показывается список документов, привязанный к контрагенту:

Но предварительные чеки пробиваются по заказам с сайта. Фамилии клиентов тут использовать неудобно, удобнее спользовать номер заказа. К тому же даже тут регистрация безналичной оплаты показывается без номера, требуется развернуть окно на весь экран.

Поэтому была сделана небольшая доработка, которая делает отбор по заказу клиента.

Регистрация оплаты связана с заказом по документу-основанию:

Я добавил в форму ФормаВыбораДокументаРасчета обработки РМКУправляемыйРежим поле выбора заказа клиента:

&НаСервере
Процедура дор_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
 	ДобавляемыеРеквизиты = Новый Массив;
    ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("дор_ЗаказПокупателя", Новый ОписаниеТипов("ДокументСсылка.ЗаказПокупателя"), , , Истина));
    ИзменитьРеквизиты(ДобавляемыеРеквизиты);

	Элемент = ЭтаФорма.Элементы.Добавить("дор_ЗаказПокупателя", Тип("ПолеФормы"), Элементы.ГруппаОбщая);
	Элемент.Вид = ВидПоляФормы.ПолеВвода;
	Элемент.ПутьКДанным = "дор_ЗаказПокупателя";
	Элемент.АвтоМаксимальнаяШирина = ложь;
	Элемент.Ширина = 12;
	//Элемент.РастягиватьПоГоризонтали = ложь;
	Элемент.Заголовок = "Заказ";
	Элемент.УстановитьДействие("ПриИзменении", "дор_ЗаказПокупателяПриИзменении");
	
	//Делаем все в одном стиле
	Элемент.Шрифт = Элементы.Контрагент.Шрифт;
	Элемент.ШрифтЗаголовка = Элементы.Контрагент.ШрифтЗаголовка;

КонецПроцедуры

Обратите внимание, шрифт поля и его заголовка копируется из другого элемента формы для единого стиля.

И при выборе этого поля оставляю только регистрации оплаты по этому заказу:

В данном примере было несколько тестовых регистраций оплаты, поэтому они выводятся все.

Код расширения выглядит так:

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

&НаСервере
Процедура дор_ФильтроватьСписокВыбораПоЗаказу(Заказ)
	
	КУдалению = Новый Массив(); //Здесьб будут лишние строки
	
	Для Каждого Строка ИЗ Список Цикл
		
		Если Заказ <> Строка.ЗаказПокупателя Тогда
			КУдалению.Добавить(Строка);
		КонецЕсли;

	КонецЦикла;
	
	//Удаляем лишние строки
	Для Каждого Строка Из КУдалению Цикл
		Список.Удалить(Строка);
	КонецЦикла;
	
КонецПроцедуры

Вот такие заплатки приходится делать, т.к. 1С мало думает об удобстве пользователей.

Среда: 2.3.10.61 Объем: 0.8 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

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