Имя: Пароль:
1C
1С v8
v8: Обращение к реквизиту в общем модуле
,
0 zzzLEXzzz
 
28.08.13
14:24
Доброго времени суток. 1С 8.2 УТ. имеется внешняя обработка которая выгружает, продажи, коды контрагента, НДЦ и т.д. из документа "реализацияТоваровИУслуг" в xml фаил, так же в этом документе есть реквезит булево "Бонус", в это обработке есть процедура, и в сторчки  

СуммаДитрибьютора = ПересчитатьСумму(Товар,Количество);

надо сделать условие если "бонус" истина тогда СуммаДитрибьютора = "0", помогите как правильно обратиться к бонусу, это описанно в общем модуле, весь код процедуры вот, сильно меня не пинать, я начинающий ))

Процедура ИмпортДокументовПродажи ()Экспорт

    //Создаём структуру XML файла
    XML = Новый ЗаписьXML;
    ИмяФайла =  "S"; //имя файла (требования Lawsonsonson)
    XML.ОткрытьФайл(ПутьВыгрузкиCправочников+"\"+ИмяФайла+".xml","UTF-8");  //путь файла
    XML.ЗаписатьОбъявлениеXML();
    
    //добавляем файл в список (
    ИмяФайла = ПутьВыгрузкиCправочников+"\"+ИмяФайла+".xml";
    //добавляем файл в список )
    
    //Шапка xml файла (
    XML.ЗаписатьНачалоЭлемента("request");
    XML.ЗаписатьНачалоЭлемента("entities");    
    //Шапка xml файла )
    
    
    ////*****ИЗМЕНЕНИЯ ДЛЯ ДИСТТРИБЬЮТОРА*****///// НАЧАЛО (
        
    ВыборкаТовара = ПолучитьСписокПозиций();
    
    Пока ВыборкаТовара.Следующий() Цикл
        Если( ВыборкаТовара.Объект.ПометкаУдаления = Истина ) Тогда
            Продолжить;
        КонецЕсли;
        Товар = ВыборкаТовара.Объект;
        
        Выборка = ПолучитьПродажи(Товар);
        
        Пока Выборка.Следующий() Цикл
            ОбработкаПрерыванияПользователя();
            Документ = Выборка.Док;    
            
            
            // Проверка на корректность Контрагента. Документ.Контрагент.ИНН = 10 или 12 символов
            ИНН = СокрЛП( Документ.Контрагент.ИНН );
            Если( СтрДлина( ИНН ) <> 10 ) И ( СтрДлина( ИНН ) <> 12 ) Тогда
                Сообщить(
                "ОШИБКА! Продажа по клиенту: " + Документ.Контрагент.Код +
                ", ошибка ИНН: " + Документ.Контрагент.ИНН + ", продажа пропущена!" );
                Продолжить;
            КонецЕсли;
            
            Менеджер = ПолучитьМенеджераДокумента(Документ.Контрагент);
            
            Если( НЕ ЗначениеЗаполнено( Менеджер ) ) Тогда
                Продолжить;
            КонецЕсли;
            
            //Получаем табличную часть (
            ТЧ  = Документ.Товары.Выгрузить();    
            FND = 0;
            Для каждого СтрокаТЧ Из ТЧ Цикл            
                Если СтрокаТЧ.Номенклатура = Товар Тогда
                    Количество = СтрокаТЧ.Количество*СтрокаТЧ.Коэффициент;
                    СуммаНдс   = СтрокаТЧ.СуммаНДС;
                    Сумма      = СтрокаТЧ.Сумма;
                    НДС        = ВернутьНДС(Товар);
                    Вес        = ПолучитьВес(Товар);                
                    FND = 1;
                    Прервать;
                КонецЕсли;
            КонецЦикла;
            //Получаем табличную часть )
            Если( FND = 0 ) Тогда Продолжить; КонецЕсли;
            
            



СуммаДитрибьютора = ПересчитатьСумму(Товар,Количество);
            
            
            
                    
                        
            //СчётФактура       = ПолучитьСчётФактуру(Документ);
            //Если СчётФактура  = Неопределено Тогда
            //    Предупреждение("Не создана счёт-фактура! Создайте счёт-фактуру и запустите выгрузку заново.");
            //КонецЕсли;
            ТТН               = ПолучитьНомерНаПечать(Документ,);
            ОбщийВес = Вес * Количество;
            
            ////*****ИЗМЕНЕНИЯ ДЛЯ ДИСТТРИБЬЮТОРА*****///// КОНЕЦ )    
            
            //Заполнение XML (Заполнение происходит по руководству ФорматОбменаДанными_v1) (
            
            // * - Обязательные для заполнения поля!!!
            
            //Первый тэг. Открыть(
            XML.ЗаписатьНачалоЭлемента("entity");
            XML.ЗаписатьНачалоЭлемента("attributes");
            //***
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","distribId");
            XML.ЗаписатьТекст(Строка(КодДистрибьютора));     //* Код дистрибьютора в системе, из справочника Дистрибьюторы
            XML.ЗаписатьКонецЭлемента();    
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","clientId");  
            XML.ЗаписатьТекст(Строка(Документ.Контрагент.Код));     //* Код клиента
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","pointId");
            XML.ЗаписатьТекст(Строка(Документ.Контрагент.Код));       //* Код Торговой точки
            XML.ЗаписатьКонецЭлемента();
            
            ДатаПродажи = Строка(Формат(Документ.дата,"ДФ=дд.ММ.гггг"));
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","dateApplied");
            //        XML.ЗаписатьТекст(ДатаВыгрузки);                 //* Дата за которую учитываются продажи
            XML.ЗаписатьТекст(ДатаПродажи);                 //* Дата за которую учитываются продажи
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","productId");
            XML.ЗаписатьТекст(Строка(Товар.Артикул));                     //* Код продукции (код продукта у дистрибьютора, если используется мэппинг продуктов)
            XML.ЗаписатьКонецЭлемента();      
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","quantity");      
            XML.ЗаписатьТекст(СтрЗаменить(Количество, Символы.НПП, ""));            //* Количество проданной продукции в штуках
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","weight");
            XML.ЗаписатьТекст(СтрЗаменить(ОбщийВес, Символы.НПП, ""));                            //* Вес продукта в килограммах
            XML.ЗаписатьКонецЭлемента();
            
            
  
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","sumNSV");
            XML.ЗаписатьТекст(СтрЗаменить(СуммаДитрибьютора, Символы.НПП, ""));          //* Общая стоимость продукции в рублях в ценах отгрузки дистрибьютору. Обязательное поле.
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","sumGSV");
            XML.ЗаписатьТекст(СтрЗаменить(Сумма, Символы.НПП, ""));     //* Общая стоимость продукции в рублях в ценах отгрузки в ТТ. Обязательное поле.
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","dateLoad");
            XML.ЗаписатьТекст(ДатаВыгрузки);                    //* Дата выгрузки из учетной системы дистрибьютора  
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","tax");
            XML.ЗаписатьТекст(Строка(НДС));                      //* НДС в процентах
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","rashNum");
            XML.ЗаписатьТекст(Строка(Документ.Номер));           //* Номер расходной накладной  
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","invNum");
            //        XML.ЗаписатьТекст(Строка(СчётФактура.Номер));    //* Номер счета фактуры
            XML.ЗаписатьТекст(Строка(0));    //* Номер счета фактуры
            XML.ЗаписатьКонецЭлемента();        
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","TTNNum");
            XML.ЗаписатьТекст(Строка(ТТН));                   //* Номер товарно-транспортной накладной
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","locId");
            XML.ЗаписатьТекст(Строка(Документ.Склад.Код));           //* Код склада дистрибьютора
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","manId");
            XML.ЗаписатьТекст(Строка(Менеджер.Код));            //* Код сотрудника, осуществившего продажу
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","product");
            XML.ЗаписатьТекст(Строка(Товар));              //* Название продукта в учетной системе дистрибьютора
            XML.ЗаписатьКонецЭлемента();
            //***
            //Первый тэг. Закрыть (
            XML.ЗаписатьКонецЭлемента();
            XML.ЗаписатьКонецЭлемента();
            //Заполнение XML)
        КонецЦикла;
    КонецЦикла;
    //выгружаем список )
    
    Сообщить("Продажи выгружены",СтатусСообщения.Внимание);
    
    XML.ЗаписатьКонецЭлемента();
    XML.ЗаписатьКонецЭлемента();
    //Закрываем xml файл для последующей обработки
    XML.Закрыть();
    
    //создаём zip архив (
    Если СоздатьАрхив = Истина Тогда
        ВыполнитьАрхивирование(ПутьВыгрузкиCправочников,ИмяФайла);    
    КонецЕсли;
    //создаём zip архив )
    
КонецПроцедуры
1 Шапокляк
 
28.08.13
14:28
Наверно так: Если Документ.Бонус Тогда
2 Allexe
 
28.08.13
14:28
Если Документ.Бонус Тогда
СуммаДитрибьютора = 0;
Иначе
  СуммаДитрибьютора = ПересчитатьСумму(Товар,Количество);
КонецЕсли
3 zzzLEXzzz
 
28.08.13
14:42
(1) (2) сделал так, но почему-то тогда он заполняет срочку в xml фаиле так

<attribute name="sumNSV"/>
а нужно так

<attribute name="sumNSV">0</attribute>

и в чем прикол, если я просто без условия делаю так

СуммаДитрибьютора = 0;

тогда она нормально заполняется, так как нужно, как только я ставлю условия происходит такая беда, что может быть?
4 Allexe
 
28.08.13
14:47
(3) Ну выложи код с условием.
5 zzzLEXzzz
 
28.08.13
14:51
Процедура ИмпортДокументовПродажи ()Экспорт

    //Создаём структуру XML файла
    XML = Новый ЗаписьXML;
    ИмяФайла =  "S"; //имя файла (требования Lawsonsonson)
    XML.ОткрытьФайл(ПутьВыгрузкиCправочников+"\"+ИмяФайла+".xml","UTF-8");  //путь файла
    XML.ЗаписатьОбъявлениеXML();
    
    //добавляем файл в список (
    ИмяФайла = ПутьВыгрузкиCправочников+"\"+ИмяФайла+".xml";
    //добавляем файл в список )
    
    //Шапка xml файла (
    XML.ЗаписатьНачалоЭлемента("request");
    XML.ЗаписатьНачалоЭлемента("entities");    
    //Шапка xml файла )
    
    
    ////*****ИЗМЕНЕНИЯ ДЛЯ ДИСТТРИБЬЮТОРА*****///// НАЧАЛО (
        
    ВыборкаТовара = ПолучитьСписокПозиций();
    
    Пока ВыборкаТовара.Следующий() Цикл
        Если( ВыборкаТовара.Объект.ПометкаУдаления = Истина ) Тогда
            Продолжить;
        КонецЕсли;
        Товар = ВыборкаТовара.Объект;
        
        Выборка = ПолучитьПродажи(Товар);
        
        Пока Выборка.Следующий() Цикл
            ОбработкаПрерыванияПользователя();
            Документ = Выборка.Док;    
            
            
            // Проверка на корректность Контрагента. Документ.Контрагент.ИНН = 10 или 12 символов
            ИНН = СокрЛП( Документ.Контрагент.ИНН );
            Если( СтрДлина( ИНН ) <> 10 ) И ( СтрДлина( ИНН ) <> 12 ) Тогда
                Сообщить(
                "ОШИБКА! Продажа по клиенту: " + Документ.Контрагент.Код +
                ", ошибка ИНН: " + Документ.Контрагент.ИНН + ", продажа пропущена!" );
                Продолжить;
            КонецЕсли;
            
            Менеджер = ПолучитьМенеджераДокумента(Документ.Контрагент);
            
            Если( НЕ ЗначениеЗаполнено( Менеджер ) ) Тогда
                Продолжить;
            КонецЕсли;
            
            //Получаем табличную часть (
            ТЧ  = Документ.Товары.Выгрузить();    
            FND = 0;
            Для каждого СтрокаТЧ Из ТЧ Цикл            
                Если СтрокаТЧ.Номенклатура = Товар Тогда
                    Количество = СтрокаТЧ.Количество*СтрокаТЧ.Коэффициент;
                    СуммаНдс   = СтрокаТЧ.СуммаНДС;
                    Сумма      = СтрокаТЧ.Сумма;
                    НДС        = ВернутьНДС(Товар);
                    Вес        = ПолучитьВес(Товар);                
                    FND = 1;
                    Прервать;
                КонецЕсли;
            КонецЦикла;
            //Получаем табличную часть )
            Если( FND = 0 ) Тогда Продолжить; КонецЕсли;
            
            //СуммаДитрибьютора = ПересчитатьСумму(Товар,Количество);
            
            
            
                    
            
            Если Документ.Бонус = истина  тогда
                СуммаДистрибьютера = 0;
                Иначе
            СуммаДитрибьютора = ПересчитатьСумму(Товар,Количество);
            КонецЕсли;
            

                        
            
            
            //СчётФактура       = ПолучитьСчётФактуру(Документ);
            //Если СчётФактура  = Неопределено Тогда
            //    Предупреждение("Не создана счёт-фактура! Создайте счёт-фактуру и запустите выгрузку заново.");
            //КонецЕсли;
            ТТН               = ПолучитьНомерНаПечать(Документ,);
            ОбщийВес = Вес * Количество;
            
            ////*****ИЗМЕНЕНИЯ ДЛЯ ДИСТТРИБЬЮТОРА*****///// КОНЕЦ )    
            
            //Заполнение XML (Заполнение происходит по руководству ФорматОбменаДанными_v1) (
            
            // * - Обязательные для заполнения поля!!!
            
            //Первый тэг. Открыть(
            XML.ЗаписатьНачалоЭлемента("entity");
            XML.ЗаписатьНачалоЭлемента("attributes");
            //***
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","distribId");
            XML.ЗаписатьТекст(Строка(КодДистрибьютора));     //* Код дистрибьютора в системе, из справочника Дистрибьюторы
            XML.ЗаписатьКонецЭлемента();    
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","clientId");  
            XML.ЗаписатьТекст(Строка(Документ.Контрагент.Код));     //* Код клиента
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","pointId");
            XML.ЗаписатьТекст(Строка(Документ.Контрагент.Код));       //* Код Торговой точки
            XML.ЗаписатьКонецЭлемента();
            
            ДатаПродажи = Строка(Формат(Документ.дата,"ДФ=дд.ММ.гггг"));
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","dateApplied");
            //        XML.ЗаписатьТекст(ДатаВыгрузки);                 //* Дата за которую учитываются продажи
            XML.ЗаписатьТекст(ДатаПродажи);                 //* Дата за которую учитываются продажи
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","productId");
            XML.ЗаписатьТекст(Строка(Товар.Артикул));                     //* Код продукции (код продукта у дистрибьютора, если используется мэппинг продуктов)
            XML.ЗаписатьКонецЭлемента();      
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","quantity");      
            XML.ЗаписатьТекст(СтрЗаменить(Количество, Символы.НПП, ""));            //* Количество проданной продукции в штуках
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","weight");
            XML.ЗаписатьТекст(СтрЗаменить(ОбщийВес, Символы.НПП, ""));                            //* Вес продукта в килограммах
            XML.ЗаписатьКонецЭлемента();
            
            
  
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","sumNSV");
            XML.ЗаписатьТекст(СтрЗаменить(СуммаДитрибьютора, Символы.НПП, ""));          //* Общая стоимость продукции в рублях в ценах отгрузки дистрибьютору. Обязательное поле.
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","sumGSV");
            XML.ЗаписатьТекст(СтрЗаменить(Сумма, Символы.НПП, ""));     //* Общая стоимость продукции в рублях в ценах отгрузки в ТТ. Обязательное поле.
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","dateLoad");
            XML.ЗаписатьТекст(ДатаВыгрузки);                    //* Дата выгрузки из учетной системы дистрибьютора  
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","tax");
            XML.ЗаписатьТекст(Строка(НДС));                      //* НДС в процентах
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","rashNum");
            XML.ЗаписатьТекст(Строка(Документ.Номер));           //* Номер расходной накладной  
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","invNum");
            //        XML.ЗаписатьТекст(Строка(СчётФактура.Номер));    //* Номер счета фактуры
            XML.ЗаписатьТекст(Строка(0));    //* Номер счета фактуры
            XML.ЗаписатьКонецЭлемента();        
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","TTNNum");
            XML.ЗаписатьТекст(Строка(ТТН));                   //* Номер товарно-транспортной накладной
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","locId");
            XML.ЗаписатьТекст(Строка(Документ.Склад.Код));           //* Код склада дистрибьютора
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","manId");
            XML.ЗаписатьТекст(Строка(Менеджер.Код));            //* Код сотрудника, осуществившего продажу
            XML.ЗаписатьКонецЭлемента();
            
            XML.ЗаписатьНачалоЭлемента("attribute");
            XML.ЗаписатьАтрибут("name","product");
            XML.ЗаписатьТекст(Строка(Товар));              //* Название продукта в учетной системе дистрибьютора
            XML.ЗаписатьКонецЭлемента();
            //***
            //Первый тэг. Закрыть (
            XML.ЗаписатьКонецЭлемента();
            XML.ЗаписатьКонецЭлемента();
            //Заполнение XML)
        КонецЦикла;
    КонецЦикла;
    //выгружаем список )
    
    Сообщить("Продажи выгружены",СтатусСообщения.Внимание);
    
    XML.ЗаписатьКонецЭлемента();
    XML.ЗаписатьКонецЭлемента();
    //Закрываем xml файл для последующей обработки
    XML.Закрыть();
    
    //создаём zip архив (
    Если СоздатьАрхив = Истина Тогда
        ВыполнитьАрхивирование(ПутьВыгрузкиCправочников,ИмяФайла);    
    КонецЕсли;
    //создаём zip архив )
    
КонецПроцедуры
6 Allexe
 
28.08.13
14:54
Если Документ.Бонус Тогда
СуммаДитрибьютора = "0";
Иначе
  СуммаДитрибьютора = ПересчитатьСумму(Товар,Количество);
КонецЕсли

Так попробуй
7 zzzLEXzzz
 
28.08.13
14:57
(6) Пробовал и в кавычках, тот же результат ((
8 AaNnDdRrEeYy
 
28.08.13
14:58
Это
<attribute name="sumNSV"/>
тоже самое что и
<attribute name="sumNSV">0</attribute>

это одно и тоже
9 AaNnDdRrEeYy
 
28.08.13
15:00
(8)+ потому что все элементы у тебя в файле текстовые. было бы числовое то при чтении ошибка была бы, а так пофиг.
10 zzzLEXzzz
 
28.08.13
15:02
(8) Просто этот фаил выгружается в одну программу дисра. и если в фаиле так <attribute name="sumNSV"/>  а не так <attribute name="sumNSV">0</attribute> то тогда их программа выдаёт ошибку, не корректно заполнены поля., в том то и дело что нужно именно так <attribute name="sumNSV">0</attribute>
11 Allexe
 
28.08.13
15:05
(7) У тебя пропущена буква в слове "Дистрибьютера" проверь свой код
12 zzzLEXzzz
 
28.08.13
15:07
(11) эт не мой код, то что пропущена буква эт не беда, код та работает, просто с условием что делать не знаю
13 zzzLEXzzz
 
28.08.13
15:07
(11) точнее она так во всем коде заведена, с пропущенной буквой
14 Allexe
 
28.08.13
15:08
У тебя пишется в xml переменная СуммаДитрибьютора
условии СуммаДистрибьютера
Если Документ.Бонус = истина  тогда
                СуммаДистрибьютера = 0;
                Иначе
            СуммаДитрибьютора = ПересчитатьСумму(Товар,Количество);
            КонецЕсли;

Исправь

СуммаДистрибьютера = 0; НА СуммаДитрибьютора = 0;
15 Allexe
 
28.08.13
15:08
СуммаДитрибьютора = "0"
16 Нуф-Нуф
 
28.08.13
15:12
реквИзит
17 zzzLEXzzz
 
28.08.13
15:14
(14) вот я балбесина, сейчас попробую, стыдно мне (((
18 Allexe
 
28.08.13
15:15
(17) Ничего страшного. Это все копипаст :)
19 zzzLEXzzz
 
28.08.13
15:28
Всё получилось, всем спасибо огромное за помощь
20 zzzLEXzzz
 
28.08.13
17:04
А если усложнить задачу, это не обязательно, но желательно, вот в РеализацииТОваровИУслуг есть "Категории" и там тоже есть  Бонус, как тогда обратся к этому Бонусу???
21 zzzLEXzzz
 
28.08.13
17:30
(20) Идей нет? или я может просто не понятно поставил вопрос?
22 Allexe
 
28.08.13
19:01
(21) Аналогично сначала тебе надо получить сам документ в (0) у тебя документ получается так:
Документ = Выборка.Док;
А потом сделать аналогичное условие

Какие у тебя там документы в Выборке ХЗН
23 zzzLEXzzz
 
29.08.13
10:20
(22) в вборке документ "РеализацияТоваровИУслуг", вот обратиться к категории этой реалицауии

Если документ.<тут что?>.бонус = истина тогда
24 Allexe
 
29.08.13
17:39
(23) А категория это реквизит самого документа РТиУ или табличной части?
25 zzzLEXzzz
 
29.08.13
17:43
(24) в том то и дело что и не то и не то, обращение идёт к обработки.категорииОбъекта
26 Allexe
 
29.08.13
17:45
(25) Не совсем понял что значит обработки.категорииОбъекта? Это доп категория заданная через Предприятие?
27 zzzLEXzzz
 
29.08.13
17:47
(26) да, по моему в типовой конфикурации УТ она встроена
28 Jaffar
 
29.08.13
17:57
вот мы и подобрались к вопросу о названии и версии конфигурации...
29 Allexe
 
29.08.13
17:57
(27) Понял попозже гляну сейчас немогу. Напиши какая УТ 10 или 11?
30 zzzLEXzzz
 
29.08.13
17:59
(29) "Управление торговлей", редакция 10.3 KP (10.3.8.9)
31 Allexe
 
29.08.13
18:01
ок попозже посмотрю и напишу
32 zzzLEXzzz
 
29.08.13
18:02
(31) спасибо...
33 Allexe
 
29.08.13
21:38
(32) Лучше бы конечно это сразу получать в запросе
в функции

ПолучитьПродажи(Товар);

Но в общем смысл такой:

    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    КатегорииОбъектов.Категория
        |ИЗ
        |    РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов
        |ГДЕ
        |    КатегорииОбъектов.Объект = &Объект
        |    И КатегорииОбъектов.Категория = &Категория";

    Категория = Справочники.КатегорииОбъектов.НайтиПоНаименованию("Бонус");
    Если Категория <> Неопределено Тогда
        Запрос.УстановитьПараметр("Категория", Категория);
        Запрос.УстановитьПараметр("Объект", Документ);
        
        Результат = Запрос.Выполнить();
        
        Если НЕ Результат.Пустой() Тогда
            Сообщить("Категория установлена");
        Иначе
            Сообщить("категоиря не установлена");
        КонецЕсли;
    Иначе
        Сообщить("Не удалось найти категорию бонус");
    КонецЕсли;
34 zzzLEXzzz
 
30.08.13
11:18
(33)Огромное спасибо, всё получилось, кому интересно вот полностью запрос

Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        | КатегорииОбъектов.Категория
        |ИЗ
        | РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов
        |ГДЕ
        | КатегорииОбъектов.Объект = &Объект
        | И КатегорииОбъектов.Категория = &Категория";

        Категория = Справочники.КатегорииОбъектов.НайтиПоНаименованию("Бонус");
        Если Категория <> Неопределено Тогда
        Запрос.УстановитьПараметр("Категория", Категория);
        Запрос.УстановитьПараметр("Объект", Документ);

        Результат = Запрос.Выполнить();

        Если НЕ Результат.Пустой() Тогда
        СуммаДитрибьютора = 0;
        Иначе
        Если Документ.Бонус = истина тогда
        СуммаДитрибьютора = 0;
        Иначе    
        СуммаДитрибьютора = ПересчитатьСумму(Товар,Количество);
        КонецЕсли;
        КонецЕсли;
        Иначе
        Сообщить("Не удалось найти категорию бонус");
        КонецЕсли;