Подскажите что исправить в этом коде что б видеть отрицательные остатки ?
Запрос.УстановитьПараметр("Ссылка",Ссылка);
Результат=Запрос.Выполнить();
ВыборкаНоменклатура=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНоменклатура.Следующий() ЦиклЕсли ВыборкаНоменклатура.КоличествоОстаток < ВыборкаНоменклатура.Количество Тогда//Контроль отрицательных остатков//Отказ=Истина;
Сообщение = Новый СообщениеПользователю;
Нехватка = ВыборкаНоменклатура.Количество-ВыборкаНоменклатура.КоличествоОстаток;
Сообщение.Текст="В документе № " +Номер+ " от " +Дата+ " Не хватает " +Нехватка+ " Единиц материала " +ВыборкаНоменклатура.Материал;
Сообщение.Сообщить();
Иначе//Вычисление себестоимости списываемых партий
КоличествоНадоСписать=ВыборкаНоменклатура.Количество;
ВыборкаДетальныеЗаписи=ВыборкаНоменклатура.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() ЦиклЕсли ВыборкаДетальныеЗаписи.КоличествоОстаток <=
КоличествоНадоСписать Тогда//Списываем всю партию
КоличествоКСписанию=
ВыборкаДетальныеЗаписи.КоличествоОстаток;
СтоимостьКСписанию=ВыборкаДетальныеЗаписи.СтоимостьОстаток;
//Уменьшаем количество к списанию
КоличествоНадоСписать =
КоличествоНадоСписать-
КоличествоКСписанию;
Иначе//Списываем часть партии
КоличествоКСписанию=КоличествоНадоСписать;
Если ВыборкаДетальныеЗаписи.КоличествоОстаток<>0Тогда
СтоимостьКСписанию=ВыборкаДетальныеЗаписи.СтоимостьОстаток/
ВыборкаДетальныеЗаписи.КоличествоОстаток*КоличествоКСписанию;
Иначе
СтоимостьКСписанию=ВыборкаДетальныеЗаписи.СтоимостьОстаток;
КонецЕсли;
//Обнуляем количество к списанию
КоличествоНадоСписать=0;
КонецЕсли;
Подскажите что исправить в этом коде что б видеть отрицательные остатки ?
Запрос.УстановитьПараметр("Ссылка",Ссылка);
Результат=Запрос.Выполнить();
ВыборкаНоменклатура=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНоменклатура.Следующий() Цикл//Если ВыборкаНоменклатура.КоличествоОстаток < ВыборкаНоменклатура.Количество Тогда// // //Контроль отрицательных остатков// //Отказ=Истина;// Сообщение = Новый СообщениеПользователю;// Нехватка = ВыборкаНоменклатура.Количество-ВыборкаНоменклатура.КоличествоОстаток;// Сообщение.Текст="В документе № " +Номер+ " от " +Дата+ " Не хватает " +Нехватка+ " Единиц материала " //+ВыборкаНоменклатура.Материал;// Сообщение.Сообщить();// Иначе//Вычисление себестоимости списываемых партий
КоличествоНадоСписать=ВыборкаНоменклатура.Количество;
ВыборкаДетальныеЗаписи=ВыборкаНоменклатура.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() ЦиклЕсли ВыборкаДетальныеЗаписи.КоличествоОстаток <=
КоличествоНадоСписать Тогда//Списываем всю партию
КоличествоКСписанию=
ВыборкаДетальныеЗаписи.КоличествоОстаток;
СтоимостьКСписанию=ВыборкаДетальныеЗаписи.СтоимостьОстаток;
//Уменьшаем количество к списанию
КоличествоНадоСписать =
КоличествоНадоСписать-
КоличествоКСписанию;
Иначе//Списываем часть партии
КоличествоКСписанию=КоличествоНадоСписать;
Если ВыборкаДетальныеЗаписи.КоличествоОстаток<>0Тогда
СтоимостьКСписанию=ВыборкаДетальныеЗаписи.СтоимостьОстаток/
ВыборкаДетальныеЗаписи.КоличествоОстаток*КоличествоКСписанию;
Иначе
СтоимостьКСписанию=ВыборкаДетальныеЗаписи.СтоимостьОстаток;
КонецЕсли;
//Обнуляем количество к списанию
КоличествоНадоСписать=0;
// КонецЕсли;
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник. ЗиУП
По теме: что не работает, почему не работает? Или гадалок вызывать?
Кнопки нет. Мне нужно по последней списуемойСПИСЫВАЕМОЙ партии получить отрицательный остаток, а он не получается. В лудшемЛУЧШЕМ случае списуетсяСПИСЫВАЕТСЯ вся партия.
какой еще отрицетельный остаток по партии? Нет товара - нет партии.
Хорошо, тогда без партии.
Цитата(Vofka @ 31.01.13, 12:58)
Честно говоря, я до сих пор не пойму, что вам надо
Что нигде нет примера как реализовать метод ФИФО с отрицательными остатками? Что тут непонятного? Вот пример с контролем ОО. Как сделать без контроля?
Движения.ОстаткиНоменклатуры.Очистить();
Движения.ОстаткиНоменклатуры.Записывать = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КалькуляцияСостав.Материал КАК Материал,
| Калькуляция.СкладМатериалов КАК Склад,
| КалькуляцияСостав.Количество КАК Количество
|
|ПОМЕСТИТЬ ТабДок
|ИЗ
| Документ.Калькуляция.Состав КАК КалькуляцияСостав,
| Документ.Калькуляция КАК Калькуляция
|ГДЕ
| КалькуляцияСостав.Ссылка = &Ссылка
| И Калькуляция.Ссылка = &Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
| ЕСТЬNULL(ОстаткиНоменклатурыОстатки.СтоимостьОстаток, 0) КАК СтоимостьОстаток,
| ОстаткиНоменклатурыОстатки.Партия,
| ОстаткиНоменклатурыОстатки.Партия.Дата КАК ПартияДата,
| ТабДок.Материал КАК Материал,
| ТабДок.Количество КАК Количество,
| ТабДок.Склад КАК Склад
|ИЗ
| ТабДок КАК ТабДок
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(
| &Момент,
| (Номенклатура, Склад) В
| (ВЫБРАТЬ
| ТабДок.Материал,
| ТабДок.Склад
| ИЗ
| ТабДок КАК ТабДок)) КАК ОстаткиНоменклатурыОстатки
| ПО ТабДок.Материал = ОстаткиНоменклатурыОстатки.Номенклатура
|
|УПОРЯДОЧИТЬ ПО
| ПартияДата
|ИТОГИ
| СУММА(КоличествоОстаток),
| СУММА(СтоимостьОстаток),
| МАКСИМУМ(Количество)
|ПО
| Материал";
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
Запрос.УстановитьПараметр("Момент",Неопределено);
Иначе
Запрос.УстановитьПараметр("Момент",МоментВремени());
КонецЕсли;
Запрос.УстановитьПараметр("Ссылка",Ссылка);
Результат=Запрос.Выполнить();
ВыборкаНоменклатура=Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНоменклатура.Следующий() ЦиклЕсли ВыборкаНоменклатура.КоличествоОстаток < ВыборкаНоменклатура.Количество Тогда//Контроль отрицательных остатков
Отказ=Истина;
Сообщение = Новый СообщениеПользователю;
Нехватка = ВыборкаНоменклатура.Количество-ВыборкаНоменклатура.КоличествоОстаток;
Сообщение.Текст="В документе № " +Номер+ " от " +Дата+ " Не хватает " +Нехватка+ " Единиц материала " +ВыборкаНоменклатура.Материал;
Сообщение.Сообщить();
Иначе//Вычисление себестоимости списываемых партий
КоличествоНадоСписать=ВыборкаНоменклатура.Количество;
ВыборкаДетальныеЗаписи=ВыборкаНоменклатура.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() ЦиклЕсли ВыборкаДетальныеЗаписи.КоличествоОстаток <=
КоличествоНадоСписать Тогда//Списываем всю партию
КоличествоКСписанию=
ВыборкаДетальныеЗаписи.КоличествоОстаток;
СтоимостьКСписанию=ВыборкаДетальныеЗаписи.СтоимостьОстаток;
//Уменьшаем количество к списанию
КоличествоНадоСписать =
КоличествоНадоСписать-
КоличествоКСписанию;
Иначе//Списываем часть партии
КоличествоКСписанию=КоличествоНадоСписать;
Если ВыборкаДетальныеЗаписи.КоличествоОстаток<>0Тогда
СтоимостьКСписанию=ВыборкаДетальныеЗаписи.СтоимостьОстаток/
ВыборкаДетальныеЗаписи.КоличествоОстаток*КоличествоКСписанию;
Иначе
СтоимостьКСписанию=ВыборкаДетальныеЗаписи.СтоимостьОстаток;
КонецЕсли;
//Обнуляем количество к списанию
КоличествоНадоСписать=0;
КонецЕсли;
Выпилил. Не помогло. Списывается все, что есть на остатке, но в "минус" не уходит. Например, есть на остатке 5 дверных ручек нужно списать 8, 3-должны быть красным в отчете по остаткам регистра. По регистру накопления должно пройти 8 шт. проходит 5.
Ладно, зайду с другой стороны. Что такое партионный учет (как вы понимаете)?
Как на экзамене. Учет материалов где каждой партии(документ поступления) соответствует свое количество и стоимость. Но какое это имеет отношение к теме? Мне казалось, что моя тема для опытных разработчиков ясна и понятна. Я работаю как пользователь в 1с-ке с отрицательными остатками очень давно и считаю, что работать с их запретом невозможно вообще. Поэтому механизмы реализации учета товара должны быть разными. И "отрицательные остатки" в проведении документа это самые основы. Разве не так? Поэтому я и говорю о примерах, которые должны быть в той же литературе.
Как на экзамене. Учет материалов где каждой партии(документ поступления) соответствует свое количество и стоимость. Но какое это имеет отношение к теме? Мне казалось, что моя тема для опытных разработчиков ясна и понятна. Я работаю как пользователь в 1с-ке с отрицательными остатками очень давно и считаю, что работать с их запретом невозможно вообще. Поэтому механизмы реализации учета товара должны быть разными. И "отрицательные остатки" в проведении документа это самые основы. Разве не так? Поэтому я и говорю о примерах, которые должны быть в той же литературе.
По моему в любой типовой конфигурации можно отключить контроль ОО через интерфейс пользователя! В этом случае при проведении в минус каждый раз создается новая пария.
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник. ЗиУП
По моему в любой типовой конфигурации можно отключить контроль ОО через интерфейс пользователя! В этом случае при проведении в минус каждый раз создается новая пария.
Конфигурация не типовая.
Цитата(sava1 @ 31.01.13, 15:15)
После первого конца списка все количество, что осталось списываем с нулевой стоимостью после первого цикла (вложенного)
Живет на форуме
Группа: Местный
Сообщений: 2752
Из: Проскуров
Спасибо сказали: 709 раз
Рейтинг: 688.5
1. Первую проверку убираем (комментируем) 2. Вторая часть сохраняется (в части списания наличных партий) 3. После списания существ. партий остается некоторое количество (КоличествоНадоСписать). Вот его списываем без партии и без стоимости - уходим в минуса по количеству. потом эту ситуацию можно найти анализом регистра или тупым перепроведением расходных документов.
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4613 раз
Рейтинг: 3750.1
Цитата(alex040269 @ 31.01.13, 15:38)
По моему в любой типовой конфигурации можно отключить контроль ОО через интерфейс пользователя! В этом случае при проведении в минус каждый раз создается новая пария.
Отключите контроль остатков в партионном учете в УТ.
Если Вам не помогли предыдущие советы (например alex040269 ), то проблема не в обработке запроса, а в самом запросе. Коль конфигурация писалась с нуля, возможно в запросе уже сделали отбор на отрицательные остатки. Для дальнейшего анализа - запрос в студию!
Сообщение отредактировал TipsyKID - 31.01.13, 16:27
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!