v7: 1с++ Получение документа из регистра, недопустимое имя столбца "IDDoc". #768000


#0 by palpetrovich
код: Select   подскажите, что ему надо?
#0 by palpetrovich
код: Select   подскажите, что ему надо?
#1 by ЧеловекДуши
>>> Рег.IDDoc as [Докм $Документ], А кто вид документа будет указывать?
#2 by ЧеловекДуши
+ Откуда на остатках, IDDoc?
#3 by palpetrovich
без толку, эт ч упростил, было         |    Рег.IDDoc as [Докм $Документ],         |    Рег.IDDocDef as Док_вид,
#4 by ЧеловекДуши
+ Запусти отладку запроса.
#5 by vde69
неужели 1с++ кто то еще жрет? по моему на 77 остались только ларьки с типовыми?
#6 by ЧеловекДуши
Обороты не путай с остатками :)
#7 by palpetrovich
мне только "СтоимостьРасход" нужен
#8 by ЧеловекДуши
Не знаю, как там ларьки. Но на прямых запросах с прямыми руками программиста 1С. 7.7 объедет 8.х :)
#9 by palpetrovich
это только кажется зы без IDDoc показывает нужные цифры, но мне надо пару реквизитов из документа получить
#10 by Serginio1
Да ладно. Есть куча специально заточенных конфигураций, которые переделывать накладно. Но при этом они прекрасно работаю и сделана выгрузка в 8.3
#11 by ЧеловекДуши
Вот так нужно.
#12 by palpetrovich
+  можно конечно тупо сделать запрос по расходным накладным, но в вот пишут-же в интернетах: Получение документа из регистра В зависимости от наличия флага БыстаяОбработкаДвижений (значение флага смотрите в разделе Оптимизация регистров) получается 2 способа. Способ 1: при наличии флага. ТекстЗапроса = "
#13 by ЧеловекДуши
Там вроде у этой виртуальной таблицы есть ряд параметров, которые нужно указать. А так, я некогда не любил сею конструкцию. Мне вот лучше выполнить 3 запроса: Чем лепить все одной командой :)
#14 by Serginio1
Пользуйся конструктором запросов 1С++
#15 by palpetrovich
блин, а - таки работает
#16 by Serginio1
Для запуска конструктора запросов вызовите метод RunWizard плагина qryMaker или выберите пункт "Конструктор запросов 1С++" в меню шаблонов плагина "Телепат".
#17 by ЧеловекДуши
У тебя параметра нет "Документы".
#18 by Mikeware
Во-первых, не указана периодичность Во-вторых у тебя в виртуальной таблицке не будет иддока, а будетПозицияДокумента
#19 by palpetrovich
+  походу прийдется соединять виртуальную табличку регистра с обычной
#20 by Mikeware
дык ты выбираешь из виртуальной табицы, а - из реальной
#21 by Карупян
В виртуальной таблице остатков можно указать периодичность?
#22 by palpetrovich
че-т не получилось у меня установить телепат на вин7
#23 by Mikeware
не надо. Получи позицию, и возьми от нее 18-23 символы
#24 by Mikeware
не можно, а нужно!
#25 by palpetrovich
не уменю пока получать позицию ...а соединять по-ходу не по чем :)
#26 by Serginio1
Ставится у попроси
#27 by ADirks
А нафига вообще виртуальна таблица, если все данные и так получить можно?  Чтоб непонятнее было?
#28 by Mikeware
Блин, не 18-23... Кортче, там  date_time_iddoc получается, в виде чар
#29 by Mikeware
а не пофиг ли? виртуальной удобно всякие ведомости делать
#30 by ЧеловекДуши
Да это от лени. Писать меньше. А так еще нужно было бы остатки получать, отдельными запросами. Хотя можно так же все объединить.
#31 by Mikeware
в типовых нет 1с++ а там, где есть 1с++ - как правило, достаточно большие и нагруженые базы. Которые переводить на снеговика долго и накладно. Процесс, конечно, идет, но медленно.
#32 by ЧеловекДуши
Удобно, но не вот этим монстром, что в попробовал заюзать :)
#33 by Serginio1
#34 by ЧеловекДуши
А еще с огорчением, в виду потери скорости на снеговиках :)
#35 by ADirks
мне лично так проще, не надо запоминать лишнего (как вирт. таблицы устроены)
#36 by Serginio1
31+ При этом 1С++ позволяет использовать всю мощь T-SQL
#37 by palpetrovich
там "Бесплатно для новых юр.лиц" :)
#38 by Mikeware
тоже вариант. Но в плане перехода на снеговика - лучше привыкать к виртуальным. Да и вообще - если сделали серхний уовень абстракции - зачем без необходимости спускаться на нижний?
#39 by palpetrovich
а чего монстром? что там монстрячего? а виртуальная - потому-как мне еще разворачивать отчет по горизонтали надо в зависимости от выбранной пользователем периодичности
#40 by Mikeware
в чем у тебя проблемы? в регистрации этих ocx и т.п.?
#41 by Mikeware
"потеря скорости" - это мягко сказано.
#42 by palpetrovich
чет опять двадцать пять :)         |Select           |    Рег.ПозицияДокумента as Поз, ... Server Driver][SQL Server]Недопустимое имя столбца "ПозицияДокумента".
#43 by Mikeware
1. по регистрации - сейчас скину исправленый рег.бат Если найду. протерял где-то. Или пытай алексея, я по его советам делал 2. Периодичность какая стоит?
#44 by palpetrovich
никакая не сояла, поставил Document - заработала :) сейчас попробую день, неделя...
#45 by Mikeware
в "день" и "неделя" позиции документа не будет
#46 by palpetrovich
+  - да, прав :( м что делать, если именно это нужно?
#47 by trad
РегистрОстаткиОбороты с периодичностью глючит, только не помню - то ли с периодичностью Документ, то ли со всеми кроме Документ
#48 by palpetrovich
а если нужны только расходы, может лучше запрос по оборотам делать?
#49 by Mikeware
собирать руками. Как говорили выше. Или в полученую с периодичностью "документ" таблицу добавлять нужный период (танцуя от даты документа), и группировать по нему.
#50 by Mikeware
попробуй в Рег.бат заменить функцию на }
#51 by Mikeware
делай сразу по регистру (по таблице движений)
#52 by Mikeware
вроде не натыкался... Хотя виртуальные таблицы я нечасто использовал
#53 by Serginio1
Запусти батник от имени администратора
#54 by palpetrovich
конечно пробовал от имени администратора, но для меня сейчас это не главное, перехожу на новую работу, здесь устанавливать вроде как и не за чем "сразу по регистру" - в смысле по физТаблице? а как мне периодичность (день, неделя, месяц) получить?
#55 by Boroda
Если хочешь в разрезе документов, то у вирт. таблицы, как тут уже писали, периодичность ставишь "Документ". А обращение к нему через "ПозицияДокумента". Пример: FROM $РегистрОбороты.ТвойРегистр(:НачДата, :КонДата~,Документ, . .) as Рег LEFT JOIN _1SJourn as Жур (nolock)  ON Жур.Date_Time_IdDoc = Рег.ПозицияДокумента А дальше уже из Жур вытягиваешь и документ и вид документа.
#56 by Mikeware
Получай по дате нужный разрез, и по нему группируй в запросе
#57 by palpetrovich
т.е. сначала получить СписокДат из выбранного периода с заданной периодичностью, а потом соединять его с данными из регистра?
#58 by palpetrovich
+  причем, если по "День" - то понятно как соединять, е сли по неделя, иесяц - еще надо подумать зы  ну вот почему этот ИДДОК не засунуть в ВиртТаблицы-а? ну нужен-же не только мне наверное :)
#59 by Mikeware
нет. у тебя будет список дат (позиций документов) по движению документов. От этих позиций бери нужное - например, номер недели как datapart(wk,cast(left(Рег.date_time_iddoc,8) as datetime) )
#60 by palpetrovich
о, вон оно как, надо подумать ...или попробовать :) кста, этот date_time_iddoc так примерно выглядит: "201603109KYJWG 8" дата как-бы видна невооруженным взгядом, а дальше - это что, ссылка на док? а после пробела?
#61 by palpetrovich
а не, после пробела это походу и есть ИДДОК
#62 by palpetrovich
спавибо за пинок в нужном направлении :) и вообще - всем спасибо
#63 by Mikeware
Дата 6 символов, потом 6 символов время в тысячных секунды с начала даты, переведенное в 36-разрядную систему, а далее - иддок. ходи на скрипт-кодинг, там расписано
#64 by trad
Дата - 8
#65 by trad
right(ПозицияДокумента,9) - iddoc
#66 by palpetrovich
ну как-же 6 символов? ну явно-же 8 "201603109KYJWG 8" - 20160310 как-то маловато информации возвращает этот DATEPART DATEPART(month, cast(left(Рег.ПозицияДокумента,8) as datetime)) as month // 2, 3 как минимум нужно соединять с годом...
#67 by Mikeware
восемь, восемь.. тарапился
#68 by Mikeware
если надо годмесяц - бери из даты первые 6 символов. Если до дня - первые 8. а дэйтпарт - нужно для номера недели, или для дня недели, или номера квартала
#69 by ЧеловекДуши
У регистра должна быть галочка "Быстрые движения"
#70 by ЧеловекДуши
+ Или типо того
#71 by ЧеловекДуши
Да лучше, но писать немного дольше :)
#72 by Mikeware
"не тормози. сникерсни"©
#73 by Serginio1
66
#74 by palpetrovich
спасибо
#75 by Mikeware
а зачем? если собирать по неделям, то знать дату начала недели совершенно необязательно. если уж нужно будет это отобразить (в шапке, например) - можно получить период недели по ее номеру на этапе вывода
#76 by palpetrovich
да, нужно именно для вывода, просто боюсь при запросе за период с "переходящим" годом - получу бардак... 12.2015; 01.2016 при периодичности "месяц" отсортируется как 1, 12
#77 by palpetrovich
+   а в этом коде, я не могу из "2132016" получить "21032016"
#78 by palpetrovich
+  впрочем получилось :)  ...уж не знаю насколько это оптимально         |    (left( '0' + cast(DATEPART(day, cast(left(Рег.ПозицияДокумента,8) as datetime))  as varchar) , 2) +           |    left( '0' + cast(DATEPART(month, cast(left(Рег.ПозицияДокумента,8) as datetime))  as varchar) , 2) +             |    cast(DATEPART(year, cast(left(Рег.ПозицияДокумента,8) as datetime))  as varchar) ) as Период,
#79 by palpetrovich
+   мдя, что-то меня не туда занесло, пока решал "строковую" задачку, потерял главное :)
#80 by palpetrovich
о, такая конструкция возвращает первый день в месяце         |    DATEADD(day,-DAY( cast(left(Рег.ПозицияДокумента,8) as datetime)) +1, cast(left(Рег.ПозицияДокумента,8) as datetime) )  as Период, осталось такое сделать для первого дня недели
#81 by Mikeware
так отрезай первые 6 символов: 201512,201601,201602...
#82 by Mikeware
за каким нахреном?
#83 by Serginio1
#84 by Aleksey
как раз ларёк с типовой без проблем сваливает на 8-ку.
#85 by palpetrovich
ну вообще-то да, решает ту-же задачу :) а вот как с неделями быть надеюсь в найду :)
#86 by Mikeware
какя разница, написано оно на t-sql или на 1с? Если тебе нужно "начало недели" в запросе - это одно, а если только при выводе - нахрена грузить сервер излишними вычислениями?
#87 by palpetrovich
да, для 1-го дня недели работает, спасибо |DATEADD(DD, DATEDIFF(DD, 0, cast(left(Рег.ПозицияДокумента,8) as datetime))/7*7, 0)  as Период,
#88 by ADirks
#89 by palpetrovich
спасибо
#90 by ADirks
блин... с неделей то у меня косяк :) у буржуев начало недели - воскресенье почему-то более правильно так:
#91 by Mikeware
ну, давно известно, что они начинают неделю с отдыха....
#92 by palpetrovich
странно, у меня с кодом в все нормально 22.02.16, 29.02.16, 07.03.16 может от системных установок зависит?
#93 by palpetrovich
+  впрочем с кодом из тоже :)
#94 by Serginio1
#95 by Serginio1
#96 by ADirks
это потому что у тебя в настройках сервера указано, что первый день понедельник. Был бы аглицкий дистрибутив - было бы воскресенье первым днём а я знаю, и поэтому не хочу от этого зависеть
#97 by palpetrovich
подскажите, а почему так получается? кусок кода: Select     cast(left(Рег.ПозицияДокумента,8) as datetime) as День,     Рег.Товар [Товар $Справочник.Товары],           СпрТ.Descr + cast(cast(left(Рег.ПозицияДокумента,8) as datetime) as varchar) as Ключ1 FROM              $Справочник.Товары as СпрТ (nolock) on СпрТ.id = Рег.Товар
#98 by palpetrovich
+  а я почемуто ожидал
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С