Поставлена задача, чтобы сделать реквизит "Подразделение" обязательным для заполнения + на одно условие.
Понимаю, что нужно лезть во все документы и менять код, но подумал, может есть возможность проверки на подписки на событие... Но там не нашел событие "ПриИзменении(Подразделение)"
Можете что-нить посоветовать? Вот код для проверки при выборе "правильного" подразделения (не должен быть главным подразделением) + Еще как-то включить проверку на пустоту...
Процедура ПодразделениеПриИзменении(Элемент)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Подразделения.Ссылка КАК Ссылка1, | Подразделения.Наименование, | Подразделения.ГруппаВыбора |ИЗ | Справочник.Подразделения КАК Подразделения |ГДЕ | Подразделения.ГруппаВыбора = ИСТИНА | И Подразделения.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Подразделение); Результат = Запрос.Выполнить(); Если НЕ Результат.Пустой() Тогда Сообщить("Данное подразделение является группой Подразделений. Использовать нельзя. Необходимо выбрать подразделение внутри этой группы."); Подразделение = Справочники.Подразделения.ПустаяСсылка(); Иначе // делайте что угодно КонецЕсли;
Если Не ЗначениеЗаполнено(Источник.Подразделение) Тогда Сообщить("Необходимо выбрать нужное подразделение!"); Отказ = Истина; КонецЕсли;
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Подразделения.Ссылка КАК Ссылка1, | Подразделения.Наименование, | Подразделения.ГруппаВыбора |ИЗ | Справочник.Подразделения КАК Подразделения |ГДЕ | Подразделения.ГруппаВыбора = ИСТИНА | И Подразделения.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Источник.Подразделение); Результат = Запрос.Выполнить(); Если НЕ Результат.Пустой() Тогда Сообщить("Данное подразделение является группой Подразделений. Использовать нельзя. Необходимо выбрать подразделение внутри этой группы."); Источник.Подразделение = Справочники.Подразделения.ПустаяСсылка(); Отказ = Истина; Иначе // делайте что угодно КонецЕсли;
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0
А как в таком случае сделать проверку по заполнению табличной части документа?
Нужно проверить РКО на статьи движения денежных средств, которые заполнены в табличной части документа. В данном случае у статей ДДС имеется реквизит "Отключена" и при проверке должно выйти сообщение, что типа низяяя...
Если Источник.РасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств.Отключена Тогда Сообщить("Данное статья снята с учета и не применяется." + Символы.ПС + "Необходимо выбрать активную статью."); Отказ = Истина; КонецЕсли;
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Подразделения.Ссылка КАК Ссылка1, | Подразделения.Наименование, | Подразделения.ГруппаВыбора |ИЗ | Справочник.Подразделения КАК Подразделения |ГДЕ | Подразделения.ГруппаВыбора = ИСТИНА | И Подразделения.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Источник.Подразделение); Результат = Запрос.Выполнить(); Если НЕ Результат.Пустой() Тогда Сообщить("Данное подразделение является группой Подразделений. Использовать нельзя. Необходимо выбрать подразделение внутри этой группы."); Источник.Подразделение = Справочники.Подразделения.ПустаяСсылка(); Отказ = Истина; Иначе // делайте что угодно КонецЕсли;
А какой смысл в этом куске кода? Просто любопытно.
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0
Vidocq05 @ Сегодня, 17:07
,
Справочник "Подразделение" у меня иерархический по элементам. По условиям "Головное" подразделение нельзя указывать, только те, что внутри этого подразделения.
Понимаю, что лучше сделать надо бы иерархию групп и элементов, но так уж сложились обстоятельства, что структуру справочника менять нельзя...
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | Подразделения.Ссылка КАК Ссылка1, | Подразделения.Наименование, | Подразделения.ГруппаВыбора |ИЗ | Справочник.Подразделения КАК Подразделения |ГДЕ | Подразделения.ГруппаВыбора = ИСТИНА | И Подразделения.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", Источник.Подразделение); Результат = Запрос.Выполнить(); Если НЕ Результат.Пустой() Тогда Сообщить("Данное подразделение является группой Подразделений. Использовать нельзя. Необходимо выбрать подразделение внутри этой группы."); Источник.Подразделение = Справочники.Подразделения.ПустаяСсылка(); Отказ = Истина; Иначе // делайте что угодно КонецЕсли;
Если у Вас нету ничего в "Иначе", тогда я думаю лучше сделать так:
Подразделение = Источник.Подразделение; Если Не ЗначениеЗаполнено(Подразделение) Тогда Сообщить("Необходимо выбрать нужное подразделение!"); Отказ = Истина; ИначеЕсли Подразделение.ГруппаВыбора = Истина Тогда Сообщить("Данное подразделение является группой Подразделений. Использовать нельзя. Необходимо выбрать подразделение внутри этой группы."); Источник.Подразделение = Справочники.Подразделения.ПустаяСсылка(); Отказ = Истина; КонецЕсли;
По сути одно и тоже, но вроде как понятнее и читабельнее.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!