Переписать код с 7.7 на 8.3

1. user998353 19.06.18 19:51 Сейчас в теме
Добрый вечер! Имеется код с версии 7.7, частично переделал его под 8.3, но код не работает всё равно.
задание такое:
Необходимо с помощью программных средств языка 1С написать внешнюю обработку «Перегрузка документа».
На форме находятся 2 поля: в одном выбираем документ, в другом файл; и две кнопки: "Выгрузить" и "Загрузить"
По кнопке «Выгрузить» информация, содержащая в выбранном документе, выгружается в указанный файл.
По кнопке «Загрузить», из указанного файла, в базе создается копия исходного документа (за исключением номера документа, так как номера документов в системе уникальные).
При написании обработки необходимо использовать элемент языка «Метаданные.…».

1С учу меньше недели, в ооп опыт имеется, но не получается перепрыгнуть на другой язык так резко. В текстовом документе код для версии 7.7, также прикрепляю мою обработку, в которой частично адаптирована функция выгрузки. Может быть, кому-то не трудно будет помочь? Или хотя бы посоветуйте, как разобраться, что почитать/посмотреть, до дедлайна двое суток.
Прикрепленные файлы:
Новый текстовый документ.txt
task1.epf
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. json 3306 19.06.18 22:22 Сейчас в теме
Вместо списка значений лучше использовать Структуру и Массив.
ЧтениеТекста и ЗаписьТекста имеет смысл использовать при работе с большими объемами текста. В вашем случае достаточно использовать объект ТекстовыйДокумент - он проще. В семерке вроде есть аналог объект "Текст" (если мне не изменяет память).
+
3. json 3306 19.06.18 22:30 Сейчас в теме
Документ = ПолеВвода1; // это конечно го**нокод называть реквизиты цифрами. Имена переменных должны быть самодокументируемыми, тогда и мозг не будет закипать от собственного кода

Шапка = Новый Структура;
Для каждого Реквизит из Документ.Метаданные().Реквизиты Цикл
    Ключ = Реквизит.Имя;
    Значение = Документ[Ключ];
    Шапка.Вставить(Ключ, Значение);
КонецЦикла;
Показать
+
4. json 3306 19.06.18 22:40 Сейчас в теме
	ТабличныеЧасти = Новый Структура;
	Для каждого ТабличнаяЧасть из Документ.Метаданные().ТабличныеЧасти Цикл
		ИмяТабличнойЧасти = ТабличнаяЧасть.Имя;
		ТабличныеЧасти.Вставить(ИмяТабличнойЧасти, Документ[ИмяТабличнойЧасти].Выгрузить());
	КонецЦикла;
	
	СериализованныйОбъект = Новый Структура;
	СериализованныйОбъект.Вставить("Шапка", Шапка);
	СериализованныйОбъект.Вставить("ТабличныеЧасти", ТабличныеЧасти);
	Текст = Новый ТекстовыйДокумент;
	Текст.УстановитьТекст(ЗначениеВСтрокуВнутр(СериализованныйОбъект));
	Текст.Записать(ИмяФайла);

Показать
+
6. user998353 19.06.18 22:45 Сейчас в теме
(4) обалдеть! спасибо большое. К сожалению, нельзя использовать функции, выгружиющие уникальные идентификаторы объектов по типу "ЗначениеВСтрокуВнутр()" или "УникальныеИдентификатор()"
+
7. json 3306 19.06.18 22:50 Сейчас в теме
(6)
xmlСтрока(Ссылка) - вроде выгружает гуид, сейчас не буду проверять
+
8. user998353 19.06.18 22:52 Сейчас в теме
(7) в любом случае спасибо, буду пробовать! А что посоветуете посмотреть , чтобы начать разбираться в метаданных?
+
9. json 3306 19.06.18 23:06 Сейчас в теме
(8)
да фиг знает. Я нигде не встречал, чтобы были расписаны все возможные действия с метаданными, т.к. их (возможных действий и их комбинаций) очень много. При этом большинство из них интуитивно понятны (после того как к ним привыкнешь) благодаря хорошей архитектуре восьмерки.
Просто искать, гуглить и писать код (пока не привыкнешь).
+
5. json 3306 19.06.18 22:42 Сейчас в теме
так вот оно покрасивше будет выглядеть, и разобраться проще и видно где улучшить можно и соптимизировать
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот