Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0
Кто-нибудь пробовал выгружать xml для регламентированной отчетсности при помощи фабрики xdto, формируя сами пакеты загрузкой xsd в xdto? Пробую сделать реестр налоговых накладных, скачал схему J1201507.xsd, делаю из нее объект XDTO, получается вот это:
В элементе DHead сложная структура вот такого вида:
Кто подскажет как это заполнять? Понимаю что LINKED_DOCS и DOC это строки стостоящие из данных, но как правильно создать эти строки? Как заполнять? Знаю что строку нужно создать типа так:
Может чего поправить в пакете XDTO, тобы можно было все создать, а потом готовый xml уже подправить (поудалять то, что добавлялось для нормальной выгрузки)?
Понимаю что извращенство, но использовать COM-объекты не могу, как вариант, если с XDTO не получится, останется только формировать xml средствами 1С почти в ручном режиме...
Группа: Местный
Сообщений: 2908
Из: Київ, Україна
Спасибо сказали: 1159 раз
Рейтинг: 1244.5
Все есть в пакете, только надо читать свойства. LINKED_DOCS это, скорее всего, список из DOC. Если так, то создавайте объект DOC, заполняйте его и добавляйте в объект LINKED_DOCS.
Допрацьовую: - "Бухгалтерія для України 2.1"; - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0
Цитата(Petre @ 20.11.14, 10:06)
Если так, то создавайте объект DOC, заполняйте его и добавляйте в объект LINKED_DOCS.
Вот это меня как раз и интересует, как создать объект DOC и как его потом добавить в LINKED_DOCS?
То что оно список объектов я понял, просто не могу понять как создать это все дело и слепить его в кучу... Может быть не так гугл мучаю, но почему-то не нашел за три дня нигде такого, чтоб вложенность была такая. Без примера как-то туго идет (
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0
Цитата(Petre @ 20.11.14, 10:30)
Например так:
LINKED_DOCS = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("J1201507", "LINKED_DOCS")); Для . . . Цикл DOC = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("J1201507", "DOC")); //* заполняем DOC LINKED_DOCS.DOC.Добавить(DOC); КонецЦикла;
Это если я правильно угадал свойства пакета.
Не получилось, вылезла такая вот ошибка:
Цитата
{Отчет.РегламентированныйОтчетРеестрНалоговыхНакладных.Форма.ФормаОтчета2013Мес.Форма(3695)}: Ошибка при вызове метода контекста (Создать) СтрокаДокументов = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("J1201507", "LINKED_DOCS")); по причине: Несоответствие типов (параметр номер '1')
Или нужно было все точно копировать?
Попробовал "копипаст" ошибка такая же.
В этом случае, я так понимаю, ошибка в названии пакета - J1201507.
Пробую делать так:
типСтрокаШапка = ФабрикаXDTO.Тип("J1201507", "DHead"); типСтрокаДок = типСтрокаШапка.Свойства.Получить("LINKED_DOCS").Тип; типДок = типСтрокаДок.Свойства.Получить("DOC").Тип; СтрокаДок = ФабрикаXDTO.Создать(типСтрокаШапка.Свойства.Получить("LINKED_DOCS").Тип); Для каждого gw из СтрокаДокументов Цикл Док = ФабрикаXDTO.Создать(типДок);
Проходит, но спотыкается на строчке
СтрокаШапка.LINKED_DOCS.Добавить(СтрокаДок);
С ошибкой
Цитата
{Отчет.РегламентированныйОтчетРеестрНалоговыхНакладных.Форма.ФормаОтчета2013Мес.Форма(3712)}: Значение не является значением объектного типа (Добавить) СтрокаШапка.LINKED_DOCS.Добавить(СтрокаДок);
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0
Цитата(Petre @ 21.11.14, 10:36)
Мне сложно по скринам делать однозначные выводы. Выложите схему.
Вот схема J1201507.xsd [необходимо зарегистрироваться для просмотра ссылки] А это common_types.xsd без которой первая не хочет загружаться [необходимо зарегистрироваться для просмотра ссылки]
Возможно оно и не будет работать без напильника, так как в обе схемы пришлось вписать строчку
Группа: Местный
Сообщений: 2908
Из: Київ, Україна
Спасибо сказали: 1159 раз
Рейтинг: 1244.5
Глянул схему, все верно, "LINKED_DOCS" и "DOC" это не отдельные объекты, поэтому на тип будет ругаться. Общий принцип такой. Есть три типа объектов: "DHead", "DBody" и "DeclarContent". Их надо создать, заполнить свойства соответствующими типами значений (обращаясь через точку), причем свойствам последнего присвоить значения первых двух.
Сообщение отредактировал Petre - 21.11.14, 12:46
Допрацьовую: - "Бухгалтерія для України 2.1"; - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0
Цитата(Petre @ 21.11.14, 12:45)
Глянул схему, все верно, "LINKED_DOCS" и "DOC" это не отдельные объекты, поэтому на тип будет ругаться. Общий принцип такой. Есть три типа объектов: "DHead", "DBody" и "DeclarContent". Их надо создать, заполнить свойства соответствующими типами значений (обращаясь через точку), причем свойствам последнего присвоить значения первых двух.
Значит мне нужно писать LINKED_DOCS.DOC.NUM и т.д. при заполнении? Впервые встречаюсь с неименоваными типами тут и как-то с трудом в них вникаю.
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0
Может знает кто ресурс какой толковый где можно почитать материал по теме в деталях, или название книжки какой, где это все есть... Поделитесь пожалуйста, буду задавать меньше глупых вопросов =)
Цитата(alex040269 @ 21.11.14, 13:30)
не знаю поможет или нет, но этот код у меня проходит
Группа: Местный
Сообщений: 2908
Из: Київ, Україна
Спасибо сказали: 1159 раз
Рейтинг: 1244.5
XDTO в СП плохо документирована и содержит ошибки. Статей написано не много и все хорошо гуглятся. Намного больше отдельных материалов на форумах, но они касаются каких-то конкретных ситуаций.
Допрацьовую: - "Бухгалтерія для України 2.1"; - "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".
В итоге ругается благим матом следующего содержания:
Цитата
{Отчет.РегламентированныйОтчетРеестрНалоговыхНакладных.Форма.ФормаОтчета2013Мес.Форма(3712)}: Значение не является значением объектного типа (Добавить) СтрокаШапка.LINKED_DOCS.Добавить(СтрокаДок);
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0
Да, пока что все параметры в шапке, кроме LONKED_DOCS и DOC, заменил на тип integer, чтоб можно было чем-нибудь быстро забить для проверки.
Цитата(alex040269 @ 21.11.14, 14:27)
СтрокаШапка.LINKED_DOCS.DOC.Добавить(СтрокаДок);
Теперь иначе ругается
Цитата
{Отчет.РегламентированныйОтчетРеестрНалоговыхНакладных.Форма.ФормаОтчета2013Мес.Форма(3712)}: Значение не является значением объектного типа (DOC) СтрокаШапка.LINKED_DOCS.DOC.Добавить(СтрокаДок);
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0
Шапка заработала! Вроде бы даже как положено. А теперь начало в теле ругаться, мол не найден параметр T1RXXXXG1. Эти параметры надо менять, знаю что вместо ХХХХ надо числа ставить типа 0001 и т.д. Поставляю, получается T1R0001G1 - ошибка не найден параметр. Вот код:
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0
Цитата(Petre @ 21.11.14, 15:07)
Если в схеме указано "XXXX", то "0001" не прокатит. Посмотрел рабочий файл - там тоже стоят "XXXX". Откуда сведения, что надо менять?
Ну это же реестр налоговых накладных, там они перечисляются так, когда XML открываешь они идут уже как 0001, 0002 и т.д. А в самой схеме ХХХХ, но суть в том что ни с 0001, ни с ХХХХ не работает, говорит
Цитата
{Отчет.РегламентированныйОтчетРеестрНалоговыхНакладных.Форма.ФормаОтчета2013Мес.Форма(3732)}: Поле объекта не обнаружено (T1R0001G1) СтрокаТело.T1R0001G1 = 123123;
Цитата
{Отчет.РегламентированныйОтчетРеестрНалоговыхНакладных.Форма.ФормаОтчета2013Мес.Форма(3732)}: Поле объекта недоступно для записи (T1RXXXXG1) СтрокаТело.T1RXXXXG1 = 123123;
Ну с 0001 ладно, он скорее всего его сам потом заменит, а вот почему ХХХХ записать нельзя?
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!