Имя: Пароль:
1C
1C 7.7
v7: Разъясните код запроса
,
0 Kapystin
 
13.11.14
18:48
......
    |Функция Покуп    =    Сумма(1) Когда (Док.Вид() = ""СчетФактура"");
    |Функция Пост    =    Сумма(-1) Когда (Док.Вид() = ""ЗаписьКнигиПокупок"");

.....
УзелПодч.УстановитьАтрибут("Покупатель", ?(Запрос.Покуп = 0, 0, 1));
        УзелПодч.УстановитьАтрибут("Поставщик", ?(Запрос.Пост = 0, 0, 1));

не понимаю сумма(1) и сумма(-1)
1 ГдеСобака Зарыта
 
13.11.14
18:52
Видимо даст количество счетов фактур и записей кн продаж в запросе
2 spero
 
13.11.14
18:53
Ну так автор захотел. Мог бы Сумма(1) и Сумма(1) написать. Без разницы.
3 Kapystin
 
13.11.14
18:55
а как отработает
УзелПодч.УстановитьАтрибут("Покупатель", ?(Запрос.Покуп = 0, 0, 1));
        УзелПодч.УстановитьАтрибут("Поставщик", ?(Запрос.Пост = 0, 0, 1));
.
не могу разобраться.
4 2S
 
13.11.14
18:56
Возможно суммирует для определения сф, по которым нет записей кп. Если так, у вас бардак в учете )
5 2S
 
13.11.14
18:57
Если Покуп + Пост = 0 Тогда
все ок
КонецЕсли;
))
6 Kapystin
 
13.11.14
18:59
Процедура Сформировать()  
    
    Если ЗагрузитьВнешнююКомпоненту(КаталогИБ() + "v7plus.dll") <> 1 Тогда
        Если ЗагрузитьВнешнююКомпоненту(КаталогПрограммы() + "v7plus.dll") <> 1 Тогда
            Предупреждение("Компонента v7plus.dll не найдена!");
            возврат;
        КонецЕсли;
    КонецЕсли;
    
    Анализатор = СоздатьОбъект("AddIn.XMLParser");
    Пока ПустоеЗначение(КаталогОбмена) = 1 Цикл
        ИмяКаталога = КаталогОбмена;
        Если ФС.ВыбратьКаталог(ИмяКаталога, "Выберите папку в которую хотите сохранить файл выгрузки")=1 тогда
            КаталогОбмена = ИмяКаталога;
        КонецЕСли;    
    КонецЦикла;  
    
    Документ = Анализатор.СоздатьДокумент();
    Выгрузка = Документ.СоздатьПодчиненныйЭлемент("Выгрузка");
                            
    
        Час = "";    Минута = ""; Секунда = "";
    ТекущееВремя(Час, Минута, Секунда);
    ИмяФайлаОбмена = "KONTR_"
    +Строка(ДатаЧисло(ТекущаяДата()))+"_"
    +Строка(ДатаМесяц(ТекущаяДата()))+"_"
    +Строка(ДатаГод(ТекущаяДата()))+"_"
    +Строка(Час)+"_"+Строка(Минута)+"_"
    +Строка(Секунда)+".xml";
    
    ФайлОбмена = КаталогОбмена+"\"+ИмяФайлаОбмена;
    
        Выгрузка.УстановитьАтрибут("Вид_документов", "СФ");
    //Выгрузка.УстановитьАтрибут("Идентификатор_файла", ИдентификаторФайла);
    Выгрузка.УстановитьАтрибут("Дата_начала", НачДата);
    Выгрузка.УстановитьАтрибут("Дата_окончания", КонДата);
    
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса = "
    |Период с НачДата по КонДата;
    |ОбрабатыватьДокументы Проведенные;
    |Док   = Документ.СчетФактура.ТекущийДокумент,
    |         Документ.ЗаписьКнигиПокупок.ТекущийДокумент;
    |Контрагент = Документ.СчетФактура.Контрагент,
    |                Документ.ЗаписьКнигиПокупок.Контрагент;
    |Функция Покуп    =    Сумма(1) Когда (Док.Вид() = ""СчетФактура"");
    |Функция Пост    =    Сумма(-1) Когда (Док.Вид() = ""ЗаписьКнигиПокупок"");
    |Группировка Контрагент;";
    //|Группировка Док;";
    
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Предупреждение("Запрос не выполнен!");  
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
    
ТЗ = "";
    Запрос.Выгрузить(ТЗ);
    ТЗ.ВыбратьСтроку();


    
    Узел0 = Выгрузка.СоздатьПодчиненныйЭлемент("Справочники");
    Узел1 = Узел0.СоздатьПодчиненныйЭлемент("Справочник");
    Узел1.УстановитьАтрибут("Вид_справочника", "Контрагенты");  
    
    Договоры = СоздатьОбъект("Справочник.Договоры");
     Счетчик = 0;
    Пока Запрос.Группировка("Контрагент") = 1 Цикл
        Счетчик = Счетчик + 1;    
        Сообщить("Покуп__"+Запрос.Покуп);
        Сообщить("Пост___"+Запрос.Пост);
        ЭтоГруппа = Запрос.Контрагент.ЭтоГруппа();
        УзелПодч = Узел1.СоздатьПодчиненныйЭлемент("Контрагент");
        УзелПодч = Узел1.СоздатьПодчиненныйЭлемент("Контрагент");
        УзелПодч.УстановитьАтрибут("Код",             Запрос.Контрагент.Код);
        УзелПодч.УстановитьАтрибут("Наименование",     Запрос.Контрагент.Наименование);
        УзелПодч.УстановитьАтрибут("КодРодителя",     Запрос.Контрагент.Родитель.Код);
        УзелПодч.УстановитьАтрибут("ЭтоГруппа",     ЭтоГруппа);
        Если ЭтоГруппа = 1 Тогда
            Продолжить;
        КонецЕсли;
        УзелПодч.УстановитьАтрибут("Покупатель", ?(Запрос.Покуп = 0, 0, 1));
        УзелПодч.УстановитьАтрибут("Поставщик", ?(Запрос.Пост = 0, 0, 1));
//        УзелПодч.УстановитьАтрибут("ЮрЛицо",     ?(Запрос.Контрагент.ЮрФизЛицо.Вид() = "ЮрЛица", 1, 0));
//        УзелПодч.УстановитьАтрибут("ПолнНаименование",     СокрЛП(Запрос.Контрагент.ЮрФизЛицо.ПолнНаименование));
//        УзелПодч.УстановитьАтрибут("ЮрАдрес",     СокрЛП(Запрос.Контрагент.ЮрФизЛицо.ЮрАдрес));
//        УзелПодч.УстановитьАтрибут("ФактАдрес",     СокрЛП(Запрос.Контрагент.ФактАдрес));
//        УзелПодч.УстановитьАтрибут("ИНН_КПП",     Запрос.Контрагент.ЮрФизЛицо.ИНН);
//        УзелПодч.УстановитьАтрибут("ОКПО",     ?(Запрос.Контрагент.ЮрФизЛицо.Вид() = "ЮрЛица", Запрос.Контрагент.ЮрФизЛицо.ОКПО, ""));
//        УзелПодч.УстановитьАтрибут("Телефоны",     Запрос.Контрагент.ЮрФизЛицо.Телефоны);
        
        
    КонецЦикла;  
        Документ.Записать(ФайлОбмена);
//            ОткрытьФайл(ФайлОбмена);
    ЗапуститьПриложение("explorer "+ Строка(ФайлОбмена))
    //    Сообщить("Файл записан!");
КонецПроцедуры
7 ГдеСобака Зарыта
 
13.11.14
19:02
Ну просто определяет роль контрагента. Кто он Покупатель или Поставщик. Соответственно если есть хоть одна СФ в запросе, значит это покупатель, Если хоть одна запись кн покупок, то поставщик
8 Kapystin
 
13.11.14
19:06
итог я понимаю, не догоняю с этими сумма(1) и сумма(-1)
они попадают сюда
УзелПодч.УстановитьАтрибут("Покупатель", ?(Запрос.Покуп = 0, 0, 1));
        УзелПодч.УстановитьАтрибут("Поставщик", ?(Запрос.Пост = 0, 0, 1));

и каким образом здесь отработает сумма(-1).

запутался
9 Kapystin
 
13.11.14
19:06
ни могу двигаться дальше не разобравшись с азами.
10 Kapystin
 
13.11.14
19:16
всем спасибо, разобрался