как программно заполнить табличную часть УФ?
По теме из базы знаний
- Программное добавление кнопок копирования табличных частей во все документы с минимальными изменениями конфигурации (или вообще без изменения)
- Как автоматически заполнить обработкой табличную часть документа "Ввод начальных остатков" (Тип операции = "Расчеты с партнерами"). 1С: ERP
- Не спеша, эффективно и правильно – путь разработки. Часть 3. Практика
- Табличная часть как поле ввода
- Сохранение данных табличных частей форм в Excel
Найденные решения
всем спасибо!!!
нашла в общем модуле функцию, которая разбирает строку на массив - ей и воспользовалась СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр, ";")
сейчас код выглядит вот так и все отлично работает:
Если есть еще варианты его оптимизировать - рада услышать от вас отклик!
нашла в общем модуле функцию, которая разбирает строку на массив - ей и воспользовалась СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр, ";")
сейчас код выглядит вот так и все отлично работает:
ОбъектКопирования = Новый COMОбъект ("htmlfile");
СодержимоеБуфера = ОбъектКопирования.ParentWindow.ClipboardData.GetData("text");
Стр = СодержимоеБуфера;
Массив = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр, ";");
НоваяСтрока = Объект.ТаблицаЗаказов.Добавить();
НоваяСтрока.НомерЗаказ = Массив[0];
НоваяСтрока.Датазаказа = Массив[1];
НоваяСтрока.склад = Массив[2];
НоваяСтрока.суммаЗаказа = Массив[3];
НоваяСтрока.МассаЗаказа = Массив[4];
НоваяСтрока.СрокиОтгрузки = Массив[5];
ПоказатьЕсли есть еще варианты его оптимизировать - рада услышать от вас отклик!
Остальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1) Nadushka74, если под УФ подразумеваются управляемые формы, тогда нужны уточнения.
1. Строка с разделителями получена на клиенте, т.е. форме объекта. Тогда создаем серверную функцию и туда передаем строку, где ее парсим и заполняем ТЧ полученными значениями. Поиск и создание новых объектов на основании распарсеных значений - по вкусу.
2. Строка с разделителями получена на сервере. Это по сути урезанный варинт п.1, когда строку уже передали. Действия те же: парсим, ищем, заполняем.
1. Строка с разделителями получена на клиенте, т.е. форме объекта. Тогда создаем серверную функцию и туда передаем строку, где ее парсим и заполняем ТЧ полученными значениями. Поиск и создание новых объектов на основании распарсеных значений - по вкусу.
2. Строка с разделителями получена на сервере. Это по сути урезанный варинт п.1, когда строку уже передали. Действия те же: парсим, ищем, заполняем.
в форме добавляем реквизит Таблица значений, описываем поля, выводим на форму, а потом из своего файлика парсим строки и добавляем в таблицу значений.
что сложного то? а потом помещаем ТЗ во временное хранилище - а на сервере достаем.
что сложного то? а потом помещаем ТЗ во временное хранилище - а на сервере достаем.
Если в первый пост закралась опечатка и табличная часть вовсе не табличная, а таблица значений на форме, то в данном случае, полученные на сервере значения для заполнения надо передать на клиент и заполнить ТЗ.
Еще можно поиграться РеквизитФормыВЗначение()
Еще можно поиграться РеквизитФормыВЗначение()
Вот пример, правда для дбф и общей формы
&НаКлиенте
Перем ХБаза;
&НаКлиенте
Процедура ФайлИмпортаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ВыбратьФайл(Элемент, ИмяФайлаИмпорта, РежимДиалогаВыбораФайла.Открытие);
КонецПроцедуры
&НаКлиенте
Процедура ВыбратьФайл(Элемент, ИмяФайла, РежимДиалога)
Диалог=Новый ДиалогВыбораФайла(РежимДиалога);
Диалог.Заголовок = "Выбор файла";
Диалог.ПолноеИмяФайла=ИмяФайла;
Диалог.Фильтр="Файлы DBF (*.dbf)|*.dbf";
Диалог.ПроверятьСуществованиеФайла = Истина;
Если Диалог.Выбрать() Тогда
ИмяФайлаИмпорта=Диалог.ПолноеИмяФайла;
КонецЕсли;
ОткрытьБазуДанных();
Если НЕ ХБаза.Открыта() Тогда
Сообщить("Не удалось открыть указанный файл: "+ИмяФайлаИмпорта);
Возврат;
КонецЕсли;
ЗаполнитьДанные();
КонецПроцедуры
&НаКлиенте
Процедура ЗаполнитьДанные()
ХБаза.Первая();
Пока ХБаза.Следующая() Цикл
ТипТовара = ХБаза.Prod_Type;
СтрокаИмпорта = ДанныеЗагрузки.Добавить();
СтрокаИмпорта.Количество = ХБаза.Count_Pcs;
СтрокаИмпорта.Номенклатура = ПолучитьНоменклатуру(СтрокаИмпорта.СтрокаНаименования, СтрокаИмпорта.КодНоменклатуры);
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ПолучитьНоменклатуру(Имя, Артикул)
ТоварСсылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Артикул);
Если ТоварСсылка.Пустая() Тогда
Сообщить("Не найдена номенклатура: Артикул='"+Артикул+"', Название='"+СокрЛП(Имя)+"'");
КонецЕсли;
Возврат ТоварСсылка;
КонецФункции
&НаКлиенте
Процедура ПрочитатьЗаголовкиИмпорта(Команда)
ОткрытьБазуДанных();
Если НЕ ХБаза.Открыта() Тогда
Сообщить("Не удалось открыть указанный файл: "+ИмяФайлаИмпорта);
Возврат;
КонецЕсли;
ХБаза.Первая();
ДатаНакладной = ХБаза.Doc_Date;
НомерНакладной = ХБаза.Doc_Number;
Поставщик = ХБаза.SELLER_NAME;
Получатель = ХБаза.BUYER_NAME;
АдресПоставки = ХБаза.UNLOAD_ADD;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьБазуДанных()
ДатаНакладной = "";
НомерНакладной = "";
Поставщик = "";
Получатель = "";
АдресПоставки = "";
ДанныеЗагрузки.Очистить();
ХБаза = Новый XBase;
ХБаза.Кодировка = КодировкаXBase.ANSI;
ХБаза.ОткрытьФайл(ИмяФайлаИмпорта,,Истина);
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьИмпорт(Команда)
Закрыть(ЗаписатьИмпортВХранилище());
КонецПроцедуры
&НаСервере
// Функция помещает результаты подбора в хранилище
Функция ЗаписатьИмпортВХранилище()
Возврат ПоместитьВоВременноеХранилище(ДанныеЗагрузки.Выгрузить());
КонецФункции
Показатьстр = строка;
//ДлинаСтроки = СтрДлина(стр);
//Таб это ваша табличная часть
ПозицияВхождения = Найти(Стр, ";");
Пока ПозицияВхождения > 0 цикл
Подстрока = Сред(Стр, 0, ПозицияВхождения-1);
НовЭлТаб = Таб.Добавить();
НовЭлТаб.Реквизит = Подстрока;
Стр = СтрЗаменить(Стр,Подстрока+";", "");
ПозицияВхождения = Найти(Стр, ";");
КонецЦикла;
// Если строка-источник не заканчивается на ";" то добавляем последнюю часть текста
Если СтрДлина(Стр) <> 0 тогда
НовЭлТаб = Таб.Добавить();
НовЭлТаб.Реквизит = Подстрока;
КонецЕсли;
ПоказатьВот то что вам нужно.
Буду рад если поможет.
всем спасибо!!!
нашла в общем модуле функцию, которая разбирает строку на массив - ей и воспользовалась СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр, ";")
сейчас код выглядит вот так и все отлично работает:
Если есть еще варианты его оптимизировать - рада услышать от вас отклик!
нашла в общем модуле функцию, которая разбирает строку на массив - ей и воспользовалась СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр, ";")
сейчас код выглядит вот так и все отлично работает:
ОбъектКопирования = Новый COMОбъект ("htmlfile");
СодержимоеБуфера = ОбъектКопирования.ParentWindow.ClipboardData.GetData("text");
Стр = СодержимоеБуфера;
Массив = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Стр, ";");
НоваяСтрока = Объект.ТаблицаЗаказов.Добавить();
НоваяСтрока.НомерЗаказ = Массив[0];
НоваяСтрока.Датазаказа = Массив[1];
НоваяСтрока.склад = Массив[2];
НоваяСтрока.суммаЗаказа = Массив[3];
НоваяСтрока.МассаЗаказа = Массив[4];
НоваяСтрока.СрокиОтгрузки = Массив[5];
ПоказатьЕсли есть еще варианты его оптимизировать - рада услышать от вас отклик!
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)