|
ПодпискаНаСобытие при проведении документа. | ☑ | ||
---|---|---|---|---|
0
Ткачев
10.02.12
✎
14:14
|
"Управление торговлей", редакция 10.3 (10.3.8.9)
Делаю выгрузку цен в Set Retail, при проведении документа надо выгрузить цены, но если документ перед проведением не Проведен, тогда в регистре нету еще записей, брать из ТЧ не могу т.к. могут проводиться документы прошлых цен. Делал подписку ПриПроведении, ПриЗаписи, не выходит, цены в регистре есть только когда док уже был проведен, а при подписки на ПриПроведении и этого нет. Как выйти из этой ситуации ? |
|||
1
shuhard
10.02.12
✎
14:15
|
(0) что мешает сделать подписку перед записью Рг сведений ?
|
|||
2
Fragster
гуру
10.02.12
✎
14:15
|
записывать регистр в обработке проведения (или в своей подписке)
|
|||
3
Ткачев
10.02.12
✎
14:19
|
(1)По одной записи будет приходить, не устраивает, много файлов надо будет формировать тогда.
|
|||
4
Живой Ископаемый
10.02.12
✎
14:20
|
2(0) показывай код, которым видишь в ПриПроведении, что записей в Регистре нет
|
|||
5
Живой Ископаемый
10.02.12
✎
14:21
|
а, еще момент - в этот РС как пишутся движения? этот документ выступает регистратором или РС независимый?
|
|||
6
Dmitrii
гуру
10.02.12
✎
14:22
|
(3) >> По одной записи будет приходить
Что за фигня? У регистров подписки на наборы записей. У каждой записи подписок нет. |
|||
7
Ткачев
10.02.12
✎
14:23
|
Запрос = Новый Запрос("
|ВЫБРАТЬ | ЦеныТоваров.Номенклатура |ПОМЕСТИТЬ Товары |ИЗ | &Товары КАК ЦеныТоваров |ГДЕ | ЦеныТоваров.ТипЦен = &ТипЦен |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Товары.Номенклатура.Код КАК Код, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, ""0"") КАК Цена |ИЗ Товары КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = &ТипЦен | И Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ Товары)) КАК ЦеныНоменклатурыСрезПоследних | ПО Товары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура"); Запрос.УстановитьПараметр("Дата" , ТекущаяДата()); Запрос.УстановитьПараметр("ТипЦен" , ТипЦенРетейл); Запрос.УстановитьПараметр("Товары" , Источник.Товары); |
|||
8
Ткачев
10.02.12
✎
14:23
|
(6)Сейчас посмотрю
|
|||
9
Живой Ископаемый
10.02.12
✎
14:25
|
не, если он независимый, тогда тока как (1)
|
|||
10
milan
10.02.12
✎
14:25
|
В подписке можно видеть то что запишется в свойстве Движеия.ТвойРегистр, с другой стороны документ распровели - тоже надо ловить, причем получится сложнее понять что именно поменялось ;) А если провели док потом удалили 10 строк, опять провели ???
|
|||
11
Dmitrii
гуру
10.02.12
✎
14:27
|
(0) >> Делал подписку ПриПроведении, ПриЗаписи, не выходит, цены в регистре есть только когда док уже был проведен, а при подписки на ПриПроведении и этого нет.
Вообще ни чего не понял... В подписке ПриПроведении Движения уже должны быть заполнены (если конечно движения делаются только в обработке проведения и нет других подписок ПриПроведении). Конечно наборы из Движений могут быть еще не записаны в базу (если их только принудительно не записали типа Движения.Хозрасчетный.Записать()), но и не надо их читать из базы - их через коллекцию Движения надо смотреть. |
|||
12
Живой Ископаемый
10.02.12
✎
14:28
|
2(11) у него похоже РС независимый...
|
|||
13
Ткачев
10.02.12
✎
14:29
|
(12)Подчинение регистратору
|
|||
14
Живой Ископаемый
10.02.12
✎
14:29
|
то есть он не учавствует в Движениях, записи там появляются через НаборЗаписей.. наверное.. я так себе навоображал. Потому что если я ошибся, тогда да, не понятно какая трудность у автора
|
|||
15
milan
10.02.12
✎
14:29
|
я бы использовал план обмена, там и по одной записи выгружать не надо и сразу видно - чего поменялось.
|
|||
16
Живой Ископаемый
10.02.12
✎
14:30
|
2(13) Тогда просто (7) удали и получай записи РС через Движения... елки.
|
|||
17
milan
10.02.12
✎
14:32
|
(16) Как обработать ситуацию создали док 100 строк, провели, потом открыли удалили 10 строк, провели, на 10 товаров будет неактуальная цена ?
|
|||
18
Живой Ископаемый
10.02.12
✎
14:33
|
2(17) что-что? не будет в движениях 100 строк, будет 90... перестаньте бредить
|
|||
19
milan
10.02.12
✎
14:34
|
(18) ну первый
|
|||
20
milan
10.02.12
✎
14:35
|
раз ты выгрузил цену на 100 товаров, потом из дока удалил 10 товаров, срез последних покажет тебе цену из предыдущего дока, а во внешней проге будут несуществующие цены
|
|||
21
milan
10.02.12
✎
14:36
|
закладывается приличная грабля ;) вчера только тема на хабре была по синхронизации каталога товаров с инетмагазином, не все там так радужно ;)
|
|||
22
Живой Ископаемый
10.02.12
✎
14:37
|
2(20)я понял... тогда внешняя прога тоже не должна забрать цены по одной а наборами с привязкой к регистрации
|
|||
23
Ткачев
10.02.12
✎
14:57
|
(17)Может подписку перед записью ?
Проверить что в базе и что таблице ? |
|||
24
Ткачев
10.02.12
✎
15:01
|
Вот так пока сделал, буду про Планы обмена читать.
Запрос = Новый Запрос(" |ВЫБРАТЬ | ЦеныТоваров.Номенклатура, | ЦеныТоваров.Цена |ПОМЕСТИТЬ Товары |ИЗ | &Товары КАК ЦеныТоваров |ГДЕ | ЦеныТоваров.ТипЦен = &ТипЦен |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Товары.Номенклатура.Код КАК Код, |ВЫБОР | КОГДА &Проведен И (ЦеныНоменклатурыСрезПоследних.Период < &ДатаДок | ИЛИ ЦеныНоменклатурыСрезПоследних.Период ЕСТЬ NULL) ТОГДА Товары.Цена | ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, ""0"") |КОНЕЦ КАК Цена |ИЗ Товары КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ТипЦен = &ТипЦен | И Номенклатура В (ВЫБРАТЬ Номенклатура ИЗ Товары)) КАК ЦеныНоменклатурыСрезПоследних | ПО Товары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура"); Запрос.УстановитьПараметр("Дата" , ТекущаяДата()); Запрос.УстановитьПараметр("Проведен", Источник.Проведен); Запрос.УстановитьПараметр("ДатаДок" , НачалоДня(Источник.Дата)); Запрос.УстановитьПараметр("ТипЦен" , ТипЦенРетейл); Запрос.УстановитьПараметр("Товары" , Источник.Товары); |
|||
25
Fragster
гуру
10.02.12
✎
15:55
|
на самом деле надо формировать подписку ПослеЗаписи, ведь если отвалится транзакция - файл будет сформирован а докуметна - не будет ;)
|
|||
26
milan
10.02.12
✎
16:31
|
(25) ПослеЗаписи тоже срабатывает до завершения транзакции, так что...
|
|||
27
Ткачев
14.02.12
✎
13:17
|
Можно сократить запрос, объединения и группировки по 2-м временным таблицам ?
Запрос = Новый Запрос(" |ВЫБРАТЬ | ТаблицаТоваров.Номенклатура |ПОМЕСТИТЬ СтараяТаблица |ИЗ | &ТаблицаТоваров КАК ТаблицаТоваров |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЦеныНоменклатуры.Номенклатура |ПОМЕСТИТЬ НоваяТаблица |ИЗ | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры |ГДЕ | ЦеныНоменклатуры.Регистратор = &Регистратор | И ЦеныНоменклатуры.ТипЦен = &ТипЦен |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НоваяТаблица.Номенклатура |ПОМЕСТИТЬ ОбщаяТаблица |ИЗ | НоваяТаблица КАК НоваяТаблица | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | СтараяТаблица.Номенклатура |ИЗ | СтараяТаблица КАК СтараяТаблица |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ОбщаяТаблица.Номенклатура |ПОМЕСТИТЬ ТаблицаДляЦен |ИЗ | ОбщаяТаблица КАК ОбщаяТаблица | |СГРУППИРОВАТЬ ПО | ОбщаяТаблица.Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаДляЦен.Номенклатура.Код КАК Код, | ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, ""0"") КАК Цена |ИЗ | ТаблицаДляЦен КАК ТаблицаДляЦен | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних( | &Дата, | ТипЦен = &ТипЦен | И Номенклатура В | (ВЫБРАТЬ | ТаблицаДляЦен.Номенклатура | ИЗ | ТаблицаДляЦен)) КАК ЦеныНоменклатурыСрезПоследних | ПО ТаблицаДляЦен.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура"); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |