Дано:
В восьмерке читаем документ «РеализацияТоваровУслуг» у которого есть реквизит «СуммаВключаетНДС» типа булево и нам необходимо превратить его в семерочный СуммаВклНДС тип число (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}»
Пользуемся этим в семерке, делая обратное преобразование. 🙂
Конечно же, я не сам дошел до этого.. Где-то один раз на форумах видел.. по-моему, на мисте. Но больше не встречал нигде.
Решил донести в массы. Надеюсь, что не открыл Америки ))
Не судите строго. За плюсы, если заслужил — «респекты!»
К чему этот велосипед, нельзя просто написать
?
Или (если проверка на ложь)
Уж куда проще и понятнее
Или (если проверка на ложь)
согласен
нашел в справке по встроенному языку 7.7
Сдается мне, что для данного примера правильнее будет так:
документ77.СуммаВклНДС = Число(Сред(СоединениеСбАЗОЙ8.ОбъектРеализацияТоваровУслуг1С8.СуммаВключаетНДС)8,1);
Пардон, вечно запятые забываю:
документ77.СуммаВклНДС = Число(Сред(СоединениеСбАЗОЙ8.ОбъектРеализацияТоваровУслуг1С8.СуммаВключаетНДС),8,1);
(6)С чего ты взял, что это вдруг заработает? Может нужно где-то ЗначениеВстрокуВнутр использовать?
Согласен, конечно.