Работа с формами документов из общей команды (управляемое приложение)

1. plevakin 08.06.12 11:09 Сейчас в теме
Создал общую команду и подключил ее к документы. Текст модуля команды

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

&НаСервере
Процедура РедактироватьОбъект(КопияТабФормыТовары)

	Для каждого СтрокаТЧ из КопияТабФормыТовары Цикл
		СтрокаТЧ.Цена = 10;	
	КонецЦикла;                                             

КонецПроцедуры
Показать


Теперь собственно о проблеме. Команда срабатывает только если документ не модифицирован. Если он модифицирован, документ ПЕРЕД выполнением обработки записывается сам, и команда не отрабатывает. Поскольку запись документа происходит не по моей воле и ПЕРЕД выполнением, никакой проверки на модифицированность я вставить не могу. В каком направлении курить? Есть идеи?
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Ягг 495 08.06.12 11:16 Сейчас в теме
Может не в тему, но зачем это нужно было делать через "команду" (из каких соображений)?
Процедура РедактироватьОбъект() явно напрашивается в модуль объекта документа. Если я правильно понял там в таблицчной части докуменат просто проставляется цена = 10.
3. plevakin 08.06.12 12:41 Сейчас в теме
Немного поясню идею команды. Есть некий алгоритм, который необходимо применять ко всем документам, приходам, расходам, заказам, счетам и пр. Чтоб не менять кучу форм и модулей документов разумно использовать общую команду, что я собственно и сделал. Да, забыл сказать, что флаг "Изменяет данные" в команде не ставил, ибо в этом случае обращаться нужно с объектом, а цель задачи, выполнить какие-то изменения данных в форме не записывая документ, чтобы пользователь имел возможность не сохранять изменения.
5. Ягг 495 08.06.12 13:38 Сейчас в теме
(3) plevakin, в догонку

кстати "Изменяет данные" несет другой смысл - это значит что если форма в которй эта команда имеется открыта только для просмотра, то кнопка (связанная с командой) становится недостуной (т.е. считаетсмя что любое изменение данных запрещено, и недоступны любые кнопки которые данные изменяют)
4. Ягг 495 08.06.12 13:27 Сейчас в теме
Наверно ошибаюсь но боюсь что так не получится. Эти "команды" (из ветки "Команды" объекта конфигурации) работают с записями в базе данных, а не с клиентской часть (то что команда имеет и клиентскую и серверную часть это относится в вызову команды, а не ее исполнению).

В качестве подобным командам параметра передается ссылка. И необходимое тербование чтобы ссылка была одназначна актуально, поэтому и происходит автоматическая запись (ведь команда может быть вызвана и из списка документов к примеру).

Всетак мне думается, придется переносить функциоанл в некий общий модуль и ссылаться на него из разных документов.

Если получится иначе - скажите, будет инетерсно :)
6. allexx 39 20.03.14 12:24 Сейчас в теме
Столкнулся с такой же проблемой. Мне захотелось заполнять табличные части некоторых документов не трогая в конфигурации самих документов. Чтобы даже не пришлось разблокировать эти объекты в типовой конфигурации. Мне кажется очень даже часто встречающееся должно быть желание. Каким же образом, если не через общие команды это можно сделать?
7. Lazio 8 20.03.17 16:35 Сейчас в теме
Добрый день! Поделитесь опытом, как решили данную проблему?
8. Lazio 8 20.03.17 16:36 Сейчас в теме
Добрый день! Поделитесь пожалуйста опытом, как решили подобную проблему?
9. allexx 39 11.06.17 16:54 Сейчас в теме
Я расширения задействовал.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот