|
v7: Запрос | ☑ | ||
---|---|---|---|---|
0
Renat11111
15.12.11
✎
10:55
|
С семеркой почти не работал.
в обработке проведения документа возврата от покупателя написал запрос ТекстЗапроса = " |ОбрабатыватьДокументы все; |Номенклатура = Документ.ВозвратОтПокупателя.Номенклатура; |Количество = Документ.ВозвратОтПокупателя.Количество; |ДокРеализации = Документ.ВозвратОтПокупателя.ТекущийДокумент.ДокОснование; |Функция КоличествоСумма = Сумма(Количество); |Группировка Номенклатура без групп; |Условие(ДокРеализации = ДокОснование); Он в момент первого проведения не учитывает текущий документ. Во втором да все нормально... как то странно это после 8ки как бороться? |
|||
1
1Сергей
15.12.11
✎
10:56
|
период добавь
|
|||
2
Ёпрст
15.12.11
✎
10:57
|
(0) заместо этого, достаточно написать
ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл Сообщить(Номенклатура); КонецЦикла; |
|||
3
Renat11111
15.12.11
✎
10:59
|
(1) подробнее
(2) не достаточно мне нужны все возвраты с одним док основанием |
|||
4
Renat11111
15.12.11
✎
11:00
|
Если ДокОснование.Выбран() = 1 Тогда
ЕстьОшибка = 0; Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Номенклатура = Документ.Реализация.Номенклатура; |Количество = Документ.Реализация.Количество; |ТекущийДокумент = Документ.Реализация.ТекущийДокумент; |Функция КоличествоСумма = Сумма(Количество); |Группировка Номенклатура без групп; |Условие(ТекущийДокумент = ДокОснование); |"; // Если ошибка в запросе, то выход из процедуры тзОстатки = СоздатьОбъект("ТаблицаЗначений"); Запрос.Выполнить(ТекстЗапроса); Запрос.Выгрузить(тзОстатки); //тзОстатки.ВыбратьСтроку(); ТекстЗапроса = " |ОбрабатыватьДокументы все; |Номенклатура = Документ.ВозвратОтПокупателя.Номенклатура; |Количество = Документ.ВозвратОтПокупателя.Количество; |ДокРеализации = Документ.ВозвратОтПокупателя.ТекущийДокумент.ДокОснование; |Функция КоличествоСумма = Сумма(Количество); |Группировка Номенклатура без групп; |Условие(ДокРеализации = ДокОснование); |"; тзВозврат = СоздатьОбъект("ТаблицаЗначений"); Запрос.Выполнить(ТекстЗапроса); Запрос.Выгрузить(тзВозврат); //тзВозврат.ВыбратьСтроку(); тзВозврат.ВыбратьСтроки(); Пока тзВозврат.ПолучитьСтроку() = 1 Цикл НомерСтрокиТз = 0; Если тзОстатки.НайтиЗначение(тзВозврат.Номенклатура,НомерСтрокиТз,"Номенклатура") = 0 Тогда // значение не найдено Сообщить("Внимание товара: "+тзВозврат.Номенклатура+" нет в реализации: "+ ДокОснование); ЕстьОшибка = 1; СтатусВозврата(0); Возврат; Иначе тзОстатки.ПолучитьСтрокуПоНомеру(НомерСтрокиТз); Если тзОстатки.Номенклатура.Выбран() = 0 Тогда Продолжить; Иначе Если тзОстатки.КоличествоСумма < тзВозврат.КоличествоСумма Тогда Сообщить("Товара: "+ тзОстатки.Номенклатура+" по данной реализиции: "+тзОстатки.КоличествоСумма+" возвращается: "+тзВозврат.КоличествоСумма); ЕстьОшибка = 1; СтатусВозврата(0); Возврат; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; |
|||
5
Ёпрст
15.12.11
✎
11:02
|
Тогда смотри (1), без периода запрос на ТА будет всегда.
|
|||
6
Renat11111
15.12.11
✎
11:02
|
выше весь текст чтоб было понятно зачем делаю это все. Еще раз с семеркой не работал, фактически щас учусь. Запросы работают жестоко медленно, по крайней мере как я написал работает медленно.
|
|||
7
Ёпрст
15.12.11
✎
11:04
|
(6) первый запрос не нужен, достаточно ДокОснование.ВыгрузитьТабличнуюЧасть(ТЗ,НужныеКолоночки)
|
|||
8
Renat11111
15.12.11
✎
11:04
|
(5) строчку напиши которую надо вставить в запрос. Еще раз о проблеме.... в первом проведении не учитывает текущий документ возврата.
|
|||
9
Ёпрст
15.12.11
✎
11:05
|
+7 во второй нужно добавить период в текст запроса и выкинуть ТекущийДокумент
|
|||
10
Renat11111
15.12.11
✎
11:05
|
(7) это я понял уже. по поводу (5) ответь. Невероятно сложно просто. в 8-ке 5 мин и не ушло бы на такую задачу.
|
|||
11
Renat11111
15.12.11
✎
11:08
|
(9) там секундное дело, покажи как.
|
|||
12
1Сергей
15.12.11
✎
11:10
|
ТекДок = ТекущийДокумент();
ТекстЗапроса = " |ОбрабатыватьДокументы все; |Период с '01.01.90' по ТекДок; |
|||
13
Renat11111
15.12.11
✎
11:18
|
всем спасибо, отдельно (12)
|
|||
14
1Сергей
15.12.11
✎
11:20
|
(12) + хотя, это не совсем верно :)
|
|||
15
Renat11111
15.12.11
✎
11:27
|
(14) в смысле?
|
|||
16
1Сергей
15.12.11
✎
11:38
|
(15) вот, смотри. тебе нужно выбрать все документы ВозвратОтПокупателя у которых ДокОснование равен твоему ДокОснование. Так?
Запрос (0) прекрасно справляется с этим до тех пор, пока не начнут проводить Новый документ. Т.к. он находится за точкой актуальности. А запросы в 77 без указания периода выполняются до точки актуальности. В (12) мы явно указываем период до текущего документа, даже если он за ТА. НО(!), при проведении задним числом он будет брать период до текущего документа. И если будут возвраты от покупателя после текущего документа, то они в запрос не попадут |
|||
17
1Сергей
15.12.11
✎
11:39
|
(16)+ в общем, задача поставлена криво
|
|||
18
Renat11111
15.12.11
✎
11:44
|
(16) ну да согласен, если будут задним числом работать то да будут проблемы. У них на вчерашний день дата запрета автоматически проставляется. Так что наверно не столкнутся с проблемой.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |