Как из внешней обработки Заполнение объекта изменить данные формы документа без записи самого документа (Упр. Форма)?
Уважаемые коллеги, подскажите, есть вопрос по управляемым формам.
Как из внешней обработки Заполнение объекта изменить данные формы документа без записи самого документа?
Например, нужно изменить данные табл.части документа, отобразить эти изменения на форме, но при закрытии формы можно отказаться от внесенных изменений.
У меня получается отобразить данные на форме только после записи документа, т.е. отказаться от внесенных изменений уже нельзя.
Как из внешней обработки Заполнение объекта изменить данные формы документа без записи самого документа?
Например, нужно изменить данные табл.части документа, отобразить эти изменения на форме, но при закрытии формы можно отказаться от внесенных изменений.
У меня получается отобразить данные на форме только после записи документа, т.е. отказаться от внесенных изменений уже нельзя.
По теме из базы знаний
- Перенос данных из КА 1.1 в ERP 2. Переносятся остатки, документы и справочники
- Концепция автоматизации многопрофильного Холдинга в системе АУБ на платформе 1С
- Многопоточность. Универсальный «Менеджер потоков» (фреймворк) с отслеживанием зависимости объектов
- Панель #Расширение объекта: Редактор, Права, Поиск, Сторно, Обмен
- Доработка универсальной обработки загрузки данных из табличного документа (для возможности загрузки в документ "Перенос данных" (ЗУП 3.1))
Найденные решения
(12) Создаете внешнюю обработку заполнения объекта, в ее форме в процедуре при открытии получаете владельца:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
СоответствиеЦен = ПолучитьЦеныНаСервере(); //некая функция на сервере готовит для меня данные для заполнения
Для Каждого СтрокаТовар из ВладелецФормы.Объект.Товары Цикл
СтрокаТовар.Цена = СоответствиеЦен.Получить(СтрокаТовар.Номенклатура);
СтрокаТовар.Сумма = СтрокаТовар.Цена * СтрокаТовар.Количество;
КонецЦикла;
Закрыть();
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2), если было бы так просто )
есть такой признак
вообщем приведу пример как сделано (повторюсь - но мне не надо записывать объект):
есть такой признак
вообщем приведу пример как сделано (повторюсь - но мне не надо записывать объект):
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
Док = ОбъектыНазначенияМассив[0];
Объект.СсылкаНаОбъект = Док;
ОткрытьФорму(ЭтаФорма);
КонецПроцедуры
&НаКлиенте
Процедура Обработать(Команда)
//выполним обработку данных
Текст = ЗаполнитьОбъектНаСервере(Объект.СсылкаНаОбъект);
Если ЗначениеЗаполнено(Текст) Тогда
//отобразим изменение на форме
п = Новый Структура("Ключ", Объект.СсылкаНаОбъект);
ФормаДока = ПолучитьФорму("Документ.ОтражениеЗарплатыВБухучете.ФормаОбъекта", п);
ФормаДока.Прочитать();
ФормаДока.Модифицированность = Истина;
//выведем сообщение пользователю
Сообщение = Новый СообщениеПользователю;
Сообщение.ИдентификаторНазначения = ФормаДока.УникальныйИдентификатор;
Сообщение.Текст = Текст;
Сообщение.Сообщить();
КонецЕсли;
Закрыть();
КонецПроцедуры
&НаСервере
Функция ЗаполнитьОбъектНаСервере(Эл)
если ложь тогда //удалить!!!
Эл = Документы.ОтражениеЗарплатыВБухучете.ПустаяСсылка();
конецесли;
Текст = "";
Об = Эл.ПолучитьОбъект();
Для Каждого ТекСтр из Об.НачисленнаяЗарплатаИВзносы Цикл
НомСтр = ТекСтр.НомерСтроки;
ТекВидОперации = ТекСтр.ВидОперации;
Отбор = Новый Структура();
Отбор.Вставить("ВидОперацииИсх",ТекВидОперации);
МассивСтр = Объект.ВидыОперацийДляЗамены.НайтиСтроки(Отбор);
Если МассивСтр.Количество() > 0 Тогда
ТекСтр.ВидОперации = МассивСтр[0].ВидОперацииКон;
Текст = "В табл.части Начисленная зарплата и взносы в строке № "+НомСтр+" заменен вид операции с "+ТекВидОперации+" на "+ТекСтр.ВидОперации+Символы.ПС;
КонецЕсли;
КонецЦикла;
Если ЗначениеЗаполнено(Текст) Тогда
Об.Записать();
КонецЕсли;
Возврат Текст;
КонецФункции
Показать
(12) Создаете внешнюю обработку заполнения объекта, в ее форме в процедуре при открытии получаете владельца:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
СоответствиеЦен = ПолучитьЦеныНаСервере(); //некая функция на сервере готовит для меня данные для заполнения
Для Каждого СтрокаТовар из ВладелецФормы.Объект.Товары Цикл
СтрокаТовар.Цена = СоответствиеЦен.Получить(СтрокаТовар.Номенклатура);
СтрокаТовар.Сумма = СтрокаТовар.Цена * СтрокаТовар.Количество;
КонецЦикла;
Закрыть();
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот