|
v7: Експорт в XML | ☑ | ||
---|---|---|---|---|
0
bananan
09.01.13
✎
13:20
|
Данные выдает запрос... Их нужно формить в XML-файл.
Код написал такой (это понятно, только начало работы): ТЗ = Запр.ВыполнитьИнструкцию(ТекстЗапроса); ТЗ.ВыбратьСтроки(); XMLАнализатор = СоздатьОбъект("AddIn.XMLParser"); XMLКорневойРаздел = XMLАнализатор.СоздатьДокумент(); ДанныеXML = XMLКорневойРаздел.СоздатьПодчиненныйЭлемент("EMPLOYEES"); стр = 1; Пока ТЗ.ПолучитьСтроку()=1 цикл Ветка = ДанныеXML.СоздатьПодчиненныйЭлемент("ID"); Ветка.Значение = стр; КонецЦикла; Выдает ошибку: Ветка.Значение = стр; {\\SERVER12\VPKTEST$\EXTFORMS\ЗАРПЛАТАXML.ERT(58)}: Параметр не опциональный Что я нетак делаю? |
|||
38
monsterZE
09.01.13
✎
14:45
|
потолок = ?(""+ТЗ.Пол="М","М_инглишная","F");
Ветка.УстановитьАтрибут("SEX",потолок); |
|||
39
monsterZE
09.01.13
✎
14:46
|
или кейс в запросе и там переобзывать
|
|||
40
Ёпрст
09.01.13
✎
14:46
|
(37) тут без разницы, особого выигрыша не будет
|
|||
41
bananan
09.01.13
✎
15:03
|
Ребята, а как добавить к строке (в конце) 13 символов пробел? (Извините, конечно за такую елементарщину)
|
|||
42
monsterZE
09.01.13
✎
15:14
|
вариант1
Для ъ=1 по 13 цикл мояСтрока = мояСтрока+" "; КонецЦикла вариант2 мояСтрока = мояСтрока+" тут 13 пробелов "; |
|||
43
Ёпрст
09.01.13
✎
15:21
|
(41)
+Формат(" ","С13"); |
|||
44
bananan
09.01.13
✎
16:15
|
(42) Оба этих ыарианта я и сам придумал, но не красиво
(43) Красиво |
|||
45
monsterZE
09.01.13
✎
16:18
|
(44) да ты растешь =)
|
|||
46
bananan
09.01.13
✎
16:21
|
Как получить в запросе код елементы справочника сотрудники?
Написал так: $СпрСотр.Code AS Код Ошибка: Meta name parser error: поле таблицы не найдено "$СпрСотр.Code" |
|||
47
monsterZE
09.01.13
✎
16:26
|
Метапарсер тут не нужен, это реальное имя столбца, убери $
|
|||
48
bananan
09.01.13
✎
16:34
|
(47) Спасибо
|
|||
49
bananan
09.01.13
✎
17:03
|
* Окзывается или я не правильно понял задачу или ее неправильно поставили... Но здесь с запросом надо будет еще поработать.
Если у меня не будет получаться - буду обращаться к вам |
|||
50
bananan
09.01.13
✎
17:08
|
(49) Писал еще где-то с час назад - забыл отправитю...
Уже у мен возникли две проблемы: 1. Какой элемент поставить на форму чтобы пользователь там мог выбрать ОДИН конкретный документ по выплте зарплаты? 2. Как в запросе определить номер документа? |
|||
51
Ёпрст
09.01.13
✎
17:10
|
1.реквизит диалога с нужным типом
2.посмотреть docno у _1sjourn |
|||
52
bananan
09.01.13
✎
17:12
|
*(50) По поводу номера докуумента - пробывал:
$ДокЗП.DocNo Ошибка: Meta name parser error: поле таблицы не найдено "$ДокЗП.DocNo" Побывал ДокЗП.DocNo Ошибка: Invalid column name 'DocNo'. |
|||
53
bananan
09.01.13
✎
17:12
|
(51) по поводу п.2 вроде понял - сейчас попробую, а вот первый пунтк - ничего я не понял :(
|
|||
54
Ёпрст
09.01.13
✎
17:14
|
1.Меню-Вставить-Реквизит Диалога-Тыркнуть в нужное место на форме-На закладке Тип указать нужный тип реквизита диалога-Задать идентификатор-Наслаждаться
|
|||
55
bananan
09.01.13
✎
17:21
|
(54) Так и сделал тип указал: Документ.ВыплтаЗПБ
Так, когда пускаю на выполнение в этом окошке выбора НИЧЕГО нет!? |
|||
56
bananan
09.01.13
✎
17:21
|
Идентификатор тоже указал : ВыбВыплатаЗПБ
|
|||
57
Ёпрст
09.01.13
✎
17:21
|
(55) нажми на "..." - педальку, будь мужиком - выбери туда чего-нибудь САМ!
|
|||
58
bananan
09.01.13
✎
17:25
|
(57) Спасибо, не обратил я внимания на "педальку"
|
|||
59
bananan
09.01.13
✎
17:26
|
По поводу номера документа - написал так:
|SELECT | $ДокЗП.Сотрудник [Сотрудник $Справочник.Сотрудники], | _1sjourn.DocNo AS Номер, | $СпрСотр.Имя AS Имя | ,$СпрСотр.Отчество AS Отчество | ,$СпрСотр.ШтатНомер AS ШтатНомер | ,$СпрСотр.Пол [Пол $Перечисление.Пол] | ,$СпрСотр.ДокСерия AS ДокСерия | ,$СпрСотр.ДокНомер AS ДокНомер | ,$СпрСотр.ДокКогдаВыдан AS ДокКогдаВыдан | ,$СпрСотр.ДокКемВыдан AS ДокКемВыдан | ,$СпрСотр.ДатаРождения AS ДатаРождения | ,$СпрСотр.РождГород AS РождГород | ,$СпрСотр.ФактАдрес AS ФактАдрес | ,$СпрСотр.ФактИндекс AS ФактИндекс | ,$СпрСотр.ДатаПриема AS ДатаПриема | ,$СпрСотр.ТелефонДом AS ТелефонДом | ,$СпрСотр.ТелефонРаб AS ТелефонРаб | ,$СпрСотр.ИНН AS ИНН | ,$СпрСотр.НомерСчета AS НомерСчета | ,СпрСотр.Code AS Код |FROM |$ДокументСтроки.ВыплатаЗПБ as ДокЗП (nolock) | INNER JOIN $Справочник.Сотрудники as СпрСотр (nolock) | ON $ДокЗП.Сотрудник = СпрСотр.ID Ошибка: The column prefix '_1sjourn' does not match with a table name or alias name used in the query. |
|||
60
monsterZE
09.01.13
✎
17:30
|
(59) ты как всегда =)
|
|||
61
monsterZE
09.01.13
✎
17:31
|
он присоединиться сам что-ли должен?
|
|||
62
Ёпрст
09.01.13
✎
17:32
|
|select
| $ДокЗП.Сотрудник [Сотрудник $Справочник.Сотрудники], | Жур.DocNo AS Номер, ......... |from $ДокументСтроки.ВыплатаЗПБ as ДокЗП (nolock) |left join $Справочник.Сотрудники as СпрСотр (nolock)on $ДокЗП.Сотрудник = СпрСотр.ID |left join _1sjourn as Жур (nolock) on Жур.iddoc=ДокЗП.iddoc |
|||
63
bananan
09.01.13
✎
17:40
|
(60)-(62) Спасибо... Ну не как всегда. просто что-то голова ну совсем нераблотает
|
|||
64
bananan
09.01.13
✎
17:43
|
(62) Текчт запроса такой:
|SELECT | $ДокЗП.Сотрудник [Сотрудник $Справочник.Сотрудники], | _1sjourn.DocNo AS Номер, | $СпрСотр.Имя AS Имя | ,$СпрСотр.Отчество AS Отчество | ,$СпрСотр.ШтатНомер AS ШтатНомер | ,$СпрСотр.Пол [Пол $Перечисление.Пол] | ,$СпрСотр.ДокСерия AS ДокСерия | ,$СпрСотр.ДокНомер AS ДокНомер | ,$СпрСотр.ДокКогдаВыдан AS ДокКогдаВыдан | ,$СпрСотр.ДокКемВыдан AS ДокКемВыдан | ,$СпрСотр.ДатаРождения AS ДатаРождения | ,$СпрСотр.РождГород AS РождГород | ,$СпрСотр.ФактАдрес AS ФактАдрес | ,$СпрСотр.ФактИндекс AS ФактИндекс | ,$СпрСотр.ДатаПриема AS ДатаПриема | ,$СпрСотр.ТелефонДом AS ТелефонДом | ,$СпрСотр.ТелефонРаб AS ТелефонРаб | ,$СпрСотр.ИНН AS ИНН | ,$СпрСотр.НомерСчета AS НомерСчета | ,СпрСотр.Code AS Код |FROM |$ДокументСтроки.ВыплатаЗПБ as ДокЗП (nolock) |left join $Справочник.Сотрудники as СпрСотр (nolock)on $ДокЗП.Сотрудник = СпрСотр.ID |left join _1sjourn as Жур (nolock) on Жур.iddoc=ДокЗП.iddoc Ошибка: The column prefix '_1sjourn' does not match with a table name or alias name u |
|||
65
ДенисЧ
09.01.13
✎
17:44
|
| _1sjourn.DocNo AS Номер,
раз left join _1sjourn as Жур два. А теперь иди читай документ по скулю в области алиасов. |
|||
66
bananan
09.01.13
✎
17:47
|
(65) Исправил текст запроса. теперь он такой:
|SELECT | $ДокЗП.Сотрудник [Сотрудник $Справочник.Сотрудники], | $СпрСотр.Имя AS Имя | ,$СпрСотр.Отчество AS Отчество | ,$СпрСотр.ШтатНомер AS ШтатНомер | ,$СпрСотр.Пол [Пол $Перечисление.Пол] | ,$СпрСотр.ДокСерия AS ДокСерия | ,$СпрСотр.ДокНомер AS ДокНомер | ,$СпрСотр.ДокКогдаВыдан AS ДокКогдаВыдан | ,$СпрСотр.ДокКемВыдан AS ДокКемВыдан | ,$СпрСотр.ДатаРождения AS ДатаРождения | ,$СпрСотр.РождГород AS РождГород | ,$СпрСотр.ФактАдрес AS ФактАдрес | ,$СпрСотр.ФактИндекс AS ФактИндекс | ,$СпрСотр.ДатаПриема AS ДатаПриема | ,$СпрСотр.ТелефонДом AS ТелефонДом | ,$СпрСотр.ТелефонРаб AS ТелефонРаб | ,$СпрСотр.ИНН AS ИНН | ,$СпрСотр.НомерСчета AS НомерСчета | ,СпрСотр.Code AS Код |FROM |$ДокументСтроки.ВыплатаЗПБ as ДокЗП (nolock) |left join $Справочник.Сотрудники as СпрСотр (nolock)on $ДокЗП.Сотрудник = СпрСотр.ID |left join _1sjourn as Жур (nolock) on Жур.iddoc=ДокЗП.iddoc Ошибка: Ветка.УстановитьАтрибут("SHEDULE_NUMBER", ТЗ.Жур.DocNo); // Номер зарплатной ведомости {\\SERVER12\VPKTEST$\EXTFORMS\ЗАРПЛАТАXML.ERT(65)}: Поле агрегатного объекта не обнаружено (Жур) |
|||
67
ДенисЧ
09.01.13
✎
17:48
|
Ветка.УстановитьАтрибут("SHEDULE_NUMBER", ТЗ.Жур.DocNo);
это ещё что такое???? |
|||
68
ДенисЧ
09.01.13
✎
17:48
|
| ЖУр.DocNo AS Номер,
таксложно написать было? |
|||
69
bananan
09.01.13
✎
17:53
|
(68) Это дописал (3-я строчка после селекта)...
Ошибка: Ветка.УстановитьАтрибут("SHEDULE_NUMBER", ТЗ.Жур.DocNo); // Номер зарплатной ведомости {\\SERVER12\VPKTEST$\EXTFORMS\ЗАРПЛАТАXML.ERT(66)}: Поле агрегатного объекта не обнаружено (Жур) |
|||
70
ДенисЧ
09.01.13
✎
17:54
|
(69) ты не то дописал. Откуда у тебя в ТЗ Жур возьмётся??
|
|||
71
Ёпрст
09.01.13
✎
17:56
|
пилять, как ты можешь писать (66) опосля (62) ???!!!!
|
|||
72
Ёпрст
09.01.13
✎
17:57
|
там если че, правильный ответ
|
|||
73
Ёпрст
09.01.13
✎
17:57
|
ну и потом
Ветка.УстановитьАтрибут("SHEDULE_NUMBER", ТЗ.Номер); |
|||
74
bananan
09.01.13
✎
18:11
|
(73) Так и сделал:
Ветка.УстановитьАтрибут("SHEDULE_NUMBER", ТЗ.Номер); Выдает ошибку: Ветка.УстановитьАтрибут("SHEDULE_NUMBER", ТЗ.Номер); // Номер зарплатной ведомости {\\SERVER12\VPKTEST$\EXTFORMS\ЗАРПЛАТАXML.ERT(66)}: Неизвестное имя А сейчас посмотрю (62) Посмотрел я (62) Дык у меня вроде ве так и написано (полный текст запроса): |SELECT | $ДокЗП.Сотрудник [Сотрудник $Справочник.Сотрудники], | ЖУр.DocNo AS Номер, | $СпрСотр.Имя AS Имя | ,$СпрСотр.Отчество AS Отчество | ,$СпрСотр.ШтатНомер AS ШтатНомер | ,$СпрСотр.Пол [Пол $Перечисление.Пол] | ,$СпрСотр.ДокСерия AS ДокСерия | ,$СпрСотр.ДокНомер AS ДокНомер | ,$СпрСотр.ДокКогдаВыдан AS ДокКогдаВыдан | ,$СпрСотр.ДокКемВыдан AS ДокКемВыдан | ,$СпрСотр.ДатаРождения AS ДатаРождения | ,$СпрСотр.РождГород AS РождГород | ,$СпрСотр.ФактАдрес AS ФактАдрес | ,$СпрСотр.ФактИндекс AS ФактИндекс | ,$СпрСотр.ДатаПриема AS ДатаПриема | ,$СпрСотр.ТелефонДом AS ТелефонДом | ,$СпрСотр.ТелефонРаб AS ТелефонРаб | ,$СпрСотр.ИНН AS ИНН | ,$СпрСотр.НомерСчета AS НомерСчета | ,СпрСотр.Code AS Код |FROM |$ДокументСтроки.ВыплатаЗПБ as ДокЗП (nolock) |left join $Справочник.Сотрудники as СпрСотр (nolock)on $ДокЗП.Сотрудник = СпрСотр.ID |left join _1sjourn as Жур (nolock) on Жур.iddoc=ДокЗП.iddoc Что здесь не так? |
|||
75
bananan
09.01.13
✎
18:26
|
*(74) Кто-нибудь ПОМОГИТЕ!!!!!!!!!!!!!!!!!!!!!!
|
|||
76
bananan
09.01.13
✎
18:34
|
Ошибка в этой строке:
Ветка.УстановитьАтрибут("SHEDULE_NUMBER", ТЗ.Номер); // Номер зарплатной ведомости Ошибка: Неизвестное имя Какое имя ей неизвестно?!! |
|||
77
bananan
09.01.13
✎
18:41
|
*(76) ТЗ.Номер дак он в запросе определяется:
|SELECT | $ДокЗП.Сотрудник [Сотрудник $Справочник.Сотрудники], | Жур.DocNo AS Номер, | $СпрСотр.Имя AS Имя | ,$СпрСотр.Отчество AS Отчество | ,$СпрСотр.ШтатНомер AS ШтатНомер | ,$СпрСотр.Пол [Пол $Перечисление.Пол] | ,$СпрСотр.ДокСерия AS ДокСерия | ,$СпрСотр.ДокНомер AS ДокНомер | ,$СпрСотр.ДокКогдаВыдан AS ДокКогдаВыдан | ,$СпрСотр.ДокКемВыдан AS ДокКемВыдан | ,$СпрСотр.ДатаРождения AS ДатаРождения | ,$СпрСотр.РождГород AS РождГород | ,$СпрСотр.ФактАдрес AS ФактАдрес | ,$СпрСотр.ФактИндекс AS ФактИндекс | ,$СпрСотр.ДатаПриема AS ДатаПриема | ,$СпрСотр.ТелефонДом AS ТелефонДом | ,$СпрСотр.ТелефонРаб AS ТелефонРаб | ,$СпрСотр.ИНН AS ИНН | ,$СпрСотр.НомерСчета AS НомерСчета | ,СпрСотр.Code AS Код |FROM |$ДокументСтроки.ВыплатаЗПБ as ДокЗП (nolock) |left join $Справочник.Сотрудники as СпрСотр (nolock)on $ДокЗП.Сотрудник = СпрСотр.ID |left join _1sjourn as Жур (nolock) on Жур.iddoc=ДокЗП.iddoc |"; Третья строка"! |
|||
78
bananan
09.01.13
✎
18:51
|
И еще здесь (если я не ошибаюсь) запросу нужно передать параметр с номером документа..
Или здесь запрос вообще не нужен? Задача такая на основе ОДНОГО документа ВыплатаЗПБ сформировать XML-файл. В XML-файл нужны такие данные: SHEDULE_DATE Дата зарплатной ведомости в формате ДД/ММ/ГГГГ SHEDULE_NUMBER Номер зарплатной ведомости PAYER_BANK_BRANCHID МФО банка, в котором открыт счёт плательщика PAYER_BANK_ACCOUNTNO Счёт плательщика в банке (транзитный). Примечание. Если администратор выполнил настройку системы таким образом, что транзитный счет будет определяться автоматически, то данное поле будет необязательным для заполнения PAYER_ACCOUNTNO Счёт для списания средств TOTAL_SHEDULE_AMOUNT Общая сумма зарплатной ведомости в формате ГРН,КОП CONTRAGENT_CODEZKP Код зарплатного проекта. Обязательно указывается только для банков, использующих ЗКП а также: Информация о начисленной сотруднику сумме содержит следующие значения IDENTIFYCODE Идентификационный код сотрудника TABNO Табельный номер сотрудника. Если в ид. коде указано значение 000000000 (сотрудник нерезидент или отказался от присвоения кода), данное поле является обязательным для заполнения AMOUNT Сумма для зачисления на счёт сотрудника в формате ГРН,КОП |
|||
79
bananan
09.01.13
✎
19:11
|
А номер документа можно получить и не в запросе а так:
ВыбВыплатаЗПБ.НомерДок А по сотрудниках - тоже, возмоэно обойтись без запроса... |
|||
80
bananan
09.01.13
✎
19:24
|
Пробую по сотрудниках без запроса - код такой:
Спр = СоздатьОбъект("Справочник.Сотрудники"); Сообщить(ВыбВыплатаЗПБ.НомерДок+"- номер документа"); Пока ВыбВыплатаЗПБ.ПолучитьСтроку() = 1 Цикл Сообщить("Сотрудник: "+ВыбВыплатаЗПБ.Сотрудник); // искать сотрудника в Справочнике? Ср = Спр.НайтиПоНаименованию(ВыбВыплатаЗПБ.Сотрудник, 0); Сообщить("Ср= "+Ср); КонецЦикла; Выдает: АТ-0000153- номер документа Сотрудник: Гамов Ср= 0 Сотрудник: Красотов Ср= 0 Ну не хочет он искать по наименованию1 |
|||
81
monsterZE
09.01.13
✎
20:36
|
(78) нах тебе вобще запрос тогда, если на основе _одного_ дока выгрузку сделать?? найди док, через создать документ / выбрать документ и выгружай.
|
|||
82
monsterZE
09.01.13
✎
20:40
|
по запросу - запрос выполняется?
в тз.ВыбратьСтроку(); столбцы присутствуют? значит все с запросом норм. |
|||
83
monsterZE
09.01.13
✎
20:44
|
и если у тебя в докуменет в табличной части реквизит сотрудник, нах его вобще искать????? а если уж искать то через НайтиЭлемент(<?>)
|
|||
84
monsterZE
09.01.13
✎
20:48
|
Ср = Спр.НайтиПоНаименованию(ВыбВыплатаЗПБ.Сотрудник.Наименование, 0);
|
|||
85
monsterZE
09.01.13
✎
20:48
|
ты вобще кто, там, где работаешь? =)
|
|||
86
bananan
10.01.13
✎
12:48
|
(81) Запрос. я думаю таки нужен, если без запроса, то, скорее всего появится неоднозначности с Сотрудниками (Например. есть три сотрудника Иванов... - однозначно идентифицировать сотрудника можно, по коду, табельному номеру и т.д., но не по фамилии)
Или яф не прав? |
|||
87
bananan
10.01.13
✎
12:58
|
*(86) А, скорее всего здесь надо делать комбинацию из работы с документом и запросом
|
|||
88
Ёпрст
10.01.13
✎
13:03
|
(87) для одного запроса запрос не нужен
|
|||
89
bananan
10.01.13
✎
13:03
|
Вопрос, такой код:
Пока ВыбВыплатаЗПБ.ПолучитьСтроку() = 1 Цикл Сообщить("Сотрудник: "+ВыбВыплатаЗПБ.Сотрудник); Спр.НайтиПоНаименованию(ВыбВыплатаЗПБ.Сотрудник, 0); Сообщить("Сотрудник= "+Спр.Наименование); Сообщить("Спр.Код= "+Спр.Код); КонецЦикла; Выдает: АТ-0000154- номер документа Сотрудник: Захарчук Сотрудник= Спр.Код= Что я здесь не так сделал? |
|||
90
bananan
10.01.13
✎
13:04
|
(88) А как мне однозначно найти сотрудника иванов в справочнике, если их, Ивановых в спрачочнике несколько?
|
|||
91
monsterZE
10.01.13
✎
13:08
|
ты почитай, что выше я тебе писал
|
|||
92
bananan
10.01.13
✎
13:13
|
(91) В табличной части документа есть сотрудник.
Но, я не знаю могу я через елемент Сотрудник таблицной части доступится к такому же сотруднику (тому же). Это возможно? Если да - то как? |
|||
93
bananan
10.01.13
✎
13:16
|
Ко всему прочему мне нужно из этого документа (с помощью ) узнать много информации о фирме...
|
|||
94
Ёпрст
10.01.13
✎
13:18
|
ну п..ц
Пока ВыбВыплатаЗПБ.ПолучитьСтроку() = 1 Цикл Сообщить("Сотрудник: "+ВыбВыплатаЗПБ.Сотрудник); Сообщить("Сотрудник= "+ВыбВыплатаЗПБ.Сотрудник.Наименование); Сообщить("Спр.Код= "+ВыбВыплатаЗПБ.Сотрудник.Код); КонецЦикла; |
|||
95
bananan
10.01.13
✎
13:20
|
(94) Спасибо!
Я и не знал, что так можно, а попробывать - не догадался... :( |
|||
96
Никола_
Питерский 10.01.13
✎
13:22
|
||||
97
bananan
10.01.13
✎
14:21
|
Ребята, а в документе есть общая сумма или надо ее самому построчно вычислять?
|
|||
98
Dolly_EV
10.01.13
✎
14:23
|
(97) если есть галка "Итог по колонке" - реквизит (сумма) хранится в шапке дока.
Но штатными средстави обратиться только так: Док.Итог("Сумма") |
|||
99
bananan
10.01.13
✎
14:24
|
(98) Спасибо
|
|||
100
Dolly_EV
10.01.13
✎
14:25
|
Все хочу спросить... здесь за СП где-нить платицца?
|
|||
101
Dolly_EV
10.01.13
✎
14:27
|
0! 100!
|
|||
102
bananan
10.01.13
✎
14:59
|
Вопрос по v7plus.
Код такой: XMLАнализатор = СоздатьОбъект("AddIn.XMLParser"); XMLКорневойРаздел = XMLАнализатор.СоздатьДокумент(); ДанныеXML = XMLКорневойРаздел.СоздатьПодчиненныйЭлемент("DATAPACKET"); Ветка = ДанныеXML.СоздатьПодчиненныйЭлемент("SCHEDULEINFO"); Ветка.УстановитьАтрибут("SHEDULE_DATE", ВыбВыплатаЗПБ.ДатаДок); Ветка.УстановитьАтрибут("SHEDULE_NUMBER", ВыбВыплатаЗПБ.НомерДок); Ветка.УстановитьАтрибут("PAYER_BANK_BRANCHID", ВыбВыплатаЗПБ.Фирма.РС.БанкМФО); Ветка.УстановитьАтрибут("PAYER_BANK_ACCOUNTNO", ВыбВыплатаЗПБ.Фирма.РС.БанкСчет); Ветка.УстановитьАтрибут("TOTAL_SHEDULE_AMOUNT", Строка(ВыбВыплатаЗПБ.Итог("Сумма")));// TOTAL_SHEDULE_AMOUNT - Общая сумма зарплатной ведомости в формате ГРН,КОП Ветка.УстановитьАтрибут("CONTRAGENT_CODEZKP", ВыбВыплатаЗПБ.Фирма.РС.Банк.ЕГРПОУ); Ветка = ДанныеXML.СоздатьПодчиненныйЭлемент("EMPLOYEES"); Пока ВыбВыплатаЗПБ.ПолучитьСтроку() = 1 Цикл Ветка = ДанныеXML.СоздатьПодчиненныйЭлемент("EMPLOYEE"); Ветка.УстановитьАтрибут("IDENTIFYCODE", ВыбВыплатаЗПБ.Сотрудник.ИНН);// Идентификационный код сотрудника Ветка.УстановитьАтрибут("TABNO", ВыбВыплатаЗПБ.Сотрудник.Код);// Табельный номер сотрудника Ветка.УстановитьАтрибут("CARDACCOUNTNO", "123123"); // Номер карточного (или другого) счёта сотрудника. Ветка.УстановитьАтрибут("AMOUNT", ВыбВыплатаЗПБ.Сумма); //Сумма для зачисления на счёт сотрудника в формате ГРН,КОП КонецЦикла; XMLКорневойРаздел.Записать(ИмяФайлаXML); Так вот тут с узлами непонятное делается: Ветка = ДанныеXML.СоздатьПодчиненныйЭлемент("SCHEDULEINFO"); - элемент создается нормально и нормально в конце файла ест закрывающий тег... а вот: Ветка = ДанныеXML.СоздатьПодчиненныйЭлемент("EMPLOYEES"); так в открывающем теге сразу же после имени идет / - закрытие елемента а у меня в елементе EMPLOYEES несколько елементов EMPLOYEE т.е. схматично примерно так: <EMPLOYEES> <EMPLOYEE .../> <EMPLOYEE .../> <EMPLOYEE .../> <EMPLOYEE .../> <EMPLOYEES /> У меня же файл формируется не такой а такой: <EMPLOYEES/> <EMPLOYEE IDENTIFYCODE="3376400724" TABNO="2156" CARDACCOUNTNO="123123" AMOUNT="1239.02"/> <EMPLOYEE IDENTIFYCODE="3376400777" TABNO="2121" CARDACCOUNTNO="123123" AMOUNT="1239.02"/> |
|||
103
monsterZE
10.01.13
✎
15:22
|
попробуй "разделить ветки" =)
|
|||
104
bananan
10.01.13
✎
15:29
|
(103) Это как?
Вот полный код : XMLАнализатор = СоздатьОбъект("AddIn.XMLParser"); XMLКорневойРаздел = XMLАнализатор.СоздатьДокумент(); ДанныеXML = XMLКорневойРаздел.СоздатьПодчиненныйЭлемент("DATAPACKET"); Ветка = ДанныеXML.СоздатьПодчиненныйЭлемент("SCHEDULEINFO"); Ветка.УстановитьАтрибут("SHEDULE_DATE", ВыбВыплатаЗПБ.ДатаДок); Ветка.УстановитьАтрибут("SHEDULE_NUMBER", ВыбВыплатаЗПБ.НомерДок); Ветка.УстановитьАтрибут("PAYER_BANK_BRANCHID", ВыбВыплатаЗПБ.Фирма.РС.БанкМФО); Ветка.УстановитьАтрибут("PAYER_BANK_ACCOUNTNO", ВыбВыплатаЗПБ.Фирма.РС.БанкСчет); Ветка.УстановитьАтрибут("TOTAL_SHEDULE_AMOUNT", Строка(ВыбВыплатаЗПБ.Итог("Сумма")));// TOTAL_SHEDULE_AMOUNT - Общая сумма зарплатной ведомости в формате ГРН,КОП Ветка.УстановитьАтрибут("CONTRAGENT_CODEZKP", ВыбВыплатаЗПБ.Фирма.РС.Банк.ЕГРПОУ); ДанныеXML = XMLКорневойРаздел.СоздатьПодчиненныйЭлемент("EMPLOYEES"); Пока ВыбВыплатаЗПБ.ПолучитьСтроку() = 1 Цикл Ветка = ДанныеXML.СоздатьПодчиненныйЭлемент("EMPLOYEE"); Ветка.УстановитьАтрибут("IDENTIFYCODE", ВыбВыплатаЗПБ.Сотрудник.ИНН);// Идентификационный код сотрудника Ветка.УстановитьАтрибут("TABNO", ВыбВыплатаЗПБ.Сотрудник.Код);// Табельный номер сотрудника Ветка.УстановитьАтрибут("CARDACCOUNTNO", ""); // ???? Номер карточного (или другого) счёта сотрудника. Ветка.УстановитьАтрибут("AMOUNT", ВыбВыплатаЗПБ.Сумма); //Сумма для зачисления на счёт сотрудника в формате ГРН,КОП КонецЦикла; XMLКорневойРаздел.Записать(ИмяФайлаXML); |
|||
105
Ёпрст
10.01.13
✎
15:34
|
Ё...
Ветка = ДанныеXML.СоздатьПодчиненныйЭлемент("EMPLOYEES"); ............... Ветка2 = Ветка.СоздатьПодчиненныйЭлемент("EMPLOYEE"); Ветка2.УстановитьАтрибут("IDENTIFYCODE |
|||
106
Ёпрст
10.01.13
✎
15:34
|
думай, кому чего создаешь..
|
|||
107
bananan
10.01.13
✎
15:49
|
(105) Спасибо
(106) Постараюсь |
|||
108
bananan
10.01.13
✎
15:55
|
(105) Код такой:
Ветка1 = ДанныеXML.СоздатьПодчиненныйЭлемент("EMPLOYEES"); Пока ВыбВыплатаЗПБ.ПолучитьСтроку() = 1 Цикл Ветка2 = ДанныеXML.СоздатьПодчиненныйЭлемент("EMPLOYEE"); // Идентификационный код сотрудника Ветка2.УстановитьАтрибут("IDENTIFYCODE", ВыбВыплатаЗПБ.Сотрудник.ИНН); // Табельный номер сотрудника Ветка2.УстановитьАтрибут("TABNO", ВыбВыплатаЗПБ.Сотрудник.Код); // Номер карточного (или другого) счёта сотрудника. Ветка2.УстановитьАтрибут("CARDACCOUNTNO", ВыбВыплатаЗПБ.Сотрудник.НомерСчета); //Сумма для зачисления на счёт сотрудника в формате ГРН,КОП Ветка2.УстановитьАтрибут("AMOUNT", ВыбВыплатаЗПБ.Сумма); КонецЦикла; Но на выходе все-равно не то На выходе вот что: <?xml version="1.0" encoding="windows-1251"?> <DATAPACKET> <SCHEDULEINFO SHEDULE_DATE="2012-12-18" SHEDULE_NUMBER="АТ-0000156" PAYER_BANK_BRANCHID="333227 " PAYER_BANK_ACCOUNTNO="260059008 " TOTAL_SHEDULE_AMOUNT="1239.02"/> <EMPLOYEES/> <EMPLOYEE IDENTIFYCODE="3376400724" TABNO="2156" CARDACCOUNTNO=" " AMOUNT="1239.02"/> </DATAPACKET> Т.е. лажа с EMPLOYEES - он сначала должен "открыться" потом в нему идут теги EMPLOYEE А потом он должен закрыться: </EMPLOYEES> |
|||
109
monsterZE
10.01.13
✎
16:22
|
бананан, ты черепашку и пылесосик изучал?.. может с них надо было начать? ты вложенность не соблюдаешь.
|
|||
110
Ёпрст
10.01.13
✎
16:23
|
да п..ц
ты вообще читаешь, что тебе пишут ? |
|||
111
monsterZE
10.01.13
✎
16:23
|
так должно получиться?
<DATAPACKET> <SCHEDULEINFO SHEDULE_DATE="1" SHEDULE_NUMBER="2" PAYER_BANK_BRANCHID="3" CONTRAGENT_CODEZKP="4"> <EMPLOYEES> <EMPLOYEE IDENTIFYCODE="0" TABNO="1" CARDACCOUNTNO="2" AMOUNT="3"/> </EMPLOYEES> </SCHEDULEINFO> </DATAPACKET> |
|||
112
Ёпрст
10.01.13
✎
16:23
|
Ветка = ДанныеXML.СоздатьПодчиненныйЭлемент("EMPLOYEES");
.... Пока ВыбВыплатаЗПБ.ПолучитьСтроку() = 1 Цикл Ветка2 = !!!!!!!!!!!!!!ВЕТКА!!!!!!!!!!!!!!!!!! .СоздатьПодчиненныйЭлемент("EMPLOYEE"); |
|||
113
Ёпрст
10.01.13
✎
16:24
|
так виднее ?
|
|||
114
monsterZE
10.01.13
✎
16:25
|
он похож даже не пытается =)
-- Ветка = ДанныеXML.СоздатьПодчиненныйЭлемент("SCHEDULEINFO"); Ветка.УстановитьАтрибут("SHEDULE_DATE", "1"); Ветка.УстановитьАтрибут("SHEDULE_NUMBER", "2"); Ветка.УстановитьАтрибут("PAYER_BANK_BRANCHID", "3"); Ветка.УстановитьАтрибут("CONTRAGENT_CODEZKP", "4"); Ветка2 = Ветка.СоздатьПодчиненныйЭлемент("EMPLOYEES"); Ветка3 = Ветка2.СоздатьПодчиненныйЭлемент("EMPLOYEE"); Ветка3.УстановитьАтрибут("IDENTIFYCODE", "0");// Идентификационный код сотрудника Ветка3.УстановитьАтрибут("TABNO", "1");// Табельный номер сотрудника Ветка3.УстановитьАтрибут("CARDACCOUNTNO", "2"); // ???? Номер карточного (или другого) счёта сотрудника. Ветка3.УстановитьАтрибут("AMOUNT", "3"); //Сумма для зачисления на счёт сотрудника в формате ГРН,КОП --- растут ветки =)) |
|||
115
bananan
10.01.13
✎
16:27
|
(113)(114) Спасибо. Я кажется понял. Сейчас попробую
|
|||
116
monsterZE
10.01.13
✎
16:28
|
первую ветку переименуй в ствол! =)) так правильней будет!
|
|||
117
Mikeware
10.01.13
✎
16:30
|
в (115) он "кажется, понял"....
интересно, чем думал работодатель, нанимая такого "работничка"... |
|||
118
oslokot
10.01.13
✎
16:36
|
(9) да нормально работает, только что сделал обработку импорта накладных из сети аптек, все быстро. Правда xml-файлики маленькие, килобайт по сто...
|
|||
119
bananan
10.01.13
✎
16:55
|
Ребята, а как можно на форму поставить поле для выбора файла?
|
|||
120
monsterZE
10.01.13
✎
17:03
|
так же, как и с выбором документа..
тока тип строка и в предопределенную процедуру вставляешь Процедура ПриНачалеВыбораЗначения(ТекущийЭлемент,Флаг) // выбираем файл Если ТекущийЭлемент="ФайлCSV" Тогда Флаг = 0; СтрокаИмениФайла = ФайлCSV; ИмяНачальногоКаталога = ФС.ТекКаталог(); Если ФС.ВыбратьФайл(0, СтрокаИмениФайла, ИмяНачальногоКаталога, "Выбор файла с ГТД", "Все файлы (*.csv) |*.csv", "csv")=1 Тогда ФайлCSV = СтрокаИмениФайла; КаталогФайлаCSV = ИмяНачальногоКаталога; КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
121
bananan
10.01.13
✎
17:25
|
(120) Честно говоря ни понял. А какой елемент поставить на форму чтобы в нем можно было выбрать место на диске куда сохранить файл и задать имя файла?
|
|||
122
bananan
10.01.13
✎
17:29
|
*(121) ВыбратьФайл()?
|
|||
123
monsterZE
10.01.13
✎
17:41
|
хреново..
реквизит диалога, тип строка зы. черепашка рулит - перо опусти, перо подними, сделай шаг =) |
|||
124
bananan
10.01.13
✎
17:46
|
(123) Опять ничего не понял:
поставил я на форму елемент с типом строка и чего - есть елемент для ввода значения, а мне нужен елемент для выбора файла и его места на диске! Пробывал так: Файл = ВыбратьФайл(1, ИмяФайлаXML, Каталог, "Зберегти в файл", "Файлы xml", "xml", 2); выдает ошибку: Файл = ВыбратьФайл<<?>>(1, ИмяФайлаXML, Каталог, "Зберегти в файл", "Файлы xml", "xml", 2); {\\server12\vpktest$\ExtForms\ХМЛ новий.ert(7)}: Функция не обнаружена (ВыбратьФайл) Это я что-то не так сделал или какие-то глюки в сети? |
|||
125
Ёпрст
10.01.13
✎
17:50
|
(124) ФС.
|
|||
126
monsterZE
10.01.13
✎
17:51
|
ты видишь, что у меня написано?..
оно не похоже на то, что у тебя написано.. елемента для выбора файла нет =) есть элемент строка с пидалькой по нажатию которой можно заполнять этот элемент именем файла |
|||
127
bananan
10.01.13
✎
18:39
|
Всем большщое спасибо!!!
А как мне определить выбрал ли пользователь документ ЗарплатаЗПБ? |
|||
128
bananan
10.01.13
✎
19:06
|
*(127) Я сделал так:
Если СтрДлина(ВыбВыплатаЗПБ)=0 Тогда Возврат; КонецЕсли; И, таким обрзом, дальше код не выполняется |
|||
129
monsterZE
10.01.13
✎
20:38
|
вот тут http://www.mista.ru/tutor_1c/
есть отличный учебник.. только ты все равно его не прочитаешь.. =) может языковой барьер мешает? |
|||
130
monsterZE
10.01.13
✎
20:41
|
даже в СП выбрал методы документа и читай..
причем тут вобще строка и документ? Выбран() Синтаксис: Выбран() Назначение: Определение факта позиционирования объекта типа документ. Возвращает: 1 - если документ выбран; 0 - если не выбран. |
|||
131
bananan
11.01.13
✎
11:19
|
(130) Спасибо
А строка причем? так вот, если документ не выбран - длина строки равна 0! |
|||
132
Ёпрст
11.01.13
✎
11:23
|
(131) а если там будет битая ссылка - то обломишься с неявным преобразованием ссылочного типа к строке.
|
|||
133
Mikeware
11.01.13
✎
11:25
|
(129) мешает не "языковой барьер", а "интеллектуальный уровень".
ну и, естественно, "закон соотношения радиусов" |
|||
134
bananan
11.01.13
✎
11:49
|
(133) Просто, ты, не равнодушен ко мне :)
|
|||
135
bananan
11.01.13
✎
11:50
|
(132) Сделал уже как в (130) - правильно.
|
|||
136
Mikeware
11.01.13
✎
11:50
|
(134) Пит мне передал завет - дятлов считать...
я заглянул в твои темы, и тебя засчитал... |
|||
137
bananan
11.01.13
✎
12:51
|
(136) Не скромничай; и себя не забудь посчитать...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |