helpf.pro
Регистрация

v8: Как в форме проверить заполнение реквизита мутабельного типа?

McCoy
15.11.2011 10:16Прочитано: 10061
В табличной части Состав с признаком ТолькоПросмотр есть поле ввода Документ мутабельного типа (ДокументСсылка.Заказ, ДокументСсылка.Накладная). Если поле Документ заполнено и имеет тип ДокументСсылка.Заказ, необходимо открыть форму этого документа для редактирования. Выкрутился так:

Код 1C v 8.х
 
Процедура СоставВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)

Если Колонка.Данные = "Документ" Тогда
Значение = ВыбраннаяСтрока.Документ;
Если НЕ Значение = Неопределено Тогда

Если ТипЗнч(Значение) = Тип("ДокументСсылка.Заказ") Тогда

ФормаДокумента = Значение.ПолучитьФорму();
ФормаДокумента.Открыть();

КонецЕсли;
КонецЕсли;
КонецЕсли;

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


Может кто-нибудь предложит более оптимальный (красивый) способ проверки заполнения поля выбора с мутабельного типа?
Изменено 15.11.11 10:18:48
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
15.11.2011 10:47Ответ № 1
например как-то так, должно работать:
Код 1C v 8.х
 Если Колонка.Данные = "Документ" Тогда
?(ТипЗнч(ВыбраннаяСтрока.Документ) = Тип("ДокументСсылка.Заказ"), ВыбраннаяСтрока.Документ.ПолучитьФорму().Открыть(), );
КонецЕсли;

Изменено 15.11.11 10:47:46
McCoy
15.11.2011 10:52Ответ № 2
Ты невнимательно прочитал. Если документ не заполнен - откроется форма пустого документа, а это не нужно
E_Migachev
15.11.2011 11:07Ответ № 3
(2) McCoy, тогда добавь еще в условие
Код 1C v 8.х
 и ЗначениеЗаполнено(ВыбраннаяСтрока.Документ)   
McCoy
15.11.2011 11:34Ответ № 4
(1) E_Migachev, не работает с мутабельным типом. Вызывается исключение.
E_Migachev
15.11.2011 11:36Ответ № 5
(4) McCoy, а точно *09, тогда через непределено или пустая ссылка
McCoy
15.11.2011 12:29Ответ № 6
(5) E_Migachev, ага. Еще момент. В табличной части (если быть точным до конца - в табличном поле) Состав у меня отображается РегистрСведенийСписок, одним из измерений которого является тот самый Документ. Пользователям запрещено вручную редактировать этот регистр, но они должны иметь возможность выбирать необходимый док и редактировать при необходимости. Но фишка в том, что некоторые Заказы могут быть удалены, и в регистре остаются записи с "битыми" ссылками. Естественно такие "документы" редактировать нельзя. Может кому-нибудь пригодится, выкрутился так:

Код 1C v 8.х
 
Процедура СоставВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)

Если Колонка.Данные = "Документ" Тогда
Значение = ВыбраннаяСтрока.Заказ;
Если НЕ Значение = Неопределено Тогда

Если ТипЗнч(Значение) = Тип("ДокументСсылка.Заказ") И НЕ Значение.Пустая() Тогда

// Проверка на несуществующую (битую) ссылку
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Заказ.Ссылка
|ИЗ
| Документ.Заказ КАК Заказ
|ГДЕ
| Заказ.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Значение);
Выборка = Запрос.Выполнить().Выбрать();

Если НЕ Выборка.Следующий() Тогда
Предупреждение("Документ удален!");
Возврат
КонецЕсли;

ФормаЗаказа = Значение.ПолучитьФорму();
ФормаЗаказа.Открыть();
КонецЕсли;
КонецЕсли;
КонецЕсли;

КонецПроцедуры
McCoy
15.11.2011 18:01Ответ № 7
Вопрос закрыт!
Подсказка: Для редактирования своего ответа щелкните по значку (справа)
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.