Открывать документ «Заказ покупателя» в режиме «Только просмотр» при условии, что документ «Заказ покупателя» закрыт (Документом «Закрытие заказов покупателей»).

1. bluntschi 29.08.12 12:29 Сейчас в теме
Есть необходимость открывать документ «Заказ покупателя» в режиме «Только просмотр» при условии, что документ «Заказ покупателя» закрыт (Документом «Закрытие заказов покупателей»).
Я добавила в документ «Заказ покупателя» реквизит «ЗаказЗакрыт» тип Булево, добавила в процедуру «ПриОткрытии» проверку реквизита «ЗаказЗакрыт» на Ложь-Истина (при истине документ должен открываться только для чтения.)
В табличной части документа «Закрытие заказов покупателей» есть ссылка на документ «Заказ покупателя»
про проведении документа «Закрытие заказов покупателей» устанавливается значение реквизита документа «Заказ покупателя» «ЗаказЗакрыт» в Истина, а при отмене проведения документа «Закрытие заказов покупателей» устанавливается значение реквизита документа «Заказ покупателя» «ЗаказЗакрыт» в Ложь.

А можно ли сделать это через регистр сведений?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. AlX0id 29.08.12 12:33 Сейчас в теме
(1) bluntschi,
А можно ли сделать это через регистр сведений?

А зачем, если есть регистр накопления "Заказы покупателей/поставщиков"? Берете остаток по заказу - если ноль, закрываете, если не ноль - не закрываете.
bluntschi; +1 Ответить
3. ksb 29.08.12 12:53 Сейчас в теме
(1) bluntschi,

самый простой вариант
вставить при открытии формы

Если НЕ ЭтоНовый() И НЕ ТолькоПросмотр тогда 
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ЗаказПокупателя", Ссылка);
	Запрос.Текст = "ВЫБРАТЬ
	               |	ЗаказыПокупателейОстатки.ЗаказПокупателя,
	               |	ЗаказыПокупателейОстатки.КоличествоОстаток,
	               |	ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток,
	               |	ЗаказыПокупателейОстатки.СуммаУпрОстаток
	               |ИЗ
	               |	РегистрНакопления.ЗаказыПокупателей.Остатки(, ЗаказПокупателя = &ЗаказПокупателя) КАК ЗаказыПокупателейОстатки
	               |ГДЕ
	               |	(ЗаказыПокупателейОстатки.КоличествоОстаток <> 0
	               |			ИЛИ ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток <> 0
	               |			ИЛИ ЗаказыПокупателейОстатки.СуммаУпрОстаток <> 0)";
	резЗапроса = Запрос.Выполнить();				   
	ТолькоПросмотр = резЗапроса.Пустой();
КонецЕсли;	
Показать
Светлый ум; bluntschi; +2 Ответить
4. bluntschi 29.08.12 13:32 Сейчас в теме
спасибо за советы получилось, а как сделать так, чтобы на основании заказа покупателя не выводились другие документы, которые доступны для ввода на основании заказа покупателя?
5. ksb 29.08.12 13:46 Сейчас в теме
(4) bluntschi,

мне видятся на вскидку такие варианты

1. Глушить меню, долго, муторно и слишком будет много изменений, особенно заморочки с контекстным меню
головняк полный...

2. Подписка на запись объектов
в которой ищется связь (либо посредством анализа метаданных, либо ещё как то ...)
и в случае наличия ссылки в объекте на заказ отмена действия с выводом сообщения пользователю
6. AlX0id 29.08.12 17:02 Сейчас в теме
(4) bluntschi,
В подписке на событие ОбработкаЗаполнения попробуйте просто подставить тот же код и заглушить стандартную обработку.
Честно говоря, сам не пробовал, но чем черт не шутит.
7. rus123 24.09.12 10:54 Сейчас в теме
Если НЕ ЭтоНовый() И НЕ ТолькоПросмотр тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ЗаказПокупателя", Ссылка);
Запрос.Текст = "ВЫБРАТЬ
| ЗаказыПокупателейОстатки.ЗаказПокупателя,
| ЗаказыПокупателейОстатки.КоличествоОстаток,
| ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток,
| ЗаказыПокупателейОстатки.СуммаУпрОстаток
|ИЗ
| РегистрНакопления.ЗаказыПокупателей.Остатки(, ЗаказПокупателя = &ЗаказПокупателя) КАК ЗаказыПокупателейОстатки
|ГДЕ
| (ЗаказыПокупателейОстатки.КоличествоОстаток <> 0
| ИЛИ ЗаказыПокупателейОстатки.СуммаВзаиморасчетовОстаток <> 0
| ИЛИ ЗаказыПокупателейОстатки.СуммаУпрОстаток <> 0)";
резЗапроса = Запрос.Выполнить();
ТолькоПросмотр = резЗапроса.Пустой();
КонецЕсли;

Ругается на строчку РегистрНакопления.ЗаказыПокупателей.Остатки(, ЗаказПокупателя = &ЗаказПокупателя) КАК ЗаказыПокупателейОстатки
8. Zabba 25.09.12 16:58 Сейчас в теме
Еще конечно неплохо бы вставить в модуль при записи проверку - потому как при групповой обработке (если права есть) можно док откорректировать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот