Хитрость. Использование БУЛЕВО при OLE обмене/подключении из 7.7 к 8

Как известно, при OLE обмене доступны только типы СТРОКА, ЧИСЛО, ДАТА. А вот БУЛЕВО (ИСТИНА, ЛОЖЬ) использовать при подключении из 7.7 к 8 не получается. Как же быть? Есть хитрость, как использовать тип булево в семерке при обмене с 1С8! 🙂

Дано:

В восьмерке читаем документ «РеализацияТоваровУслуг» у которого есть реквизит «СуммаВключаетНДС» типа булево и нам необходимо превратить его в семерочный СуммаВклНДС тип число (1 или 0). Например:

Если ОбъектРеализацияТоваровУслуг1С8.СуммаВключаетНДС = истина ….


— так не прокатит, в семерке нет понятия «истина».

Как выкрутился я:

В 77 завел две переменные:

Перем ИСТИНА_8
Перем ЛОЖЬ_8
ИСТИНА_8 = СоединениеСбАЗОЙ8.ЗначениеИзСтрокиВнутр(«{«»B»»,1}»)
ЛОЖЬ_8 = СоединениеСбАЗОЙ8.ЗначениеИзСтрокиВнутр(«{«»B»»,0}»)

Теперь в 7.7 есть булево! Теперь можно делать так:

Если ОбъектРеализацияТоваровУслуг1С8.СуммаВключаетНДС = истина_8 Тогда
   
Документ77.СуммаВклНДС = 1;
Иначе
   
Документ77.СуммаВклНДС=0
КонецЕсли;

P.S.

Если в восьмерке выполнить код «ЗначениеВстрокуВнутр(Истина)», то строковое значение будет={«B»,1}»
Аналогично узнаем строковый «аналог» ЛОЖЬ = 
{«B»,0}»
Пользуемся этим в семерке, делая обратное преобразование. 🙂

 

Конечно же, я не сам дошел до этого.. Где-то один раз на форумах видел.. по-моему, на мисте. Но больше не встречал нигде.
Решил донести в массы. Надеюсь, что не открыл Америки ))
Не судите строго. За плюсы, если заслужил — «респекты!» 

8 Comments

  1. salexdv

    К чему этот велосипед, нельзя просто написать

    Если ОбъектРеализацияТоваровУслуг1С8.СуммаВключаетНДС = 1 Тогда

    ?

    Reply
  2. salexdv

    Или (если проверка на ложь)

    Если ОбъектРеализацияТоваровУслуг1С8.СуммаВключаетНДС <> 1 (=0) Тогда 

    Уж куда проще и понятнее

    Reply
  3. TrinitronOTV
    Alxd пишет:

    Или (если проверка на ложь)

    согласен

    Reply
  4. demon_infernal

    нашел в справке по встроенному языку 7.7

    В OLE Automation TRUE и FALSE имеют соответственно значе­ния: -1 (минус единица) и 0.
    Reply
  5. nicklson

    Сдается мне, что для данного примера правильнее будет так:

    документ77.СуммаВклНДС = Число(Сред(СоединениеСбАЗОЙ8.ОбъектРеализацияТоваровУслуг1С8.СуммаВключаетНДС)8,1);

    Reply
  6. nicklson

    Пардон, вечно запятые забываю:

    документ77.СуммаВклНДС = Число(Сред(СоединениеСбАЗОЙ8.ОбъектРеализацияТоваровУслуг1С8.СуммаВключаетНДС),8,1);

    Reply
  7. alon

    (6)С чего ты взял, что это вдруг заработает? Может нужно где-то ЗначениеВстрокуВнутр использовать?

    Reply
  8. nicklson

    Согласен, конечно.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *