|
Из текстового файла выделить строки и преобразовать их в ссылки для заполнения реквизитов документа. | ☑ | ||
---|---|---|---|---|
0
__user__
14.09.22
✎
01:50
|
Добрый день. Есть файл txt, в который помещаются реквизиты документа. Необходимо эти значения присвоить реквизитам нового документа. Как можно преобразовать строку из текстового файла в ссылочный тип?
|
|||
1
Garykom
гуру
14.09.22
✎
04:33
|
УстановитьСсылкуНового() ?
|
|||
2
ИС-2
naïve
14.09.22
✎
07:14
|
смотря в каком виде информация в текством файле. Если коды, то НайтиПоКоду или создание нового элемента, если гуиды, то см (1)
|
|||
3
DrZombi
гуру
14.09.22
✎
07:34
|
(0) Как-то так.
УИД_Строкой = Строка(Новый УникальныйИдентификатор()); //Замена значения из файла в виде строки //Создать новый элемент... УИД = Новый УникальныйИдентификатор(УИД_Строкой); //Этот УИД будет новой ссылкой НоваяСсылкаНа_Элемент = Справочники.Контрагенты.ПолучитьСсылку(УИД); //Он еще не записан, а ссылка уже есть :) МойСпр = Справочники.Контрагенты.СоздатьЭлемент(); МойСпр.УстановитьСсылкуНового(НоваяСсылкаНа_Элемент); |
|||
4
АгентБезопасной Нацио
14.09.22
✎
07:46
|
(1) (2) (3) телепатирую: у него в файле что-то типа ООО Василек, ИП пупкин, 100 рублей - и ему надо создать в конторе Василек ПКО от Пупкина на стольник...
|
|||
5
Serg_1960
14.09.22
✎
08:34
|
(4) Телепатирую: автору GUIDы, преобразованные из строки, нужны для заполнения реквизитов документа... интуиция мне подсказывает, что по этим реквизитам можно определить тип(вид) метаданных.
|
|||
6
Serg_1960
14.09.22
✎
08:41
|
PS: всё станет гораздо сложнее, когда автор озвучит уточнение, что текстовый файл - это сообщение обмена с внешней БД :)
|
|||
7
АгентБезопасной Нацио
14.09.22
✎
08:44
|
(6) ...причем не 1с
|
|||
9
Мультук
гуру
14.09.22
✎
09:09
|
(0)
>> Добрый день. Есть файл txt, в который помещаются реквизиты документа. Далее обычно приводят короткий пример на 3-4 строки и столько же столбцов. После этого форум перестаёт играть в телепатию. |
|||
10
__user__
15.09.22
✎
23:48
|
(4) (5) (9) (2) Все действия выполняются из формы внешней обработки. Есть поле для ссылки выгружаемого документа, и путь к файлу txt для выгрузки. При нажатии кнопки "выгрузить" в текстовый документ выгружаются: первой строкой название документа, далее строка типа "реквизит1 - тип_реквизита1, реквизит2 - тип_реквизита2, ..." и т.д.
Вот формат выгрузки, разработанный мною (формат должен позволять загрузить документ из текстового файла, т.е. создать копию выгруженного документа на основе данных, которые есть в файле txt): Название документа Рек1 - тип, Рек2 - тип, Рек3 - тип, ... Реквизиты: Рек1 - знач1 Рек2 - знач2 Рек3 - знач3 Табл. части: Рек1 - тип, Рек2 - тип, Рек3 - тип, ... Табл._часть1: знач1, ..., ..., ..., ... знач2, ..., ..., ..., ... знач3, ..., ..., ..., ... Табл._часть2: знач1, ..., ..., ..., ... знач2, ..., ..., ..., ... знач3, ..., ..., ..., ... Вот код для выгрузки: &НаСервере Функция ВыгрузитьОбъектНаСервере(СсылкаНаДокумент) МассивТекстаДляВыгрузки = Новый Массив; ОбъектДокумента = СсылкаНаДокумент.ПолучитьОбъект(); НазваниеДокумента = ОбъектДокумента.Метаданные().Имя; МассивТекстаДляВыгрузки.Добавить(НазваниеДокумента); МассивТекстаДляВыгрузки.Добавить(" "); СтрокаРеквизитов = ""; // Выгрузка типов реквизитов Для каждого Реквизит из ОбъектДокумента.Метаданные().Реквизиты Цикл Если НЕ ОбъектДокумента.Метаданные().Реквизиты.Индекс(Реквизит) = ОбъектДокумента.Метаданные().Реквизиты.Количество() - 1 Тогда СтрокаРеквизитов = СтрокаРеквизитов + Реквизит.Имя; СтрокаРеквизитов = СтрокаРеквизитов + " - "; СтрокаРеквизитов = СтрокаРеквизитов + Реквизит.Тип + " , "; Иначе СтрокаРеквизитов = СтрокаРеквизитов + Реквизит.Имя; СтрокаРеквизитов = СтрокаРеквизитов + " - "; КонецЕсли; КонецЦикла; МассивТекстаДляВыгрузки.Добавить(СтрокаРеквизитов); Если ЗначениеЗаполнено(Объект.ПутьКФайлу) Тогда // Выгрузка реквизитов МассивТекстаДляВыгрузки.Добавить("Реквизиты: "); МассивТекстаДляВыгрузки.Добавить(" "); Для каждого Реквизит из ОбъектДокумента.Метаданные().Реквизиты Цикл СтрокаДляДобавления = ""; Если НЕ ЗначениеЗаполнено(ОбъектДокумента[Реквизит.Имя]) Тогда СтрокаДляДобавления = СтрокаДляДобавления + Реквизит.Имя + " - " + "_ _ _ _"; Иначе СтрокаДляДобавления = СтрокаДляДобавления + Реквизит.Имя + " - " + ОбъектДокумента[Реквизит.Имя]; КонецЕсли; МассивТекстаДляВыгрузки.Добавить(СтрокаДляДобавления); КонецЦикла; МассивТекстаДляВыгрузки.Добавить(" "); // Выгрузка табличных частей ////МассивТекстаДляВыгрузки.Добавить("Табличные части: "); ////МассивТекстаДляВыгрузки.Добавить(" "); ////СписокТабличныЧастей = Метаданные.Документы[НазваниеДокумента].ТабличныеЧасти; //// ////Для каждого ТаблЧасть из СписокТабличныЧастей цикл //// МассивТекстаДляВыгрузки.Добавить(ТаблЧасть.Имя); //// МассивТекстаДляВыгрузки.Добавить(" "); //// СтрокиТаблЧасти = ОбъектДокумента[ТаблЧасть.Имя]; //// //// Для каждого Реквизит из ТаблЧасть.Реквизиты цикл //// СтрокаТекстовогоФайла = ""; //// СтрокаТекстовогоФайла = СтрокаТекстовогоФайла + //// МассивТекстаДляВыгрузки.Добавить(); //// КонецЦикла; //// //// МассивТекстаДляВыгрузки.Добавить(" "); ////КонецЦикла; Иначе Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Поле ""Путь к Файлу"" не заполнено. Документ не может быть выгружен!"; Сообщение.Поле = Объект.ПутьКФайлу; Сообщение.Сообщить(); КонецЕсли; Возврат МассивТекстаДляВыгрузки; КонецФункции |
|||
11
__user__
15.09.22
✎
23:52
|
При нажатии кнопки "загрузить" должна создаваться копия выгруженного документа в базе данных. Проблема в том, что я не знаю как преобразовать значения реквизитов, которые имеют тип "строка" в нужный тип. При этом нельзя использовать функции УникальныйИдентификатор(), ЗначениеВСтрокуВнутр() и подобные фукнции
|
|||
12
Serg_1960
16.09.22
✎
10:33
|
(10) Если Вы используете конструкцию "СтрокаДляДобавления = СтрокаДляДобавления + Реквизит.Имя + " - " + ОбъектДокумента[Реквизит.Имя];", то выводится не само значение, а представление значения. Если Вам, действительно, нужны GUIDы ссылок, то можно использовать XMLСтрока():
Для каждого Реквизит из ОбъектДокумента.Метаданные().Реквизиты Цикл СтрокаДляДобавления = ""; Если НЕ ЗначениеЗаполнено(ОбъектДокумента[Реквизит.Имя]) Тогда СтрокаДляДобавления = СтрокаДляДобавления + Реквизит.Имя + " - " + "_ _ _ _"; Иначе СтрокаДляДобавления = СтрокаДляДобавления + Реквизит.Имя + " - " + XMLСтрока(ОбъектДокумента[Реквизит.Имя]); КонецЕсли; МассивТекстаДляВыгрузки.Добавить(СтрокаДляДобавления); КонецЦикла; |
|||
13
mikecool
16.09.22
✎
10:35
|
автор, используй какой нить хмл или джонсона, не лохмать ты тхт
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |