Адаптация кода с 7.7 на 8.2

1. user998353 17.06.18 21:37 Сейчас в теме
Доброго времени суток, друзья! Совсем недавно изучаю сферу программирования 1С, на стажировке дали задание "перегрузка документа". Нашел нужный мне код для версии 7.7, однако условием моей задачи является написание кода на 8.х версии. Половину кода адаптировал, на второй половине встрял. Прикрепляю как сурс, так и свою обработку. Ругается на конец процедуры выгрузки: "объект не является типом (вид)". Пробовал изменить тип значения поля ввода на "документы" - не помогло. Подскажете?
Прикрепленные файлы:
Work_1.ert
task1.epf
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1488 17.06.18 23:04 Сейчас в теме
(1) пиши код и вопрос в чем. Также стоит читать больше справку много нового для вас там будет!
3. Slypower 2 18.06.18 10:00 Сейчас в теме
Если ПолеВвода1=0 Тогда 
НЕ ПРАВИЛЬНО.

	Если НЕ ЗначениеЗАполено(ПолеВвода1) Тогда 


В 2с8. стандартные реквизиты можно посмотреть, если в конфигурации нажать правой кнопкой на документ. Там: Дата, Номер, но не ДатаДок, НомерДок.
Вид() нет в с18, там ТипЗНЧ().

Работа с метаданными также отличается. Если после постановки . и нажатии ctr+пробел не выскакивает "подсказка", то вы что-то не так вводите.

Простите, но детальнее код смотреть не хочется. Вы лучше скидывайте на форум куски кода и ошибки, тогда вам помогут
4. user998353 18.06.18 10:40 Сейчас в теме
Хорошо, спасибо.
Немного отрекдактировал код. Теперь выглядит следующим образом:
СЗ=Новый СписокЗначений;
    СЗ.Добавить(ЭлементыФормы.ПолеВвода1.ТипЗначения    ,"Вид");
    СЗ.Добавить(ЭлементыФормы.ПолеВвода1.Номер ,"Номер");
    СЗ.Добавить(Элементыформы.ПолеВвода1.Дата  ,"Дата");

Ругается на две последние строчки, якобы такого метода нет для этого класса. Повторюсь, в ПолеВвода1 юзер должен выбрать абсолютно любой документ из базы данных. Соответственно, мне нужно достать номер, дату и тип документа, который выбран в этом поле. Пробовал в инициализации указывать
//ЭлементыФормы.ПолеВвода1.ТипЗначения = Документы;

В этом случае ругается при запуске на несоответствие типов, хотя поле изначально пустое
5. Slypower 2 18.06.18 11:18 Сейчас в теме
(4) вы внимательно посмотрите, что я писал:
ТипЗНЧ()

Т.е. должно быть:
ТипЗНЧ(ЭлементыФормы.ПолеВвода1)


Только если посмотреть логику задачи, то возможно тут по другому нужно писать.
Если на выходите получить только, например "ПоступлениеМЦ", тогда через метаданные().Вид - уточните в поисковике в гугле
6. user998353 18.06.18 12:50 Сейчас в теме
(5) Не так вас понял, спасибо, поправил.
СЗ.Добавить(ТипЗНЧ(ЭлементыФормы.ПолеВвода1)    ,"Вид");

Теперь "Поле объекта не обнаружено (Номер)"
7. Slypower 2 18.06.18 13:22 Сейчас в теме
(6) да, только не ЭлементыФормы, а ЭтаФорма. Нам нужно обращаться к реквизитам формы, или же Объект, - реквизитам объекта, а не к элементам формы. У вас, если это 1с8.2, то достаточно просто ПолеВвода1.Номер писать, и ПолеВвода1.Дата.
ЭлементыФормы - это обращение к кнопкам будет идти, к тому, что нарисованно
9. user998353 19.06.18 15:32 Сейчас в теме
8. user998353 18.06.18 21:57 Сейчас в теме
У меня версия 1.3, я опечатался, извиняюсь.
Теперь вот так:
СЗ=Новый СписокЗначений;
    СЗ.Добавить(ТипЗНЧ(ЭтаФорма.ПолеВвода1)    ,"Вид");
    СЗ.Добавить(ПолеВвода1.Номер ,"Номер");
    СЗ.Добавить(ПолеВвода1.Дата  ,"Дата");

Ошибка следующая:
{ВнешняяОбработка.task1.Форма.Форма_Перегрузка.Форма(42)}: Значение не является значением объектного типа (Номер)
    СЗ.Добавить(ПолеВвода1.Номер ,"Номер");
10. user998353 19.06.18 18:02 Сейчас в теме
Я, кажется, потихоньку двигаюсь к цели. Все-таки мне удалось установить тип значения. Я просто удалил поле и создал его заново, однако сразу после того, как я разместил его на форме. мне удалось выбрать для него "Тип Значения" в свойствах. Из всего предложенного выбрал "ДокументСсылка".
Однако теперь у меня не заполняется само поле: список выбора заполнен следующим образом:
Для каждого Документ из Метаданные.Документы цикл
	ЭлементыФормы.ПолеВвода1.СписокВыбора.Добавить(Документ.Имя, Документ.Имя);
КонецЦикла;

Боюсь, что использую неправильный тип данных. Также полагаю, что если решится проблема тут, то дальше все будет проще
Прикрепленные файлы:
11. Slypower 2 21.06.18 08:53 Сейчас в теме
(10)
ЭлементыФормы.ПолеВвода1.СписокВыбора.Добавить(Документ.Имя, Документ.Имя);


Вы написали, что ПолеВвода1 - это документ ссылка. А данной строкой пытаетесь использовать как список значений, что не логично
Оставьте свое сообщение

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