Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Не правильно формирует вес , 1с77 Торговля+Склад 2 страниц V   1 2 >          
inna.innainna84 Подменю пользователя
сообщение 04.11.16, 15:33
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

Отчет создала первый раз с нуля. И застряла на весе товара в таблице во всех секциях поставила Запрос.РасхОстатокТовара/2*Запрос.Вес, где Запрос.Вес должен вытягивать значение из самого справочника товаров(т.е.|Вес = Регистр.ПартииТоваров.Товар.Вес;)
И не получается. Подскажите как решить эту проблему. Второй день с этим ВЕСОМ ковыряюсь
Да еще приходная накладная -это возврат от покупателя может я здесь тоже не туплю.

 Перем КодыОперацийПродажи;  

// ========================================================================
Процедура ДобавитьКонтрагента(Режим=0)
    Перем Фрм, Тек;

    ОткрытьПодбор("Справочник.Контрагенты",,Фрм,Режим,Тек);  
    Фрм.ВыборГруппы(1);
КонецПроцедуры
                
//==========================================================================


Процедура УдалитьКонтрагента(Режим = 0)
    Если Режим = 0 Тогда
        Если МФКонтрагентов.ТекущаяСтрока() <> 0 Тогда
            МФКонтрагентов.УдалитьЗначение(МФКонтрагентов.ТекущаяСтрока());
        КонецЕсли;
    Иначе
        Если Вопрос("Список объектов будет полностью очищен! Продолжить?", "Да+Нет") = "Да" Тогда
            МФКонтрагентов.УдалитьВсе();
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры // Удалить                              


//===================================================================================
Процедура ОбработкаПодбора(Эл,Кон)  


    //==================Для списка клиентов======================
    Если Эл.Вид()="Контрагенты" Тогда  
    Если МФКонтрагентов.Принадлежит(Эл.ТекущийЭлемент()) = 1 Тогда             
        Сообщить("уже присутствует в списке");      
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;  
    МФКонтрагентов.ДобавитьЗначение(Эл.ТекущийЭлемент(), +"Группа "+Эл.ТекущийЭлемент().Наименование);
КонецЕсли;              
КонецПроцедуры  
                

//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
    Перем Запрос, ТекстЗапроса, Таб;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =                  
    
    
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;    
    |ТекДок =           Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.ТекущийДокумент,                  Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.ТекущийДокумент;
    |Покупатель=Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент,
            |Регистр.ПартииТоваров.ТекущийДокумент.ПриходнаяНакладная.Контрагент;      
    |Товар =            Регистр.ПартииТоваров.Товар;
    |Вес =              Регистр.ПартииТоваров.Товар.Вес;
    |Нетто =            Регистр.ПартииТоваров.Товар.Нетто;
    |Сумма =            Регистр.ПартииТоваров.Оборот;
    |Кво=               Регистр.ПартииТоваров.ОстатокТовара;
    |КодОперации=       Регистр.ПартииТоваров.КодОперации;
    |КатегорияТовара =  Регистр.ПартииТоваров.Товар.КатегорияДляГруппировки;  
    |Условие (ПустоеЗначение(Покупатель)=0);
    |Условие (ПустоеЗначение(КатегорияТовара)=0);
    |Условие (Сумма<>0);
    |Условие(КатегорияТовара в ВыбКатегорияТовара);  
    |Условие(Покупатель в ВыбКонтрагентов);
    |Условие(Покупатель в МФКонтрагентов);  
       |Функция СуммаСумма = Сумма(Сумма/2);  
    |Функция РасхОстатокТовара=Расход(Кво);
    |Группировка КатегорияТовара без групп упорядочить по КатегорияТовара.Наименование;
    |Группировка Покупатель без групп упорядочить по Покупатель.Наименование;
    |Группировка Товар без групп упорядочить по Товар.Наименование;
    |Группировка ТекДок;    
    |"//}}ЗАПРОС                      
;
    
    
    // накладываем дополнительный фильтр по контрагентам
    СписокКонтрагентов = СоздатьОбъект("СписокЗначений");  
    
    Если глФильтрПоСправочнику("Контрагенты",0,0,ВыбКатегорияКонтрагентов,0,0,СписокКонтрагентов,ТекстЗапроса,0,0,"Контрагент,,,СписокКонтрагентов,,,,,")=0 Тогда
        Возврат;
    КонецЕсли;
    
    
    
    Если Запрос.Выполнить(ТекстЗапроса)=0 тогда
        Предупреждение("Запрос по Партиям не выполнился!");
        Возврат;
    КонецЕсли;
    
    
    // Подготовка к заполнению выходных форм данными запроса
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
    // посщитаем кол-во клиентов  
    
      
        Пока Запрос.Группировка(1) = 1 Цикл  
            
    
         Таб.ВывестиСекцию("КатегорияТовара");               
                                        
        
        Пока Запрос.Группировка(2) = 1 Цикл    
             Если поконтрагету=1 Тогда  
             
                 Таб.ВывестиСекцию("Контрагент");
             КонецЕсли;
             
             
        Пока Запрос.Группировка(3) = 1 Цикл  
             Если потовару=1 Тогда
             
                 Таб.ВывестиСекцию("Товар");                  
            КонецЕсли;  
             
           Пока Запрос.Группировка(4) = 1 Цикл
             Если ПоДок=1 Тогда        
                 
               
                 Таб.ВывестиСекцию("ТекДок");
             КонецЕсли;    
                     
        КонецЦикла;    
        КонецЦикла;     
        КонецЦикла;        
    КонецЦикла;


    

    // Заполнение полей "Итого"
    Таб.ВывестиСекцию("Итого");
    // Вывод заполненной формы
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Сформировать", "");
КонецПроцедуры
ВыбНачПериода="26.10.16";
ВыбКонПериода="26.10.16";

Sharzem Подменю пользователя
сообщение 04.11.16, 16:25
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

inna.innainna84 @ Сегодня, 15:33 * ,
Странно, при таком раскладе должно время от времени кидать ошибку на "Запрос.РасхОстатокТовара/2*Запрос.Вес"... Нет проверки на равенство 0 Запрос.Вес...
А зачем деление на 2 ?
При таком построении запроса условие должно отработать только в Таб.ВывестиСекцию("Товар"), в других будет 0;
К запросу целая телега претензий. Кроме "Группировка()" не помешает использование "ВНачалоВыборки()", "Когда"...
Оптимизируйте его без явного указания ТекущийДокумент.РасходнаяНакладная или ТекущийДокумент.РасходнаяПриходнаяНакладная - такое на SQL еще более или менее шустро работает, а на DBF - имеем 2-5 сек "висяка" перед обработкой...


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

mister-x Подменю пользователя
сообщение 04.11.16, 16:26
Сообщение #3

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

Що не виходить, "Вес" не витягує?

Сообщение отредактировал mister-x - 04.11.16, 16:27

inna.innainna84 Подменю пользователя
сообщение 04.11.16, 16:32
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

mister-x @ Сегодня, 16:26 * ,
Вес вытягивает, по товарно считает верно, но не правильно суммирует итоговые
Деление на 2 почему то суммы из регистров тянутся задвоенными


Sharzem Подменю пользователя
сообщение 04.11.16, 16:34
Сообщение #5

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

mister-x @ Сегодня, 16:26 * ,
А как Вам такое чудо при всех тех группировках:
Цитата(inna.innainna84 @ 04.11.16, 15:33) *
|Кво=               Регистр.ПартииТоваров.ОстатокТовара;


47067070.gif


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

mister-x Подменю пользователя
сообщение 04.11.16, 16:35
Сообщение #6

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

І у групуванні по документу також "Вес" витягує?

Сообщение отредактировал mister-x - 04.11.16, 16:36

logist Подменю пользователя
сообщение 04.11.16, 16:36
Сообщение #7

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Sharzem, вы бы обратили внимание, что пользователь далек от программирования и старается его освоить.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

mister-x Подменю пользователя
сообщение 04.11.16, 16:43
Сообщение #8

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

inna.innainna84 врахуйте це
Цитата(Sharzem @ 04.11.16, 16:25) *
При таком построении запроса условие должно отработать только в Таб.ВывестиСекцию("Товар"), в других будет 0;

тому так не вірно рахує разом по вазі по іншим групуванням

Sharzem Подменю пользователя
сообщение 04.11.16, 16:46
Сообщение #9

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

Цитата(logist @ 04.11.16, 16:36) *
далек от программирования и старается его освоить

Обещаю, уже стал на тропинку исправления... blush.gif


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

mister-x Подменю пользователя
сообщение 04.11.16, 16:56
Сообщение #10

...
Иконка группы
Модератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 3477
Из: Тернопіль
Спасибо сказали: 1417 раз
Рейтинг: 0

змініть порядок групувань

inna.innainna84 ви запит конструктором "писали"?

inna.innainna84 Подменю пользователя
сообщение 04.11.16, 17:00
Сообщение #11

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

ТекущийДокумент.РасходнаяПриходнаяНакладная убрала теперь вообще итоговые суммы не верны

нет вручную mister-x @ Сегодня, 16:56 * ,

Vofka Подменю пользователя
сообщение 04.11.16, 17:23
Сообщение #12

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(logist @ 04.11.16, 16:36) *
Sharzem, вы бы обратили внимание, что пользователь далек от программирования и старается его освоить.

На мой взгляд это inna.innainna84 было бы не плохо писать в каждой теме либо написать 1 раз в подписи о том, что с программированием у неё плохо, но она старается научиться.

logist Подменю пользователя
сообщение 04.11.16, 17:31
Сообщение #13

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Информация из профиля
Цитата
Уровень знаний 1С: Что такое 1С?

Если там лень раз заполнять при регистрации, что говорить о подписи, или в топике...


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 04.11.16, 17:40
Сообщение #14

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(logist @ 04.11.16, 17:31) *
Если там лень раз заполнять при регистрации, что говорить о подписи, или в топике...

Ну это 100% не проблемы Sharzem

Sharzem Подменю пользователя
сообщение 04.11.16, 17:53
Сообщение #15

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

Цитата(logist @ 04.11.16, 17:31) *
лень раз заполнять при регистрации, что говорить о подписи, или в топике

И данное замечание принял во внимание, сегодня же исправлю.


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

inna.innainna84 Подменю пользователя
сообщение 04.11.16, 18:07
Сообщение #16

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

Я же написала вначале что "Отчет создала первый раз с нуля." Не судите меня строго. Буду стараться исправить отчет. Всем спасибо за замечания.

Sharzem Подменю пользователя
сообщение 05.11.16, 12:32
Сообщение #17

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

logist @ Вчера, 17:31 * ,
Ув, logist, как и обещал выполняю свои обещания исправиться.

Ув. inna.innainna84, итак начнем:

При подготовке отчета, Вы имеете дело с регистром остатков - "ПартииТоваров".
Данный регистр имеет:
1. Измерения: Фирма, Товар, Контрагент (Вы упустили Фирму и Контрагент, а они тоже нужны);
2. Ресурсы: ОстатокТовара;
3. Реквизиты: Оборот;

Соответственно мы должны обратиться к измерениям, ресурсам и реквизитам (дополнительным реквизитам, если тип справочник) задав им переменные:
ТекстПеременных = "
|Период с ВыбНачПериода по ВыбКонПериода;
|Фирма = Регистр.ПартииТоваров.Фирма;
|Товар = Регистр.ПартииТоваров.Товар;
|Контрагент = Регистр.ПартииТоваров.Контрагент;
|ТекДокумент = Регистр.ПартииТоваров.ТекущийДокумент;
|Вес = Регистр.ПартииТоваров.Товар.Вес;
|Категория = Регистр.ПартииТоваров.Товар.КатегорияДляГруппировки;
|Количество = Регистр.ПартииТоваров.ОстатокТовара;
|Оборот = Регистр.ПартииТоваров.Оборот;";

Для получения информации по ресурсам и реквизитам используются функции:
ТекстФункций = "
|Функция КолРасход = Расход(Количество) когда (ТекДокумент.Вид() = ""РасходнаяНакладная"");
|Функция Сумма = Сумма(Оборот) когда (ТекДокумент.Вид() = ""РасходнаяНакладная"");
|Функция ВесРасход = Сумма(Запрос.КолРасход * Вес + Количество - Количество);";

Обратите внимание что в функциях КолРасход и Сумма используется доп условие "Когда". Это для того что бы итоги отбирались только по указанному виду документов. Дело в том что документ Приходная накладная делает движения по приходу, т.е. движений по расход в регистре по данному виду нет. В итоге в функции Сумма у Вас не будет двоиться.
По поводу функции ВесРасход то это один из методов борьбы с фичей 7.7. останавливаться здесь не буду.
Далее задаем группировки:
ТекстГруппировок = "
|Группировка Фирма;
|Группировка Категория без групп;
|Группировка Контрагент без групп;
|Группировка Товар без групп;
|Группировка ТекДокумент;";

И условия:
ТекстУсловий = "
|Условие(Фирма = ВыбФирма);
|Условие(Контрагент в ВыбКонтрагент);
|Условие(Категория в ВыбКатегория);";

В итоге:
ТекстЗапроса = ТекстПеременных+РазделительСтрок+ТекстФункций+РазделительСтрок+ТекстГруппировок+РазделительСтрок+ТекстУсловий;
Сообщить(ТекстЗапроса);
Запрос = СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
    Возврат;
КонецЕсли;
//И в конце уже заполнение выходной таблицы по группировкам 1 - Фирма, 2 - Категория, 3 - Контрагент, 4 - Товар, 5 - ТекДокумент


Если что-то не получиться отпишитесь в теме.

Сообщение отредактировал Vofka - 07.11.16, 9:18


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

Спасибо сказали: inna.innainna84, Vofka,

inna.innainna84 Подменю пользователя
сообщение 06.11.16, 0:41
Сообщение #18

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

Приходная накладная- это приходная (возврат от покупателя) поэтому я применила "Расход(Количество)" к этому док. Я не смогла понять как указать, что это все же возврат, но данные подтягивалась верно со знаком "-" Sharzem @ Сегодня, 12:32 * ,


|Функция ВесРасход = Сумма(Запрос.КолРасход * Вес + Количество - Количество);";
я изменила на |Функция ВесРасход = Сумма(Запрос.КолРасход * Вес + Количество - Количество) когда (ТекДокумент.Вид() = ""РасходнаяНакладная""); Потому как вытягивает все документы(приход,расход,перемещение,списание)Sharzem @ Вчера, 12:32 * ,

inna.innainna84 Подменю пользователя
сообщение 06.11.16, 2:31
Сообщение #19

Завсегдатай
****
Группа: Пользователи
Сообщений: 108
Спасибо сказали: 2 раз
Рейтинг: 0

Все же мне кажется нужно во всех переменых указывать док. расходная накладная, а то по группировке контрагент вытягивает и поставщика
т.е.
|Покупатель=Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент,

inna.innainna84 @ Сегодня, 0:41 * ,

Sharzem Подменю пользователя
сообщение 06.11.16, 18:28
Сообщение #20

Оратор
Иконка группы
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 99.1

inna.innainna84 @ Сегодня, 2:31 * ,
Вы правы, в Измерение "Контрагент" в модуле проведения действительно пишется не покупатель, а поставщик. Кроме того, в измерении Фирма пусто...
А почему бы Вам для этого отчета не воспользоваться регистром "ОборотПродаж" ?

Дело в том что конструкция: Покупатель=Регистр.ПартииТоваров.ТекущийДокумент.РасходнаяНакладная.Контрагент на файловой версии 1 С очень долго будет отрабатывать + сам регистр "ПартииТоваров" тяжелый.
Попробуйте так:

ТекстЗапроса = "
|Период с ВыбНачПериода по ВыбКонПериода;
|Товар = Регистр.ОборотПродаж.Товар;
|Контрагент = Регистр.ОборотПродаж.Контрагент;
|ТекДокумент = Регистр.ОборотПродаж.ТекущийДокумент;
|Фирма = Регистр.ОборотПродаж.ТекущийДокумент.Фирма;
|Вес = Регистр.ОборотПродаж.Товар.Вес;
|Категория = Регистр.ОборотПродаж.Товар.КатегорияДляГруппировки;
|Количество = Регистр.ОборотПродаж.Кво;
|Оборот = Регистр.ОборотПродаж.ПродСтоимость;
|Функция КолРасход = Сумма(Количество);
|Функция Сумма = Сумма(Оборот);
|Функция ВесРасход = Сумма(Запрос.КолРасход * Вес + Количество - Количество);
|Группировка Фирма;
|Группировка Категория без групп;
|Группировка Контрагент без групп;
|Группировка Товар без групп;
|Группировка ТекДокумент;
|Условие(Фирма = ВыбФирма);
|Условие(Контрагент в ВыбКонтрагент);
|Условие(Категория в ВыбКатегория);";

Отработает значительно быстрее и выведет только реализацию и возвраты.

Сообщение отредактировал Sharzem - 06.11.16, 18:30


Signature
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)

Спасибо сказали: inna.innainna84,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


2 страниц V   1 2 >
Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 23.04.24, 20:11
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!