[ТЕМА ЗАКРЫТА]
03.02.2012 13:37
Офигевший
 
Во внешнюю системы через XML-протокол импортируются накладные. Накладные создаются в ЦО и магазинах. Внешняя система их изменяет и отправляет обратно, для их заливки в ЦО, нужны статичный Bornin, т.к. внешней системе его хранить негде.
Пробовал просто забить 0, не помогло :( Есть ещё предложения?
Версия СМ 1.028.2
03.02.2012 13:39
OlegON
 
так 16 нолей не подходят? или 32?
03.02.2012 14:00
Офигевший
 
и 16 и 32, возможно их не прямо 0, а по функции какой-то генерировать надо.
03.02.2012 14:34
Mtirt
 
Какое сообщение об ошибке?
А если вообще не заполнять Bornin ? Просто не указывать этот тэг?
03.02.2012 14:39
Офигевший
 
Что целиком удалить из файла, что 0, рукается на констрейн Bornin.
Вариант удалить целиком их схемы, не подойдет в силу того, что внешняя система накладные на перемещение сама генерирует, и без Bornin в базу не зальется.
03.02.2012 14:45
baggio
 
а что мешает вбить bornin какойнить бызы?
или созать левую прогнать генератором и выдернуть оттудава bornin?
03.02.2012 14:47
Mtirt
 
Я тут глянула свои XML-файлики. Нету там совсем Bornin. И оно работает...
03.02.2012 15:07
Офигевший
 
Нету в файликах или в схеме?
03.02.2012 15:24
OlegON
 
Дабы не доказывать на пальцах...

Код:
SQL> select distinct bornin from supermag.smcard;

BORNIN
--------------------------------
3B5DA96C2CF545469B8582C31677DDDE

SQL> select bornin from supermag.smcard where article='0';

BORNIN
--------------------------------
3B5DA96C2CF545469B8582C31677DDDE

SQL> select length(bornin)from supermag.smcard where article='0';

LENGTH(BORNIN)
--------------
            32

SQL> update supermag.smcard set bornin='00000000000000000000000000000000' where article='0';
update supermag.smcard set bornin='00000000000000000000000000000000' where article='0'
                                          *
ERROR at line 1:
ORA-20102: Попытка изменить код базы происхождения артикула ORA-06512: at "SUPERMAG.CORE", line 323
ORA-06512: at "SUPERMAG.SMCARDFIXATTR", line 32
ORA-04088: error during execution of trigger 'SUPERMAG.SMCARDFIXATTR'

SQL> alter trigger SUPERMAG.SMCARDFIXATTR disable;

Trigger altered.

SQL> update supermag.smcard set bornin='00000000000000000000000000000000' where article='0';

1 row updated.

SQL> commit;

Commit complete.

SQL> alter trigger SUPERMAG.SMCARDFIXATTR enable;

Trigger altered.

SQL>
03.02.2012 15:34
Mtirt
 
Цитата:
Офигевший Нету в файликах или в схеме?
В файликах нету, в схеме есть, явно в схеме не задан.
04.02.2012 19:22
mighty
 
Попробуй так:
1) Создай фиктивную накладную в офисе в черновике
2) Разошли её в XML (через XML обмен)
Во входной каталоге увидишь XML пакет внутри котрого будет BornIn нужном тебе формате, его и подставляй в свои электронные накладные. Фишка в том что вXML-обмене формат utf-8 и BornIn в этом формате немного по другому выглядит))
06.02.2012 07:58
CrazyWolf
 
