Дано тестовое Задание
Необходимо с помощью программных средств платформы и языка 1С разработать
внешнюю обработку «Перегрузка документа».
В верхнем поле должна быть возможность выбрать любой документ из базы данных.
В нижнем поле указывается путь и имя файла для загрузки. На форме нужно обеспечить
возможность просмотра выгруженного текстового файла.
2. При нажатии кнопки «Выгрузить» информация, содержащаяся в выбранном
пользователем документе, должна выгрузиться в указанный файл. Информация должна
быть исчерпывающей, то есть выгружаться должны данные, чтобы при нажатии кнопки
«Загрузить» в базе создавалась бы копия исходного документа (за исключением номера,
т.к. номера документов уникальные).
3. При написании обработки необходимо использовать Метаданные, это делается
для универсализации программного кода.
4. При написании обработки нельзя использовать функции
«ЗначениеВСтрокуВнутр()», «УникальныеИдентификатор()» и подобные функции,
выгружающие уникальные идентификаторы объектов, а также нельзя делать выгрузку и
загрузку в формате XML или JSON.
Необходимо с помощью программных средств платформы и языка 1С разработать
внешнюю обработку «Перегрузка документа».
В верхнем поле должна быть возможность выбрать любой документ из базы данных.
В нижнем поле указывается путь и имя файла для загрузки. На форме нужно обеспечить
возможность просмотра выгруженного текстового файла.
2. При нажатии кнопки «Выгрузить» информация, содержащаяся в выбранном
пользователем документе, должна выгрузиться в указанный файл. Информация должна
быть исчерпывающей, то есть выгружаться должны данные, чтобы при нажатии кнопки
«Загрузить» в базе создавалась бы копия исходного документа (за исключением номера,
т.к. номера документов уникальные).
3. При написании обработки необходимо использовать Метаданные, это делается
для универсализации программного кода.
4. При написании обработки нельзя использовать функции
«ЗначениеВСтрокуВнутр()», «УникальныеИдентификатор()» и подобные функции,
выгружающие уникальные идентификаторы объектов, а также нельзя делать выгрузку и
загрузку в формате XML или JSON.
По теме из базы знаний
- 1С8:борьба - личный опыт работы с платформой 1с8
- Разработка и сценарное тестирование с Vanessa-ADD. Отчетность Allure. Автоматизация запуска сценариев
- Собираем образ виртуальной машины с PostgreSQL и платформой 1С. Цикл "Многопоточный CI для 1С c Packer, Vagrant и Jenkins", часть 2
- Инструкция по установке Postgres для OLTP приложений и 1С. Часть 1. Базовая конфигурация
- Работа с онлайн сервисами из консоли через OInt CLI
Найденные решения
(5) Выгружаете в текстовый док. тип значения реквизита: Метаданные.НайтиПоТипу(ТипЗнч(Объект.РеквизитСоставногоТипа)).Имя
При заполнении из текстового документа обращаемся к нужному объекту по индексу:
НовыйДокумент.Реквизит = Справочники[ИмяТипаИзTXT].НайтиПонаименованию("Наименование")
А искал бы я по коду, так практичнее
При заполнении из текстового документа обращаемся к нужному объекту по индексу:
НовыйДокумент.Реквизит = Справочники[ИмяТипаИзTXT].НайтиПонаименованию("Наименование")
А искал бы я по коду, так практичнее
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот что удалось сделать:
&НаСервере
Процедура ВырузитьОбъектНаСервере()
//Объявление переменных
ТекстовыйДок = Новый ТекстовыйДокумент;
МетаданныеОбъекта = Объект.Документ.Метаданные().Реквизиты;
Дата = Объект.Документ.Метаданные().СтандартныеРеквизиты.Дата.Имя;
ДокументПуть = Объект.Документ.Метаданные().ПолноеИмя();
//Добавление прочих значений
ТекстовыйДок.ДобавитьСтроку(Объект.Документ.Метаданные().Имя);
ТекстовыйДок.ДобавитьСтроку(ПолучитьДатуДокумента(ДокументПуть,Дата));
//Цикл записи реквезитов
Для Каждого Реквизит Из Объект.Документ.Метаданные().Реквизиты Цикл
ИмяРеквизита = Реквизит.Имя;
Значение = ПолучитьЗначениеРеквизита(ДокументПуть,ИмяРеквизита);
//ТипРеквизита = Значение.Тип.Типы()[0];
ТипРеквизита = ТипЗнч(Объект.Документ[ИмяРеквизита]);
ТекстовыйДок.ДобавитьСтроку(ИмяРеквизита + ":" + ТипРеквизита + ":" + Значение);
ТекстовыйДок.Записать(Объект.Файл, КодировкаТекста.UTF8);
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьОбъектНаСервере()
//Работа с текстом
ПрочитанныйТекст = Новый ЧтениеТекста(Объект.Файл,КодировкаТекста.UTF8);
СтрокаТекстовогоФайла = ПрочитанныйТекст.ПрочитатьСтроку();
//Создание документа
НовыйДокумент = Документы[СтрокаТекстовогоФайла].СоздатьДокумент();
СтрокаТекстовогоФайла = ПрочитанныйТекст.ПрочитатьСтроку();
//Установка даты
НовыйДокумент.Дата = СтрокаТекстовогоФайла;
СтрокаТекстовогоФайла = ПрочитанныйТекст.ПрочитатьСтроку();
//Цикл записи
Пока СтрокаТекстовогоФайла <> Неопределено Цикл
МассивСлов = СтрРазделить(СтрокаТекстовогоФайла,":");
Если МассивСлов.Количество() = 3 Тогда
Если МассивСлов[1] = "Строка" Или МассивСлов[1] = "Число" Или МассивСлов[1] = "Дата" Или МассивСлов[1] = "Булево" Тогда
НовыйДокумент[МассивСлов[0]] = МассивСлов[2];
Иначе
//Код для поиска по типу
КонецЕсли;
КонецЕсли;
СтрокаТекстовогоФайла = ПрочитанныйТекст.ПрочитатьСтроку();
КонецЦикла;
НовыйДокумент.Записать();
КонецПроцедуры
Показать
Да мне хотя бы направление нужно в какую сторону думать, пытался реализовать через Метаданные.НайтиПоТипу(), но ничего не получилось
Предполагаю еще, что можно как-то так примерно
НовыйДокумент.Реквизит = Справочники.Организации.НайтиПонаименованию("Рога и копыта")
Но не могу тогда понять как получить сам Справочники.Организации...
Предполагаю еще, что можно как-то так примерно
НовыйДокумент.Реквизит = Справочники.Организации.НайтиПонаименованию("Рога и копыта")
Но не могу тогда понять как получить сам Справочники.Организации...
(5) Выгружаете в текстовый док. тип значения реквизита: Метаданные.НайтиПоТипу(ТипЗнч(Объект.РеквизитСоставногоТипа)).Имя
При заполнении из текстового документа обращаемся к нужному объекту по индексу:
НовыйДокумент.Реквизит = Справочники[ИмяТипаИзTXT].НайтиПонаименованию("Наименование")
А искал бы я по коду, так практичнее
При заполнении из текстового документа обращаемся к нужному объекту по индексу:
НовыйДокумент.Реквизит = Справочники[ИмяТипаИзTXT].НайтиПонаименованию("Наименование")
А искал бы я по коду, так практичнее
(8) https://forum.infostart.ru/forum9/topic197851/ проблема один в один как тут, но я не понял как ее решили
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот