Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)
Поставлена задача, чтобы сделать реквизит "Подразделение" обязательным для заполнения + на одно условие.
Понимаю, что нужно лезть во все документы и менять код, но подумал, может есть возможность проверки на подписки на событие... Но там не нашел событие "ПриИзменении(Подразделение)"
Можете что-нить посоветовать? Вот код для проверки при выборе "правильного" подразделения (не должен быть главным подразделением) + Еще как-то включить проверку на пустоту...
Процедура ПодразделениеПриИзменении(Элемент)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Подразделения.Ссылка КАК Ссылка1,
| Подразделения.Наименование,
| Подразделения.ГруппаВыбора
|ИЗ
| Справочник.Подразделения КАК Подразделения
|ГДЕ
| Подразделения.ГруппаВыбора = ИСТИНА
| И Подразделения.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Подразделение);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Сообщить("Данное подразделение является группой Подразделений. Использовать нельзя. Необходимо выбрать подразделение внутри этой группы.");
Подразделение = Справочники.Подразделения.ПустаяСсылка();
Иначе
// делайте что угодно
КонецЕсли;
КонецПроцедуры
Constantus @ Today, 9:57
,
Не существует подписок на события формы и ее элементов.
andreydv87 @ Сегодня, 13:44
,
Ага... так и сделал... Знал бы раньше, жил бы
Процедура ПроверкаПодразделенияПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
Если Не ЗначениеЗаполнено(Источник.Подразделение) Тогда
Сообщить("Необходимо выбрать нужное подразделение!");
Отказ = Истина;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Подразделения.Ссылка КАК Ссылка1,
| Подразделения.Наименование,
| Подразделения.ГруппаВыбора
|ИЗ
| Справочник.Подразделения КАК Подразделения
|ГДЕ
| Подразделения.ГруппаВыбора = ИСТИНА
| И Подразделения.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Источник.Подразделение);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Сообщить("Данное подразделение является группой Подразделений. Использовать нельзя. Необходимо выбрать подразделение внутри этой группы.");
Источник.Подразделение = Справочники.Подразделения.ПустаяСсылка();
Отказ = Истина;
Иначе
// делайте что угодно
КонецЕсли;
А как в таком случае сделать проверку по заполнению табличной части документа?
Нужно проверить РКО на статьи движения денежных средств, которые заполнены в табличной части документа. В данном случае у статей ДДС имеется реквизит "Отключена" и при проверке должно выйти сообщение, что типа низяяя...
Процедура ПроверкаСтатьиДДСПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
// Вставить содержимое обработчика.
Если Источник.РасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств.Отключена Тогда
Сообщить("Данное статья снята с учета и не применяется." + Символы.ПС + "Необходимо выбрать активную статью.");
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Подразделения.Ссылка КАК Ссылка1,
| Подразделения.Наименование,
| Подразделения.ГруппаВыбора
|ИЗ
| Справочник.Подразделения КАК Подразделения
|ГДЕ
| Подразделения.ГруппаВыбора = ИСТИНА
| И Подразделения.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Источник.Подразделение);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Сообщить("Данное подразделение является группой Подразделений. Использовать нельзя. Необходимо выбрать подразделение внутри этой группы.");
Источник.Подразделение = Справочники.Подразделения.ПустаяСсылка();
Отказ = Истина;
Иначе
// делайте что угодно
КонецЕсли;
Vidocq05 @ Сегодня, 17:07
,
Справочник "Подразделение" у меня иерархический по элементам.
По условиям "Головное" подразделение нельзя указывать, только те, что внутри этого подразделения.
Понимаю, что лучше сделать надо бы иерархию групп и элементов, но так уж сложились обстоятельства, что структуру справочника менять нельзя...
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Подразделения.Ссылка КАК Ссылка1,
| Подразделения.Наименование,
| Подразделения.ГруппаВыбора
|ИЗ
| Справочник.Подразделения КАК Подразделения
|ГДЕ
| Подразделения.ГруппаВыбора = ИСТИНА
| И Подразделения.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Источник.Подразделение);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Сообщить("Данное подразделение является группой Подразделений. Использовать нельзя. Необходимо выбрать подразделение внутри этой группы.");
Источник.Подразделение = Справочники.Подразделения.ПустаяСсылка();
Отказ = Истина;
Иначе
// делайте что угодно
КонецЕсли;
Процедура ПроверкаПодразделенияПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
Подразделение = Источник.Подразделение;
Если Не ЗначениеЗаполнено(Подразделение) Тогда
Сообщить("Необходимо выбрать нужное подразделение!");
Отказ = Истина;
ИначеЕсли Подразделение.ГруппаВыбора = Истина Тогда
Сообщить("Данное подразделение является группой Подразделений. Использовать нельзя. Необходимо выбрать подразделение внутри этой группы.");
Источник.Подразделение = Справочники.Подразделения.ПустаяСсылка();
Отказ = Истина;
КонецЕсли;
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua