Имя: Пароль:
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
Всё, сделал обработку. Пришлось почти всю переписать чтобы заработало. Всем большое спасибо за ответы, особенно огромное спасибо тебе Вобланд, очень сильно помог со своим ДелайРаз(), делайДва().
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший