В списке документов кнопка Действие -> (Ввести на основании)открывается список доков где поймать это действие??? Мне по хорошему нужно поставить условие при выборе Ввести на основании РеализацияТоваровУслуг.
Подскажите как поймать
Мне по хорошему нужно поставить условие при выборе Ввести на основании РеализацияТоваровУслуг.
1) Открываете в конфигураторе документ который вводим на основании двойным щелчком. На закладке "Ввод на основании" проверяете на основании каких документов он вводится. В модуле онного документа ищите процедуру "Обработка заполнения" в ней ветками условий обозначены документы-основания по типу. Ищите тот документ, ввод на основании которого необходимо ограничить условием и там дописываете что надо.
Например: ввод реализации на основании счета, необходимо ограничить по отдельным складам. В модуле Реализации товаров и услуг в обработке заполнения ищем строку наподобие:
Если ТипЗнч(ДокументОснование) = Тип(Документ.СчетНаОплатуПокупателю) тогда ...
В этой ветке прописываем нужное условие
Если ДокументОснование.Склад = НужныйСклад тогда...
З.Ы. Код приведен навскидку, возможны синтаксические ошибки, главное уловить суть того, что требуется сделать.
Указать нужный документ на закладке "Ввод на основании" и дописать обработчик "Обработка заполнения", в котором добавить ветку проверки условия по реализации и в ней необходимые действия для заполнения.
(8) andersss, никак) тот список формируется платформой автоматически.. изменить его возможности нет. Можно сделать так: Убираем вообще типовой ввод на основании, добавляем свою менюшку, пишем к ней обработчики создания и заполнения документов...ну и продцедурку которая будет строить менюшку динамически при открытии формы тоже, для универсальности. В принципе кода не так много
Если Ставишь условие в доке реализация то док не заполняется но создается а как сделать так что бы он не создавался у меня вот так в Документе РеализацияТоваровУслуг
Процедура ОбработкаЗаполнения(Основание)
ТипОснования = ТипЗнч(Основание);
Если ТипОснования = Тип("ДокументСсылка.ЗаказПокупателя")
ИЛИ ТипОснования = Тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда
//_++
Если Основание.Контрагент.Родитель=Справочники.Контрагенты.НайтиПоКоду("0000002742") Тогда
Если ПустаяСтрока(Основание.ПаспортСделки) Тогда
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Не указан паспорт сделки в Заказе Покупателя!!!";
Сообщение.Сообщить();
Возврат
Поставили подобную задачу, чтоб было два разных ввода на основании и именно в этой менюшке.
Решил таким образом:
1. Добавил в конфигурацию документ.
2. Назвал его так, как должен называться пункт меню.
3. Указал, что он вводится на основании нужного документа.
в модуле нового создаем только обработку заполнения:
Процедура ОбработкаЗаполнения(Основание)
Если ТипЗнч(Основание) = Тип("ДокументСсылка.ПоступлениеТоваровУслуг") Тогда
ПараметрыФормы = Новый Структура("Основание", Основание);
//--\/--
ПараметрыФормы.Вставить("КонтрольЦен",Истина);
//--/\--
ОткрытьФорму("Документ.УстановкаЦенНоменклатуры.Форма.ФормаДокумента", ПараметрыФормы);
КонецЕсли;
КонецПроцедуры // ОбработкаЗаполнения()
Показать
А в форме нового, чтоб она не открывалась.
// Процедура - обработчик события "ПередОткрытием" формы
//
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
//--\/--
Отказ = Истина;
//--/\--
КонецПроцедуры;
Показать
Ну а далее - по Вашим задачам. В моем случае, “ловил” наличие “КонтрольЦен” в переданной структуре и реализовывал уже свой алгоритм заполнения.
Моя реализация, в УТ11.4
в документе который создается на основании
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если не значениеЗаполнено(Объект.Ссылка) тогда
док = документы._ЗаданиеНаПроизводство.НайтиПоРеквизиту("НомерЗаказа",объект.НомерЗаказа);
Если не док.Пустая() тогда
отказ = истина;
Сообщить("Задание на производство по данному документу уже существует !!!");
КонецЕсли;
КонецЕсли;
КонецПроцедуры