Странно, у меня как и у Mtirt все работает и без указания этого тега, причем оригинальные схемы я не трогал, но вот в свое время писал вот такое, может пригодится
Код:
select UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.Base64_ENCODE(Core.GetDbId)) as bornin from dual
какая то регулярка не позволила вставить код функции для 1с ругаясь на нарушение правил :(
08.02.2012 14:45
Офигевший
 
Есть подозрение, что СМ, не обращает внимание при импорте на схему и что в ней указано.
Mtirt или CrazyWolf, можете выложить строку Bornin со значением (где должны быть 0) из самого файла, который импортируете в СМ.

Добавлено через 1 минуту 44 секунды
Цитата:
CrazyWolf Странно, у меня как и у Mtirt все работает и без указания этого тега, причем оригинальные схемы я не трогал, но вот в свое время писал вот такое, может пригодится
Код:
select UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.Base64_ENCODE(Core.GetDbId)) as bornin from dual
какая то регулярка не позволила вставить код функции для 1с ругаясь на нарушение правил :(
А куда ты это писал?
08.02.2012 14:45
Mtirt
 
Так нет там такой строки.
08.02.2012 14:59
Офигевший
 
А версия СМ какая?
08.02.2012 15:01
Mtirt
 
Цитата:
Офигевший А версия СМ какая?
1.028.2, правда схемы от 25 версии...
08.02.2012 15:05
Офигевший
 
Интересный вариант.. А можешь схему (шаблон) накладной на перемещение выложить куда-нибудь?
Или выслать Олегу, он мне перекинет.
08.02.2012 16:10
akonev
 
Цитата:
Офигевший ...
А куда ты это писал?
в sqlplus это можно написать. и получить bornin в том виде, который скушает почтовик.

или так для нуля:
Код:
select UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.Base64_ENCODE('0')) as bornin from dual
получится на выходе AA==

то есть тебе надо пихать в xml
<BORNIN>AA==</BORNIN>
08.02.2012 16:24
Mtirt
 
Схема накладной на перемещение и пример xml-файла.схема.zip
09.02.2012 07:09
CrazyWolf
 
ЕМНИП там смысл такой, если ты создаешь новый документ, то bornin можно в XML пакете просто не указывать.
Если же ты хочешь модифицировать имеющийся то bornin должен быть либо от той БД куда шлется пакет, либо от старшей БД (можно получить той строкой которую я проводил).

Если нужна 1с-ная функция получения bornin'a для 1с пиши, скину на мыло, в форум вставить как писал выше не получается.
09.02.2012 15:38
Офигевший
 
Вариант Андрея полностью устроил. Всем большое спасибо за помощь.
22.07.2012 09:50
OlegON
 
bornin в 1С от CrazyWolf:
Код:
// получить BORNIN заказа
Функция ПолучитьBORNINДокумента(НомерЗаказа, МестоХранения)

        BORNIN = "";

        Соединение                                              = ЗапросыКСуперМаг.УстановитьСоединение(СокрЛП(МестоХранения.ИмяБД) );
        Command                                                 = Новый COMОбъект("ADODB.Command");
        Command.ActiveConnection                = Соединение;
        Command.CommandText = "select UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.Base64_ENCODE(Core.GetDbId)) as bornin from dual";
        Command.Parameters.Append(Command.CreateParameter(":id", 200, 1, 15, СокрЛП(НомерЗаказа) ) );
        Command.Prepared                                = True;
        Попытка
                RecordSet                                       = Command.Execute();
                BORNIN                                          = RecordSet.Fields("bornin").Value;
        Исключение
                ОбщиеФункции.ЗаписатьВЖурнал("ПересчетАвтозаказа", "Ошибка", "Невозможно получить идентефикатор базы." + ОписаниеОшибки());
        КонецПопытки;

        // закрываем соединение
        RecordSet       = Неопределено;
        Command         = Неопределено;
        Соединение.Close();
        Соединение      = Неопределено;

        Возврат СокрЛП(BORNIN);

КонецФункции

где

Функция УстановитьСоединение (ИмяБД) Экспорт

        Соединение = Новый COMОбъект("ADODB.Connection");
    СтрокаСоединения = "Provider=OraOLEDB.Oracle;Data Source=" + ИмяБД + ";User ID = supermag;Password = " + Пароль + "; Unicode=True;";
        Попытка
        Соединение.Open(СтрокаСоединения);
        Исключение
                Соединение = Неопределено;
        КонецПопытки;

        Возврат Соединение;

КонецФункции
Опции темы


Часовой пояс GMT +3, время: 23:28.

 

Форум сделан на основе vBulletin®
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.