|
Перегрузка Документов в txt и обратно 🠗 (Волшебник 21.09.2023 12:01) | ☑ | ||
---|---|---|---|---|
0
Keysto
20.09.23
✎
20:45
|
Дано тестовое Задание
Необходимо с помощью программных средств платформы и языка 1С разработать внешнюю обработку «Перегрузка документа». В верхнем поле должна быть возможность выбрать любой документ из базы данных. В нижнем поле указывается путь и имя файла для загрузки. На форме нужно обеспечить возможность просмотра выгруженного текстового файла. 2. При нажатии кнопки «Выгрузить» информация, содержащаяся в выбранном пользователем документе, должна выгрузиться в указанный файл. Информация должна быть исчерпывающей, то есть выгружаться должны данные, чтобы при нажатии кнопки «Загрузить» в базе создавалась бы копия исходного документа (за исключением номера, т.к. номера документов уникальные). 3. При написании обработки необходимо использовать Метаданные, это делается для универсализации программного кода. 4. При написании обработки нельзя использовать функции «ЗначениеВСтрокуВнутр()», «УникальныеИдентификатор()» и подобные функции, выгружающие уникальные идентификаторы объектов, а также нельзя делать выгрузку и загрузку в формате XML или JSON. Часть кода я прописал, он частично работает, но проблема в том что не знаю как обратиться к реквизитам Табличной Части |
|||
1
Keysto
20.09.23
✎
20:46
|
&НаСервере
Процедура ВыгрузитьОбъектНаСервере() Текст = Новый ТекстовыйДокумент; ВыбранныйДокумент = ЭтотОбъект.Документ; РеквизитыДокумента = ВыбранныйДокумент.Метаданные().Реквизиты; РеквизитыТЧ = ВыбранныйДокумент.Метаданные().ТабличныеЧасти; Для Каждого Реквизит ИЗ РеквизитыДокумента Цикл Текст.ДобавитьСтроку("" + ВыбранныйДокумент + " | " + Реквизит.Имя + " : " + ВыбранныйДокумент[Реквизит.Имя]); КонецЦикла; Для Каждого ТЧ ИЗ РеквизитыТЧ Цикл Текст.ДобавитьСтроку("---------------------"); Для Каждого СтрокаТЧ ИЗ ВыбранныйДокумент[ТЧ.Имя] Цикл Для Каждого Реквизит Из РеквизитыТЧ Цикл Текст.ДобавитьСтроку("" + Реквизит.Имя + ":" + РеквизитыТЧ[Реквизит.Имя]); КонецЦикла; КонецЦикла; КонецЦикла; Текст.Записать(Файл); КонецПроцедуры |
|||
2
Keysto
20.09.23
✎
22:37
|
ДЛЯ БУДУЩИХ ПОКОЛЕНИЙ КТО СТОЛКНЕТСЯ С ЭТИМ ЗАДАНИЕМ!
&НаКлиенте Процедура ФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Проводник = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Проводник.Заголовок = "Выберите файл"; Проводник.Фильтр = "Текстовый документ(*.txt)|*.txt"; Оповещение = Новый ОписаниеОповещения("ПослеВыбораФайла", ЭтотОбъект); Проводник.Показать(Оповещение); КонецПроцедуры &НаКлиенте Процедура ПослеВыбораФайла(ВыбранныеФайлы, ДополнительныеПараметры) Экспорт Если ВыбранныеФайлы = Неопределено Тогда Возврат; КонецЕсли; ЭтотОбъект.Файл = ВыбранныеФайлы [0]; КонецПроцедуры &НаКлиенте Процедура ВыгрузитьОбъект(Команда) ВыгрузитьОбъектНаСервере(); КонецПроцедуры &НаСервере Процедура ВыгрузитьОбъектНаСервере() Текст = Новый ТекстовыйДокумент; ВыбранныйДокумент = ЭтотОбъект.Документ; РеквизитыДокумента = ВыбранныйДокумент.Метаданные().Реквизиты; ТабличныеЧасти = ВыбранныйДокумент.Метаданные().ТабличныеЧасти; Для Каждого Реквизит ИЗ РеквизитыДокумента Цикл Текст.ДобавитьСтроку("" + Реквизит.Имя + " : " + ВыбранныйДокумент[Реквизит.Имя]); КонецЦикла; Для Каждого ТабличнаяЧасть ИЗ ТабличныеЧасти Цикл Текст.ДобавитьСтроку("----------"+ " Табличная часть: " +ТабличнаяЧасть.Имя +"-----------"); Для Каждого РеквизитТЧ Из ТабличнаяЧасть.Реквизиты Цикл ИмяРеквизита = РеквизитТЧ.Имя; Для Каждого СтрокаТЧ ИЗ ВыбранныйДокумент[ТабличнаяЧасть.Имя] Цикл Текст.ДобавитьСтроку("" + ИмяРеквизита + " : " + СтрокаТЧ[ИмяРеквизита]); КонецЦикла; КонецЦикла; КонецЦикла; Текст.Записать(Файл); КонецПроцедуры |
|||
3
Доминошник
20.09.23
✎
22:59
|
(2) И что делать, если выбранный на клиенте файл будет недоступен на сервере?
|
|||
4
ads55
21.09.23
✎
08:15
|
(2) + (3) и где "Перегрузка Документов в txt и обратно" - собственно, Обратно?
|
|||
5
Valdis2007
21.09.23
✎
08:31
|
(2) у тебя в диалоге выбора потенциальный баг...я бы поставил незачет))
|
|||
6
Kigo_Kigo
21.09.23
✎
09:17
|
ну по табличным частым можно было и колонки перебрать и их в одну строку записать через тот же разделитель, документ то для загрузки такой же, и порядок колонок не меняется
|
|||
7
Kigo_Kigo
21.09.23
✎
09:18
|
(5) ты имешь ввиду
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;? |
|||
8
Valdis2007
21.09.23
✎
09:28
|
(7) не...по идее Ложь там по умолчанию должна быть.
Если файл не выбран , надо не тупо возврат делать, а показать предупреждение пользователю, что он не выбрал файл...а то у меня были такие что ломились и ломились)) |
|||
9
Обработка
21.09.23
✎
10:19
|
(0) Кто дал такое задание?
Для чего? Чисто для теста? Конфы идентичные? Почему нельзя юзать универсальные давно написанные обработки? |
|||
10
Fram
21.09.23
✎
11:44
|
(9) Когда вы перестанете искать практический смысл в тестовых заданиях. Тестируют базовые скилы программиста
|
|||
11
Keysto
21.09.23
✎
18:26
|
(4) с этим я только разбираюсь, скинул пока первую часть которая работает
|
|||
12
Keysto
21.09.23
✎
18:26
|
(9) (10) Fram прав
|
|||
13
Keysto
21.09.23
✎
18:27
|
(6) Можете подсказать как это сделать? Не очень понимаю как реализовать. Хотел сделать так, как вы описали, но опыта не хватает
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |