|
v7: Неожиданный разультат черного запроса | ☑ | ||
---|---|---|---|---|
0
palpetrovich
12.11.21
✎
16:42
|
Для меня во всяком случае неожиданный...
В общем - база файловая, во такая процедура: Процедура Сформировать() Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = " |Период с ДатаС по ДатаПо; | |Товар = Регистр.Остатки.Товар; |ТекДок = Регистр.Остатки.ТекущийДокумент; |Кво = Регистр.Остатки.Кво; | |Функция КвоНач = НачОст(Кво); |Функция КвоПрих = Приход(Кво); |Функция КвоРасх = Расход(Кво); |Функция КвоКон = КонОст(Кво); | |Группировка ТекДок; | |Условие(Товар = выбТовар); |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Запрос.Выгрузить(тз, 0, 0); КонецПроцедуры В результат попадают непроведенные расходные накладные, что меня лично несколько напрягает :( с файловой работал достаточно давно, переиндексация и ТиИ не помогли... Чудо? |
|||
1
ДенисЧ
12.11.21
✎
16:43
|
Попробуй проверить наличие движений у непроведённых документов. Банальным запросом.
|
|||
2
Злопчинский
12.11.21
✎
16:44
|
Переменную текдок выкинуть.
Группировку заменить на предопределенную Группировка Документ; |
|||
3
Злопчинский
12.11.21
✎
16:45
|
для проверки - проблемный непроведенный документ - провести, пометить на удаление, снять пометку.
|
|||
4
palpetrovich
12.11.21
✎
16:46
|
(1) - Банальным ???
(2) - результат тот-же |
|||
5
palpetrovich
12.11.21
✎
16:47
|
(3) ожидаемо получил "Недостаточно товара" ))
|
|||
6
Builder
12.11.21
✎
16:47
|
(0) Переиндексацию делал? Пересчет итогов?
|
|||
7
palpetrovich
12.11.21
✎
16:48
|
(6) переиндексация и ТиИ не помогли..
|
|||
8
palpetrovich
12.11.21
✎
16:57
|
:
Если тз.ТекущаяКолонка() = "Документ" Тогда Док = тз.ПолучитьЗначение(тз.НомерСтроки, "Документ"); Рег = СоздатьОбъект("Регистр.Остатки"); Рег.ВыбратьДвиженияДокумента(Док); Пока рег.ПолучитьДвижение() =1 Цикл Сообщить(""+Рег.Товар+" Кво "+Рег.Кво); КонецЦикла; КонецЕсли; рез - куча движений у непроведенного документа |
|||
9
ДенисЧ
12.11.21
✎
16:57
|
Просто группировка Документ; и потом перебором посмотри на проведённость документа.
Или, если силён - напиши прямой скуль-запрос. |
|||
10
ДенисЧ
12.11.21
✎
16:58
|
(8) прямыми запросами игрался?
|
|||
11
Volodja
12.11.21
✎
16:59
|
(0) А у вас стоит автоматическое удаление движений?
|
|||
12
ДенисЧ
12.11.21
✎
17:00
|
(11) в 77 было такое?
|
|||
13
palpetrovich
12.11.21
✎
17:02
|
(10) база файловая, sqllite-ом попользваться не дадут, она у нас не является принятой в конторе
|
|||
14
Ёпрст
12.11.21
✎
17:02
|
(11) это вообще ни на что не влияет
|
|||
15
Ёпрст
12.11.21
✎
17:04
|
(0) прибей записи в регистре у этих доков, делов то.
ЗЫ: могли остаться после "свертки". Были тут раньше поделки, которые толкали записи регистров напрямую, без регистратора вообще. |
|||
16
Ёпрст
12.11.21
✎
17:05
|
Можешь проще сделать. Выстави флаг проведения в 1sjourn у этого дока, потом в предприятии сделай отмену. Записи очистятся
|
|||
17
Ёпрст
12.11.21
✎
17:05
|
Тут видать, кто-то прямым запросом снял флаг проведения в табдичке доков
|
|||
18
palpetrovich
12.11.21
✎
17:07
|
(17) прямо запрос к файловой базе?
|
|||
19
Volodja
12.11.21
✎
17:07
|
(17) А если провести документ и тут же удалить? Движения должны же удалиться
|
|||
20
palpetrovich
12.11.21
✎
17:10
|
(19) провести не получается т.к. остатков нет, они израсходованы этим чудесным документом :)
|
|||
21
palpetrovich
12.11.21
✎
17:11
|
(16) а как узнать IdDoc этого дока?
|
|||
22
Volodja
12.11.21
✎
17:11
|
(20) Поправить
Процедура ОбработкаПроведения() Возврат ......... Конецпроцедуры Провести, удалить, вернуть процедуру обратно |
|||
23
palpetrovich
12.11.21
✎
17:12
|
(22) круто!!
|
|||
24
Volodja
12.11.21
✎
17:14
|
(23) Смекалка.
|
|||
25
palpetrovich
12.11.21
✎
17:17
|
(24) ага, жаль что не помогло )))
|
|||
26
Volodja
12.11.21
✎
17:18
|
Тогда (17)
|
|||
27
Volodja
12.11.21
✎
17:19
|
Порпробуйте Выгрузить, апотом загрузить базу.
|
|||
28
palpetrovich
12.11.21
✎
17:22
|
(27) да уже думаю, может в скуль его загрузить... правда боюсь, ошибка исчезнет )
|
|||
29
ДенисЧ
12.11.21
✎
17:24
|
(28) Лучше сделай (22) и иди отдыхать
|
|||
30
palpetrovich
12.11.21
✎
17:26
|
(29) см (25)
|
|||
31
Ёпрст
12.11.21
✎
17:27
|
На вот, поправь что хочешь
https://infostart.ru/public/79515/ |
|||
32
Ёпрст
12.11.21
✎
17:27
|
Хотя по мне, проче через консоль и delete удалить записи, где док не проведен
|
|||
33
Volodja
12.11.21
✎
17:28
|
(31) Точно. У меня же тоже она есть
|
|||
34
Масянька
12.11.21
✎
17:29
|
(31) И док не проведен, и движения есть :)
|
|||
35
Масянька
12.11.21
✎
17:29
|
+ (34) Классная вещь!
|
|||
36
Volodja
12.11.21
✎
17:29
|
(32) Даже через обычный WinDBFView.exe можно поудалять и упаковать
|
|||
37
palpetrovich
12.11.21
✎
17:30
|
(36) да можно, как узнать IdDoc нужного ???
|
|||
38
palpetrovich
12.11.21
✎
17:31
|
кста, граната из (31) где-то валялась )
|
|||
39
Ёпрст
12.11.21
✎
17:31
|
ну, или значениевстрокувнутр или через метадатаворк
|
|||
40
Ёпрст
12.11.21
✎
17:31
|
там есть метод
|
|||
41
Ёпрст
12.11.21
✎
17:32
|
||||
42
Garykom
гуру
12.11.21
✎
17:33
|
(0) Документов надеюсь за все года не много?
Максимальный IDDOC не превышен? |
|||
43
Volodja
12.11.21
✎
17:34
|
() ЗначениеВСтрокуВнутр(Документ) а потом
Функция _глПолучитьВнутреннийIDЭлемента(Знач внтКод) ВнтКод=Сред(ВнтКод,2,СтрДлина(ВнтКод)-2); _Строка=СтрЗаменить(ВнтКод,",",РазделительСтрок); _КодСправочника=СтрЗаменить(СтрПолучитьСтроку(_Строка,4),chr(34),""); _КодЭлемента=СтрЗаменить(СтрПолучитьСтроку(_Строка,7),chr(34),""); Возврат СокрЛП(_IDtoStr(_КодСправочника))+"_"+СокрЛП(_IDtoStr(_КодЭлемента)); КонецФункции Только это у меня было для справочника, там возможно чуть-чуть переделать |
|||
44
Garykom
гуру
12.11.21
✎
17:34
|
(42)+ Причем если делали свертку с удалением старых доков, то вполне оно будет работать но индексы по второму кругу пошли
|
|||
45
Volodja
12.11.21
✎
17:35
|
в 1С++ вроде еще метод есть
|
|||
46
Ёпрст
12.11.21
✎
17:36
|
Ого, смотрю кто-то даже на нимфостарте камментит поделки, токма я там давно забанен и проипал все логины/пароли.
|
|||
47
palpetrovich
12.11.21
✎
17:36
|
(42) если ДБФнавигатор соритрует правильно - крайний ' 44KK '
(43) спсибо, смотрю |
|||
48
Volodja
12.11.21
✎
17:39
|
(47) 1С++
ЗначениеВСтрокуБД(<?>) Синтаксис: ЗначениеВСтрокуБД(<Object>) Назначение: преобразует ссылочный тип данных 1С (Справочник, документ, перечисление) во внутренние представление системы, только внутренний ИД объекта. Возвращает строку - внутреннего представления в виде: [ID(6)][Sign(3)] = 9 символов. Возвращаемое значение: (Строка) Параметры: <Object> - объект неопределенного вида |
|||
49
Ёпрст
12.11.21
✎
17:39
|
метадата = СоздатьОбъект("MetaDataWork");
Сообщить(матадата.ЗначениеВСтрокуБД(ТвойДок); |
|||
50
Смотрящий
12.11.21
✎
18:02
|
(46) Метода относительно честного отъема интеллектуальной собственности ?
|
|||
51
серый КТУЛХУ
12.11.21
✎
18:09
|
такие движения чаще всего появляются в результате заворачвания проведения в транзакции.
|
|||
52
palpetrovich
12.11.21
✎
18:14
|
Ну что, ручное удаление записей из RG45.DBF помогло, спасибо всем
|
|||
53
palpetrovich
12.11.21
✎
18:17
|
(52) * из RA45.DBF конечно же )
|
|||
54
серый КТУЛХУ
12.11.21
✎
18:21
|
... и пересчет итогов, я надеюсь?.. ))
|
|||
55
palpetrovich
12.11.21
✎
18:27
|
(54) еще нет :)
|
|||
56
palpetrovich
12.11.21
✎
18:31
|
обнаружил в ОбработкеПроведения вот это:
~КОНЕЦ: КонецПроцедуры ...без перейти :) |
|||
57
серый КТУЛХУ
12.11.21
✎
18:53
|
(56): ну м.б. человек так комментарии "особой важности" расставляет... с прицелом на будущее к тому же...
|
|||
58
Злопчинский
12.11.21
✎
18:55
|
(5) отключи временно контроль олстатков меню-сервис-настрока учета -контроль остатков не контролировать
|
|||
59
Злопчинский
12.11.21
✎
18:57
|
(23) не проканает если отключено автоматическое удаление .
а в типовой Тис это именно так. |
|||
60
Злопчинский
12.11.21
✎
18:59
|
(56) это нормуль
|
|||
61
Злопчинский
12.11.21
✎
19:01
|
А ЗначениеВстрокуВнутр(СсылкаНаМойДок) - дает не ту строку, которую можно в табличках визуально посмотреть?
ЗначениеВстрокуВнутр как соотносится с IdToStr и ЗначениеВСтрокуБД ..? |
|||
62
palpetrovich
12.11.21
✎
19:05
|
(61)
ЗначениеВстрокуВнутр {"O","0","0","0","0","0"," 5136 192297 "} ЗначениеВСтрокуБД ' 44DL ' |
|||
63
Volodja
12.11.21
✎
19:08
|
(58) Почему-то я такое у себя не нахожу.
|
|||
64
Volodja
12.11.21
✎
19:10
|
+63 , Понял.Видимо это для типовых?
|
|||
65
серый КТУЛХУ
12.11.21
✎
19:36
|
тЗнач=ЗначениеВСтрокуВнутр(тОбъект); тСЗ=СоздатьОбъект("СписокЗначений");
тСЗ.ИзСтрокиСРазделителями(Сред(Лев(тЗнач,СтрДлина(тЗнач)-1),2)); тЗнач=СокрЛП(тСЗ.ПолучитьЗначение(1)); // T=счет/O=документ/B=справочник/E=перечисление/U=неопределеннный: Если ПустоеЗначение(тЗнач)<>0 Тогда тЗнач="U" Иначе тЗнач=?(Найти("TOBEU",Лев(тЗнач,1))=0,"U",Лев(тЗнач,1)) КонецЕсли; // Тип объекта данных: ИдОбъекта=тЗнач; тЗнач=тСЗ.ПолучитьЗначение(тСЗ.РазмерСписка()); ИдОбъекта=ИдОбъекта // + Id Вида объекта данных: +_IdToStr(Число(?(СтрДлина(тЗнач)=13,тСЗ.ПолучитьЗначение(4),Лев(тЗнач,10)))); тЗнач=тСЗ.ПолучитьЗначение(тСЗ.РазмерСписка()); Если СтрДлина(тЗнач)>13 Тогда тЗнач=Прав(тЗнач,13) КонецЕсли; ИдОбъекта=ИдОбъекта // + Id экземпляра объекта данных + код ИБ создания объекта (нет урбд - три пробела): +_IdToStr(Число(Лев(тЗнач,СтрДлина(тЗнач)-3))) + Прав(тЗнач,3); |
|||
66
Злопчинский
12.11.21
✎
21:45
|
(64) да
|
|||
67
Харлампий Дымба
13.11.21
✎
01:04
|
А после того как Коллективный разум победит, рекомендую ТС следующую выдержку из желто-красных книжек:
Следует понимать, что не все функции внутри конкретной группировки запроса могут иметь четко интерпретируемый смысл. Например, для группировки по документу движения регистра следующие функции |Функция ПрихКол = Приход(Количество); |Функция РасхКол = Расход(Количество); имеют четкий смысл — приращения, сделанные документом при движении регистра. С другой стороны, в той же группировке следующие функции: |Функция НачКол = НачОст(Количество); |Функция КонКол = КонОст(Количество); явно не имеют смысла (в запросах по регистрам, обычно задают период запроса при помощи оператора Период C. Функция НачКол в данном примере должна по смыслу показывать остаток ресурса "Количество" на начальную дату запроса. Внутри группировки по документу вопрос: «Какой начальный остаток ресурса на дату 10.01.97?» по документу, проведенному, например, 13.01.97, не имеет смысла). Поэтому в таких ситуациях функция будет иметь нулевое значение. |
|||
68
серый КТУЛХУ
13.11.21
✎
02:37
|
(67): нахрена это тут да еще в виде простыни?
во-первых, вопросов про остатки вообще не было. во-вторых, уже не осталось в мире семерочников (кроме восьмерочников, которые лезут не в свою парафию), которые бы не знали об отсутствии остатков в запросе по группировке документ. |
|||
69
Djelf
13.11.21
✎
06:07
|
(13) Дискриминация! И в лопатофонах тоже sqlite нельзя? А как тогда вообще жить? оО
Код открыт, заглушек нет, можно часик на ревизию потратить и пересобрать по своему, там же все самое страшное спрятано в процедуре "ненавижу_инн_222_и_сотру_у_него_в_базе_все", но этой процедуры там нет ;) |
|||
70
palpetrovich
13.11.21
✎
13:23
|
(67) а догадаться что запрос в (0) - несколько обрезан - не судьба? :)
|
|||
71
Харлампий Дымба
13.11.21
✎
14:38
|
(68) (70) Ладно, ладно, закидали. Догадайся, что ТС не "восьмерочник, который лезет не в свою парафию", догадайся, что код в реале один, а в вопросе другой. Извините, добрый люди, что неуместно сослался на ЖКК)
И раз уж тут все по умолчанию прошареные, давно интересовал вопрос, а есть ли разница между: |ТекДок = Регистр.Остатки.ТекущийДокумент; |Группировка ТекДок; и |Группировка Документ; ? |
|||
72
Злопчинский
13.11.21
✎
15:46
|
есть.
|
|||
73
Злопчинский
13.11.21
✎
15:46
|
когда-то давно копали вопрос. но я уже не помню.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |