Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Дек 2017, 23:23
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Создание нестандартного отчёта  (Прочитано 6668 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mark2011

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-18
  • Сайт: 
  • Профессия: Ученик 1С
Добрый день!

Я в 1С соображаю очень мало, я web-программист. Так получилось, что надо связать эти две области....
В общем в 1С надо создать отчёт следующей структуры:

-----------------
id | parent_id | name
-----------------

Пример для пояснения:

-----------------
id | parent_id | name
-----------------
1        0          Корневой каталог
-----------------
2        1          Каталог в корневом каталоге
-----------------
3        2          Элемент в каталоге
-----------------
4        2          Элемент в каталоге
-----------------
5        1          Ещё каталог
-----------------
6        5          Элемент в ещё одном каталоге
-----------------
7        5          Элемент в ещё одном каталоге

Т.е. чтобы было всё древовидно.

Такое возможно? Если да, то буду благодарен за любую помощь где об этом можно почитать...


Оффлайн mark2011

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-18
  • Сайт: 
  • Профессия: Ученик 1С
А, да, забыл ещё, конфа "Торговля+Склад", редакция 9.2.

Оффлайн prog1c7.7

  • Модератор
  • *****
  • Сообщений: 784
  • РЕПУТАЦИЯ: 260
  • КПД: 33%
  • ну - да , ну - да...
  • Регистрация: 2010-10-20
  • Сайт: 
  • Профессия: Программист 1С
Конечно можно !!!
Это XML - ки, я этим пользуюсь постоянно,
например код на ходу:
ФайлХМЛ = СоздатьОбъект("AddIn.XMLParser");
Корень =ФайлХМЛ.СоздатьДокумент();
Данные =Корень.СоздатьПодчиненныйЭлемент("root");
Данные.УстановитьАтрибут("branch_code"," ");
ТОПИК= Данные.СоздатьПодчиненныйЭлемент("Topic");  
ТОПИК.УстановитьАтрибут("mlns","");
         ФИЛИАЛ       =    ТОПИК.СоздатьПодчиненныйЭлемент("ORG_NAME");
                          ФИЛИАЛ.Значение     = "чебоксары";
                          ИмяФайла    = СтрЗаменить(Строка(ДатаНач)+ " g " + Строка(ДатаКон),"."," ") + ".xml";
                  ПапкаФайла  = КаталогИБ() + "ВыгрузкаТОПИКА\";
                  Корень.Записать(ПапкаФайла+ИмяФайла);

Оффлайн prog1c7.7

  • Модератор
  • *****
  • Сообщений: 784
  • РЕПУТАЦИЯ: 260
  • КПД: 33%
  • ну - да , ну - да...
  • Регистрация: 2010-10-20
  • Сайт: 
  • Профессия: Программист 1С
Ну а как дальше в вебе работать с XML-ками я те объяснять не буду.
У меня у всех так, как отчетность кому нить, так нам нужно на вэбе шобы было   :wacko:
ну это понятно, потому как головные офисы в москвах...

Кстати данные не обязательно статические  должны быть,
Например для выгрузки в вэб спр.номенклатура:
ФайлХМЛ = СоздатьОбъект("AddIn.XMLParser");
Корень =ФайлХМЛ.СоздатьДокумент();
    Данные =Корень.СоздатьПодчиненныйЭлемент("root");
    Данные.УстановитьАтрибут("branch_code","    ");
ТОПИК= Данные.СоздатьПодчиненныйЭлемент("Topic");   
            ТОПИК.УстановитьАтрибут("mlns","");
СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");
    СпрНоменклатура.ВыбратьЭлементы();
    Пока СпрНоменклатура.ПолучитьЭлемент() = 1 Цикл
      Номенкл = ТОПИК.СоздатьПодчиненныйЭлемент("Nomenkl");
      Номенкл.УстановитьАтрибут("mlns","");
            Родит          =    Номенкл.СоздатьПодчиненныйЭлемент("RODIT");
    ИМЯ1           =    Номенкл.СоздатьПодчиненныйЭлемент("NAME");   
    НомерГТД     =    Номенкл.СоздатьПодчиненныйЭлемент("SALE_PRODUCT");
            Родит.Значение   = СпрНоменклатура.ТекущийЭлемент().Родитель;             
            ИМЯ1.Значение    = СпрНоменклатура.ТекущийЭлемент().Наименование;             
            НомерГТД.Значение = СпрНоменклатура.ТекущийЭлемент().НомерГТД;                       
     КонецЦикла;
     ИмяФайла    = СтрЗаменить(Строка(ДатаНач)+ " g " + Строка(ДатаКон),"."," ") + ".xml";
                       ПапкаФайла  = КаталогИБ() + "ВыгрузкаТОПИКА\";
                       Корень.Записать(ПапкаФайла+ИмяФайла);

Оффлайн mark2011

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-18
  • Сайт: 
  • Профессия: Ученик 1С
Неудачная попытка создания объекта (AddIn.XMLParser).... к чему бы это? :)

Оффлайн prog1c7.7

  • Модератор
  • *****
  • Сообщений: 784
  • РЕПУТАЦИЯ: 260
  • КПД: 33%
  • ну - да , ну - да...
  • Регистрация: 2010-10-20
  • Сайт: 
  • Профессия: Программист 1С
А проверку?
Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll") <> 1 Тогда
Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll") <> 1 Тогда
Предупреждение("Компонента v7plus.dll не найдена!");
КонецЕсли;
КонецЕсли;

и кстати есть v7plus.dll то?

Оффлайн mark2011

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-18
  • Сайт: 
  • Профессия: Ученик 1С
Спасибо, скопировал Ваш код в таком виде:

Процедура Сформировать()
Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll") <> 1 Тогда
        Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll") <> 1 Тогда
            Предупреждение("Компонента v7plus.dll не найдена!");
        КонецЕсли;
    КонецЕсли;

ФайлХМЛ = СоздатьОбъект("AddIn.XMLParser");
Корень =ФайлХМЛ.СоздатьДокумент();
    Данные =Корень.СоздатьПодчиненныйЭлемент("root");
    Данные.УстановитьАтрибут("branch_code","    ");
ТОПИК= Данные.СоздатьПодчиненныйЭлемент("Topic");   
            ТОПИК.УстановитьАтрибут("mlns","");
СпрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");
    СпрНоменклатура.ВыбратьЭлементы();
    Пока СпрНоменклатура.ПолучитьЭлемент() = 1 Цикл
      Номенкл = ТОПИК.СоздатьПодчиненныйЭлемент("Nomenkl");
      Номенкл.УстановитьАтрибут("mlns","");
            Родит             =    Номенкл.СоздатьПодчиненныйЭлемент("RODIT");
            ИМЯ1              =    Номенкл.СоздатьПодчиненныйЭлемент("NAME");   
            НомерГТД          =    Номенкл.СоздатьПодчиненныйЭлемент("SALE_PRODUCT");
            Родит.Значение    =    СпрНоменклатура.ТекущийЭлемент().Родитель;             
            ИМЯ1.Значение     =    СпрНоменклатура.ТекущийЭлемент().Наименование;             
            НомерГТД.Значение =    СпрНоменклатура.ТекущийЭлемент().НомерГТД;                       
     КонецЦикла;
     ИмяФайла    = "report.xml";
                       ПапкаФайла  = КаталогИБ() + "ВыгрузкаТОПИКА\";
                       Корень.Записать(ПапкаФайла+ИмяФайла);

КонецПроцедуры

Изменил имя файлика, поскольку 1С выдавала ошибку о неопределённой переменной...

В таком виде в каком код есть сейчас, выдаётся ошибка "Плохой тип переменной" вот на это:

Родит.Значение    =    СпрНоменклатура.ТекущийЭлемент().Родитель;

Вероятнее всего будет выдавать и на другие похожие структуры, поскольку они однотипные. Вот, но пока вот только на эту строчку.

Оффлайн prog1c7.7

  • Модератор
  • *****
  • Сообщений: 784
  • РЕПУТАЦИЯ: 260
  • КПД: 33%
  • ну - да , ну - да...
  • Регистрация: 2010-10-20
  • Сайт: 
  • Профессия: Программист 1С
Родителя убери (я с ним ошибся, получается в тег встроку ты вносишь элемент, вот он и посылает тебя), попробуй остальное прогнать, у меня работает, только щас попробовал

Оффлайн mark2011

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-18
  • Сайт: 
  • Профессия: Ученик 1С
Эээээ...... так мне родитель как раз и нужен )))) ради него весь сырбор )))
Нужно ведь чтобы был ID и parent_ID, если его не будет в XML, нафиг тогда вообще это всё нужно )))

Да, сейчас ещё методом проб и ошибок выяснил, что возникает ошибка следующего плана:

Корень.Записать(ПапкаФайла+ИмяФайла);
{C:\DOCUMENTS AND SETTINGS\ADMIN\РАБОЧИЙ СТОЛ\TEST.ERT(23)}: Неизвестная ошибка

Т.е. я так понял что меня один-эса посылает при попытке записи файла непосредственно на диск. Проверил права папки (абсурд, поскольку нахожусь в винде, но тем не менее...) - снял галочку "Только чтение", но ничего не изменилось..


Оффлайн mark2011

  • *
  • Сообщений: 41
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-05-18
  • Сайт: 
  • Профессия: Ученик 1С
В общем разобрался, ещё на ГТД ругался 1С, я его убрал, он всё равно не нужен...
 а вот родитель ооооочень нужен...

Прикладываю к сообщению получившийся файлик xml.

Он записался, но в другой, специально созданный каталог на диске (видимо есть какие-то ограничения на запись в каталог ИБ)...


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
141 Сообщений
AIFrame
73 Сообщений
ilyay ilyay
65 Сообщений
alex0402
52 Сообщений
andron81_81
44 Сообщений
oleg-x
41 Сообщений
BuhRust
31 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
27 Сообщений
alexandr_ll
23 Сообщений

* Кто онлайн

  • Точка Гостей: 304
  • Точка Скрытых: 0
  • Точка Пользователей: 5
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal