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