|
таблица регистра 1С77 как внешний источник данных | ☑ | ||
---|---|---|---|---|
0
woha
15.03.16
✎
15:08
|
Помогите, пожалуйста разобраться. Можно ли подключив таблицу 1с77 регистра (остатки) как внешний источник, получать по нему оперативные остатки (без движений)? Если да, то подскажите как? Ловил профайлером запрос 1С77 по остаткам, но не могу разобраться с периодом ТА. Спасибо.
|
|||
1
Ёпрст
15.03.16
✎
15:10
|
просто берешь останки из таблички RG по максимальному периоду.
Всё собственна. |
|||
2
ДенисЧ
15.03.16
✎
15:10
|
если оперативные, то никакой период не нужен.
просто из rg дёргай |
|||
3
hunter76
15.03.16
✎
15:12
|
прямой запрос из 7.7 по регистрам + в SQL сделать функцию для получения на основании этого запроса остатков и / или движений.
|
|||
4
Ёпрст
15.03.16
✎
15:13
|
на вот, ознакомься, там и запросы готовые имеются ниже
http://www.script-coding.com/v77tables.html#3.4.2.1.1. |
|||
5
Zhuravlik
15.03.16
✎
15:13
|
||||
6
woha
15.03.16
✎
15:21
|
(3) Прямой юзаю, но понимаю что я не могу потом сопоставить остатки полученные запросом с товарами, которые тоже использую как внешний источник данных.
|
|||
7
woha
15.03.16
✎
15:22
|
(4) Спасибо буду смотреть.
|
|||
8
woha
15.03.16
✎
15:22
|
(5) Спасибо буду смотреть.
|
|||
9
FN
15.03.16
✎
15:23
|
сделай вьюху сразу со всеми сопоставлениями
|
|||
10
Serginio1
15.03.16
✎
15:24
|
||||
11
woha
15.03.16
✎
15:37
|
(1) Спасибо, это обязательно попробую. Как по мне, то это самый простой вариант.
|
|||
12
Mikeware
15.03.16
✎
15:38
|
(11) так он такой и есть.
самый простой и самый быстрый |
|||
13
Mikeware
15.03.16
✎
15:38
|
+(12) хотя если кто-нибудь полезет в будущее - можешь и огрести косяков
|
|||
14
woha
15.03.16
✎
15:41
|
(13) будущее не страшно.
|
|||
15
Mikeware
15.03.16
✎
15:41
|
(14) остатки из будущего будут...
|
|||
16
woha
15.03.16
✎
15:42
|
(1) можно сделать одним запросом по группе ТМЦ или нужно в цикле по каждому ТМЦ отдельно?
|
|||
17
woha
15.03.16
✎
15:42
|
(15) в моем варианте это даже хорошо.
|
|||
18
Ёпрст
15.03.16
✎
15:44
|
(16) да всё одним запросом
|
|||
19
Ёпрст
15.03.16
✎
15:45
|
в rg уже валяются готовые итоги по всем наборам измерений
|
|||
20
woha
15.03.16
✎
15:55
|
(18) Спрашиваю не случайно, по тому как профайлер словил кучу однотипных запросов (по каждому товару отдельно) когда выполнил стандартный запрос 1С по остаткам на дату ТА
|
|||
21
woha
15.03.16
✎
16:18
|
(1) не могу понять как использовать функцию максимум чтобы по максимальному периоду вытянуть остатки
|
|||
22
Ёпрст
15.03.16
✎
16:22
|
(21)
select * from rg123 where period = (select max(period) from rg123) |
|||
23
Mikeware
15.03.16
✎
16:29
|
(22) ну ему еще (наверное) нужно будет соединение с таблицей номенклатуры (а то и складов) - у него наверняка синхронизация по кодам...
(20) соответсвия между названиями ресурсов-зимерений в пофигураторе, и таблицами - смотри в файле dds |
|||
24
Ёпрст
15.03.16
✎
16:35
|
(23) это ужо детали :)
|
|||
25
woha
15.03.16
✎
16:36
|
(23) я не использую прямы запросы. пробую через внешние источники данных.
|
|||
26
woha
15.03.16
✎
16:37
|
(22)
"ВЫБРАТЬ РАЗЛИЧНЫЕ | РегистрОстатки.Товар КАК Товар, | РегистрОстатки.Остаток, | РегистрОстатки.Период КАК Период |ИЗ | ВнешнийИсточникДанных.Торговля77.Таблица.РегистрОстатки КАК РегистрОстатки |ГДЕ | РегистрОстатки.Период = (ВЫБРАТЬ МАКСИМУМ(Остатки.Период) ИЗ ВнешнийИсточникДанных.Торговля77.Таблица.РегистрОстатки КАК Остатки) |УПОРЯДОЧИТЬ ПО | Товар, | Период"; 1С так не хочет. ругается на второй ВЫБРАТЬ. |
|||
27
Ёпрст
15.03.16
✎
16:43
|
(26) ну, начни с малого,
ВЫБРАТЬ МАКСИМУМ(Остатки.Период) ИЗ ВнешнийИсточникДанных.Торговля77.Таблица.РегистрОстатки КАК Остатки работатет ? Только, как ты потом будешь синхрить со снеговиком ? По кодам ? |
|||
28
woha
15.03.16
✎
16:46
|
Вся база 1С8 не имеет ничего своего. Она живет за счет данных 1С77. Просто публикует это все через web.
|
|||
29
woha
15.03.16
✎
16:49
|
(27) Так работает.
|
|||
30
Ёпрст
15.03.16
✎
16:56
|
(29)
ну помести это во временную, и потом пихай в условие запроса исходного, хз, как там внешние источники работают - не пользуюсь |
|||
31
woha
15.03.16
✎
16:56
|
(27) Сделал два запроса: в первом получаю период и передаю его во второй как параметр. Но странная штука получается, некоторые товары имеют по несколько записей с одним и тем же периодом но разными остатками.
|
|||
32
Ёпрст
15.03.16
✎
16:57
|
ну или так, работает ?
|ГДЕ | РегистрОстатки.Период В (ВЫБРАТЬ МАКСИМУМ(Остатки.Период) ИЗ ВнешнийИсточникДанных.Торговля77.Таблица.РегистрОстатки КАК Остатки) (31) ну ясен пень, номенклатура то поди, не единственное измерение в регистре |
|||
33
woha
15.03.16
✎
17:00
|
(32) Огромное человеческое спасибо. Разобрался, правда это еще не все подводные камни.
|
|||
34
Serginio1
15.03.16
✎
17:02
|
(28) Проще тогда уж использовать Asp.Net MVC
А если хочешь на 8 то 1С++ и через рс.Отладка(1); получаешь текс запроса который и используешь |
|||
35
woha
15.03.16
✎
17:05
|
(28) С этим "А если хочешь на 8 то 1С++ и через рс.Отладка(1)" уже возился не один день. проблема в том что оле 1С77 сохранить нельзя при каждом вызове сервера нужно делать новую инициализацию.
|
|||
36
woha
15.03.16
✎
17:13
|
(32) "А если хочешь на 8 то 1С++ и через рс.Отладка(1);" - тогда уж лучше ToySQL правда не знаю можно ли его загрузить в 1С8 а так он без оле может подключиться к любой внешней базе 1С77 которая живет на MSSQL
|
|||
37
Serginio1
15.03.16
✎
17:30
|
(35) Зачем тебе оле1С77? Через рс.Отладка(1) ты получаешь текст запроса, который можешь использовать через ADO
|
|||
38
Serginio1
15.03.16
✎
17:32
|
Вернее ты можешь использовать и через внешние источник данных. Смыл в том, что ты получаешь нормальные аллиасы полей
|
|||
39
woha
15.03.16
✎
17:39
|
(38) http://catalog.mista.ru/public/170534/ - я таким путем получил почти все что нужно.
|
|||
40
Serginio1
15.03.16
✎
17:50
|
(39) Это все понятно. Кстати наткнулся на то, что Max(Период) не работал. Наши умельцы перекинули дату та на новый период, а затем вернули обратно
static DateTime ПолучитДатуТА(System.Data.SqlClient.SqlConnection sqlClient) { string ТекстЗапроса = @"SELECT CURDATE FROM _1SSYSTEM (NOLOCK)"; var command = new System.Data.SqlClient.SqlCommand(ТекстЗапроса, sqlClient); var dr = command.ExecuteReader(); dr.Read(); var dt= (DateTime)dr[0]; dr.Close(); return new DateTime(dt.Year, dt.Month, 1); } |
|||
41
woha
15.03.16
✎
18:31
|
(40) "SELECT CURDATE FROM _1SSYSTEM (NOLOCK)" - в профайлере такой запрос частенько видел
|
|||
42
woha
16.03.16
✎
07:56
|
Всем спасибо. Остатки работают. С временной таблицей не получилось (пишет про разные источники) но это не страшно.
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | МАКСИМУМ(Остатки.Период) КАК Период | ИЗ | ВнешнийИсточникДанных.Торговля77.Таблица.РегистрОстатки КАК Остатки"; Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); Период = Выборка.Период; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Период КАК Период, | ВложенныйЗапрос.Товар КАК Товар, | ВложенныйЗапрос.Склад, | СУММА(ВложенныйЗапрос.Остаток) КАК Остаток, | СУММА(ВложенныйЗапрос.РезервТовара) КАК РезервТовара, | СУММА(ВложенныйЗапрос.Остаток - ВложенныйЗапрос.РезервТовара) КАК СвободныйОстаток |ИЗ | (ВЫБРАТЬ | РегистрОстатки.Период КАК Период, | РегистрОстатки.Товар КАК Товар, | РегистрОстатки.Склад КАК Склад, | СУММА(РегистрОстатки.Остаток) КАК Остаток, | 0 КАК РезервТовара | ИЗ | ВнешнийИсточникДанных.Торговля77.Таблица.РегистрОстатки КАК РегистрОстатки | ГДЕ | РегистрОстатки.Период = &Период | И РегистрОстатки.Склад = &Склад | | СГРУППИРОВАТЬ ПО | РегистрОстатки.Период, | РегистрОстатки.Товар, | РегистрОстатки.Склад | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | РегистрРезервы.Период, | РегистрРезервы.Товар, | РегистрРезервы.Склад, | 0, | СУММА(РегистрРезервы.РезервТовара) | ИЗ | ВнешнийИсточникДанных.Торговля77.Таблица.РегистрРезервы КАК РегистрРезервы | ГДЕ | РегистрРезервы.Период = &Период | И РегистрРезервы.Склад = &Склад | | СГРУППИРОВАТЬ ПО | РегистрРезервы.Период, | РегистрРезервы.Товар, | РегистрРезервы.Склад) КАК ВложенныйЗапрос | |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Период, | ВложенныйЗапрос.Товар, | ВложенныйЗапрос.Склад | |ИМЕЮЩИЕ | СУММА(ВложенныйЗапрос.Остаток - ВложенныйЗапрос.РезервТовара) > 0 | |УПОРЯДОЧИТЬ ПО | Товар, | Период" ; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |