Где первые 2 строки это наименование документа и его дата.
Нужно написать обработку позволяющую загрузить эти данные в новый созданный документ.
Часть кода я уже написал. сейчас вопрос каки образом можно перечислить реквизиты шапки и реквизитыТЧ найти эти же реквизиты в текстовом файлы взять от туда значения и прописать в документ?
код который сейчас создает документ только с датой.
[1C-CODE
&НаСервере
Процедура загрузитьНаСервере()
Документ = Новый ТекстовыйДокумент;
Документ.Прочитать("C:\1C\2.txt",КодировкаТекста.UTF8);
Для Индекс = 1 По Документ.КоличествоСтрок() Цикл
Сообщить(Документ.ПолучитьСтроку(Индекс));
35.
G_112691538235479115945
24.03.21 14:14 Сейчас в теме
в итоге родил такую обработку. не судите строго это в принципе первое что я самостоятельно написал.
&НаСервере
Процедура выгрузитьНаСервере(ДокСсылка)
Текст = Новый ТекстовыйДокумент;
//получаем имя документа и дату создания
ИмяДокумента = ДокСсылка.Метаданные().Имя;
ДатаДокумента = ДокСсылка.Дата;
//прописываем первыми 2 строками имя документа и дату
текст.ДобавитьСтроку("" + ИмяДокумента);
текст.ДобавитьСтроку("" + ДатаДокумента);
//перебираем все имеющиеся реквизиты шапки документа
для каждого Шреквизит из ДокСсылка.метаданные().Реквизиты цикл
//проверяем если реквизит имеет тип справочникссылка
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Докссылка[""+Шреквизит.имя])) = ложь тогда
//проверяем если реквизит имеет тип перечисление
если перечисления.ТипВсеСсылки().СодержитТип(ТипЗнч(Докссылка[""+Шреквизит.имя]))=ложь тогда
текст.ДобавитьСтроку(""+ Шреквизит.Имя+"="+Докссылка[""+Шреквизит.имя])
иначе
ПолноеИмяПеречисления=ДокСсылка[Шреквизит.имя].метаданные().имя;
текст.ДобавитьСтроку(""+ Шреквизит.Имя+"="+Докссылка[""+Шреквизит.имя]+"#"+ПолноеИмяПеречисления)
конецесли;
иначе
ПолноеИмяСпр=ДокСсылка[Шреквизит.имя].метаданные().имя;
текст.ДобавитьСтроку(""+ Шреквизит.Имя+"="+Докссылка[""+Шреквизит.имя].код+"&"+ПолноеИмяСпр);
конецесли;
конецЦикла;
//заполняем реквизитытабличных частей документа
Для каждого ТабЧасть из докссылка.Метаданные().ТабличныеЧасти Цикл //Определеяем имена табличных частей
Для каждого ТекСтрока из Докссылка[ТабЧасть.имя] цикл //используя имя табличной части получить строки ТЧ
для каждого ТЧреквизит из Табчасть.реквизиты цикл //находясь на строке ТЧ перебираем реквизиты ТЧ
//проверяем если реквизит имеет тип справочникссылка
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ТекСтрока[""+ТЧреквизит.имя])) = ложь тогда
текст.ДобавитьСтроку("ТабличныеЧасти;"+ТабЧасть.Имя+"'"+ ТЧреквизит.Имя+"="+ТекСтрока[""+ТЧреквизит.имя]);
иначе
текст.ДобавитьСтроку("ТабличныеЧасти;"+ТабЧасть.Имя+"'"+ ТЧреквизит.Имя+"="+ТекСтрока[""+ТЧреквизит.имя].код);
конецесли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
//записывае текст в файл
Текст.Записать(сохранитькак);
КонецПроцедуры
&НаКлиенте
Процедура выгрузить(Команда)
ВыгрузитьНаСервере(ДокСсылка);
КонецПроцедуры
&НаСервере
Процедура загрузитьНаСервере()
Документ = Новый ТекстовыйДокумент;
Документ.Прочитать(ПутьКФайлу,КодировкаТекста.UTF8);
//так как мы значем точно,что первые 2 строки текстового файла, это название документа и его дата то сразу прописываем переменные
Для Индекс = 1 По Документ.КоличествоСтрок() Цикл
НаименованиеДокумента=документ.ПолучитьСтроку(1);
ДатаДокумента=документ.ПолучитьСтроку(2);
КонецЦикла;
//создаем документ с наименование документа из текстового файла и прописываем ему дату.
Новыйдокумент = документы[НаименованиеДокумента].СоздатьДокумент();
Новыйдокумент.Дата = Дата(ДатаДокумента);
//так как первые 2 строки уже определены,они нам не нужны по этому начинаем цикл с 3 строки
Для Индекс = 3 По Документ.КоличествоСтрок() Цикл
Стр = Документ.Получитьстроку(Индекс);
//прописываем разделители
Разделитель = найти(стр,"=");
РазделительТЧ=найти(стр,"'");
РазделительУТЧ=найти(стр,";");
РазделительТСпр = найти(стр,"&");
РазделительПеречисления = найти(стр,"#");
//получаем имена,значения и тип реквизитов.
КодЗначения=сред(стр,Разделитель+1,РазделительТСпр-Разделитель-1);
НаименованиеРеквизита = Лев(стр,Разделитель-1);
ПолноеИмяСпр=сред(стр,РазделительТСпр+1);
ПолноеИмяПеречисления = сред(стр,РазделительПеречисления+1);
НаименованиеПер=сред(стр,Разделитель+1,РазделительПеречисления-Разделитель-1);
ИмяТЧ=сред(стр,РазделительУТЧ+1,РазделительТЧ-РазделительУТЧ-1);
НаименованиеРТЧ=сред(стр,РазделительТЧ+1,Разделитель-РазделительТЧ-1);
УсловиеДляТЧ= Найти(стр,"ТабличныеЧасти");
//проверяеместь ли упоминание, что это реквизит ТЧ
Если УсловиеДляТЧ=0 тогда
//Получаем реквизит шапки
Шреквизит=НовыйДокумент.Метаданные().Реквизиты[НаименованиеРеквизита];
//проверяем есть ли упоминание что этот реквизит должен быть справочникссылка. если да то ищем по коду,получаем ссылку и присваиваем значение реквизиту
если РазделительТСпр <> 0 тогда
Элемент = Справочники[ПолноеИмяСпр].найтипокоду(КодЗначения).ссылка;
новыйдокумент[""+Шреквизит.имя]=Элемент;
иначе
//проверяем есть ли упоминание что это перечисление.если да то получаем перечисление и прописываем его в значение, если нет то просто берем значение и прописываем его в реквизит
если РазделительПеречисления <> 0 тогда
перечисление = перечисления[полноеимяперечисления][наименованиеПер];
новыйдокумент[""+Шреквизит.имя]=перечисление;
иначе
новыйдокумент[""+Шреквизит.имя]=КодЗначения;
конецесли;
конецесли;
иначе
//получаем реквизит ТЧ
ТЧреквизит=Новыйдокумент.метаданные().ТабличныеЧасти[ИмяТЧ].реквизиты[НаименованиеРТЧ];
//так как у нас в документах во всех ТЧ есть реквизит "номенклатура" то по нему будем определять нужно ли создовать новую строку в ТЧ
Если НаименованиеРТЧ="Номенклатура" тогда
НоваяСтрока = новыйдокумент[ИмяТЧ].Добавить();
//проверяем если реквизит имеет тип справочникссылка(у нас в документах состовной тип данных есть только в реквизитах шапки по этому там сделанно по другому)
если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(НоваяСтрока[""+ТЧреквизит.имя])) = истина тогда
ПолноеИмяСпр=НоваяСтрока[ТЧреквизит.имя].метаданные().имя;
Элемент = Справочники[ПолноеИмяСпр].найтипокоду(КодЗначения).ссылка;
НоваяСтрока[""+ТЧреквизит.имя]=Элемент;
иначе
НоваяСтрока[ТЧреквизит.имя] = КодЗначения;
конецЕсли;
иначе
если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(НоваяСтрока[""+ТЧреквизит.имя])) = истина тогда
ПолноеИмяСпр=НоваяСтрока[ТЧреквизит.имя].метаданные().имя;
Элемент = Справочники[ПолноеИмяСпр].найтипокоду(КодЗначения).ссылка;
НоваяСтрока[""+ТЧреквизит.имя]=Элемент;
иначе
НоваяСтрока[ТЧреквизит.имя] = КодЗначения;
конецЕсли;
конецЕсли;
конецЕсли;
КонецЦикла;
Новыйдокумент.записать();
КонецПроцедуры
&НаКлиенте
Процедура загрузить(Команда)
загрузитьНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогВыбораФайла.ПолноеИмяФайла = ПутьКФайлу;
Фильтр = НСтр("ru = 'Текст'; en = 'Text'")
+ "(*.txt)|*.txt";
ДиалогВыбораФайла.Фильтр = Фильтр;
ДиалогВыбораФайла.МножественныйВыбор = Ложь;
ДиалогВыбораФайла.Заголовок = "Выберите каталог";
ОповещениеЗавершения = Новый ОписаниеОповещения("ВыборФайлаЗавершение", ЭтотОбъект);
ДиалогВыбораФайла.Показать(ОповещениеЗавершения);
КонецПроцедуры
&НаКлиенте
Процедура ВыборФайлаЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
Если ВыбранныеФайлы <> Неопределено Тогда
ПутьКФайлу = ВыбранныеФайлы[0];
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьКакНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогВыбораФайла.ПолноеИмяФайла = ПутьКФайлу;
Фильтр = НСтр("ru = 'Текст'; en = 'Text'")
+ "(*.txt)|*.txt";
ДиалогВыбораФайла.Фильтр = Фильтр;
ДиалогВыбораФайла.МножественныйВыбор = Ложь;
ДиалогВыбораФайла.Заголовок = "Выберите каталог";
Оповещения = Новый ОписаниеОповещения("СохранениеФайлаЗавершение", ЭтаФорма);
ДиалогВыбораФайла.Показать(Оповещения);
КонецПроцедуры
&НаКлиенте
Процедура СохранениеФайлаЗавершение(ВыбранныеФайлыС, ДополнительныеПараметры) Экспорт
Если ВыбранныеФайлыС <> Неопределено Тогда
сохранитькак = ВыбранныеФайлыС[0];
КонецЕсли;
КонецПроцедуры
(1) У Вас неправильная структура файла для начала:
Секция документа должна быть однозначно определена например текстом НачалоДокумента. А дальше уже дело техники разобрать файл
(7) Тут можно проверить и на Метаданные.Документы.Найти()
Типа так
Перем ТекущийДокумент;
// --- бла бла бла
Если не Метаданные.Документы.Найти(ТекущаяСтрока) = неопределено Тогда
Если не ТекущийДокумент = Неопределено Тогда
//Записываем предыдущий документ;
ТекущийДокумент.Записать();
КонецЕсли;
ТекущийДокумент = Документы[ТекущаяСтрока].СоздатьДокумент();
КонецЕсли;
И что значит "взять из файла значение", у вас это просто строки, их как-то надо будет обрабатывать при чтении, искать в базе по наименованию, например, а значит надо понимать какой это справочник.
Т.е. простого решения не будет.
9.
G_112691538235479115945
23.03.21 12:37 Сейчас в теме
(6)в общем после долгого шевеления мозгами родил такой код.
Процедура загрузитьНаСервере()
Документ = Новый ТекстовыйДокумент;
Документ.Прочитать("C:\1C\2.txt",КодировкаТекста.UTF8);
Для Индекс = 1 По Документ.КоличествоСтрок() Цикл
НаименованиеДокумента=документ.ПолучитьСтроку(1);
ДатаДокумента=документ.ПолучитьСтроку(2);
КонецЦикла;
Для Индекс = 3 По Документ.КоличествоСтрок() Цикл
Стр = Документ.Получитьстроку(Индекс);
Разделитель = найти(стр,"=");
//РазделительКода = найти(стр,";");
КодЗначения=сред(стр,Разделитель+1);
Наименование = Лев(стр,разделитель-1);
Значение = сред(стр,Разделитель+1);
Новыйдокумент = документы[НаименованиеДокумента].СоздатьДокумент();
Новыйдокумент.Дата = Дата(ДатаДокумента);
для каждого Шреквизит из Новыйдокумент.метаданные().Реквизиты цикл
ИмяСправочника=""+ ТипЗнч(Новыйдокумент[""+Шреквизит.имя]);
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Новыйдокумент[""+Шреквизит.имя])) = истина тогда
Элемент = Справочники[ИмяС
правочника].найтипокоду(Значение).получитьОбъект();
Новыйдокумент[""+Шреквизит.имя]=Элемент иначе
Новыйдокумент[Шреквизит.имя].Наименование=Значение;
Сообщить(Новыйдокумент[""+Шреквизит.имя].код+ "==="+Новыйдокумент[Шреквизит.имя].Наименование);
конецесли;
КонецЦикла;
КонецЦикла;
//НовыйДокумент.записать();
КонецПроцедуры
Показать
есть ИмяСправочника одним словом то все нормально но если к примеру 2 словами например Договор Контрагента то соответственно выдает ошибку. как еще можно получить название справочника?
17.
G_112691538235479115945
23.03.21 12:58 Сейчас в теме
так я немного запутался. в итоге как получить имя справочника в виде ДоговорыКонтрагентов из реквизита документа с типом справочникссылка. потому что если я выбирают типзнч то он мне выдает тип в виде "Договоры Контрагентов". как еще получить я пока не знаю подскажите пожалуйста.
20.
G_112691538235479115945
23.03.21 14:30 Сейчас в теме
в результате выполнения кода не присваиваются значения для реквизитов с типом справочникссылка. в чем ошибка?
Для Индекс = 3 По Документ.КоличествоСтрок() Цикл
Стр = Документ.Получитьстроку(Индекс);
Разделитель = найти(стр,"=");
КодЗначения=сред(стр,Разделитель+1);
НаименованиеСпр = Лев(стр,разделитель-1);
Шреквизит=Новыйдокумент.метаданные().Реквизиты[наименованиеспр];
ПолноеИмяСпр=Новыйдокумент[Шреквизит.имя].метаданные().имя;
Элемент = Справочники[ПолноеИмяСпр].найтипокоду(КодЗначения).получитьОбъект();
новыйдокумент[""+Шреквизит.имя]=Элемент;
сообщить(новыйдокумент[""+Шреквизит.имя]);
27.
G_112691538235479115945
23.03.21 18:15 Сейчас в теме
вопрос почему вот такое выражение не работает ТЧреквизит=Новыйдокумент.метаданные()[наименованиеспр];
в наименованиеспр я передаю ТабличныеЧасти.Товары.Реквизиты.Номенклатура
30.
G_112691538235479115945
24.03.21 07:32 Сейчас в теме
(28)хорошо тогда так почему не работает ТЧреквизит=Новыйдокумент.метаданные().ТабличныеЧасти[ИмяТЧ].реквизиты[НаименованиеРТЧ];
где ИмяТЧ=товары НаименованиеРТЧ=Номенклатура
Если в документе есть табличная часть "Товары" с реквизитом "Номенклатура", то должно работать, иначе смотрите описание ошибки. Ваш код можно сделать безопаснее:
МетаданныеТЧ = Новыйдокумент.Метаданные().ТабличныеЧасти.Найти(ИмяТЧ);
Если МетаданныеТЧ <> Неопределено Тогда
МетаданныеРеквизита = МетаданныеТЧ.Реквизиты.Найти(НаименованиеРТЧ);
Если МетаданныеРеквизита <> Неопределено Тогда
КонецЕсли;
КонецЕсли;
32.
G_112691538235479115945
24.03.21 07:53 Сейчас в теме
(31)ошибка вот такая
{Обработка.ВыгрузкаФайлов.Форма.Форма.Форма(87)}: Поле объекта не обнаружено (Товары')
ТЧреквизит=Новыйдокумент.метаданные().ТабличныеЧасти[ИмяТЧ].реквизиты[НаименованиеРТЧ];
при этом Табличная часть с названием Товары в документе есть.
в отладчике во такая строка вычисляется. мб есть какие то нюансы?
Новыйдокумент.метаданные().ТабличныеЧасти.Товары.реквизиты.номенклатура
35.
G_112691538235479115945
24.03.21 14:14 Сейчас в теме
в итоге родил такую обработку. не судите строго это в принципе первое что я самостоятельно написал.
&НаСервере
Процедура выгрузитьНаСервере(ДокСсылка)
Текст = Новый ТекстовыйДокумент;
//получаем имя документа и дату создания
ИмяДокумента = ДокСсылка.Метаданные().Имя;
ДатаДокумента = ДокСсылка.Дата;
//прописываем первыми 2 строками имя документа и дату
текст.ДобавитьСтроку("" + ИмяДокумента);
текст.ДобавитьСтроку("" + ДатаДокумента);
//перебираем все имеющиеся реквизиты шапки документа
для каждого Шреквизит из ДокСсылка.метаданные().Реквизиты цикл
//проверяем если реквизит имеет тип справочникссылка
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Докссылка[""+Шреквизит.имя])) = ложь тогда
//проверяем если реквизит имеет тип перечисление
если перечисления.ТипВсеСсылки().СодержитТип(ТипЗнч(Докссылка[""+Шреквизит.имя]))=ложь тогда
текст.ДобавитьСтроку(""+ Шреквизит.Имя+"="+Докссылка[""+Шреквизит.имя])
иначе
ПолноеИмяПеречисления=ДокСсылка[Шреквизит.имя].метаданные().имя;
текст.ДобавитьСтроку(""+ Шреквизит.Имя+"="+Докссылка[""+Шреквизит.имя]+"#"+ПолноеИмяПеречисления)
конецесли;
иначе
ПолноеИмяСпр=ДокСсылка[Шреквизит.имя].метаданные().имя;
текст.ДобавитьСтроку(""+ Шреквизит.Имя+"="+Докссылка[""+Шреквизит.имя].код+"&"+ПолноеИмяСпр);
конецесли;
конецЦикла;
//заполняем реквизитытабличных частей документа
Для каждого ТабЧасть из докссылка.Метаданные().ТабличныеЧасти Цикл //Определеяем имена табличных частей
Для каждого ТекСтрока из Докссылка[ТабЧасть.имя] цикл //используя имя табличной части получить строки ТЧ
для каждого ТЧреквизит из Табчасть.реквизиты цикл //находясь на строке ТЧ перебираем реквизиты ТЧ
//проверяем если реквизит имеет тип справочникссылка
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ТекСтрока[""+ТЧреквизит.имя])) = ложь тогда
текст.ДобавитьСтроку("ТабличныеЧасти;"+ТабЧасть.Имя+"'"+ ТЧреквизит.Имя+"="+ТекСтрока[""+ТЧреквизит.имя]);
иначе
текст.ДобавитьСтроку("ТабличныеЧасти;"+ТабЧасть.Имя+"'"+ ТЧреквизит.Имя+"="+ТекСтрока[""+ТЧреквизит.имя].код);
конецесли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
//записывае текст в файл
Текст.Записать(сохранитькак);
КонецПроцедуры
&НаКлиенте
Процедура выгрузить(Команда)
ВыгрузитьНаСервере(ДокСсылка);
КонецПроцедуры
&НаСервере
Процедура загрузитьНаСервере()
Документ = Новый ТекстовыйДокумент;
Документ.Прочитать(ПутьКФайлу,КодировкаТекста.UTF8);
//так как мы значем точно,что первые 2 строки текстового файла, это название документа и его дата то сразу прописываем переменные
Для Индекс = 1 По Документ.КоличествоСтрок() Цикл
НаименованиеДокумента=документ.ПолучитьСтроку(1);
ДатаДокумента=документ.ПолучитьСтроку(2);
КонецЦикла;
//создаем документ с наименование документа из текстового файла и прописываем ему дату.
Новыйдокумент = документы[НаименованиеДокумента].СоздатьДокумент();
Новыйдокумент.Дата = Дата(ДатаДокумента);
//так как первые 2 строки уже определены,они нам не нужны по этому начинаем цикл с 3 строки
Для Индекс = 3 По Документ.КоличествоСтрок() Цикл
Стр = Документ.Получитьстроку(Индекс);
//прописываем разделители
Разделитель = найти(стр,"=");
РазделительТЧ=найти(стр,"'");
РазделительУТЧ=найти(стр,";");
РазделительТСпр = найти(стр,"&");
РазделительПеречисления = найти(стр,"#");
//получаем имена,значения и тип реквизитов.
КодЗначения=сред(стр,Разделитель+1,РазделительТСпр-Разделитель-1);
НаименованиеРеквизита = Лев(стр,Разделитель-1);
ПолноеИмяСпр=сред(стр,РазделительТСпр+1);
ПолноеИмяПеречисления = сред(стр,РазделительПеречисления+1);
НаименованиеПер=сред(стр,Разделитель+1,РазделительПеречисления-Разделитель-1);
ИмяТЧ=сред(стр,РазделительУТЧ+1,РазделительТЧ-РазделительУТЧ-1);
НаименованиеРТЧ=сред(стр,РазделительТЧ+1,Разделитель-РазделительТЧ-1);
УсловиеДляТЧ= Найти(стр,"ТабличныеЧасти");
//проверяеместь ли упоминание, что это реквизит ТЧ
Если УсловиеДляТЧ=0 тогда
//Получаем реквизит шапки
Шреквизит=НовыйДокумент.Метаданные().Реквизиты[НаименованиеРеквизита];
//проверяем есть ли упоминание что этот реквизит должен быть справочникссылка. если да то ищем по коду,получаем ссылку и присваиваем значение реквизиту
если РазделительТСпр <> 0 тогда
Элемент = Справочники[ПолноеИмяСпр].найтипокоду(КодЗначения).ссылка;
новыйдокумент[""+Шреквизит.имя]=Элемент;
иначе
//проверяем есть ли упоминание что это перечисление.если да то получаем перечисление и прописываем его в значение, если нет то просто берем значение и прописываем его в реквизит
если РазделительПеречисления <> 0 тогда
перечисление = перечисления[полноеимяперечисления][наименованиеПер];
новыйдокумент[""+Шреквизит.имя]=перечисление;
иначе
новыйдокумент[""+Шреквизит.имя]=КодЗначения;
конецесли;
конецесли;
иначе
//получаем реквизит ТЧ
ТЧреквизит=Новыйдокумент.метаданные().ТабличныеЧасти[ИмяТЧ].реквизиты[НаименованиеРТЧ];
//так как у нас в документах во всех ТЧ есть реквизит "номенклатура" то по нему будем определять нужно ли создовать новую строку в ТЧ
Если НаименованиеРТЧ="Номенклатура" тогда
НоваяСтрока = новыйдокумент[ИмяТЧ].Добавить();
//проверяем если реквизит имеет тип справочникссылка(у нас в документах состовной тип данных есть только в реквизитах шапки по этому там сделанно по другому)
если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(НоваяСтрока[""+ТЧреквизит.имя])) = истина тогда
ПолноеИмяСпр=НоваяСтрока[ТЧреквизит.имя].метаданные().имя;
Элемент = Справочники[ПолноеИмяСпр].найтипокоду(КодЗначения).ссылка;
НоваяСтрока[""+ТЧреквизит.имя]=Элемент;
иначе
НоваяСтрока[ТЧреквизит.имя] = КодЗначения;
конецЕсли;
иначе
если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(НоваяСтрока[""+ТЧреквизит.имя])) = истина тогда
ПолноеИмяСпр=НоваяСтрока[ТЧреквизит.имя].метаданные().имя;
Элемент = Справочники[ПолноеИмяСпр].найтипокоду(КодЗначения).ссылка;
НоваяСтрока[""+ТЧреквизит.имя]=Элемент;
иначе
НоваяСтрока[ТЧреквизит.имя] = КодЗначения;
конецЕсли;
конецЕсли;
конецЕсли;
КонецЦикла;
Новыйдокумент.записать();
КонецПроцедуры
&НаКлиенте
Процедура загрузить(Команда)
загрузитьНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогВыбораФайла.ПолноеИмяФайла = ПутьКФайлу;
Фильтр = НСтр("ru = 'Текст'; en = 'Text'")
+ "(*.txt)|*.txt";
ДиалогВыбораФайла.Фильтр = Фильтр;
ДиалогВыбораФайла.МножественныйВыбор = Ложь;
ДиалогВыбораФайла.Заголовок = "Выберите каталог";
ОповещениеЗавершения = Новый ОписаниеОповещения("ВыборФайлаЗавершение", ЭтотОбъект);
ДиалогВыбораФайла.Показать(ОповещениеЗавершения);
КонецПроцедуры
&НаКлиенте
Процедура ВыборФайлаЗавершение(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт
Если ВыбранныеФайлы <> Неопределено Тогда
ПутьКФайлу = ВыбранныеФайлы[0];
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СохранитьКакНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Режим = РежимДиалогаВыбораФайла.Сохранение;
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогВыбораФайла.ПолноеИмяФайла = ПутьКФайлу;
Фильтр = НСтр("ru = 'Текст'; en = 'Text'")
+ "(*.txt)|*.txt";
ДиалогВыбораФайла.Фильтр = Фильтр;
ДиалогВыбораФайла.МножественныйВыбор = Ложь;
ДиалогВыбораФайла.Заголовок = "Выберите каталог";
Оповещения = Новый ОписаниеОповещения("СохранениеФайлаЗавершение", ЭтаФорма);
ДиалогВыбораФайла.Показать(Оповещения);
КонецПроцедуры
&НаКлиенте
Процедура СохранениеФайлаЗавершение(ВыбранныеФайлыС, ДополнительныеПараметры) Экспорт
Если ВыбранныеФайлыС <> Неопределено Тогда
сохранитькак = ВыбранныеФайлыС[0];
КонецЕсли;
КонецПроцедуры
(35) Если выгрузку в текстовый файл писали тоже вы, советую сделать через JSON, там и структура файла будет и парсить очень легко, не говоря уже о скорости выгрузки и загрузки, а так же длине кода.
41.
G_112691538235479115945
02.04.21 11:31 Сейчас в теме
(40)по условию задачи мне нужно разработать свой вариант загрузки и выгрузки. по этому вариант с JSON не подходит.
в ходе гуглинга я понял что данное значение является многострочной строкой. у меня получилось пры выгрузке передать в файл в месте с этим значением и количество строк теперь вопрос такой можно как то при загрузке опираясь на число строк переданное из файла получить всю многостроковую строку разом для записи ее в значение реквизита.