|
v7: Разные результаты при ручном и групповом проведении док-та | ☑ | ||
---|---|---|---|---|
0
__Se24
12.09.12
✎
12:26
|
Собственно сабж ..
При проведении док-та в режиме группового проведения "черный" запрос не находит товарной позиции , хотя она была "заплюсована" в регистр другим документом , за пару часов до этого. Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Филиал = Регистр.Остатки.Филиал; |Склад = Регистр.Остатки.Склад; |Товар = Регистр.Остатки.Товар; |Условие (Товар в СписокТоваров); |Условие (Склад=РеквСклад); |Условие (Филиал=РеквФилиал); |Группировка Товар Без Групп; |"//}}ЗАПРОС ; Если (ПолучитьДатуТА() > ТекДок.ДатаДок) Тогда ТекстЗапроса = ТекстЗапроса + "ПЕРИОД С ТекДок По ТекДок;"; Иначе ДокТА=ПолучитьДокументТА(); ТекстЗапроса=ТекстЗапроса+"ПЕРИОД С ДокТА По ДокТА;"; КонецЕсли; Если запускать Гр.Проведение хотябы за один день до данной коллизии , то документ 100% не проводится. Если в том же дне , то проводится . |
|||
1
fedoss
12.09.12
✎
12:34
|
отсюда мораль - не нужно пользоваться черными запросами в модуле документа
|
|||
2
__Se24
12.09.12
✎
12:36
|
Это не мораль , это личные предпочтения.
База 6 лет крутится с ними , до определенного момента было все нормально. И тут такое чудо ..... |
|||
3
palpetrovich
12.09.12
✎
12:42
|
буква Я справа-вверху должна прояснить ситуацию :)
|
|||
4
__Se24
12.09.12
✎
12:49
|
Пробовал ... как-то не проясняет...
|
|||
5
Джинн
12.09.12
✎
12:50
|
(1) Бред.
(0) В модуле дока нужно юзать ИтогиАктуальны() и позицию документа |
|||
6
Джинн
12.09.12
✎
12:52
|
(5) Уточню - бред в том, что нельзя. Можно, но только аккуратно.
|
|||
7
Ёпрст
12.09.12
✎
13:00
|
ну лучше не использовать
|
|||
8
Джинн
12.09.12
✎
13:02
|
(7) Для получения обычных итогов по регистрам - точно не использовать. Разница в скорости примерно в 5 раз не в пользу запроса. Факт.
Но если что-нибудь хитрозадое нужно - без запроса не обойтись частенько. |
|||
9
Boroda
12.09.12
✎
13:11
|
Черный запрос тут не при чем. Проблема в попытке получения результатов запроса после ТА.
|
|||
10
Boroda
12.09.12
✎
13:12
|
Меня смущает вот это:
Если (ПолучитьДатуТА() > ТекДок.ДатаДок) Тогда ТекстЗапроса = ТекстЗапроса + "ПЕРИОД С ТекДок По ТекДок;"; |
|||
11
Ёпрст
12.09.12
✎
13:14
|
(10) это вообще бред, в потоке док всегда на ТА
|
|||
12
Джинн
12.09.12
✎
13:15
|
(10) Еще раз прочитайте (5).
|
|||
13
Ёпрст
12.09.12
✎
13:16
|
да и сам текст запроса не рабочий 100% - отсутствуют функции при обращении к регистру.
|
|||
14
palpetrovich
12.09.12
✎
13:21
|
(13) хехе, а ка-же "База 6 лет крутится с ними " :))
(4) там по первой-же ссылки намеки на "ПолучитьПозицию" |
|||
15
__Se24
12.09.12
✎
13:28
|
Это не полный запрос , я убрал функции . не в них дело
|
|||
16
__Se24
12.09.12
✎
13:29
|
(12) А можно по подробнее , про "ИтогиАктуальны()" ?
(14) И что мне даст эта позиция ? |
|||
17
__Se24
12.09.12
✎
13:30
|
(10) Программист таким образом "научил" документ проводится задним числом ...
|
|||
18
Джинн
12.09.12
✎
13:33
|
(19) ИтогиАктуальны()
Синтаксис: ИтогиАктуальны() Назначение: Возвращает флаг актуальности итогов: 1 - итоги актуальны, 0 - иначе. Замечание: Метод доступен только в Модуле документа в предопределенной процедуре ОбработкаПроведения. Подробнее см. в документации, глава 'Работа с Документами' СформироватьПозициюДокумента(<?>,); Синтаксис: СформироватьПозициюДокумента(<Докум>,<ФлагСмещения>) Назначение: Формирует и возвращает позицию документа согласно переданным параметрам. Параметры: <Докум> - значение документа (или его позиция), позиция которого определяется. <ФлагСмещения> - необязательный параметр. Число: -1 (минус единица) - предыдущая позиция. 1 - следующая позиция. 0 - текущая позиция. Значение по умолчанию - 0. Использование данного параметра позволяет получить предыдущую или последующую позицию от уже имеющейся позиции. Период С <?> По ; Синтаксис: [Период] С <Дата1>|<ВнешняяПеременная1> [По <Дата2>|Внешняя переменная2]; Англоязычный синоним: [Period] From <Дата>|<ВнешняяПеременная>[Till <Дата>|<ВнешняяПеременная>]; Назначение: Установить интервал дат формирования Запроса. Параметры: <Дата1>,<Дата2> - значение типа ''Дата'', ''Документ'' или позиция документа. <ВнешняяПеременная1>,<ВнешняяПеременная2> - внешняя переменная, задающая значение типа ''Дата'', ''Документ'' или позиция документа. Замечание: Если вторая часть оператора после ключевого слова По пропущена или значение второго параметра команды равно нулю, то интервал времени применяется от начального момента времени до ТА (или по РабочуюДату, если не установлена компонента ''Оперативный учет''). Если в описании запроса команда Период С опущена, то интервал дат формирования запроса устанавливается в точку актуальности итогов. Для журнала расчетов конструкция Период С ... По... означает выборку в разрезе расчетных периодов журнала, а конструкция С ... По... означает выборку в разрезе времени действия записей журнала расчетов, определяемых реквизитами журнала ''ДатаНачала'' и ''ДатаОкончания''. |
|||
19
__Se24
12.09.12
✎
13:35
|
(18) Спасибо )))
Я про другое , если вкрутить "ИтогиАктуальны()" перед запросом , и он покажет что они не актуальны , дальше то что , удалить документ ? |
|||
20
Джинн
12.09.12
✎
13:53
|
Короче, Склифассовский
1. Запрос выкинуть на помойку. 2. Добавляем код: ВремРегистры = СоздатьОбъект("Регистры"); ВремОстаткиТМЦ = ВремРегистры.Остатки; ВремОстаткиТМЦ.УстановитьЗначениеФильтра("Товар",СписокТоваров,2); ВремОстаткиТМЦ.УстановитьЗначениеФильтра("Склад",РеквСклад,1); ВремОстаткиТМЦ.УстановитьЗначениеФильтра("Филиал",РеквФилиал,1); Если ИтогиАктуальны()=0 Тогда ВремРегистры.Актуальность(1); ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент()); КонецЕсли; Ну и далее правим обращения к результатам запроса. 3. Проставляем Джинну виртуальное пиво. |
|||
21
Ёпрст
12.09.12
✎
13:56
|
(20) лучше переписать на прямой запрос и мне вина или конины
:)) |
|||
22
__Se24
12.09.12
✎
13:56
|
(20) Мне нужен запрос. Он формирует развертку по партиям. Уже пробовали когда-то его убрать , не получилось.
Актуальность итогов подтвержатся ... да и думаю , что для запроса это не важно , у него своя "актуальность". |
|||
23
__Se24
12.09.12
✎
13:57
|
(21) Прямых запросов не получится. Не используются внешние компоненты.
|
|||
24
Джинн
12.09.12
✎
14:19
|
(22) Партии в регистре?
|
|||
25
Джинн
12.09.12
✎
14:19
|
Приведенный Вами запрос ничего не разворачивает совершенно.
|
|||
26
expertus
12.09.12
✎
14:22
|
И-эх, давно не брал я в руки клюшек!
(22) дык если нужна развертка, то: - устанавливай фильтры в регистре - выгружай регистр в таблицу значений с раскладкой по партиям - PROFIT!!! |
|||
27
__Se24
12.09.12
✎
14:40
|
(25) Я же писал , запрос не полный
Меня собственно не сам запрос интересует . Мне нужно чтобы он правильно снимал итоги, а уж что с ними делать , дело десятое .... |
|||
28
__Se24
12.09.12
✎
14:41
|
(24) Да , партии в регистре.
|
|||
29
Джинн
12.09.12
✎
14:53
|
(27) Тогда правильный ответ в (26).
Но если все же хотите через зад, то примерно так можно: Если СравнитьТА() < 0 Тогда ТекстЗапроса = "Период с ТекущийДокумент по ТекущийДокумент; КонецЕсли; |
|||
30
__Se24
12.09.12
✎
15:05
|
(29) Чем вам так Запросы неугодили ???
|
|||
31
Ёпрст
12.09.12
✎
15:08
|
(30) проблемы в (0) уже мало ?
+ это в разы медленнее, чем выгрузитьИтоги с установленными фильтрами |
|||
32
Джинн
12.09.12
✎
15:08
|
(30) Я же писал выше - в среднем в пять раз медленнее выгрузки итогов.
|
|||
33
__Se24
12.09.12
✎
15:12
|
(31) в остальных 10 тсячах документов этого вида , он ведет себя нормально. Заковырка именно в этом документе.
Или в том , который сделал "плюсующее" движение в регистр , возможно каким-то крывым способом . |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |