Вход | Регистрация

  1  2   
1С:Предприятие ::

Метки: 

v7: Експорт в XML

Я
   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)}: Параметр не опциональный
Что я нетак делаю?
 
 
   Privalov
 
1 - 09.01.13 - 13:25
Откуда взял "значение"?
   bananan
 
3 - 09.01.13 - 13:32
(1) Структура XVL такая:
<?xml version="1.0" encoding="windows-1251"?>
<DATAPACKET Version="2.0">
<EMPLOYEES>
<EMPLOYEE ID="1"  IDENTIFYCODE="1234567890" LASTNAME="Фамилия" FIRSTNAME="Имя" MIDDLENAME="Отчество" EMBOSSIGLI="FAMILIA"  SEX="M" PASSPORTNO="ББ111111" PASSPORTISSUEDATE="01/01/2000" PASSPORTISSUEPLACE="РОГУ МВД У" BIRTHDAY="01/01/1980" BIRTHPLACE="Город" CITIZENSHIP="804" ADDRESS="Город, улица, дом" ADDR_COUNTRYID="804" ADDR_POSTCODE="61000" ADDR_REGION="Область" ADDR_DISTRICT="Район" ADDR_CITY="Город" ADDR_STREET="Улица" ADDR_HOUSENO="01" ADDR_FLAT="01" JURADDR_COUNTRYID="804" JURADDR_POSTCODE="61000" JURADDR_REGION="Область"  JURADDR_DISTRICT="Район" JURADDR_CITY="Город" JURADDR_STREET="Улица" JURADDR_HOUSENO="01"  JURADDR_FLAT="01" ACCEPTANCEDATE="01/01/2008" HOMEPHONE="+380571112233" WORKPHONE="+380574445566" MOBILEPHONE="+380507778899" />
…
</EMPLOYEES>
Вот я для элемента ID и задаю знчение (в данном случае - порядковый номер)...
   Ёпрст
 
4 - 09.01.13 - 13:38
(0)Открой для себя 
FOR XML
...
и забей на AddIn.XMLParser
   Mikeware
 
5 - 09.01.13 - 13:39
(4) это уже колдунство!
   Надсмотрщик
 
6 - 09.01.13 - 13:41
(4) AddIn.XMLParser работает как часы
   monsterZE
 
7 - 09.01.13 - 13:44
вот тебе кусечек =)
--
    Если ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"v7plus.dll") <> 1 Тогда
        Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы()+"\bin\"+"v7plus.dll") <> 1 Тогда
            Предупреждение("Компонента v7plus.dll не найдена!");
            Возврат;
        КонецЕсли;
    КонецЕсли;
    
    ХМЛАнализатор = СоздатьОбъект("AddIn.XMLParser");     
    ХМЛДокумент = ХМЛАнализатор.СоздатьДокумент(); 

    Файл = ХМЛДокумент.СоздатьПодчиненныйЭлемент("Файл");
    Файл.УстановитьАтрибут("ИдФайл",ИмяФайла);
    Файл.УстановитьАтрибут("ВерсФорм","5.02");
    СвУчДокОбор = Файл.СоздатьПодчиненныйЭлемент("СвУчДокОбор");
    СвУчДокОбор.УстановитьАтрибут("ИдОтпр",ИдОтпр);         
    СвУчДокОбор.УстановитьАтрибут("ИдПок",ИдПок);          
...
   Ёпрст
 
8 - 09.01.13 - 13:49
(6) ну-ну..
   Ёпрст
 
9 - 09.01.13 - 13:50
это худшее, что есть для xml в клюшках.
   monsterZE
 
10 - 09.01.13 - 13:51
(9) а что в нем плохого?
 
 Рекламное место пустует
   Попытка1С
 
11 - 09.01.13 - 13:53
   Попытка1С
 
12 - 09.01.13 - 13:54
   Гефест
 
13 - 09.01.13 - 13:54
(6) лучше бы он работал как парсер
   Ёпрст
 
14 - 09.01.13 - 13:54
(10)
1.медленный
2.падение при больших xml
3.ест много памяти
   Надсмотрщик
 
15 - 09.01.13 - 13:55
(9) Ты просто не умеешь его готовить
   bananan
 
16 - 09.01.13 - 13:56
C XML вроде как разобрался. Но вот что, мне нужно установить атрибут "LASTNAME" (Фамиля сотрудника). Пишу так:
   Ветка.УстановитьАтрибут("LASTNAME", ТЗ.Сотрудник);
Выдает:
Ветка.УстановитьАтрибут("LASTNAME", ТЗ.Сотрудник);
{\\SERVER12\VPKTEST$\EXTFORMS\ЗАРПЛАТАXML.ERT(67)}: Плохой тип переменной
К ТЗ.Мотрудник это: $ДокЗП.Сотрудник [Сотрудник $Справочник.Сотрудники]
Тут как-то по-другому надо к нему обратиться?
   Попытка1С
 
17 - 09.01.13 - 13:57
Ветка.УстановитьАтрибут("LASTNAME", ТЗ.Сотрудник.Наименование);
   Надсмотрщик
 
18 - 09.01.13 - 13:58
(16) Ветка.УстановитьАтрибут("LASTNAME", Строка(ТЗ.Сотрудник));
   Ёпрст
 
19 - 09.01.13 - 13:59
(15) :))
Как думаешь, почему в КД2 используется домдокумент, а не v7plus ?
   bananan
 
20 - 09.01.13 - 14:00
(17) Спасибо. работает!
   Надсмотрщик
 
21 - 09.01.13 - 14:01
(19) v7plus на снеговике?
   monsterZE
 
22 - 09.01.13 - 14:04
(14) ну мелкий какашняк выгружать - почему нет?.. =)
   Ёпрст
 
23 - 09.01.13 - 14:04
(21) почему бы и нет ?
   bananan
 
24 - 09.01.13 - 14:10
У нас в справочнике Сотрудники, поле Пол - перечисление.
в XML мне нужен Атрибут SEX
Здесь надо делать изменения в тексте запроса добавить Inner JOIN?
   Ёпрст
 
25 - 09.01.13 - 14:12
(24) нет
   bananan
 
26 - 09.01.13 - 14:14
(25) А как?
   Ёпрст
 
27 - 09.01.13 - 14:16
(26) просто типизировать поле с перечислением в тексте запроса . и усё.
   bananan
 
28 - 09.01.13 - 14:17
(27) А это CASE?
   Ёпрст
 
29 - 09.01.13 - 14:17
select
  $Спр.ВидМужикаБаба as [Пол $Перечисление.ВидМужикаБаба]
   monsterZE
 
30 - 09.01.13 - 14:20
(28) case это условия, привести к типу это cast.. и convert
   bananan
 
31 - 09.01.13 - 14:21
(29) В коде запроса сделал правки - запрос работает, но выдает:
Ветка.УстановитьАтрибут("SEX", ТЗ.Пол);
{\\SERVER12\VPKTEST$\EXTFORMS\ЗАРПЛАТАXML.ERT(73)}: Плохой тип переменной
Там в данном XML нужно записывать либо M либо F
   monsterZE
 
32 - 09.01.13 - 14:22
=) потому что тз.пол типизирована
   Ёпрст
 
33 - 09.01.13 - 14:23
Ну так воткни
Ветка.УстановитьАтрибут("SEX",""+ТЗ.Пол);
 
 
   bananan
 
34 - 09.01.13 - 14:38
(33) Спасибо, - работает, но выдает М или Ж, а надо M либо F, тутуж таки case нужен?
   bananan
 
35 - 09.01.13 - 14:39
*(34) И где этот касе вставляыть?
   Ёпрст
 
36 - 09.01.13 - 14:40
(34) если в самом запросе, то case, если в результатах, то и ?(,,) хватит
   bananan
 
37 - 09.01.13 - 14:42
(36) А как лучше - в запросе или в результатах?
   monsterZE
 
38 - 09.01.13 - 14:45
потолок = ?(""+ТЗ.Пол="М","М_инглишная","F");
Ветка.УстановитьАтрибут("SEX",потолок);
   monsterZE
 
39 - 09.01.13 - 14:46
или кейс в запросе и там переобзывать
   Ёпрст
 
40 - 09.01.13 - 14:46
(37) тут без разницы, особого выигрыша не будет
   bananan
 
41 - 09.01.13 - 15:03
Ребята, а как добавить к строке (в конце) 13 символов пробел? (Извините, конечно за такую елементарщину)
   monsterZE
 
42 - 09.01.13 - 15:14
вариант1
Для ъ=1 по 13 цикл
мояСтрока = мояСтрока+" ";
КонецЦикла

вариант2
мояСтрока = мояСтрока+"      тут 13 пробелов         ";
   Ёпрст
 
43 - 09.01.13 - 15:21
(41)
+Формат(" ","С13");
   bananan
 
44 - 09.01.13 - 16:15
(42) Оба этих ыарианта я и сам придумал, но не красиво
(43) Красиво
   monsterZE
 
45 - 09.01.13 - 16:18
(44) да ты растешь =)
   bananan
 
46 - 09.01.13 - 16:21
Как получить в запросе код елементы справочника сотрудники?
Написал так: $СпрСотр.Code AS Код
Ошибка:
Meta name parser error: поле таблицы не найдено "$СпрСотр.Code"
   monsterZE
 
47 - 09.01.13 - 16:26
Метапарсер тут не нужен, это реальное имя столбца, убери $
   bananan
 
48 - 09.01.13 - 16:34
(47) Спасибо
   bananan
 
49 - 09.01.13 - 17:03
* Окзывается или я не правильно понял задачу или ее неправильно поставили... Но здесь с запросом надо будет еще поработать.
Если у меня не будет получаться - буду обращаться к вам
 
 Рекламное место пустует
   bananan
 
50 - 09.01.13 - 17:08
(49) Писал еще где-то с час назад - забыл отправитю...
Уже у мен возникли две проблемы:
1. Какой элемент поставить на форму чтобы пользователь там мог выбрать ОДИН конкретный документ по выплте зарплаты?
2. Как в запросе определить номер документа?
   Ёпрст
 
51 - 09.01.13 - 17:10
1.реквизит диалога с нужным типом
2.посмотреть docno у _1sjourn
   bananan
 
52 - 09.01.13 - 17:12
*(50) По поводу номера докуумента - пробывал:
$ДокЗП.DocNo
Ошибка:
 Meta name parser error: поле таблицы не найдено "$ДокЗП.DocNo"
Побывал
ДокЗП.DocNo
Ошибка:
 Invalid column name 'DocNo'.
   bananan
 
53 - 09.01.13 - 17:12
(51) по поводу п.2 вроде понял - сейчас попробую, а вот первый пунтк - ничего я не понял :(
   Ёпрст
 
54 - 09.01.13 - 17:14
1.Меню-Вставить-Реквизит Диалога-Тыркнуть в нужное место на форме-На закладке Тип указать нужный тип реквизита диалога-Задать идентификатор-Наслаждаться
   bananan
 
55 - 09.01.13 - 17:21
(54) Так и сделал тип указал: Документ.ВыплтаЗПБ
Так, когда пускаю на выполнение в этом окошке выбора НИЧЕГО нет!?
   bananan
 
56 - 09.01.13 - 17:21
Идентификатор тоже указал : ВыбВыплатаЗПБ
   Ёпрст
 
57 - 09.01.13 - 17:21
(55) нажми на "..." - педальку, будь мужиком - выбери туда чего-нибудь САМ!
   bananan
 
58 - 09.01.13 - 17:25
(57) Спасибо, не обратил я внимания на "педальку"
   bananan
 
59 - 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.
   monsterZE
 
60 - 09.01.13 - 17:30
(59) ты как всегда =)
   monsterZE
 
61 - 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
   bananan
 
63 - 09.01.13 - 17:40
(60)-(62) Спасибо... Ну не как всегда. просто что-то голова ну совсем нераблотает
   bananan
 
64 - 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 Жур
два.

А теперь иди читай документ по скулю в области алиасов.
   bananan
 
66 - 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 Номер,
 
таксложно написать было?
   bananan
 
69 - 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", ТЗ.Номер);
   bananan
 
74 - 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
 
Что здесь не так?
   bananan
 
75 - 09.01.13 - 18:26
*(74) Кто-нибудь ПОМОГИТЕ!!!!!!!!!!!!!!!!!!!!!!
   bananan
 
76 - 09.01.13 - 18:34
Ошибка в этой строке:
Ветка.УстановитьАтрибут("SHEDULE_NUMBER", ТЗ.Номер);        // Номер зарплатной ведомости
Ошибка:
 Неизвестное имя
Какое имя ей неизвестно?!!
   bananan
 
77 - 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
            |";
Третья строка"!
   bananan
 
78 - 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    Сумма для зачисления на счёт сотрудника в формате ГРН,КОП
   bananan
 
79 - 09.01.13 - 19:11
А номер документа можно получить и не в запросе а так:
ВыбВыплатаЗПБ.НомерДок
А по сотрудниках - тоже, возмоэно обойтись без запроса...
   bananan
 
80 - 09.01.13 - 19:24
Пробую по сотрудниках без запроса - код такой:
      Спр = СоздатьОбъект("Справочник.Сотрудники");
     Сообщить(ВыбВыплатаЗПБ.НомерДок+"- номер документа");
     Пока ВыбВыплатаЗПБ.ПолучитьСтроку() = 1 Цикл
         Сообщить("Сотрудник: "+ВыбВыплатаЗПБ.Сотрудник);
        // искать сотрудника в Справочнике?
 
          Ср = Спр.НайтиПоНаименованию(ВыбВыплатаЗПБ.Сотрудник, 0);
          Сообщить("Ср= "+Ср);
     КонецЦикла;
Выдает:
  АТ-0000153- номер документа
Сотрудник: Гамов
Ср= 0
Сотрудник: Красотов
Ср= 0
Ну не хочет он искать по наименованию1
   monsterZE
 
81 - 09.01.13 - 20:36
(78) нах тебе вобще запрос тогда, если на основе _одного_ дока выгрузку сделать?? найди док, через создать документ / выбрать документ и выгружай.
   monsterZE
 
82 - 09.01.13 - 20:40
по запросу - запрос выполняется?
в тз.ВыбратьСтроку(); столбцы присутствуют? значит все с запросом норм.
   monsterZE
 
83 - 09.01.13 - 20:44
и если у тебя в докуменет в табличной части реквизит сотрудник, нах его вобще искать????? а если уж искать то через НайтиЭлемент(<?>)
   monsterZE
 
84 - 09.01.13 - 20:48
Ср = Спр.НайтиПоНаименованию(ВыбВыплатаЗПБ.Сотрудник.Наименование, 0);
   monsterZE
 
85 - 09.01.13 - 20:48
ты вобще кто, там, где работаешь? =)
   bananan
 
86 - 10.01.13 - 12:48
(81) Запрос. я думаю таки нужен, если без запроса, то, скорее всего появится неоднозначности с Сотрудниками (Например. есть три сотрудника Иванов... - однозначно идентифицировать сотрудника можно, по коду, табельному номеру и т.д., но не по фамилии)
Или яф не прав?
   bananan
 
87 - 10.01.13 - 12:58
*(86) А, скорее всего здесь надо делать комбинацию из работы с документом и запросом
   Ёпрст
 
88 - 10.01.13 - 13:03
(87) для одного запроса запрос не нужен
   bananan
 
89 - 10.01.13 - 13:03
Вопрос, такой код:
Пока ВыбВыплатаЗПБ.ПолучитьСтроку() = 1 Цикл
  Сообщить("Сотрудник: "+ВыбВыплатаЗПБ.Сотрудник);
  Спр.НайтиПоНаименованию(ВыбВыплатаЗПБ.Сотрудник, 0);
  Сообщить("Сотрудник= "+Спр.Наименование);
  Сообщить("Спр.Код= "+Спр.Код);
КонецЦикла;
Выдает:
АТ-0000154- номер документа
Сотрудник: Захарчук
Сотрудник=
Спр.Код=
Что я здесь не так сделал?
   bananan
 
90 - 10.01.13 - 13:04
(88) А как мне однозначно найти сотрудника иванов в справочнике, если их, Ивановых в спрачочнике несколько?
   monsterZE
 
91 - 10.01.13 - 13:08
ты почитай, что выше я тебе писал
   bananan
 
92 - 10.01.13 - 13:13
(91) В табличной части документа есть сотрудник.
Но, я не знаю могу я через елемент Сотрудник таблицной части доступится к такому же сотруднику (тому же).
Это возможно?
Если да - то как?
   bananan
 
93 - 10.01.13 - 13:16
Ко всему прочему мне нужно из этого документа (с помощью ) узнать много информации о фирме...
   Ёпрст
 
94 - 10.01.13 - 13:18
ну п..ц

Пока ВыбВыплатаЗПБ.ПолучитьСтроку() = 1 Цикл
  Сообщить("Сотрудник: "+ВыбВыплатаЗПБ.Сотрудник);
  Сообщить("Сотрудник= "+ВыбВыплатаЗПБ.Сотрудник.Наименование);
  Сообщить("Спр.Код= "+ВыбВыплатаЗПБ.Сотрудник.Код);
КонецЦикла;
   bananan
 
95 - 10.01.13 - 13:20
(94) Спасибо!
Я и не знал, что так можно, а попробывать - не догадался... :(
   Никола_Питерский
 
96 - 10.01.13 - 13:22
Ёпрст4 как всегда бесподобен !

Ответы лаконичные и всегда по делу.

+100500
   bananan
 
97 - 10.01.13 - 14:21
Ребята, а в документе есть общая сумма или надо ее самому построчно вычислять?
   Dolly_EV
 
98 - 10.01.13 - 14:23
(97) если есть галка "Итог по колонке" - реквизит (сумма) хранится в шапке дока.
Но штатными средстави обратиться только так:
Док.Итог("Сумма")
   bananan
 
99 - 10.01.13 - 14:24
(98) Спасибо
   Dolly_EV
 
100 - 10.01.13 - 14:25
Все хочу спросить... здесь за СП где-нить платицца?

  1  2   

Список тем форума
Рекламное место пустует Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует