Имя: Пароль:
1C
1С v8
Передача данных между серверными и клиентскими частями
0 Dermidont2006
 
24.12.12
14:15
Добрый день, уважаемые форумчане. Никто не скажет, как нибудь можно из серверной функции вызвать какой либо диалог, чтобы пользователь выбрал нужную номенклатуру например?
1 Wobland
 
24.12.12
14:16
сделать кусок1 на сервере, отдаться клиенту, спросить юзера, сделать кусок2 на сервере. или спросить заранее
2 ДенисЧ
 
24.12.12
14:17
неа. Выбирай заранее или бей серверную процедуру на части
3 Dermidont2006
 
24.12.12
14:17
В нашей организации есть небольшая специфика, по которой у нескольких товаров может быть один артикул покупателя. И при загрузке заказа из файла xml оператор должен выбрать, какая именно номенклатура должна попасть в заказ. На 81 работало нормально, на 82 переделали всё, за исключением этого момента.
4 Dermidont2006
 
24.12.12
14:19
Wobland, а отдаться клиенту и спросить юзера это как? Вот функция

&НаСервере
Функция ПолучитьНоменклатуру(Партнер, АртикулПокупателя, НенужныйСейчасПараметр = Неопределено, ДатаПоставки, МассивПартнеров);

   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    НоменклатураПартнеров.Номенклатура
                  |ИЗ
                  |    РегистрСведений.НоменклатураПартнеров КАК НоменклатураПартнеров
                  |ГДЕ
                  |    НоменклатураПартнеров.АртикулНоменклатурыПартнера ПОДОБНО &ВыбранныйАртикул
                  |    И НоменклатураПартнеров.Партнер В(&МассивПартнеров)";
   Запрос.УстановитьПараметр("ВыбранныйАртикул", "%" + АртикулПокупателя + "%");
   Запрос.УстановитьПараметр("МассивПартнеров", МассивПартнеров);
   Номенклатура = Неопределено;
   Выборка = Запрос.Выполнить().Выбрать();
   
   Если Выборка.Количество() > 0 Тогда
       Массив = Новый Массив;
       Массив.Добавить(АртикулПокупателя);
       Пока Выборка.Следующий() Цикл
           Массив.Добавить(Выборка.Номенклатура);
       КонецЦикла;
       
       // заполняем табличную часть внешней обработки
       ЗаполнитьИдентичнуюНоменклатуру(Массив);
       
       // здесь данные о номенклатуре с одинаковыми артикулами уже содержаться в табличной части
       // нужно как - то предоставить возможность пользователю выбрать нужную позицию
       
   Иначе    
       Если Выборка.Следующий() Тогда
           Номенклатура = Выборка.Номенклатура;        
       КонецЕсли;    
       СтруктураНоменклатуры = Новый Структура("Номенклатура, ЕдиницаИзмерения", Номенклатура, Справочники.ЕдиницыИзмерения.НайтиПоКоду("996"));
   КонецЕсли;    
   Возврат СтруктураНоменклатуры;
   
КонецФункции
5 ДенисЧ
 
24.12.12
14:19
(3) На на 82, а на управляемых формах :_)
6 Wobland
 
24.12.12
14:23
(4) на клиенте:
ДелайРаз();
НужнаяНоменклатура=..
ДелайДва(НужнаяНоменклатура)
7 vmv
 
24.12.12
14:26
(6) повтори десять раз, сегодня такой контингент, надо идти навстречу
8 Wobland
 
24.12.12
14:30
(7) готово! теперь сюда запостить?
9 Dermidont2006
 
25.12.12
10:15
Всё, сделал обработку. Пришлось почти всю переписать чтобы заработало. Всем большое спасибо за ответы, особенно огромное спасибо тебе Вобланд, очень сильно помог со своим ДелайРаз(), делайДва().
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший