|   |   | 
| 
 | Обмен базами через COM, истина не рядом.... | ☑ | ||
|---|---|---|---|---|
| 0
    
        NaRaz 08.12.20✎ 09:56 | 
        Всем привет. 
 Вопрос такой, есть две базы, на одном сервере, обмениваются данными через обработку, которая по COM затягивает данные. В реквизит ТЧ документа подставляется нулевое значение, а в базе источнике нулевого значения нет. НоваяСтрока.Количество = ВыборкаТовары.Количество; Выборка - строка выборки из источника, в загружаемом документе иногда, в рандомных строках и документах прилетают значения = 0, но в источнике нуля нет. Кто-нибудь сталкивался? | |||
| 1
    
        Garykom гуру 08.12.20✎ 09:57 | 
        com is deprecated     | |||
| 2
    
        NaRaz 08.12.20✎ 10:00 | 
        (1) Спасибо бро, как мы оба понимаем, что изменить технологию мы не можем.     | |||
| 3
    
        NaRaz 08.12.20✎ 10:02 | 
        Если дописать условие:
 НоваяСтрока.Количество = ВыборкаТовары.Количество; Если НоваяСтрока.Количество = 0 Тогда Конецесли; И в условии поставить точку останова, то ВыборкаТовары.Количество <> 0, там есть значение, но в НоваяСтрока.Количество будет установлен 0 | |||
| 4
    
        lEvGl гуру 08.12.20✎ 10:04 | 
        а какое там значение?     | |||
| 5
    
        Megas 08.12.20✎ 10:04 | 
        (3) 
 Если ВыборкаТовары.Количество <> 0 может ВыборкаТовары.Количество тип не тот? | |||
| 6
    
        lEvGl гуру 08.12.20✎ 10:05 | 
        пустая строка, неопределено, нул или еще что     | |||
| 7
    
        NaRaz 08.12.20✎ 10:08 | 
        (4) (5) (6) В момент выполнения строки хз какое значение, т.е. 
 Когда выполняется строка кода: НоваяСтрока.Количество = ВыборкаТовары.Количество; в значение НоваяСтрока.Количествов итоге прилетает 0, какое там сидит значение хз. Если я делаю точку останова на одну строку ниже, то вижу, что ВыборкаТовары.Количество = 3, тип число, и количество видно. Но получается, что в реквизите документа стоит 0, а в запросе уже число сидит. | |||
| 8
    
        H A D G E H O G s 08.12.20✎ 10:08 | 
        (3) Ну поставь точку останова с условием ТипЗнч(ВыборкаТовары.Количество)<>Тип("Число")     | |||
| 9
    
        Kigo_Kigo 08.12.20✎ 10:09 | 
        Что то мне подсказывает что автор коэффициент не проставляет, и при записи у него коэффициент*количество = 0     | |||
| 10
    
        hhhh 08.12.20✎ 10:09 | 
        (7) чего-то вы нас путаете. Реквизит называется КоличествоУпаковок. Вы его копируете или нет?     | |||
| 11
    
        Serg_1960 08.12.20✎ 10:10 | 
        Не исключена вероятность проблеме, аналогичной ошибке в ТИИ - "Проверка логической целостности... Значение должно быть NULL"     | |||
| 12
    
        NaRaz 08.12.20✎ 10:12 | 
        (9) (10) нет там никакого количество упаковок. Как скрин добавить на этот форум? 
 (11) В какой базе ТИИ делать в источнике? | |||
| 13
    
        Kigo_Kigo 08.12.20✎ 10:14 | 
        (12) так коэффициент привязан к Единице измерения     | |||
| 14
    
        Serg_1960 08.12.20✎ 10:14 | 
        (12) Ещё рано делать ТИИ :) Проверь тип того значение, что тебе прилетает по COM.     | |||
| 15
    
        Kigo_Kigo 08.12.20✎ 10:15 | 
        при записи или проведении скорее всего есть проверка/пересчет ТЧ, где количество сбрасывается в ноль     | |||
| 16
    
        NaRaz 08.12.20✎ 10:16 | 
        (14) (15) не фига там нет, говорю, из запроса данные выборки подставляются в документ. Вся эта фигня до записи и проведения уже в доке будет, т.е. ТЧ товары содержит 0 значение до записи     | |||
| 17
    
        arsik гуру 08.12.20✎ 10:17 | 
        (16) Кривой код. Покажи кусок где ТЧ заполняется     | |||
| 18
    
        NaRaz 08.12.20✎ 10:17 | 
        (8) Точка останова не сработала: 
 НоваяСтрока.Количество = ВыборкаТовары.Количество; Если НоваяСтрока.Количество = 0 Тогда Перем = 123; Конецесли; Т.е. ВыборкаТовары.Количество = 3, но в условие я зашел, остановиться смог только на точке останова в условии. | |||
| 19
    
        Serg_1960 08.12.20✎ 10:18 | 
        (13) Нет. Традиционно коэффициент копируется и сохраняется в документе - он сознательно отвязывается от единицы измерения.     | |||
| 20
    
        Serg_1960 08.12.20✎ 10:24 | 
        (16) Меня не интересует какое значение присваивается в таблице - меня интересует исходное значение. "Нифига там нет" - Вы можете думать что хотите, но у "нифига" есть тип значения. Озвучьте его.     | |||
| 21
    
        Kigo_Kigo 08.12.20✎ 10:33 | 
        (19) Правильно, при выборе значения Единица- она записывается в поле коэффициент, 
 ТС показывай уже свой код | |||
| 22
    
        lEvGl гуру 08.12.20✎ 10:36 | 
        (21) код кодушка кодило     | |||
| 23
    
        NaRaz 08.12.20✎ 10:37 | 
        ЗапросТовары = Соединение.NewObject("Query");
 ЗапросТовары.SetParameter("Ссылка", ТекущийДокумент); ЗапросТовары.Text = "ВЫБРАТЬ | РеализацияТоваровТовары.Номенклатура, | РеализацияТоваровТовары.Количество |ИЗ | Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары |ГДЕ | РеализацияТоваровТовары.Ссылка = &Ссылка"; РезультатТовары = ЗапросТовары.Выполнить(); ВыборкаТовары = РезультатТовары.Выбрать(); Пока ВыборкаТовары.Следующий() Цикл НоваяСтрока = ОбДокумент.Товары.Добавить(); НоваяСтрока.Количество = ВыборкаТовары.Количество; Если НоваяСтрока.Количество = 0 Тогда Конецесли; Конеццикла; Если сделать ЗапросТовары.Выполнить().Выгрузить(), то видна ТЗ. с нормальной суммой НДС, везде заполнена. | |||
| 24
    
        lEvGl гуру 08.12.20✎ 10:44 | 
        НаРазДва
 какой ндс, где там такое? проблема в конкретном коде, сначала посмотрите отладчиком значение ВыборкаТовары.Количество, потом НоваяСтрока.Количество, если все ок, а в результате 0, значит где то подменяется - при записи, проведении, подписках на событие мб, а может вы просто документ с изменениями забыли записать | |||
| 25
    
        Hmster 08.12.20✎ 10:45 | 
        Если НоваяСтрока.Количество = 0 Тогда
 Сообщить("-"+НоваяСтрока.Количество+"-"+ВыборкаТовары.Количество"-"+ТипЗнч(НоваяСтрока.Количество)+"-"+ТипЗнч(ВыборкаТовары.Количество)); Конецесли; А так что дает? | |||
| 26
    
        lEvGl гуру 08.12.20✎ 10:55 | 
        +(24) а может сами ниже по тексту и меняете/пересчитываете     | |||
| 27
    
        NaRaz 08.12.20✎ 10:55 | 
        (24) Проблема есть, но не в коде точно, ведь если я два раза документ загружу, то проблемы не будет, а если выгружу за период, то может быть 3 документа с косяком, может быть десять, а может не быть, при условии, что один и тот же период. Прекратите флудить, и важничать. 
 Лучше бы вы рассказали, куда помещается результат запроса, и как он считывается, у меня вообще предположение, что надо перезагружать агента 1с. | |||
| 28
    
        NaRaz 08.12.20✎ 10:57 | 
        (25) Во первых у вас ошибка тут синтаксическая, но программа выдаст: 
 -0-5-Число-Число | |||
| 29
    
        NaRaz 08.12.20✎ 10:59 | 
        И да, обработка внешняя, косячит у всех пользователей, у всех косячит по своему.     | |||
| 30
    
        hhhh 08.12.20✎ 11:04 | 
        (29) конфигурации какие?     | |||
| 31
    
        NaRaz 08.12.20✎ 11:07 | 
        (30) УТ10.3/БП3.0, обе серверные, на одном сервере лежат.     | |||
| 32
    
        arsik гуру 08.12.20✎ 11:09 | 
        (31) Сделай так 
 времКоличество = ВыборкаТовары.Количество; НоваяСтрока.Количество = времКоличество; | |||
| 33
    
        skafandr 08.12.20✎ 11:16 | 
        (28) выдаст или выдает? Вставьте вывод и проверьте
 И да .... Вам люди пытаются помочь а вы их строите | |||
| 34
    
        NaRaz 08.12.20✎ 11:20 | 
        (33) выдает     | |||
| 35
    
        skafandr 08.12.20✎ 11:25 | 
        (34) реально в тексте что вы привели в (23) или что-то там еще есть ? Сказка какая-то странная, так не бывает.
 Вставьте еще из (32) с выводом времКоличество | |||
| 36
    
        Serg_1960 08.12.20✎ 11:26 | 
        (27) "Прекратите флудить, и важничать." - как только прекратите темнить и кормить объедками (23) вместо рабочего кода. К этому куску текста больше вопросов, чем ответов :( Если Вас послушать в (28), то создаётся иллюзия работы обработчика ТоварыКоличествоПриИзменении формы :((
 PS: вышел с ветки, громко хлопнув дверью. | |||
| 37
    
        hhhh 08.12.20✎ 11:28 | 
        (34) попробуйте
 НоваяСтрока2 = ОбДокумент.Товары.Добавить(); НоваяСтрока2.Количество = ВыборкаТовары.Количество; Если НоваяСтрока2.Количество = 0 Тогда Конецесли; и еще НоваяСтрока.Количество = ВыборкаТовары.Количество; НоваяСтрока.Количество = ВыборкаТовары.Количество; | |||
| 38
    
        Волшебник 08.12.20✎ 11:36 | 
        Если типы не совпадают, то будет ноль     | |||
| 39
    
        NaRaz 08.12.20✎ 11:38 | 
        Com может быть не доступен в какой то момент времени? А потом снова начать отвечать? 
 (37) Идея, сейчас попробую | |||
| 40
    
        NaRaz 08.12.20✎ 11:39 | 
        (36) Ой гляди задел. Спросил то чего не знает. Не обижайся, я просто спросил     | |||
| 41
    
        Hmster 08.12.20✎ 11:44 | 
        усложним задачу
 Если НоваяСтрока.Количество = 0 Тогда Сообщить("1-"+НоваяСтрока.Количество+"-"+ВыборкаТовары.Количество"-"+ТипЗнч(НоваяСтрока.Количество)+"-"+ТипЗнч(ВыборкаТовары.Количество)); НоваяСтрока.Количество = ВыборкаТовары.Количество; Сообщить("2-"+НоваяСтрока.Количество+"-"+ВыборкаТовары.Количество"-"+ТипЗнч(НоваяСтрока.Количество)+"-"+ТипЗнч(ВыборкаТовары.Количество)); Конецесли; второй раз проскакивает? или так же 0 ? | |||
| 42
    
        NaRaz 08.12.20✎ 11:48 | 
        (41) Минуту.     | |||
| 43
    
        Hmster 08.12.20✎ 11:49 | 
        (39) ком вместо 3 может вернуть 3.000000000001 или 2.9999999999999     | |||
| 44
    
        NaRaz 08.12.20✎ 11:52 | 
        (43) Ясно, спасибо. 
 В общем отработало вот что: ЗапросТовары = Соединение.NewObject("Query"); ЗапросТовары.SetParameter("Ссылка", ТекущийДокумент); ЗапросТовары.Text = "ВЫБРАТЬ | РеализацияТоваровТовары.Номенклатура, | РеализацияТоваровТовары.Количество |ИЗ | Документ.РеализацияТоваров.Товары КАК РеализацияТоваровТовары |ГДЕ | РеализацияТоваровТовары.Ссылка = &Ссылка"; РезультатТовары = ЗапросТовары.Выполнить(); ВыборкаТовары = РезультатТовары.Выбрать(); Пока ВыборкаТовары.Следующий() Цикл НоваяСтрока = ОбДокумент.Товары.Добавить(); НоваяСтрока.Количество = ВыборкаТовары.Количество; Если НоваяСтрока.Количество = 0 Тогда НоваяСтрока.Количество = ВыборкаТовары.Количество; Конецесли; Конеццикла; Теперь вопрос, почему? | |||
| 45
    
        NaRaz 08.12.20✎ 11:54 | 
        Но то, что оно отработало это уже радует. Спасибо всем за поддержку, и тому за дрерью - респект. 
 Но теперь надо поговорить, об (44) КАК ТАК? | |||
| 46
    
        skafandr 08.12.20✎ 11:58 | 
        Результат (41) покажите     | |||
| 47
    
        NaRaz 08.12.20✎ 11:59 | 
        (46) Момент. Сейчас загрузка идет     | |||
| 48
    
        Garykom гуру 08.12.20✎ 12:00 | 
        (45) см (1)
 в будущем еще и не такие приколы могут быть, по сути ты паузу добавил | |||
| 49
    
        NaRaz 08.12.20✎ 12:05 | 
        (48) У меня была мысль вчера перед загрузкой ввалить цикл от 1 до 1000 перед добавлением строки, если в выборке какая то фигня сидит, но я не смог выцепить значение кривое из выборки, а для всех документов мне не позволила сделать моя совесть     | |||
| 50
    
        skafandr 08.12.20✎ 12:05 | 
        (48) Ну не надо ужасов только нагонять. У меня куча обработок 7.7 и 8 в самых разных сочетаниях - все работает.     | |||
| 51
    
        NaRaz 08.12.20✎ 12:15 | 
        (41) 
 1-0-2 718-Число-Число 2-2 718-2 718-Число-Число | |||
| 52
    
        NaRaz 08.12.20✎ 12:19 | 
        Теперь вопрос? Почему? И что делать если с другими полями такая фигня будет? Ведь может отваливаться по идеи любое поле, количество, сумма, или цена, как быть? Проверять на заполненность поля простых типов и повторно пытаться их заполнить?     | |||
| 53
    
        hhhh 08.12.20✎ 12:35 | 
        (52) скорее всего какая-то хренотень находится у тебя справа на строке
 НоваяСтрока = ОбДокумент.Товары.Добавить(); правее точки с запятой. | |||
| 54
    
        Garykom гуру 08.12.20✎ 12:39 | 
        (50) пока не приходишь и не пытаешься это запустить на чужом компе/серваке     | |||
| 55
    
        NaRaz 08.12.20✎ 12:57 | 
        (53) Тогда бы в документе всегда так было, а тут говорю второй раз документ прогрузил и нормально, на третий опять может сломаться     | |||
| 56
    
        NaRaz 08.12.20✎ 13:01 | 
        (53) НО справа никакого дерьма нет, слава богу, но это вообще была бы дичь. Я не додумался даже что можно справа писать что то     | |||
| 57
    
        NaRaz 08.12.20✎ 13:19 | 
        Ну что? Все? А поговорить?     | |||
| 58
    
        lEvGl гуру 08.12.20✎ 13:25 | 
        а что говорить, такой косяк выявляется отладчиком быстрее, чем говорить, было что то аналогичное когда то, решения не помню, наверно логику по-другому делал     | |||
| 59
    
        Галахад гуру 08.12.20✎ 13:39 | 
        Интересно, а если результат запроса в табличку, и табличку читать, ситуация (0) повторяется?     | |||
| 60
    
        Йохохо 08.12.20✎ 13:43 | 
        (59) вероятно будет ТЗ.Количество() = 0, но не раз в месяц, а раз в год     | |||
| 61
    
        Галахад гуру 08.12.20✎ 13:45 | 
        (60) Ну, ТС может проверить. Интересно же.     | |||
| 62
    
        Hmster 08.12.20✎ 13:46 | 
        А если попробовать данные толкать, а не тянуть?     | |||
| 63
    
        NaRaz 08.12.20✎ 14:27 | 
        (59) Да повторяется.     | |||
| 64
    
        NaRaz 08.12.20✎ 14:31 | 
        (60) Нет, тз с записями, и даже сделал через НайтиСтроки(), что бы нормально было, но пришлось все таки сделать в самом начале цикл, от 0 до 5, что бы строка "очухалась"     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |