Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
20 сен 2021, 06:04

При попытке передать в параметрах два адреса временного хранилища, во втором оказывается пусто. (Код прилагается)

Автор Zeed, 18 ноя 2016, 11:55

0 Пользователей и 1 гость просматривают эту тему.

Zeed

При попытке передать в параметрах для открытия формы два адреса временного хранилища, во втором АдресВоВременномХранилище адрес передается, но при получении из хранилища там значение "неопределено". Код типовой ERP отрабатывает нормально, при добавлении второго адреса хранилища выдает такое поведение
&НаКлиенте
Процедура НадписьЭтапыОплатыНажатие(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

Попытка
ЗаблокироватьДанныеФормыДляРедактирования();
Исключение
ПоказатьПредупреждение(Неопределено, КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
Возврат;
КонецПопытки;

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

// добавленный код ПараметрыФормы.Вставить("rkОплатаПроверена", Объект.ОплатаПроверена);
ПараметрыФормы.Вставить("rkДокументОснованиеОплаты", Объект.ДокументОснованиеОплаты);
ПараметрыФормы.Вставить("rkДатаОтгрузки", ПолучитьДатуОтгрузки());
ПараметрыФормы.Вставить("АдресХранилищаДатыОтгрузки", ПолучитьАдресХранилищаДатыОтгрузки());
// - добавленный код
ПараметрыФормы.Вставить("ЖелаемаяДатаОтгрузки",       Объект.ЖелаемаяДатаОтгрузки);
ПараметрыФормы.Вставить("Дата",                       Объект.Дата);
ПараметрыФормы.Вставить("Валюта",                     Объект.Валюта);
ПараметрыФормы.Вставить("УчитыватьВариантОплаты",     Истина);
ПараметрыФормы.Вставить("УникальныйИдентификатор",    УникальныйИдентификатор);
ПараметрыФормы.Вставить("АдресВоВременномХранилище",  ПоместитьВоВременноеХранилищеНаСервере());
ПараметрыФормы.Вставить("ФормаОплаты",                Объект.ФормаОплаты);
ПараметрыФормы.Вставить("Касса",                      Объект.Касса);
ПараметрыФормы.Вставить("БанковскийСчет",             Объект.БанковскийСчет);
ПараметрыФормы.Вставить("Организация",                Объект.Организация);
ПараметрыФормы.Вставить("ПараметрыВыбораРеквизитов",  ПараметрыВыбораРеквизитов);
ПараметрыФормы.Вставить("ИдентификаторПлатежа",       Объект.ИдентификаторПлатежа);
ПараметрыФормы.Вставить("ПорядокРасчетов",            Объект.ПорядокРасчетов);
ПараметрыФормы.Вставить("ДоступныеПорядкиРасчетов",   ДоступныеПорядкиРасчетов);
ПараметрыФормы.Вставить("ЭтоЗаказ",                   Истина);
ПараметрыФормы.Вставить("НаправлениеДеятельности",    Объект.НаправлениеДеятельности);
ПараметрыФормы.Вставить("ГрафикИсполненияВДоговоре",  ГрафикИсполненияВДоговоре);
 

Оповещение = Новый ОписаниеОповещения("НадписьЭтапыОплатыНажатиеЗавершение", ЭтотОбъект);

ОткрытьФорму("ОбщаяФорма.ЭтапыОплатыКлиентом",
ПараметрыФормы,
ЭтаФорма,,,,
Оповещение,
РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

КонецПроцедуры


Функция ПолучитьАдресХранилищаДатыОтгрузки()

Возврат ПоместитьВоВременноеХранилище(Объект.Товары.Выгрузить(,"ДатаОтгрузки,СуммаСНДС,Отменено"));

КонецФункции

Функция ПоместитьВоВременноеХранилищеНаСервере()

Возврат ПоместитьВоВременноеХранилище(Объект.ЭтапыГрафикаОплаты.Выгрузить());

КонецФункции



То же самое происходит при попытке передать один адрес временного хранилища и массив.

LexaK

конечно отладиться по вашему коду нет возможности,
но как одно из предположений: Попробуйте явно задавать адреса хранилища в ваших процедурах
так как согласно СП, самый последний пункт, хранилище может очищаться при не заданном Адресе

выдержка из СП
...Если параметр (Адрес) не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы.




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

Функция ПоместитьВоВременноеХранилищеНаСервере()
   
    Возврат ПоместитьВоВременноеХранилище(Объект.ЭтапыГрафикаОплаты.Выгрузить());
   
КонецФункции
ответ Понравился? (в смысле пригодился?)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск