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

Хранилище

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

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



> Убрать контроль отрицательных остатков 2 страниц V   1 2 >          
alexkhua Подменю пользователя
сообщение 31.01.13, 11:30
Сообщение #1

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

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

alex040269 Подменю пользователя
сообщение 31.01.13, 11:37
Сообщение #2

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

наверно так:
Цитата(alexkhua @ 31.01.13, 11:30) *
Подскажите что исправить в этом коде что б видеть отрицательные остатки ?
     Запрос.УстановитьПараметр("Ссылка",Ссылка);
        Результат=Запрос.Выполнить();
            ВыборкаНоменклатура=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            
            Пока ВыборкаНоменклатура.Следующий() Цикл
                
                
                //Если  ВыборкаНоменклатура.КоличествоОстаток < ВыборкаНоменклатура.Количество Тогда
                //    
                //    //Контроль отрицательных остатков
                //    //Отказ=Истина;
                //    Сообщение = Новый СообщениеПользователю;
                //    Нехватка = ВыборкаНоменклатура.Количество-ВыборкаНоменклатура.КоличествоОстаток;
                //    Сообщение.Текст="В документе № "  +Номер+  " от "  +Дата+  " Не хватает "  +Нехватка+ " Единиц материала " //+ВыборкаНоменклатура.Материал;
//                    Сообщение.Сообщить();
//                Иначе
                    //Вычисление себестоимости списываемых партий
                    КоличествоНадоСписать=ВыборкаНоменклатура.Количество;
                    
                    ВыборкаДетальныеЗаписи=ВыборкаНоменклатура.Выбрать();
                    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                        Если ВыборкаДетальныеЗаписи.КоличествоОстаток <=
                                             КоличествоНадоСписать Тогда
                                            
                    //Списываем всю партию
                    
                    КоличествоКСписанию=
                      ВыборкаДетальныеЗаписи.КоличествоОстаток;
                    СтоимостьКСписанию=ВыборкаДетальныеЗаписи.СтоимостьОстаток;
                    //Уменьшаем количество к списанию
                    
                    КоличествоНадоСписать =
                      КоличествоНадоСписать-
                          КоличествоКСписанию;
                          
                      Иначе
                          
                     //Списываем часть партии
                    
                     КоличествоКСписанию=КоличествоНадоСписать;
                    
                    
                     Если ВыборкаДетальныеЗаписи.КоличествоОстаток<>0 Тогда
                        
                СтоимостьКСписанию=ВыборкаДетальныеЗаписи.СтоимостьОстаток/
                       ВыборкаДетальныеЗаписи.КоличествоОстаток*КоличествоКСписанию;
                      
                   Иначе
                       СтоимостьКСписанию=ВыборкаДетальныеЗаписи.СтоимостьОстаток;
                   КонецЕсли;
                  
                   //Обнуляем количество к списанию
                  
                   КоличествоНадоСписать=0;
                  
              // КонецЕсли;



Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

alexkhua Подменю пользователя
сообщение 31.01.13, 11:52
Сообщение #3

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

Цитата(alex040269 @ 31.01.13, 11:37) *
наверно так:


Не работает. Я уже уйму вариантов перепробовал. И примеров нигде нет why.gif . Только на контроль ОО.

Vofka Подменю пользователя
сообщение 31.01.13, 11:55
Сообщение #4

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

Кнопки "выкл" нигде нету?

По теме: что не работает, почему не работает? Или гадалок вызывать?

alexkhua Подменю пользователя
сообщение 31.01.13, 12:54
Сообщение #5

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

Цитата(Vofka @ 31.01.13, 11:55) *
Кнопки "выкл" нигде нету?

По теме: что не работает, почему не работает? Или гадалок вызывать?

Кнопки нет. Мне нужно по последней списуемойСПИСЫВАЕМОЙ партии получить отрицательный остаток, а он не получается. В лудшемЛУЧШЕМ случае списуетсяСПИСЫВАЕТСЯ вся партия.


 ! 

Правила, п.24
 


Сообщение отредактировал logist - 31.01.13, 13:02

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

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

Честно говоря, я до сих пор не пойму, что вам надо bn.gif

reneval Подменю пользователя
сообщение 31.01.13, 13:18
Сообщение #7

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 144
Спасибо сказали: 55 раз
Рейтинг: 0

какой еще отрицетельный остаток по партии? Нет товара - нет партии.

alexkhua Подменю пользователя
сообщение 31.01.13, 13:56
Сообщение #8

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

Цитата(reneval @ 31.01.13, 13:18) *
какой еще отрицетельный остаток по партии? Нет товара - нет партии.

Хорошо, тогда без партии.

Цитата(Vofka @ 31.01.13, 12:58) *
Честно говоря, я до сих пор не пойму, что вам надо bn.gif

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

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

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

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

Цитата(alexkhua @ 31.01.13, 13:56) *
Как сделать без контроля?

Выпилить контроль из того места где он есть.

Цитата(alexkhua @ 31.01.13, 13:56) *
Что нигде нет примера как реализовать метод ФИФО с отрицательными остатками? Что тут непонятного?

Непонятно откуда у людей такие мысли берутся. faceoff.gif

alexkhua Подменю пользователя
сообщение 31.01.13, 14:22
Сообщение #10

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

Цитата(Vofka @ 31.01.13, 14:09) *
Выпилить контроль из того места где он есть.


Непонятно откуда у людей такие мысли берутся. faceoff.gif

Выпилил. Не помогло. Списывается все, что есть на остатке, но в "минус" не уходит. Например, есть на остатке 5 дверных ручек нужно списать 8, 3-должны быть красным в отчете по остаткам регистра. По регистру накопления должно пройти 8 шт. проходит 5.

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

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

Ладно, зайду с другой стороны. Что такое партионный учет (как вы понимаете)?

alexkhua Подменю пользователя
сообщение 31.01.13, 15:00
Сообщение #12

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

Цитата(Vofka @ 31.01.13, 14:30) *
Ладно, зайду с другой стороны. Что такое партионный учет (как вы понимаете)?

Как на экзамене. Учет материалов где каждой партии(документ поступления) соответствует свое количество и стоимость. Но какое это имеет отношение к теме? Мне казалось, что моя тема для опытных разработчиков ясна и понятна. Я работаю как пользователь в 1с-ке с отрицательными остатками очень давно и считаю, что работать с их запретом невозможно вообще. Поэтому механизмы реализации учета товара должны быть разными. И "отрицательные остатки" в проведении документа это самые основы. Разве не так? Поэтому я и говорю о примерах, которые должны быть в той же литературе.

Vofka Подменю пользователя
сообщение 31.01.13, 15:11
Сообщение #13

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

Цитата(alexkhua @ 31.01.13, 15:00) *
Как на экзамене.

Ну так у нас же все серьёзно.

Цитата(alexkhua @ 31.01.13, 15:00) *
Учет материалов где каждой партии(документ поступления) соответствует свое количество и стоимость.

Вот. Вопрос: как можно списать в минус стоимость, которая не известна?

sava1 Подменю пользователя
сообщение 31.01.13, 15:15
Сообщение #14

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

Цитата(alexkhua @ 31.01.13, 13:56) *
Если  ВыборкаНоменклатура.КоличествоОстаток < ВыборкаНоменклатура.Количество Тогда
                    
                    //Контроль отрицательных остатков
                    Отказ=Истина;
                    Сообщение = Новый СообщениеПользователю;
                    Нехватка = ВыборкаНоменклатура.Количество-ВыборкаНоменклатура.КоличествоОстаток;
                    Сообщение.Текст="В документе № "  +Номер+  " от "  +Дата+  " Не хватает "  +Нехватка+ " Единиц материала " +ВыборкаНоменклатура.Материал;
                    Сообщение.Сообщить();
                    
                    
                    
                Иначе


все комментируем.
После первого конца списка все количество, что осталось списываем с нулевой стоимостью

Цитата(sava1 @ 31.01.13, 15:12) *
После первого конца списка

после первого цикла (вложенного)

Цитата(Vofka @ 31.01.13, 15:11) *
Вопрос: как можно списать в минус стоимость, которая не известна?

Элементарно. А закрыть минуса обработкой в конце месяца

alex040269 Подменю пользователя
сообщение 31.01.13, 15:38
Сообщение #15

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(alexkhua @ 31.01.13, 15:00) *
Как на экзамене. Учет материалов где каждой партии(документ поступления) соответствует свое количество и стоимость. Но какое это имеет отношение к теме? Мне казалось, что моя тема для опытных разработчиков ясна и понятна. Я работаю как пользователь в 1с-ке с отрицательными остатками очень давно и считаю, что работать с их запретом невозможно вообще. Поэтому механизмы реализации учета товара должны быть разными. И "отрицательные остатки" в проведении документа это самые основы. Разве не так? Поэтому я и говорю о примерах, которые должны быть в той же литературе.

По моему в любой типовой конфигурации можно отключить контроль ОО через интерфейс пользователя! В этом случае при проведении в минус каждый раз создается новая пария.


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

alexkhua Подменю пользователя
сообщение 31.01.13, 15:52
Сообщение #16

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

Цитата(alex040269 @ 31.01.13, 15:38) *
По моему в любой типовой конфигурации можно отключить контроль ОО через интерфейс пользователя! В этом случае при проведении в минус каждый раз создается новая пария.

Конфигурация не типовая.

Цитата(sava1 @ 31.01.13, 15:15) *
После первого конца списка все количество, что осталось списываем с нулевой стоимостью
после первого цикла (вложенного)

Вы не могли бы поподробнее.

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

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

1. Первую проверку убираем (комментируем)
2. Вторая часть сохраняется (в части списания наличных партий)
3. После списания существ. партий остается некоторое количество (КоличествоНадоСписать). Вот его списываем без партии и без стоимости - уходим в минуса по количеству. потом эту ситуацию можно найти анализом регистра или тупым перепроведением расходных документов.

Спасибо сказали: alexkhua,

Vofka Подменю пользователя
сообщение 31.01.13, 16:02
Сообщение #18

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

Цитата(alex040269 @ 31.01.13, 15:38) *
По моему в любой типовой конфигурации можно отключить контроль ОО через интерфейс пользователя! В этом случае при проведении в минус каждый раз создается новая пария.

Отключите контроль остатков в партионном учете в УТ.

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

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

УПП - дополнительные права - разрешить превышение остатка....

TipsyKID Подменю пользователя
сообщение 31.01.13, 16:27
Сообщение #20

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

alexkhua

Если Вам не помогли предыдущие советы (например alex040269 ), то проблема не в обработке запроса, а в самом запросе.
Коль конфигурация писалась с нуля, возможно в запросе уже сделали отбор на отрицательные остатки.
Для дальнейшего анализа - запрос в студию!

Сообщение отредактировал TipsyKID - 31.01.13, 16:27


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

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


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

 

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