Добрый день. Устал бороться с поисковиками. Прошу помощи специалистов!
Платформа 8.3 (обычное), конф-я самописная.
Суть вопроса.
Из документа вызывается форма обработки, в которой настраиваются данные для заполнения ТЧ документа. В обработку могу передать значения реквизитов, а назад, по кнопке выполнить, вернуть обработанные данные в табличную часть не получается. Идей ноль. Направьте хотя бы на верную сторону.
Опишите подробнее как именно делаете.
ОбработкаКомплектацияСмеси = Обработки.КомплектацияСмеси.ПолучитьФорму("Форма", ЭтаФорма);
ОбработкаКомплектацияСмеси.ЗакрыватьПриЗакрытииВладельца=Истина;
ОбработкаКомплектацияСмеси.Наименование="Новая смесь";
//ОбработкаКомплектацияСмеси.Документ=ЭтотОбъект;
ОбработкаКомплектацияСмеси.ПолучитьФорму().Открыть();
http://pro1c.org.ua/redirect.php?http://infostart.ru/public/84119/
TipsyKID,
Имею ввиду, у документа создать произвольную форму, и разместить там необходимые данные Объекта для работы, тогда передавать данные между формами не нужно.
Открывайте форму модально, при закрытии возвращайте необходимые параметры.
//ОбработкаКомплектацияСмеси.Документ=ЭтотОбъект;
{Документ.ЗаказыПокупателей.Форма.ФормаДокумента.Форма(1017)}: Поле объекта не обнаружено (Документ)
ОбработкаКомплектацияСмеси.Документ=ЭтотОбъект;
Так добавьте это поле в обработке. Или реквизит обработки, или экспортную переменную модуля...
1. Добавляем реквизит Документ с типом ЗаказПокупателя.
2. Из документа заполняем этот реквизит после создания обработки (фактически раскомментировать осталось)
3. В обработке "передзакрытием" ( или по любому другому обработчику) записываем в реквизит документ все что душа желает.
.
При вызове формы обработки:
Процедура КоманднаяПанель6СоздатьСмесь(Кнопка)
ОбработкаКомплектацияСмеси = Обработки.КомплектацияСмеси.ПолучитьФорму("Форма", ЭтаФорма);
ОбработкаКомплектацияСмеси.ЗакрыватьПриЗакрытииВладельца=Истина;
ОбработкаКомплектацияСмеси.Наименование="Новая смесь";
ОбработкаКомплектацияСмеси.Документ=ЭтотОбъект.Ссылка;
ОбработкаКомплектацияСмеси.ПолучитьФорму().ОткрытьМодально();
КонецПроцедуры
Процедура КнопкаВыполнитьНажатие(Кнопка)
Если ПроверитьЗаполнение()=Ложь ИЛИ СмесьКТ.Количество()=0 Тогда
Сообщить("Ошибка заполнения!");
Возврат;
ИначеЕсли Окр(СмесьНМНК.Итог("ПроцентВоВладельце")/СмесьКТ.Количество(), 2)=100 Тогда
//Получение непонятно чего ////////////////////////////////////////////////
Объект = Документ.ПолучитьОбъект();
Строка=Объект.ТЧ_СмесиКТ.Добавить();
Строка.СмесьНМНК = Наименование;
Для Каждого СтрокаТаб из СмесьНМНК Цикл
//заполнить ТЧ_Ёмкости
КонецЦикла;
/////////////////////////////////////////////////////////////////////////////////
КонецЕсли;
ЭтаФорма.Закрыть();
КонецПроцедуры
Передавайте не ссылку а сам объект :
Реквизит у обработки должен быть ДокументОбъект.ЗаказПокупателя.
ОбработкаКомплектацияСмеси.Наименование="Новая смесь";
ОбработкаКомплектацияСмеси.Документ=ЭтотОбъект;
//Получение непонятно чего ////////////////////////////////////////////////
//Объект = Документ.ПолучитьОбъект();* закоментируйте
Строка=Объект.ТЧ_СмесиКТ.Добавить();
Строка.СмесьНМНК = Наименование;
Возможность поблагодарить отвечающего
У нас на форуме есть "хорошая" кнопка, нажав на которую можно без лишних слов выразить человеку благодарность за его сообщение. У новичков возникнет вопрос: "А где же она?". А вот она:
Если чей-то пост Вы посчитали для себя полезным - жмите на кнопку!
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua