Имя: Пароль:
1C
1С v8
Помогите с временным хранилищем
0 Avalone2010
 
24.06.13
14:47
Здравствуйте. Объясните мне, малорграмотному что за беда у меня с хранилищем. Код типа:

&НаСервере
Функция ПоместитьРезультатОтбораВоВременноеХранилище()
   
   Возврат ПоместитьВоВременноеХранилище(ОтобранныеДокументы.Выгрузить());
КонецФункции


&НаКлиенте
Процедура Перенести(Команда)
   
   АдресВоВременномХранилище = ПоместитьРезультатОтбораВоВременноеХранилище();
   ОповеститьОВыборе(Новый Структура("РезультатПодбора", АдресВоВременномХранилище));
КонецПроцедуры

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

В данном случае ТаблицаОтобранныхДокументов равна НЕОПРЕДЕЛЕНО,
но если сделать операцию получения из ВХ то ТаблицаОтобранныхДокументов приобретает значение то какое и должно у нее быть
       
&НаКлиенте
Процедура Перенести(Команда)
   
   АдресВоВременномХранилище = ПоместитьРезультатОтбораВоВременноеХранилище();//ВОТ ТУТ ЕСЛИ ИСПРАВИТЬ
   ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
   ОповеститьОВыборе(Новый Структура("РезультатПодбора", АдресВоВременномХранилище));
КонецПроцедуры
1 Avalone2010
 
24.06.13
14:48
(0) код выполняется с
Процедура Перенести(Команда)
2 kosts
 
24.06.13
14:50
(0) Получать из временного хранилища вроде на сервере нужно
3 Avalone2010
 
24.06.13
14:59
(2)Сделал вот так:
&НаКлиенте
Процедура Перенести(Команда)
   
   АдресВоВременномХранилище = ПоместитьРезультатОтбораВоВременноеХранилище();
   ОповеститьОВыборе(Новый Структура("РезультатПодбора", АдресВоВременномХранилище));
КонецПроцедуры

&НаСервере
Функция ПоместитьРезультатОтбораВоВременноеХранилище()
   
   Возврат ПоместитьВоВременноеХранилище(ОтобранныеДокументы.Выгрузить());
КонецФункции

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

Процедура ПоместитьРезультатПодбораВДокумент(ВыбранноеЗначение)    
   
   АдресВременногоХранилища    = ВыбранноеЗначение.РезультатПодбора;
   ТаблицаОтобранныхДокументов = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);    
   
КонецПроцедуры
4 Avalone2010
 
24.06.13
15:01
(3) в ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) через табло получаю из ВХ таблицу, а в ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)

снова вместо ТЗ в ВХ значение НЕОПРЕДЕЛЕНО.
5 kosts
 
24.06.13
15:15
Я делал другим способом, попробуй может так будет работать:

В форме выбора

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   
   Если Элементы.Список.МножественныйВыбор Тогда
       СтандартнаяОбработка = Ложь;
       
       МассивДляПередачи = Новый Массив;
       
       Для каждого ЭлементМассива Из ВыбраннаяСтрока Цикл
           //Если НЕ Элементы.Список.ДанныеСтроки(ЭлементМассива).ЭтоГруппа Тогда
               МассивДляПередачи.Добавить(ЭлементМассива)
           //КонецЕсли;
       КонецЦикла;
       
       ОбработатьВыборТехнологов(МассивДляПередачи);
   КонецЕсли;
   
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьВыборТехнологов(Значение)
   
   ДобавитьВСписок(Значение);
   
   ОповеститьОВыборе(Значение);
   
   //Оповестить("ВыборТехнологов", Новый Структура("ОтобранныеТехнологи", МассивВыбора));
   
КонецПроцедуры


в форме документа:

&НаКлиенте
Процедура ТехнологиОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
   
   ОбработкаПодбораНаСервере(ВыбранноеЗначение);
   
КонецПроцедуры

&НаСервере
Процедура ОбработкаПодбораНаСервере(ВыбранныеТехнологи)
   
   СтруктураПоиска = Новый Структура("Технолог");
   МассивТехнологовКЗаполнению = Новый Массив;
   ИдентификаторТекущейСтроки = Неопределено;
   
   Для Каждого Технолог Из ВыбранныеТехнологи Цикл
       СтруктураПоиска.Технолог = Технолог;
       Если Объект.Технологи.НайтиСтроки(СтруктураПоиска).Количество() = 0 Тогда
           НоваяСтрока = Объект.Технологи.Добавить();
           НоваяСтрока.Технолог = Технолог;
           ИдентификаторТекущейСтроки = НоваяСтрока.ПолучитьИдентификатор();
           МассивТехнологовКЗаполнению.Добавить(Технолог);
       КонецЕсли;
   КонецЦикла;    
   
   Если ИдентификаторТекущейСтроки <> Неопределено Тогда
       Элементы.Технологи.ТекущаяСтрока = ИдентификаторТекущейСтроки;
   КонецЕсли;
   
   ЭтаФорма.Модифицированность = Истина;
   
КонецПроцедуры
6 Avalone2010
 
24.06.13
15:24
(5) Понял, то же вариант неплохой. У тебя получается сразу перенос идет, а у меня все это дело "накапливается" и потом скопом переносится.
7 kosts
 
25.06.13
06:30
(6) Ну можно оповещение не сразу кидать, а когда понадобится.