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

Хранилище

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

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



> Условия Списания Партии          
Астахов Подменю пользователя
сообщение 05.03.15, 22:21
Сообщение #1

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

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

Знаю что можно применить стрЗаменить но не получаеться реализовать
Если Константы.МетодСписанияПартий.Получить() = Перечисления.ПеречислениеСписанияПартий.ЛИФО Тогда
  СтрЗаменить(Запрос.Текст, "Остатки.Партия.Ссылка УБЫВ", "Остатки.Партия.Ссылка ВОЗР");
Кто может подсказать?
КонецЕсли;


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

TipsyKID Подменю пользователя
сообщение 06.03.15, 14:03
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

Если честно, очень странный запрос. ( проанализировал его только из - за скуки smile.gif )
Тянется первая строка
(МИНИМУМ(РасходнаяНакладнаяРасход.НомерСтроки) КАК НомерСтроки)

при группировке по Товару, что это даст в результате ?

Если идет выборка из Временной таблицы, следует индексировать Поле по которому будет поиск. ( в Вашем случае это ТМЦ ) ( грубая ошибка )

Левое соединение, тут спорно, не знаю точно оптимизирует ли 1С такие соединения, но в чистом виде вот, что вы просите :
(Пусть у нас есть 5 менклатур и 10 партий на каждый товар )
итого 5 товаров соединяем с таблицей по партиям итого 5*(5*10) = 250 строк, после этого соединяем по ТМЦ таблицу из 5 строк ( ОстаткиСКЛ , т.к. мы её берем без партий) итого 250 *5 = 1250 сравнений ( по ТМЦ )
Если бы вы изменили порядок, сначало склеили временну с ОстаткиСКЛ было бы 5 строк (фактически временная таблица с одной колонкой "ОстатокНаСкладе") и только после этого объдинить с остатками по партиям 5 * (5*10) = 250 сравнений ( по ТМЦ ).

Да и логика смешивания данных остатков с конкретного склада
        
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТМЦ.Остатки(
                   |                ,
                   |                Склад = &Склад
                   |                    И ТМЦ В
                   |                        (ВЫБРАТЬ
                   |                            ДокТЧ.ТМЦ
                   |                        ИЗ
                   |                            ДокТЧ КАК ДокТЧ)) КАК ОстаткиСКЛ

с партиями с любого склада :
          
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТМЦ.Остатки(
                   |                &МоментВремени,
                   |                ТМЦ В
                   |                    (ВЫБРАТЬ
                   |                        ДокТЧ.ТМЦ
                   |                    ИЗ
                   |                        ДокТЧ КАК ДокТЧ)) КАК Остатки
                   |        ПО ДокТЧ.ТМЦ = Остатки.ТМЦ


очень странно, очень...
Вы меня аж заинтриговали


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

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


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

 

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