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

Хранилище

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

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



> Списание по партиям по системе фифо          
burza Подменю пользователя
сообщение 13.08.20, 19:48
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

Вот код дле фифо списания партий, тольк вот ошибка, где не так?{ВнешняяОбработка.КонсольЗапросов_82.МодульОбъекта(55)}: Ошибка при вызове метода контекста (ВыполнитьПакет): {(42, 4)}: Таблица не найдена "ТоварыНаСкладе"
<<?>>ТоварыНаСкладе КАК ТоварыНаСкладе

ВЫБРАТЬ
    РасходТовары.Товар КАК Товар,
    СУММА(РасходТовары.Количество) КАК Количество
ПОМЕСТИТЬ ТоварыВсе
ИЗ
    Документ.СписаниеТоваров.Товары КАК РасходТовары
ГДЕ
    РасходТовары.Ссылка = &Расход

СГРУППИРОВАТЬ ПО
    РасходТовары.Товар
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыВсе.Товар КАК Товар,
    ТоварыВсе.Количество КАК Количество
ПОМЕСТИТЬ Товары
ИЗ
    ТоварыВсе КАК ТоварыВсе
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ТоварыНаСкладе.Товар КАК Товар,
            СУММА(ТоварыНаСкладе.Остаток) КАК ОстатокОбщий
        ИЗ
            ТоварыНаСкладе КАК ТоварыНаСкладе
        
        СГРУППИРОВАТЬ ПО
            ТоварыНаСкладе.Товар) КАК П
        ПО (П.Товар = ТоварыВсе.Товар)
            И (П.ОстатокОбщий >= ТоварыВсе.Количество)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Товары.Товар КАК Товар,
    ВТ1.Партия КАК Партия,
    ВТ1.Остаток КАК Остаток,
    СУММА(ВТ2.Остаток) КАК ОстатокИтог,
    СУММА(ВТ2.Остаток) - ВТ1.Остаток КАК ПредыдущийОстаток,
    ВЫБОР
        КОГДА СУММА(ВТ2.Остаток) - ВТ1.Остаток = 0
            ТОГДА ВЫБОР
                    КОГДА Товары.Количество < ВТ1.Остаток
                        ТОГДА Товары.Количество
                    ИНАЧЕ ВТ1.Остаток
                КОНЕЦ
        ИНАЧЕ ВЫБОР
                КОГДА Товары.Количество - ВЫБОР
                        КОГДА Товары.Количество < СУММА(ВТ2.Остаток) - ВТ1.Остаток
                            ТОГДА Товары.Количество
                        ИНАЧЕ СУММА(ВТ2.Остаток) - ВТ1.Остаток
                    КОНЕЦ < ВТ1.Остаток
                    ТОГДА Товары.Количество - ВЫБОР
                            КОГДА Товары.Количество < СУММА(ВТ2.Остаток) - ВТ1.Остаток
                                ТОГДА Товары.Количество
                            ИНАЧЕ СУММА(ВТ2.Остаток) - ВТ1.Остаток
                        КОНЕЦ
                ИНАЧЕ ВТ1.Остаток
            КОНЕЦ
    КОНЕЦ КАК Списать
ИЗ
    Товары КАК Товары
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТоварыНаСкладе КАК ВТ1
        ПО Товары.Товар = ВТ1.Товар
        ЛЕВОЕ СОЕДИНЕНИЕ ТоварыНаСкладе КАК ВТ2
        ПО (ВТ1.Товар = ВТ2.Товар)
            И (ВТ1.МоментВремени >= ВТ2.МоментВремени)

СГРУППИРОВАТЬ ПО
    Товары.Товар,
    ВТ1.Партия,
    ВТ1.МоментВремени,
    ВТ1.Остаток,
    Товары.Количество

ИМЕЮЩИЕ
    Товары.Количество > СУММА(ВТ2.Остаток) - ВТ1.Остаток

УПОРЯДОЧИТЬ ПО
    ВТ1.МоментВремени


Сообщение отредактировал Vofka - 25.08.20, 8:29

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

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Обычно ТоварыНаСкладАХ

burza Подменю пользователя
сообщение 14.08.20, 6:42
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

sava1 @ Вчера, 22:16 * ,
это все?

sava1 Подменю пользователя
сообщение 14.08.20, 8:04
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

burza @ Сегодня, 7:42 * ,
Обычно выборка из регистра ТоварыНаСкладах

У Вас идет выборк из временной таблицы ТоварыНаСкладе - ее самой нет в наличии

Petre Подменю пользователя
сообщение 14.08.20, 8:10
Сообщение #5

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Разве текст ошибки не очевиден?


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

burza Подменю пользователя
сообщение 14.08.20, 8:16
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

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

    Движения.ТоварыНаСкладе.Записывать = Истина;


    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РасходнаяТовары.Товар КАК Товар,
        |    ОстаткиТоваровОстатки.Партия КАК Партия,
        |    СУММА(ЕСТЬNULL(ОстаткиТоваровОстатки.КоличествоОстаток, 0)) КАК КоличествоОстаток,
        |    МАКСИМУМ(ЕСТЬNULL(ОстаткиТоваровОстатки.СтоимостьОстаток, 0)) КАК СтоимостьОстаток,
        |    РасходнаяТовары.Количество КАК Количество
        |ИЗ
        |    Документ.СписаниеТоваров.Товары КАК РасходнаяТовары
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладе.Остатки(, ) КАК ОстаткиТоваровОстатки
        |        ПО РасходнаяТовары.Товар = ОстаткиТоваровОстатки.Товар
        |ГДЕ
        |    РасходнаяТовары.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    ОстаткиТоваровОстатки.Партия,
        |    РасходнаяТовары.Товар,
        |    РасходнаяТовары.Количество
        |
        |УПОРЯДОЧИТЬ ПО
        |    Партия";

    Запрос.УстановитьПараметр("Ссылка", Ссылка);

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

ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

    Пока ВыборкаНоменклатура.Следующий() Цикл
    
        
                
        Если ВыборкаНоменклатура.Количество > ВыборкаНоменклатура.КоличествоОстаток Тогда
            
            
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Не хватает товара " + ВыборкаНоменклатура.Номенклатура  + " из требуемых " +
        ВыборкаНоменклатура.Количество + " на складе осталось " + ВыборкаНоменклатура.КоличествоОстаток;
                Сообщение.Сообщить();    
         Отказ = Истина;
         КонецЕсли;

        
          НеобходимоСписать = ВыборкаНоменклатура.Количество;
          
          ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();

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

                                
                
            КонецЦикла;
            
            
        КонецЦикла;

sava1 Подменю пользователя
сообщение 14.08.20, 8:24
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

Заходим в отладчик и смотрим в чем проблема.

burza Подменю пользователя
сообщение 14.08.20, 8:30
Сообщение #8

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

sava1 @ Сегодня, 9:24 * ,
отладчик доходит до этого Пока ВыборкаДетальныеЗаписи.Следующий() И НеобходимоСписать > 0 Цикл

ставлю след строку останова и нифига,документ спокойно себе проводиться.

не хочет в этом цыкле создавать,выношу его из эттго пишет.

sava1 Подменю пользователя
сообщение 14.08.20, 8:45
Сообщение #9

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

а Итоги где ?

burza Подменю пользователя
сообщение 14.08.20, 9:17
Сообщение #10

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

сделал) спасибо


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


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

 

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