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

Хранилище

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

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



История благодарностей участнику Bon Jovi ::: Спасибо сказали: 2 раз
Дата поста: В теме: За сообщение: Спасибо сказали:
17.06.20, 9:02 Оприходование товара на основании документа Возврат от покупателей
Мой решение:
Процедура КнопкаВыполнитьНажатие(Кнопка)
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВозвратТоваровОтПокупателяТовары.Номенклатура КАК Номенклатура,
    |    ВозвратТоваровОтПокупателяТовары.ДокументПартии КАК Реализация,
    |    ВозвратТоваровОтПокупателяТовары.ЕдиницаИзмерения КАК ЕдиницаИзмерения
    |ПОМЕСТИТЬ ЗапросПоВозврату
    |ИЗ
    |    Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары
    |ГДЕ
    |    ВозвратТоваровОтПокупателяТовары.Ссылка = &ДокументВозврата
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ЗапросПоВозврату.Номенклатура КАК Номенклатура,
    |    ПартииТоваровНаСкладах.Количество КАК Количество,
    |    ЗапросПоВозврату.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    |    ПартииТоваровНаСкладах.Стоимость КАК Стоимость,
    |    ПартииТоваровНаСкладах.Склад КАК Склад
    |ИЗ
    |    ЗапросПоВозврату КАК ЗапросПоВозврату
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
    |        ПО ЗапросПоВозврату.Номенклатура = ПартииТоваровНаСкладах.Номенклатура
    |            И ЗапросПоВозврату.Реализация = ПартииТоваровНаСкладах.Регистратор
    |
    |УПОРЯДОЧИТЬ ПО
    |    Номенклатура,
    |    ПартииТоваровНаСкладах.ДокументОприходования УБЫВ
    |АВТОУПОРЯДОЧИВАНИЕ";
    
    Запрос.УстановитьПараметр("ДокументВозврата", ДокументВозврата);
    
    ВыборкаВыгрузка = Запрос.Выполнить().Выгрузить();          
    
    НовыйДокумент = Документы.ОприходованиеТоваров.СоздатьДокумент();
    
    Для каждого СтрокаДокументаВозврата Из ДокументВозврата.Товары Цикл
        
        Массив = ВыборкаВыгрузка.НайтиСтроки(Новый Структура("Номенклатура", СтрокаДокументаВозврата.Номенклатура));
        НеобходимоеКоличество = СтрокаДокументаВозврата.Количество;
        
        Для каждого СтрокаМассива Из Массив Цикл
            
            ТабличнаяЧасть = НовыйДокумент.Товары.Добавить();
            ТабличнаяЧасть.Номенклатура             = СтрокаМассива.Номенклатура;
            ТабличнаяЧасть.ЕдиницаИзмерения    = СтрокаМассива.ЕдиницаИзмерения;
            ТабличнаяЧасть.Коэффициент            = 1;                              
            
            Если НеобходимоеКоличество > СтрокаМассива.Количество Тогда
                НеобходимоеКоличество = НеобходимоеКоличество - СтрокаМассива.Количество;
                ТабличнаяЧасть.Количество         = СтрокаМассива.Количество;
                ТабличнаяЧасть.Цена                     = СтрокаМассива.Стоимость / СтрокаМассива.Количество;
                ТабличнаяЧасть.Сумма                 = СтрокаМассива.Стоимость;
            Иначе                  
                ТабличнаяЧасть.Количество         = НеобходимоеКоличество;
                ТабличнаяЧасть.Цена                     = СтрокаМассива.Стоимость / СтрокаМассива.Количество;
                ТабличнаяЧасть.Сумма                = ТабличнаяЧасть.Количество * ТабличнаяЧасть.Цена;
                НеобходимоеКоличество = 0;
                Прервать;
            КонецЕсли;
            
        КонецЦикла;        
        
    КонецЦикла;
    
    НовыйДокумент.Товары.Свернуть("Номенклатура, ЕдиницаИзмерения, Коэффициент, Цена, Сумма, Качество", "Количество");    
    НовыйДокумент.Дата                                            = ТекущаяДата();
    НовыйДокумент.Склад                                            = СтрокаДокументаВозврата.Склад;
    НовыйДокумент.ОтражатьВУправленческомУчете     = Истина;
    НовыйДокумент.Организация                                 = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ОсновнаяОрганизация");    
    НовыйДокумент.Записать();
    
КонецПроцедуры
Vofka,
25.05.20, 15:52 Реализация = Возврат (нулевой оборот при наличии продаж)
Нашёл решение. Готовый запрос:
ВЫБРАТЬ
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
ПОМЕСТИТЬ ЗапросПоНоменклатуре
ИЗ
    РегистрНакопления.Продажи.Обороты(&Дата_Начала, &Дата_Окончания, Регистратор, ) КАК ПродажиОбороты

СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Номенклатура

ИМЕЮЩИЕ
    СУММА(ПродажиОбороты.КоличествоОборот) = 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПродажиОбороты.Регистратор КАК Регистратор
ПОМЕСТИТЬ ЗапросПоВозвратам
ИЗ
    ЗапросПоНоменклатуре КАК ВТ
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(&Дата_Начала, &Дата_Окончания, Регистратор, ) КАК ПродажиОбороты
        ПО ВТ.Номенклатура = ПродажиОбороты.Номенклатура
ГДЕ
    ПродажиОбороты.КоличествоОборот < 0

СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Регистратор
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВозвратТоваровОтПокупателяТовары.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ВозвратыЗаДату
ИЗ
    Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары
ГДЕ
    ВозвратТоваровОтПокупателяТовары.Ссылка В
            (ВЫБРАТЬ
                ЗапросПоВозвратам.Регистратор КАК Регистратор
            ИЗ
                ЗапросПоВозвратам КАК ЗапросПоВозвратам)
    И НАЧАЛОПЕРИОДА(ВозвратТоваровОтПокупателяТовары.Ссылка.Дата, ДЕНЬ) = &ДатаВозврата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВозвратТоваровОтПокупателяТовары.Номенклатура КАК Номенклатура,
    ЗначенияСвойствОбъектов.Значение КАК TOPGP
ПОМЕСТИТЬ ТЗНоменклатуры
ИЗ
    Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
        ПО ВозвратТоваровОтПокупателяТовары.Номенклатура = ЗначенияСвойствОбъектов.Объект
ГДЕ
    ВозвратТоваровОтПокупателяТовары.Ссылка В
            (ВЫБРАТЬ
                ЗапросПоВозвратам.Регистратор КАК Регистратор
            ИЗ
                ЗапросПоВозвратам КАК ЗапросПоВозвратам)
    И ЗначенияСвойствОбъектов.Свойство.Код = "000000467"

СГРУППИРОВАТЬ ПО
    ВозвратТоваровОтПокупателяТовары.Номенклатура,
    ЗначенияСвойствОбъектов.Значение

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(ВозвратТоваровОтПокупателяТовары.Ссылка) >= ВЫБОР
        КОГДА &КоличествоВозвратов = 0
            ТОГДА 3
        ИНАЧЕ &КоличествоВозвратов
    КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВозвратТоваровОтПокупателяТовары.Номенклатура КАК Номенклатура,
    ВозвратТоваровОтПокупателяТовары.ДокументПартии КАК Реализация,
    ВозвратТоваровОтПокупателяТовары.Ссылка КАК Возврат,
    ВозвратТоваровОтПокупателяТовары.Склад КАК Склад
ПОМЕСТИТЬ ПоследниеВозвраты
ИЗ
    ВозвратыЗаДату КАК ВозвратыЗаДату
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары
        ПО ВозвратыЗаДату.Номенклатура = ВозвратТоваровОтПокупателяТовары.Номенклатура
ГДЕ
    ВозвратТоваровОтПокупателяТовары.Ссылка В
            (ВЫБРАТЬ
                ЗапросПоВозвратам.Регистратор КАК Регистратор
            ИЗ
                ЗапросПоВозвратам КАК ЗапросПоВозвратам)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПоследниеВозвраты.Номенклатура КАК Номенклатура,
    ТЗНоменклатуры.TOPGP КАК TOPGP,
    ПоследниеВозвраты.Реализация КАК Реализация,
    ПоследниеВозвраты.Возврат КАК Возврат,
    ПоследниеВозвраты.Склад КАК Склад
ИЗ
    ТЗНоменклатуры КАК ТЗНоменклатуры
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоследниеВозвраты КАК ПоследниеВозвраты
        ПО ТЗНоменклатуры.Номенклатура = ПоследниеВозвраты.Номенклатура

УПОРЯДОЧИТЬ ПО
    Реализация УБЫВ,
    Номенклатура
ИТОГИ
    КОЛИЧЕСТВО(Реализация),
    КОЛИЧЕСТВО(Возврат)
ПО
    Номенклатура
АВТОУПОРЯДОЧИВАНИЕ
Vofka,

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