Имя: Пароль:
1C
1С v8
Как значение из файла сравнить с значением перечисления?
,
0 AnyBaz
 
19.09.13
13:47
Суть вопроса такова:
    У нас есть загрузочный файл в котором есть колонка "Ставка НДС", чтобы ее записать в новый справочник, мы должны сравнить это значение (тип строка) с значением перечисления (тип перечисление), и в случае несовпадения записать значение из файла.
    В общем как строку перевести в перечисление?
Заранее спасибо.
1 Franchiser
 
гуру
19.09.13
13:50
Создай, например, соответсвие (представления и ссылки на перечисление) и затем сравнивай. Заполнить можно обходом метаданных.
2 cw014
 
19.09.13
13:52
Перечисления.СтавкиНДС[ПеременнаяСоСтрокойИдентификатора]
3 Franchiser
 
гуру
19.09.13
13:53
я думаю в файле у него нет идентификатора а просто значение ставки.
4 cw014
 
19.09.13
13:54
Тады ой
5 AnyBaz
 
19.09.13
13:55
Да, там каждому товару присвоено свое значение ставки НДС
6 MSII
 
19.09.13
13:57
(5) Ну и поступай как в (1) посоветовали, сделай соответствие, в ключах - значения перечисления, в значениях - числа (значения ставок).
7 AnyBaz
 
19.09.13
13:58
А можно как-то использовать цикл Если и предопределенное значение перечисления? и как-то, используя его сравнивать?
8 MSII
 
19.09.13
13:58
+(6) Т.е. наоборот, в ключах числа, в значениях - значения перечисления, конечно же.
9 Sabbath
 
19.09.13
13:59
(0) Если у тебя текст в файле соответствует синониму в конфе, то сделай соответствие. Получи запросом все значения и обойди в цикле, заполняя соответствие между синонимом и ссылкой через
<Значение>.Метаданные().Синоним
Ну и потом когда файл обходишь доставай по синониму перечисление. А если не соответствует, то вручную заполни соответствие
10 Franchiser
 
гуру
19.09.13
14:01
Код из Бухгалтерии:


Функция ПолучитьСтавкуНДСПеречислением(СтавкаНДС, ОбратнаяСтавка = Ложь)
    
    ЗначениеНДС = Неопределено;
    
    Если ТипЗнч(СтавкаНДС) = Тип("Строка") Тогда
        ПредставлениеСтавкиНДС = СтавкаНДС;
    ИначеЕсли ТипЗнч(СтавкаНДС) = Тип("Число") Тогда
        ПредставлениеСтавкиНДС = Строка(СтавкаНДС);
    Иначе // неправильный тип
        ПредставлениеСтавкиНДС = Неопределено;
    КонецЕсли;
    
    Если ПредставлениеСтавкиНДС = Неопределено ИЛИ ВРЕГ(ПредставлениеСтавкиНДС) = "БЕЗ НДС" Тогда
        ЗначениеНДС = Перечисления.СтавкиНДС.БезНДС;
        
    ИначеЕсли ПредставлениеСтавкиНДС = "0" ИЛИ ПредставлениеСтавкиНДС = "0%" Тогда
        ЗначениеНДС = Перечисления.СтавкиНДС.НДС0;
        
    ИначеЕсли Найти("10#0.1#0,1#0.10#0,10#10%", ПредставлениеСтавкиНДС) > 0 Тогда
        ЗначениеНДС = Перечисления.СтавкиНДС.НДС10;
        
    ИначеЕсли Найти("20#0.2#0,2#0.20#0,20#20%", ПредставлениеСтавкиНДС) > 0 Тогда
        ЗначениеНДС = Перечисления.СтавкиНДС.НДС20;
        
    ИначеЕсли Найти("18#0.18#0,18#0.18#0,18#18%", ПредставлениеСтавкиНДС) > 0 Тогда
        ЗначениеНДС = Перечисления.СтавкиНДС.НДС18;
        
    ИначеЕсли Найти("10/110#10% / 110%#10%/110%", ПредставлениеСтавкиНДС) > 0 Тогда
        ЗначениеНДС = Перечисления.СтавкиНДС.НДС10_110;
        
    ИначеЕсли Найти("18/118#18% / 118%#18%/118%", ПредставлениеСтавкиНДС) > 0 Тогда
        ЗначениеНДС = Перечисления.СтавкиНДС.НДС18_118;
        
    КонецЕсли;
    
    Возврат ЗначениеНДС;
    
КонецФункции
11 Sabbath
 
19.09.13
14:02
+(9) можно научить составляющих файл писать значение ставки как в 1С, тогда будет проще)
12 Sabbath
 
19.09.13
14:03
(10) нормально ктати, только автору может и не подойти, мы же файл не видели
13 AnyBaz
 
19.09.13
14:12
файл это выгрузка справочника номенклатуры из УТ 10 а мне надо его загрузить в УТ 11
14 Sabbath
 
19.09.13
14:16
(13) Тогда по идее синонимы должны совпадать (хотя это надо проверить, я с УТ не работаю вообще). А что корнвертацией данных нельзя?
15 Franchiser
 
гуру
19.09.13
14:18
(14) Судя по рейтингу, человек еще не знаком с КД
16 AnyBaz
 
19.09.13
14:27
я только начинаю свою деятельность в 1с, поэтому я мало чего знаю
17 Buster007
 
19.09.13
14:28
(16) в таком случае надо почитать книги.
18 AnyBaz
 
19.09.13
14:29
я прошла курсы для программистов
19 Franchiser
 
гуру
19.09.13
14:29
Анна Павловна, можете использовать функцию из 10.
Пишете так:
ПеречислениеИзФайла =ПолучитьСтавкуНДСПеречислением(ЗначениеСтавки);

Затем сравниваете с чем хотите.
20 AnyBaz
 
19.09.13
14:47
Спасибо) буду пробовать)
21 Sabbath
 
19.09.13
14:48
(16) Если прямо переносить весь справочник и они идентичны в УТ10 и УТ11, то конвертацией данных все просто. Надо немного разобраться, зато ничего писать не надо.
И еще у меня есть подозрение, что существует типовая обработка по загрузке справочников из УТ10 в УТ11, или просто правила обмена и универсальная обработка. Думаю, если найдешь, будет все быстрее и проще. Например, можно тут тему созать, чтобы помогли найти
22 AnyBaz
 
19.09.13
14:52
да я знаю, что есть загрузка справочников из файла, но она не подходит мне. Начальство сказало разработать свою. потому что она через ADO
23 Sabbath
 
19.09.13
15:06
24 Полотенчик
 
19.09.13
15:13
(18) этапять!
25 AnyBaz
 
19.09.13
15:14
ее нельзя вставить в область коллонтитула
26 AnyBaz
 
19.09.13
15:14
поэтому картинка только на 1ой странице
27 фросия
 
19.09.13
15:20
(25) )
28 Sabbath
 
19.09.13
15:21
(25) А почему надо именно колонтитула? Можно выводить сверху на каждой Просто проверять, когда меняется страница, так делают шапки и подвалы для всяких многостраничных таблиц. Я думаю, суть та же.
29 AnyBaz
 
19.09.13
15:24
возможно, но выводить на каждой странице я ставила, но ничего не изменялось, картинка также была на 1 странице и все
30 Sabbath
 
19.09.13
15:35
(29) Где-то косяк при выводе был, значит. А так это просто область макета с картинкой. Надо проверять, влезают ли выводимые области на страницу через метод таб документа ПроверитьВывод(). Когда не влезают, то вывыводить разделитель страниц (ВывестиГоризонтальныйРазделительСтраниц). И после этого выводить область с картинкой. Тогда будет наверху каждой страницы.
Посмотри в той же УТ (глобальным поиском по наименованию этих методов выше можно), где есть многостраничная печать каких-то документов, когда шапка выводится на каждой странице (или подвал), и возьми как пример.
31 AnyBaz
 
19.09.13
15:42
Спасибо) как это задание доделаю, тогда и попробую с картинкой, просто чтобы знать на будущее. А так я то задание уже сдала)
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn