|
v7: Сделать запрос на дату и время документа | ☑ | ||
---|---|---|---|---|
0
Double_Medved
20.01.14
✎
11:16
|
Добрый день! Простите если вопрос тупой, надо получать остатки товара при открытии документа и выделении строки, на дату и время этого документа. На момент до его проведения. Например в 10.00 было 10 шт. Потом в 12.00 Была реализация N1 на 3 шт. Потом в 15.00 была Реализация N2 на 4 шт. Надо чтобы при открытии Реализации N1 в ней показывалось "В наличии 10 шт", а в Реализации N2 "В наличии 7 шт". Потом например создают в 20.00 Реализацию N3, и пока документ новый, не записан, делают подбор - и там должно отображаться "В наличии 3шт"
Собстенно подскажите пожалуйста, как делать запрос на дату и время конкретного документа, а не на "11.12.2013"? Период с Док.ТекущийДокумент() по Док.ТекущийДокумент()? И как тогда быть с Реализацией в 20.00, которая еще не записана? |
|||
1
КонецЦикла
20.01.14
✎
11:18
|
Не надо запрос, смотри ТиС
Если Выбран() = 0 Тогда // новый документ Если ДатаДок < ПолучитьДатуТА() Тогда // выписываемый задним числом РегЗаявки.ВременныйРасчет(); РегОстатки.ВременныйРасчет(ЗаполнятьСУчетомОстатков); РегРезервы.ВременныйРасчет(ЗаполнятьСУчетомРезервов); РегОбщ.РассчитатьРегистрыПо(ДатаДок); КонецЕсли; Иначе // сохраненный документ Если СравнитьТА() < 1 Тогда // позиция не больше ТА РегЗаявки.ВременныйРасчет(); РегОстатки.ВременныйРасчет(ЗаполнятьСУчетомОстатков); РегРезервы.ВременныйРасчет(ЗаполнятьСУчетомРезервов); РегОбщ.РассчитатьРегистрыНа(ТекущийДокумент()); КонецЕсли; КонецЕсли; |
|||
2
Double_Medved
20.01.14
✎
11:23
|
(1) Спасибо, а если у меня новый документ и его дата больше ТА? Например первый документ в понедельник - на момент его создания ТА будет на пятницу, тогда мне что сделать? рассчитать на ТА?
|
|||
3
Double_Medved
20.01.14
✎
12:09
|
Я сделал вот такую штуку, работает, но отрабатывает долго, вот хочу запросом переделать, подскажите, как сделать запрос на дату и время документа?
Функция Резервы() ИнфоТекст = ""; //Строка для вывода результата Рег = СоздатьОбъект("Регистры"); РегРезервы = Рег.РезервыТМЦ; РегРезервы.ВременныйРасчет(1); Рег.Актуальность(1); Если Выбран() = 0 Тогда // новый документ Если ДатаДок <= ПолучитьДатуТА() Тогда // выписываемый задним числом Рег.РассчитатьРегистрыПо(ДатаДок); //Рассчитаем на заднее число Иначе //если новый документ, новое число, больше ТА Рег.РассчитатьРегистрыПо(ПолучитьДокументТА()); //Рассчитаем на точку актуальности КонецЕсли; Иначе //Если открыли старый документ Если ДатаДок <= ПолучитьДатуТА() Тогда // выписываемый задним числом Рег.РассчитатьРегистрыНа(ТекущийДокумент()); //Рассчитаем на заднее число Иначе //если новый документ, новое число, больше ТА Рег.РассчитатьРегистрыПо(ПолучитьДокументТА()); //Рассчитаем на точку актуальности КонецЕсли; КонецЕсли; //если это новый документ //Переберем все склады и посмотрим на них резервы Склады = СоздатьОбъект("Справочник.Склады"); Склады.ВыбратьЭлементы(); Пока Склады.ПолучитьЭлемент() = 1 Цикл РезервПоСкладу = РегРезервы.СводныйОстаток(,Номенклатура,Склады.ТекущийЭлемент(),,,"Количество"); Если РезервПоСкладу <> 0 Тогда ИнфоТекст = ИнфоТекст + Склады.ТекущийЭлемент()+ ": " + РезервПоСкладу + " шт, "; КонецЕсли; КонецЦикла; //Уберем последнюю запятую ДлинаИнфоТекст = СтрДлина(ИнфоТекст); ИнфоТекст = Лев(ИнфоТекст,ДлинаИнфоТекст-2); Если ИнфоТекст = "" Тогда ИнфоТекст = "нет"; КонецЕсли; Если (Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга) или (Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Работа) Тогда ИнфоТекст = ""; КонецЕсли; Возврат ИнфоТекст; КонецФункции |
|||
4
КонецЦикла
20.01.14
✎
12:13
|
Неправильно
Временный расчет нужен если не на ТА документ, см. как в (1) Кроме того, наверное, надо какой-то фильтр наложить? Или вся номенклатура нужна и проч.? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |