Имя: Пароль:
1C
 
Внешняя обработка ЗаполнениеОбъекта без запроса о записи документа?
0 AlexTimin
 
05.10.21
13:46
Всем привет. Нужно заполнить ТЧ документа, перед этим показав пользователю форму с параметрами.
Используется Внешняя обработка с типов ЗаполнениеОбъекта и командой ОткрытиеФормы.
Так вот после нажатия на кнопку заполнения в форме нового документа система просит записать документ, либо Отмена. Как "убрать" типовую проверку на запись объекта?
БСП 3.1.3
1 Kassern
 
05.10.21
13:51
(0) а причем тут Внешняя обработка ЗаполнениеОбъекта? Скорее всего при заполнении используете какую нибудь типовую функцию, которая просит записать док перед заполнением. Так как в противном случае не сможет какие нибудь записи в регистры сделать. Если вы тот же код встроите в форму в какую нибудь кнопку, у вас так же будет просить записать новый док. Можете комментировать внутрянку кнопки в форме внешней обработки и увидеть что ничего не просит кнопка при нажатии)
2 AlexTimin
 
05.10.21
13:54
(1) да куда там.
Специально закомментил все в процедуре ВыполнитьКоманду на форме, то же самое
3 Андроны едут
 
05.10.21
14:01
Модифицированность = Ложь
4 AlexTimin
 
05.10.21
14:10
(3) этот вариант поможет только если типовую конфу дорабатывать, а "это не наш метод" (с)
5 pechkin
 
05.10.21
14:11
нужно тип обработки верно указывать.
6 pechkin
 
05.10.21
14:12
7 AlexTimin
 
05.10.21
14:23
(6) Видел, осознал, но в моем случае что то еще.
Что у меня в модуле обработки:
Функция СведенияОВнешнейОбработке() Экспорт
    
  ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(СтандартныеПодсистемыСервер.ВерсияБиблиотеки());
  
  ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
  ПараметрыРегистрации.Версия = "1.0";
  ПараметрыРегистрации.Наименование = Метаданные().Представление();
  ПараметрыРегистрации.Информация = НСтр("ru = 'Заполнение документов передачи спецодежды");
  ПараметрыРегистрации.БезопасныйРежим = Ложь;
  
  МассивНазначений = Новый Массив;
  МассивНазначений.Добавить("Документ.ЗаказНаВнутреннееПотребление");
  МассивНазначений.Добавить("Документ.ЗаказНаПеремещение");
  ПараметрыРегистрации.Назначение = МассивНазначений;
  
  Команда = ПараметрыРегистрации.Команды.Добавить();
  Команда.Представление = НСтр("ru = 'Заполнение документов передачи спецодежды'");
  Команда.Идентификатор = "НСМ_ЗаполнениеТабличнойЧастиДокументовПередачиСпецодежды";
  Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();
  //Команда.РежимЗаписи = "НеЗаписывать";
  //Команда.ПоказыватьОповещение = Ложь;
  
  Возврат ПараметрыРегистрации;
  
КонецФункции

Что в модуле формы:

&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
    
   Сообщить("тест");    
    
КонецПроцедуры

Создаю новый документ заказ на внутр потребление, спрашивает:
Для выполнения операции "Заполнение документов передачи спецодежды" данные будут записаны. Продолжить?
8 Мультук
 
гуру
05.10.21
14:42
(7) Я делал через

ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();


А внутри формы по нажатию кнопки

&НаКлиенте
Процедура ИмпортДумми()
     //Всякое
     НоваяСтрока = ВладелецФормы.Объект.Зарплата.Добавить();

     //Еще всякое
КонецПроцедуры
9 DTX 4th
 
05.10.21
14:44
Натыкался на подобный косяк в БСП. Забил в итоге
10 AlexTimin
 
06.10.21
10:53
В модуле ДополнительныеОтчетыИОбработки.ПриОпределенииКомандЗаполненияПодключенныхКОбъекту есть код, в котором строго прописано, что если вариант запуска

Если СтрокаТаблицы.ВариантЗапуска = ЗаполнениеФормы Тогда
   Команда.Обработчик  = "ДополнительныеОтчетыИОбработки.ОбработчикКомандыЗаполнения";
   Команда.РежимЗаписи = "НеЗаписывать";
Иначе
   Команда.Обработчик  = "ДополнительныеОтчетыИОбработкиКлиент.ОбработчикКомандыЗаполнения";
   Команда.РежимЗаписи = "Записывать";
КонецЕсли;

Следовательно при Серверном вызове (заполнениеФормы) отработает без вопроса о записи, в Клиентском с записью.. Пробовал менять это, помогает, работает как я хочу но как это отразится на других обработках и в дальнейшем вообще хз.
11 runoff_runoff
 
06.10.21
11:06
(10) универсальное решение - добработки надо делать в расширении.. где в модуле менеджера обработки в процедуре ДобавитьКомандыЗаполнения можно явно указывать режим Записать/Не записать..
12 DrZombi
 
гуру
06.10.21
11:08
(0) Если надо, что бы человек не мог писать такой документ самостоятельно, то попросту запрети ему запись, установив какой либо параметр в форме "Типо я тут только посмотреть" :)
13 DrZombi
 
гуру
06.10.21
11:09
+ Прописав строчку в "Перед записью" (на форме документа) ... Условие проверки твоего параметра на Истину :)
14 DrZombi
 
гуру
06.10.21
11:10
(10) Ересть, человек найдет, как записать :)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший