gifts2017

Ограничение на проведение реализаций по группе доступности складов в УТ 10.3

Опубликовал С Ф (pusix) в раздел Программирование - Практика программирования

В стандартной конфигурации УТ 10.3, настройка "группы доступности складов"  не накладывает ограничения на продажи с определённых складов.  Группа доступности складов позволяет наложить ограничение лишь на автоматическое размещение товаров в заказе покупателей, т.е. менеджер может вручную выбрать размещение и совершить продажу. Данная доработка исправляет эту ситуацию.

Доработка представляет собой дописку в конфигураторе в виде обработчика события проведения реализации. 


Итак, в конфигураторе добавляем новый модуль, например "Дописки" (либо вставляем обработчик в  модуль общего назначения), создаем подписку на событие источник - ДокументОбъект.РеализацияТоваровУслуг, событие ОбработкаПроведения и качестве обработчика указывает нашу процедуру, готово. Теперь пользователи могут проводить реализацию только с тех складов, доступ к которым они имеют. 


Группа доступности складов должна указываться в настройках пользователя, её отсутствие накладывает запрет на проведение реализации со всех складов. Для пользователей с полными правами данное ограничение не действует.

См. также

Подписаться Добавить вознаграждение

Комментарии

0. С Ф (pusix) 13.04.12 05:05
В стандартной конфигурации УТ 10.3, настройка "группы доступности складов" не накладывает ограничения на продажи с определённых складов. Группа доступности складов позволяет наложить ограничение лишь на автоматическое размещение товаров в заказе покупателей, т.е. менеджер может вручную выбрать размещение и совершить продажу. Данная доработка исправляет эту ситуацию.

Перейти к публикации

1. Дмитрий Бухалов (Re:аниматор) 13.04.12 05:05
Правильнее и лучше решить через RLS право "Изменение" через параметр сеанса "Доступные склады" как то так
2. alma soft (alma-soft) 04.06.12 16:41
спасибо автору за работу, мысль понравилась действительно редактирование документов по группам складов это актуально,
3. Денис Денисовский (апостол) 27.11.12 15:39
Спасибо большое автору, за работу.
4. Иван Титов (Ibrogim) 25.12.12 15:11
Не знаю как модераторы пропустили это!
1) вместо обработки, или кода во вложении скриншоты...
2) Хорошо, что во вложении нет кода, потому, что представленный на скриншотах, может нанести вред вашему мозгу.
Или возможно я отстал от жизни, и хорошим тоном считается теперь цикл в цикле с полным перебором, двойное разыменование, использование "Прервать" вместо "Возврат", отсутствие форматирования текста (Ctrl+a,Alt+Shift+F для автора)

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

Может пригодится кому нибудь, как альтернатива ЭТОЙ РАЗРАБОТКЕ.
5. Владимир Родионов (Балабас) 16.01.13 15:41
почему склады сравниваются по наименованию, а не по ссылке?
6. Александр Жерздев (Al777) 09.12.13 07:54
Использовал представленную информацию, чтобы у некоторых пользователей исключить доступность некоторых складов.
7. Владимир 777 (MyPuK_OLD) 10.09.14 11:47
(4) Ibrogim, А как быть если для перемещения надо что-то подобное?
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа