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