|
v7: Периодический реквизит, который создается документом | ☑ | ||
---|---|---|---|---|
0
userMR3
27.01.14
✎
22:16
|
Выгружаю из другой базы цену, если она создана вручную, то все переносится нормально, если создана документом, то не переносит вообще, хотя значения в цикле видит. Как сделать запись без документа?
ПериодРекв = СоздатьОбъект("Периодический"); ПериодРекв.ИспользоватьОбъект(ИмяРекв, ТекЭлемент); ПериодРекв_ОЛЕ = БазаИсточник.CreateObject("Периодический"); ПериодРекв_ОЛЕ.ИспользоватьОбъект(ИмяРекв, ТекЭлемент_ОЛЕ); ПериодРекв_ОЛЕ.ОбратныйПорядок(1); ПериодРекв_ОЛЕ.ВыбратьЗначения(); Пока ПериодРекв_ОЛЕ.ПолучитьЗначение() = 1 Цикл ПериодРекв.Значение = ПериодРекв_ОЛЕ.Значение; ПериодРекв.ДатаЗнач = ПериодРекв_ОЛЕ.ДатаЗнач; //Сообщить(" рекв " + ИмяРекв +" - " + СокрЛП(ПериодРекв_ОЛЕ.Значение) + " :" + СокрЛП(ПериодРекв_ОЛЕ.ДатаЗнач)); ПериодРекв.Записать(); КонецЦикла; |
|||
1
userMR3
27.01.14
✎
22:17
|
Галочки Изменяется документами и Ручное изменение стоят.
|
|||
2
userMR3
27.01.14
✎
22:55
|
Должно же работать, что не так.
|
|||
3
КонецЦикла
27.01.14
✎
23:10
|
Насколько помню синтаксис другой
Установить... Продам СП (цы) |
|||
4
userMR3
27.01.14
✎
23:20
|
(3) Тоже самое, значения, которые внесены вручную перекидываются, а созданные документами - нет.
|
|||
5
КонецЦикла
27.01.14
✎
23:24
|
Ой, что-то я вообще не так прочитал...
Документ известен? Можно ВыбратьПоДоКументу() Вот не помню уже, ОЛЕ давно не юзал |
|||
6
userMR3
27.01.14
✎
23:27
|
(5) Документ известен в источнике, но его не будет в приемнике.
В цикле значения созданные документом фигурируют, но запись не проходит. |
|||
7
userMR3
27.01.14
✎
23:33
|
Нужно перенести всю историю реквизита.
|
|||
8
kot275
27.01.14
✎
23:36
|
ПериодРекв.Установить(ПериодРекв_ОЛЕ.ДатаЗнач, ПериодРекв_ОЛЕ.Значение);
ПериодРекв.Записать(); Как-то так должно быть в цикле. |
|||
9
userMR3
27.01.14
✎
23:40
|
ПериодРекв_ОЛЕ = БазаИсточник.CreateObject("Периодический");
ПериодРекв_ОЛЕ.ИспользоватьОбъект("ЦенаПокупки", СпрТовары_ОЛЕ.ТекущийЭлемент()); ПериодРекв_ОЛЕ.ОбратныйПорядок(1); ПериодРекв_ОЛЕ.ВыбратьЗначения(); Пока ПериодРекв_ОЛЕ.ПолучитьЗначение() = 1 Цикл СпрТовары.ЦенаПокупки.Установить(ПериодРекв_ОЛЕ.ДатаЗнач,ПериодРекв_ОЛЕ.Значение); //СпрТовары.Записать(); КонецЦикла; Я даже так пробовал, не создает запись. |
|||
10
kot275
27.01.14
✎
23:43
|
(9)Так не будет, //СпрТовары.Записать(); раскоментируй.
|
|||
11
GANR
27.01.14
✎
23:44
|
(0) 7.7? Она еще здесь? Сотрите ее!!!
|
|||
12
userMR3
27.01.14
✎
23:46
|
(10) Да уже пробовал, просто уже всю мисту перекопал, там писали, что установить() записывает без записать().
|
|||
13
acanta
27.01.14
✎
23:47
|
ТОлько УстановитьРеквизитСправочника в модуле документа без Записать() если мне не изменяет..
|
|||
14
kot275
27.01.14
✎
23:50
|
(10)Хм. А у тебя справочник цены подчинен справочнику товары? Может надо родителя привязывать?
|
|||
15
Voronve
27.01.14
✎
23:52
|
Установить(<?>,);
Синтаксис: Установить(<Дата>,<Значение>) Назначение: Установить значение периодического реквизита справочника на заданную дату. Параметры: <Дата> - выражение со значением требуемой даты; <Значение> - выражение, содержащее устанавливаемое значение периодического реквизита справочника. Замечание: Метод можно использовать только для периодических реквизитов справочника и если для справочника еще не применялся метод ИспользоватьДату. Метод можно использовать только для объектов-справочников, созданных функцией СоздатьОбъект. "... и если для справочника еще не применялся метод ИспользоватьДату ..." |
|||
16
userMR3
27.01.14
✎
23:53
|
МДАААА я нашел причину, дело не в том, что там документ фигурирует в истории, а в том 2 записи с одной датой и из двух он берет последнюю...
Как теперь быть? |
|||
17
Voronve
27.01.14
✎
23:54
|
Устанавливать документом.
|
|||
18
userMR3
27.01.14
✎
23:54
|
Нельзя в приемник кидать эти документы.
|
|||
19
Voronve
27.01.14
✎
23:55
|
в ручную одно значение на одну дату
|
|||
20
userMR3
27.01.14
✎
23:57
|
(19) Не понял.
|
|||
21
kot275
27.01.14
✎
23:58
|
(20)Период у тебя день.
|
|||
22
userMR3
28.01.14
✎
00:01
|
(21) Это меняется где-то?
|
|||
23
Voronve
28.01.14
✎
00:01
|
(20) Ты тащищь из обмена несколько значений на одну дату. В базе приемнике, нельзя установить несколько значений на одну дату без документа. Так как ты "Нельзя в приемник кидать эти документы" - то вариант только один, записывать значение периодики вручную. Если пишешь ручками периодику - то одно значение в один день.
Цены поставщиков хранить в периодическом реквизите можно, если поставка в один день от одного поставщика ... |
|||
24
userMR3
28.01.14
✎
00:07
|
Как мне поймать этот момент, когда на одну дату есть более одной записи?
|
|||
25
kot275
28.01.14
✎
00:09
|
(24)Лучше при выгрузке, через ТЗ.
|
|||
26
Voronve
28.01.14
✎
00:10
|
Не использовать СпрТовары.ЦенаПокупки.Установить(). Создавать объект периодический в базеприемнике, связывать с полем объекта и через выборку вперде ...
|
|||
27
Torquader
28.01.14
✎
00:16
|
А значение у нас какого типа ?
А то вы их так шустро из одной базы в другую переносите. |
|||
28
Voronve
28.01.14
✎
00:17
|
число у него
|
|||
29
Torquader
28.01.14
✎
00:18
|
(28) Хотя, цена должна быть числом, если не накосячили.
|
|||
30
Torquader
28.01.14
✎
00:18
|
Кстати, при выборе периодического рекомендуется явно проставить даты, а то без них не всегда выбирает.
|
|||
31
userMR3
28.01.14
✎
00:25
|
Сделал так, вроде нормально работает, слегка пришлось исказить информацию, но не думаю, что критично
ПерваяДата = ""; ПериодРекв = СоздатьОбъект("Периодический"); ПериодРекв.ИспользоватьОбъект(ИмяРекв, ТекЭлемент); ПериодРекв_ОЛЕ = БазаИсточник.CreateObject("Периодический"); ПериодРекв_ОЛЕ.ИспользоватьОбъект(ИмяРекв, ТекЭлемент_ОЛЕ); ПериодРекв_ОЛЕ.ОбратныйПорядок(1); ПериодРекв_ОЛЕ.ВыбратьЗначения(); Пока ПериодРекв_ОЛЕ.ПолучитьЗначение() = 1 Цикл Если ПустоеЗначение(ПериодРекв_ОЛЕ.Значение) = 1 Тогда Продолжить; КонецЕсли; Если ПерваяДата = ПериодРекв_ОЛЕ.ДатаЗнач Тогда ПериодРекв.ДатаЗнач = ПериодРекв_ОЛЕ.ДатаЗнач - 1; Иначе ПериодРекв.ДатаЗнач = ПериодРекв_ОЛЕ.ДатаЗнач; КонецЕсли; ПериодРекв.Значение = ПериодРекв_ОЛЕ.Значение; ПериодРекв.Записать(); ПерваяДата = ПериодРекв_ОЛЕ.ДатаЗнач; КонецЦикла; |
|||
32
userMR3
28.01.14
✎
00:27
|
(29) Да число.
(30) Не понял. |
|||
33
userMR3
28.01.14
✎
00:29
|
Короче там создают номенклатуру с пустой ценой, потом поступлением цена встает, думаю должно нормально работать.
|
|||
34
acanta
28.01.14
✎
00:30
|
ПериодРекв_ОЛЕ.ВыбратьЗначения(ДатаС,ДатаПо)
Если у мужа с женой было сегодня два раза, то один раз считается за вчера, а почему не за завтра? А нулевую цену зачем тащить в приемник? Может получиться что те вчера по 5, а сегодня бесплатно.. |
|||
35
userMR3
28.01.14
✎
00:35
|
(34) Это реплика на (31)?
|
|||
36
acanta
28.01.14
✎
00:39
|
(34)скорее на (33), номенклатуру создали рабочей датой с нулевой ценой за сегодня, а приход к примеру вчерашний и встанет она на вчера. Если в конфе нет обработки записи периодических реквизитов - периодика часто бывает забита такими нулями.
|
|||
37
userMR3
28.01.14
✎
00:42
|
(36) Да, так и есть, в (31) эти нули отсекутся, условие с датой лучше уберу.
|
|||
38
Torquader
30.01.14
✎
15:45
|
(36) Иногда нули тоже оправданы - если мы хотим явно сказать, что с сегодняшнего момента это значение не задано, так как иначе останется прошлое значение.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |