как программно заполнить табличную часть УФ?

1. Nadushka74 5 15.08.13 11:14 Сейчас в теме
Имеем строку с разделителями ";" надо из нее взять данные и заполнить табличную часть УФ. подскажите как это сделать??? с уф вообще не работала...
По теме из базы знаний
Найденные решения
16. Nadushka74 5 15.08.13 13:46 Сейчас в теме
всем спасибо!!!
нашла в общем модуле функцию, которая разбирает строку на массив - ей и воспользовалась СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр, ";")
сейчас код выглядит вот так и все отлично работает:
ОбъектКопирования = Новый COMОбъект ("htmlfile");
	СодержимоеБуфера = ОбъектКопирования.ParentWindow.ClipboardData.GetData("text");
	Стр = СодержимоеБуфера;
	Массив = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр, ";");
	НоваяСтрока = Объект.ТаблицаЗаказов.Добавить();
	НоваяСтрока.НомерЗаказ = Массив[0];
	НоваяСтрока.Датазаказа = Массив[1];
	НоваяСтрока.склад = Массив[2];
	НоваяСтрока.суммаЗаказа = Массив[3];
	НоваяСтрока.МассаЗаказа = Массив[4];
	НоваяСтрока.СрокиОтгрузки = Массив[5];
Показать

Если есть еще варианты его оптимизировать - рада услышать от вас отклик!
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
6. killitch 30 15.08.13 11:54 Сейчас в теме
(1) Nadushka74, если под УФ подразумеваются управляемые формы, тогда нужны уточнения.
1. Строка с разделителями получена на клиенте, т.е. форме объекта. Тогда создаем серверную функцию и туда передаем строку, где ее парсим и заполняем ТЧ полученными значениями. Поиск и создание новых объектов на основании распарсеных значений - по вкусу.
2. Строка с разделителями получена на сервере. Это по сути урезанный варинт п.1, когда строку уже передали. Действия те же: парсим, ищем, заполняем.
10. Nadushka74 5 15.08.13 12:01 Сейчас в теме
(6) killitch, строку получаем на клиенте, а вот дольше можно поподробнее:
как передать ее на сервер?
что значит парсим?
12. Поручик 4670 15.08.13 12:02 Сейчас в теме
(10) Парсить - значит обратиться к специалисту или воспользоваться гуглом для поиска толкования данного технического термина.
14. Nadushka74 5 15.08.13 12:05 Сейчас в теме
(12) Поручик, а к кому я обращаюсь??? разве тут не специалисты сидят???
7. Поручик 4670 15.08.13 11:55 Сейчас в теме
(1) Табличная часть есть у объекта. На форме можно расположить элементы для визуального представления табличных частей, таблиц значений и прочее.
2. Ольга_tmp 71 15.08.13 11:33 Сейчас в теме
пардон за глупый вопрос,а что такое уф?
20. Alexey26 2 07.12.15 17:01 Сейчас в теме
(2) Ольга_tmp, режим управляемых форм.
3. ZergKRSK 129 15.08.13 11:40 Сейчас в теме
4. caponid 15.08.13 11:46 Сейчас в теме
5. Nadushka74 5 15.08.13 11:50 Сейчас в теме
УФ - управляемые формы - что б их
конфа документооборот, хотя в принципе какая разница?
8. caponid 15.08.13 11:56 Сейчас в теме
в форме добавляем реквизит Таблица значений, описываем поля, выводим на форму, а потом из своего файлика парсим строки и добавляем в таблицу значений.

что сложного то? а потом помещаем ТЗ во временное хранилище - а на сервере достаем.
9. killitch 30 15.08.13 11:58 Сейчас в теме
Если в первый пост закралась опечатка и табличная часть вовсе не табличная, а таблица значений на форме, то в данном случае, полученные на сервере значения для заполнения надо передать на клиент и заполнить ТЗ.

Еще можно поиграться РеквизитФормыВЗначение()
11. caponid 15.08.13 12:02 Сейчас в теме
Вот пример, правда для дбф и общей формы

&НаКлиенте
Перем ХБаза;

&НаКлиенте
Процедура ФайлИмпортаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	ВыбратьФайл(Элемент, ИмяФайлаИмпорта, РежимДиалогаВыбораФайла.Открытие);	
КонецПроцедуры

&НаКлиенте
Процедура ВыбратьФайл(Элемент, ИмяФайла, РежимДиалога)
	
	Диалог=Новый ДиалогВыбораФайла(РежимДиалога); 
	Диалог.Заголовок = "Выбор файла";
	Диалог.ПолноеИмяФайла=ИмяФайла;
	Диалог.Фильтр="Файлы DBF (*.dbf)|*.dbf";
	Диалог.ПроверятьСуществованиеФайла = Истина;
	
	Если Диалог.Выбрать() Тогда
		ИмяФайлаИмпорта=Диалог.ПолноеИмяФайла;
	КонецЕсли;
	
	ОткрытьБазуДанных();
	Если НЕ ХБаза.Открыта() Тогда  
		Сообщить("Не удалось открыть указанный файл: "+ИмяФайлаИмпорта);
		Возврат;
	КонецЕсли;
	
	ЗаполнитьДанные();
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьДанные()
	ХБаза.Первая();
	
	Пока ХБаза.Следующая() Цикл
		
		ТипТовара = ХБаза.Prod_Type;
		
		СтрокаИмпорта = ДанныеЗагрузки.Добавить();
		СтрокаИмпорта.Количество = ХБаза.Count_Pcs;
		СтрокаИмпорта.Номенклатура = ПолучитьНоменклатуру(СтрокаИмпорта.СтрокаНаименования, СтрокаИмпорта.КодНоменклатуры);
    КонецЦикла;
КонецПроцедуры

&НаСервере
Функция ПолучитьНоменклатуру(Имя, Артикул)
	ТоварСсылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
	Если ТоварСсылка.Пустая() Тогда
		Сообщить("Не найдена номенклатура: Артикул='"+Артикул+"', Название='"+СокрЛП(Имя)+"'");
	КонецЕсли;
	Возврат ТоварСсылка;
КонецФункции

&НаКлиенте
Процедура ПрочитатьЗаголовкиИмпорта(Команда)
	ОткрытьБазуДанных();
	Если НЕ ХБаза.Открыта() Тогда  
		Сообщить("Не удалось открыть указанный файл: "+ИмяФайлаИмпорта);
		Возврат;
	КонецЕсли;
	
	ХБаза.Первая();
	
	ДатаНакладной = ХБаза.Doc_Date;
	НомерНакладной = ХБаза.Doc_Number;
	
	Поставщик = ХБаза.SELLER_NAME;
	Получатель = ХБаза.BUYER_NAME;
	АдресПоставки = ХБаза.UNLOAD_ADD;
КонецПроцедуры

&НаКлиенте
Процедура ОткрытьБазуДанных()
	ДатаНакладной 	= "";
	НомерНакладной 	= "";
	Поставщик 		= "";
	Получатель 		= "";
	АдресПоставки	= "";
	ДанныеЗагрузки.Очистить();
	
	ХБаза = Новый XBase;
	ХБаза.Кодировка = КодировкаXBase.ANSI;
	ХБаза.ОткрытьФайл(ИмяФайлаИмпорта,,Истина);
	
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьИмпорт(Команда)
	Закрыть(ЗаписатьИмпортВХранилище());
КонецПроцедуры

&НаСервере
// Функция помещает результаты подбора в хранилище
Функция ЗаписатьИмпортВХранилище() 
	Возврат ПоместитьВоВременноеХранилище(ДанныеЗагрузки.Выгрузить());
КонецФункции
Показать
13. caponid 15.08.13 12:02 Сейчас в теме
а парсим - это значит разбираем строку на составляющие
alanto23; Nadushka74; +2 Ответить
15. perchik_ua 15.08.13 12:06 Сейчас в теме
стр = строка;
//ДлинаСтроки = СтрДлина(стр);
//Таб это ваша табличная часть
ПозицияВхождения = Найти(Стр, ";");
Пока ПозицияВхождения > 0 цикл	
		Подстрока = Сред(Стр, 0, ПозицияВхождения-1);
		
		НовЭлТаб = Таб.Добавить();
		НовЭлТаб.Реквизит = Подстрока;
		
		Стр = СтрЗаменить(Стр,Подстрока+";", "");
		ПозицияВхождения = Найти(Стр, ";");
	КонецЦикла;
	// Если строка-источник не заканчивается на ";" то добавляем последнюю часть текста
	Если СтрДлина(Стр) <> 0 тогда
		НовЭлТаб = Таб.Добавить();
		НовЭлТаб.Реквизит = Подстрока;
	КонецЕсли;
Показать



Вот то что вам нужно.

Буду рад если поможет.
16. Nadushka74 5 15.08.13 13:46 Сейчас в теме
всем спасибо!!!
нашла в общем модуле функцию, которая разбирает строку на массив - ей и воспользовалась СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр, ";")
сейчас код выглядит вот так и все отлично работает:
ОбъектКопирования = Новый COMОбъект ("htmlfile");
	СодержимоеБуфера = ОбъектКопирования.ParentWindow.ClipboardData.GetData("text");
	Стр = СодержимоеБуфера;
	Массив = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр, ";");
	НоваяСтрока = Объект.ТаблицаЗаказов.Добавить();
	НоваяСтрока.НомерЗаказ = Массив[0];
	НоваяСтрока.Датазаказа = Массив[1];
	НоваяСтрока.склад = Массив[2];
	НоваяСтрока.суммаЗаказа = Массив[3];
	НоваяСтрока.МассаЗаказа = Массив[4];
	НоваяСтрока.СрокиОтгрузки = Массив[5];
Показать

Если есть еще варианты его оптимизировать - рада услышать от вас отклик!
17. Goruch 7 15.08.13 13:52 Сейчас в теме
Так я не понял, в чем проблема, в передаче клиент->сервер или не знаешь как это написать?
18. Nadushka74 5 15.08.13 14:02 Сейчас в теме
(17) Goruch, см чуть выше, я уже сделала и все отлично работает, при том все на клиенте!
19. Goruch 7 15.08.13 14:06 Сейчас в теме
(18) если бы были большие объемы я бы все на сервер переносил, а потом обрабатывал.
Но тебе виднее.:)))
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)