Имя: Пароль:
1C
1С v8
Перебор строк массива, с условием элемента
,
0 anisa8310
 
14.12.12
13:38
1С:Предприятие 8.2 (8.2.16.368)
Бухгалтерия предприятия, редакция 2.0 (2.0.41.4)
Загрузку исполняю...вот код:
Услуги = НовыйДокумент.Услуги.Добавить();        
   
   Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("КодФиделио",СтрЗаменить(Массив[5],Символ(34),""));        
   Услуги.Номенклатура=Номенклатура.Ссылка;
   Услуги.Транзакция = Массив[2];
   Услуги.Цена= Массив[11];
   Услуги.Количество= Массив[12];
   Услуги.Сумма = Массив[12]*Массив[11];
   Услуги.Гость = СтрЗаменить(Массив[24],Символ(34),"");
   Услуги.НомерПостоянногоСчета = СтрЗаменить(Массив[33],Символ(34),"");
   Услуги.НомерЧека = СтрЗаменить(Массив[38],Символ(34),"");
   Услуги.Субконто=Номенклатура.НоменклатурнаяГруппа;
   Услуги.КодФиделио= Массив[5];
   
УСЛОВИЯ ТАКОВЫ:


Если СтрЗаменить(Массив[5],Символ(34),"")<>"1" и СтрЗаменить (Массив[11], Символ(34),"")<>"0"  тогда
              Если  СтрЗаменить(Массив[5],Символ(34),"")<= "204" и СтрЗаменить (Массив[11], Символ(34),"")<>"0" тогда
, теперь для элемента нужно условия ставить например больше206 меньше или равно 219 - как это в 1с прописывать? -значение между ..
1 ДенисЧ
 
14.12.12
13:39
(Значение > 1111) И (Значение < 2222)
2 anisa8310
 
14.12.12
14:12
(1)Спасибо!
3 НЕА123
 
14.12.12
14:14
?(Значение>206, Значение <= 219, Ложь)
4 Wobland
 
14.12.12
14:16
(3) а прикольно
5 Mort
 
14.12.12
14:16
Жуть какая.


Писать в коде Массив[<КонстантаЧисло>] все равно что НайтиПоНаименованию(<КонстантаСтрока>)
6 kiruha
 
14.12.12
14:23
(0)
Отличный код
Никто тебя не заменит - фирма будет дорожить твоим присутствием
7 anisa8310
 
14.12.12
14:34
(6)не поняла что за подвох?
8 anisa8310
 
14.12.12
14:35
Код услуги так хочу чтобы дальше справлялись самостоятельно понимали что если в таком то диапазоне-тогда питание, в другом диапазоне-значит проживание, в третьем диапозоне-там ещё кому реализацию сформировать..там кодов тьма..
9 DrunkAnimal
 
14.12.12
14:42
опиши еще дополнительно структуру, которая будет описывать соответствие индекса в массиве и семантики значения в соответствующей позиции
10 НЕА123
 
14.12.12
14:44
(('0001-01-01-0000'+206)-Значение) -(('0001-01-01-0000'+Значение)-219)
11 НЕА123
 
14.12.12
14:45
3

   
(('0001-01-01-0000'+206)-Значение) -(('0001-01-01-0000'+Значение)-219) = 0
12 Wobland
 
14.12.12
14:46
(10) (11) ещё пару раз, и ты вызовешь сатану
13 НЕА123
 
14.12.12
14:47
(12)
неа.
хоть и пятница, но 13 уже вера было.
14 НЕА123
 
14.12.12
14:48
*вчера
15 anisa8310
 
14.12.12
14:49
(11)не поняла....но попробую все варианты-добиваюсь быстрого обхода ..в файле 1000 строк..и все в разброс..коды услуг разбросаны по диапазонам..-менять их уже нельзя в исходной системе..Дорогие мистеры спасибо всем от всей души!!!!!!
16 hhhh
 
14.12.12
14:51
у вас там строки или числа?
17 НЕА123
 
14.12.12
14:51
(11)
+
ошибка. 206 тоже попадет
(('0001-01-01-0000'+206 + 1)-Значение) -(('0001-01-01-0000'+Значение)-219) = 0
18 DrunkAnimal
 
14.12.12
14:57
(17)не надоело?
19 kosts
 
14.12.12
15:01
Символ(34) это """"
В связи с этим гуманнее смотрелось бы

Услуги.Гость                 = УбратьКавычки(Массив[24]);
Услуги.НомерПостоянногоСчета = УбратьКавычки(Массив[33]);
Услуги.НомерЧека             = УбратьКавычки(Массив[38]);

Функция УбратьКавычки(с)
   Возврат СтрЗаменить(с, """", "");
КонецФункции



И тут

Услуги.КодФиделио= Массив[5];

Скорее всего нужно заменить на

Услуги.КодФиделио = СтрЗаменить(Массив[5],Символ(34),"")
20 anisa8310
 
14.12.12
15:02
(16)и строки и числа и даты-элементы массива могут быть
21 anisa8310
 
14.12.12
15:03
(19) да так проще гораздо..убрать их..
22 НЕА123
 
14.12.12
15:04
(18)
макс(219, Значение) - Мин(206+1,Значение)<= 219-206-1
23 anisa8310
 
14.12.12
15:08
ok
24 НЕА123
 
14.12.12
15:09
(23)
ты эта...
мои посты не читай. ибо они просто пятничный флуд.
25 anisa8310
 
14.12.12
15:21
(24)Хорошо)))
26 anisa8310
 
17.12.12
09:08
Мне надо такой обход строк сделать с такими условиями:
Если  СтрЗаменить(Массив[5],Символ(34),"")<> "205" и СтрЗаменить(Массив[5],Символ(34),"")< "220" тогда
             Если СтрЗаменить(Массив[5],Символ(34),"")> "399" и СтрЗаменить (Массив[5], Символ(34),"")<"921" тогда
                  Если СтрЗаменить(Массив[5],Символ(34),"")= "302" и СтрЗаменить (Массив[5], Символ(34),"")="311" и СтрЗаменить (Массив[5], Символ(34),"")="313" тогда
                      Если СтрЗаменить(Массив[5],Символ(34),"")>="993" и СтрЗаменить (Массив[5], Символ(34),"")<="999" тогда
27 anisa8310
 
17.12.12
09:09
Но условие сложно не обрабатывается..
28 Fragster
 
гуру
17.12.12
09:10
о мои глаза!
29 Fragster
 
гуру
17.12.12
09:10
замуж, срочно замуж!
30 anisa8310
 
17.12.12
09:12
да я знаю,надо..но не знаю как такое условие сложно написать) это я специально так написала-чтобы понятно было..что необходимо
31 anisa8310
 
17.12.12
09:13
Много "ЕСЛИ" что нельзя? а что можно вместо того? найти не могу подходящего метода....или что.цикл для каждого условия???
32 Fragster
 
гуру
17.12.12
09:15
(31) СтртЗаменить... Магические строки... это все сильно усложняет
33 anisa8310
 
17.12.12
09:17
А если передам в другой параметр СтрЗаменить-условие сработает?
34 anisa8310
 
17.12.12
09:17
Хотя нет.
35 Fragster
 
гуру
17.12.12
09:17
(33) не знаю... смотря что на входи и что на выходе хочется получить
36 Fragster
 
гуру
17.12.12
09:17
*входе
37 anisa8310
 
17.12.12
09:19
Пока Док.Sheets(1).Cells(счСтроки,1).Value <>Неопределено Цикл
   Стр=Док.Sheets(1).Cells(счСтроки,1).Value;    
   //////////////Формирование массива услуги    
   Массив = Новый Массив(42);
          Для Сч=1 По 42 Цикл
           Позиция = Найти(Стр, ",");
           Массив.Вставить(сч,Сред(Стр, 1, Позиция-1));
           стр = Сред(Стр, Позиция + 1);
           КонецЦикла;
38 anisa8310
 
17.12.12
09:19
вход
39 anisa8310
 
17.12.12
09:19
Выход:
Услуги = НовыйДокумент.Услуги.Добавить();        
   
   Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("КодФиделио",СтрЗаменить(Массив[5],Символ(34),""));        
   Услуги.Номенклатура=Номенклатура.Ссылка;
   Услуги.Транзакция = Массив[2];
   Услуги.Цена= Массив[11];
   Услуги.Количество= Массив[12];
   Услуги.Сумма = Массив[12]*Массив[11];
   Услуги.Гость = СтрЗаменить(Массив[24],Символ(34),"");
   Услуги.НомерПостоянногоСчета = СтрЗаменить(Массив[33],Символ(34),"");
   Услуги.НомерЧека = СтрЗаменить(Массив[38],Символ(34),"");
   Услуги.Субконто=Номенклатура.НоменклатурнаяГруппа;
   Услуги.КодФиделио= Массив[5];
40 Fragster
 
гуру
17.12.12
09:21
ты CSV чтоли разбираешь?
41 anisa8310
 
17.12.12
09:21
да, именно
42 Fragster
 
гуру
17.12.12
09:22
вход - это не твой "код", а исходные данные
43 kosts
 
17.12.12
09:22
Так к сведению, чтобы не стало неожиданностью...


Сообщить("Результат:");
Для ч = 1 По 999 Цикл
   с = Строка(ч);
   Если с > "399" и с < "921" Тогда
       Сообщить(с);
   КонецЕсли;
КонецЦикла;

Результат:

4
5
6
7
8
9
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
...
...
917
918
919
920
44 anisa8310
 
17.12.12
09:22
условие для элемента загрузки нужно задать такое кривое..
45 Fragster
 
гуру
17.12.12
09:23
(41) я офигеть какой телепат... грузи через ADO, ну или хотя бы экселем открывай так, чтобы в разных колонках были значения.
46 Fragster
 
гуру
17.12.12
09:23
а то твой "код" по распиливанию по запятым и замене кавычек на пусто - не подходит для парсинга CSV
47 anisa8310
 
17.12.12
09:25
ADO.. значит условие никак в csv?
48 Fragster
 
гуру
17.12.12
09:26
(47) условие - как. но у тебя изначально файл неправильно парсится.
например:
"Превед, кросавчег!",5
это две колонки, а у тебя получится 3
49 anisa8310
 
17.12.12
09:30
Если  СтрЗаменить(Массив[5],Символ(34),"")<> "205"
               тогда
             Если СтрЗаменить(Массив[5],Символ(34),"")> "399" и СтрЗаменить (Массив[5], Символ(34),"")<"921" тогда



Вот такое условие обрабатывается как надо загрузка происходит
50 anisa8310
 
17.12.12
09:30
Ой кроме первой строки там коммен
51 anisa8310
 
17.12.12
09:31
Если СтрЗаменить(Массив[5],Символ(34),"")> "399" и СтрЗаменить (Массив[5], Символ(34),"")<"921" тогда


это загружается
52 anisa8310
 
17.12.12
09:34
Если  СтрЗаменить(Массив[5],Символ(34),"")<> "205"
               тогда
              Если СтрЗаменить(Массив[5],Символ(34),"")> "100" и СтрЗаменить (Массив[5], Символ(34),"")<"921" тогда
53 anisa8310
 
17.12.12
09:34
И так загружает))
54 Fragster
 
гуру
17.12.12
09:35
это потому что повезло. а если сделать правильно - то избавишься от СтрЗаменить, которое, кстати, если там есть строки с кавычками - корежит их. ну и по факту - непонятно, зачем использовать эксель, если ты используешь его ровно как ТекстовыйДокумент или ЧтениеТекста?
55 Snorkler
 
17.12.12
09:40
(0) Может, если в начале проверки добавить строку вида

КодФиделиоЧислом = Число(СтрЗаменить(Массив[5],Символ(34),""));

станет немного легче?   :0)
56 anisa8310
 
17.12.12
09:44
Выгрузка из другой системы в формате csv я не могу её изменить...приходится массив перебирать
57 anisa8310
 
17.12.12
09:45
(55) присвоить  переменную для элемента массива? так это называется?
58 Snorkler
 
17.12.12
09:49
(57) Поскольку вся куча проверок с конструкцией СтрЗаменить(), как я понимаю, происходит в цикле, проще в начале цикла получить один раз КодФиделиоЧислом, чтобы потом не заменять каждый раз во всех проверках ковычки…
59 kosts
 
17.12.12
09:52
Может ты этого хочешь?


c = СтрЗаменить(Массив[5],Символ(34),"");
Если с <> "205" и с < "220" тогда
   ...
ИначеЕсли с > "399" и с < "921" тогда
   ...
ИначеЕсли с = "302" и с ="311" и с ="313" тогда
   // Сюда никогда не попадем
ИначеЕсли с >= "993" и с <="999" тогда
   ...
60 anisa8310
 
17.12.12
09:54
(59) да вот так и хочу-я сейчас попробую так -может получиться
61 anisa8310
 
17.12.12
09:55
(58)да это так
62 anisa8310
 
17.12.12
10:06
(59) вот именно так и хотела, но не грузит условие видимо длинное слишком..я попробую разбить в циклах условие пусть два раза обходит строки
63 anisa8310
 
17.12.12
10:06
быстродействие конечно отдыхает в таком случе
64 kotletka
 
17.12.12
10:09
эххх, на пенсии понаеду в МариЭл красивей девушек чем в Йошкар -Оле не видел
65 НЕА123
 
17.12.12
10:09
(63)
>быстродействие конечно отдыхает в таком случе
уже работает ?!
66 kotletka
 
17.12.12
10:09
дожить бы только до пенсии
67 anisa8310
 
17.12.12
10:11
(64) Девушки красивые по всей России)
68 anisa8310
 
17.12.12
10:12
(65)нет пока предположила.жаль что условие если ИначеЕсли-не хочет сложное обрабатывать...
69 anisa8310
 
17.12.12
10:12
(66)Доживете обязательно!
70 kotletka
 
17.12.12
10:13
(67)Да ладно у Вас их количество на кв метр зашкаливает
71 anisa8310
 
17.12.12
10:15
Да, я сама из родом Челябы, живу и работаю в Казани, отдыхаю в Марийке)Много не замужних и красивых-везде)
72 kotletka
 
17.12.12
10:15
по теме ты уверена что у тебя именно условия долго обрабатываются, скорее всего тормоза не в условиях, они в лет отрабатываться должны, скорее всего цикл в цикле несколько раз, либо загрузка медленная
73 anisa8310
 
17.12.12
10:16
ну да ладно...слава богу мужчины тоже отличные есть! так 1с 1с...сейчас ещё вариант накину-сообщу результат и код
74 anisa8310
 
17.12.12
10:16
Вылоу весь код-он сложный очень
75 kosts
 
17.12.12
10:20
(74) Почему-то верю, что сложный ...
76 kotletka
 
17.12.12
10:25
В челябинске кстати реально мужики суровые )). К нам в часть один из наборов оттуда приходил, я уже в запас уходил особо с ними дела не имел, но как -то услышал их спор чем отличается муха от пчелы (при этом они дружно пчелой называли шмеля, сухой трупик где то нашли), в итоге двое даже подрались(так и не решили кто больше меда дает оса или пчела) )). А дело происходило на полевом выходе в минус 25 в обледеневшей палатке. Дети с большими яйцами.
77 anisa8310
 
17.12.12
10:28
Да, мы Челябинцы суровые, но добрые)
78 anisa8310
 
17.12.12
10:28
Женщины имею ввиду-мужчины то само собой..лучше не спорить с ними
79 anisa8310
 
17.12.12
10:29
Внимание весь код:
Процедура КнопкаВыполнитьНажатие(Кнопка)
//////////////////Выбор документов "Реализация"    для сравнения транзакций
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    РеализацияТоваровУслуг.Ссылка,
                  |    РеализацияТоваровУслуг.Контрагент,
                  |    РеализацияТоваровУслуг.Услуги.(
                  |        Транзакция
                  |    )
                  |ИЗ
                  |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
                  |ГДЕ
                  |    РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания";
   
   Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(ЭлементыФормы.ДатаНач.Значение) );
   Запрос.УстановитьПараметр("ДатаОкончания",КонецДня(ЭлементыФормы.ДатаКон.Значение) );
   РезультатРеализация = Запрос.Выполнить();
       
   
/////////////открытие xls-документа    
   Док = ПолучитьCOMОбъект(Путь);
   счСтроки = 1;

/////////////////////////Перебор строк    


Пока Док.Sheets(1).Cells(счСтроки,1).Value <>Неопределено Цикл
   Стр=Док.Sheets(1).Cells(счСтроки,1).Value;    
   //////////////Формирование массива услуги    
   Массив = Новый Массив(42);
          Для Сч=1 По 42 Цикл
           Позиция = Найти(Стр, ",");
           Массив.Вставить(сч,Сред(Стр, 1, Позиция-1));
           стр = Сред(Стр, Позиция + 1);
           КонецЦикла;
           
           c = СтрЗаменить(Массив[5],Символ(34),"");
Если с <> "205" и с < "220" тогда
 
ИначеЕсли с > "399" и с < "921" тогда
   
ИначеЕсли с = "302" и с ="311" и с ="313" тогда
   // Сюда никогда не попадем

ИначеЕсли с >= "993" и с <="999" тогда
 
                 
             //     Если  СтрЗаменить(Массив[5],Символ(34),"")<> "205" и СтрЗаменить(Массив[5],Символ(34),"")<> "300"
             //  тогда
             //  Если  СтрЗаменить(Массив[5],Символ(34),"")<> "301" тогда
             //Если СтрЗаменить(Массив[5],Символ(34),"")> "100" и СтрЗаменить (Массив[5], Символ(34),"")<"921" тогда
             //     //Если СтрЗаменить(Массив[5],Символ(34),"")= "302" и СтрЗаменить (Массив[5], Символ(34),"")="311" и СтрЗаменить (Массив[5], Символ(34),"")="313" тогда
             //     //  Если СтрЗаменить(Массив[5],Символ(34),"")>="993" и СтрЗаменить (Массив[5], Символ(34),"")<="999" тогда


/////////Поиск документа по транзакции    
  ВыборкаРеализация = РезультатРеализация.Выбрать();
  ДокументПрисутствует = Ложь;
   Пока ВыборкаРеализация.Следующий() Цикл
        ВыборкаУслуги=ВыборкаРеализация.Услуги.выбрать();
       Пока ВыборкаУслуги.следующий() Цикл
          Если ВыборкаУслуги.Транзакция = Массив[2] тогда
               ДокументПрисутствует = Истина;    
          КонецЕсли;
        КонецЦикла;
   КонецЦикла;

////////////////Создание нового документа    
Если ДокументПрисутствует = Ложь тогда
   
///////////////Выбираем/Создаем каонтрагента          
//Если Массив[20]<>(Символ(34)+Символ(34)) тогда
//        Если Справочники.Контрагенты.НайтиПоНаименованию(Строка(Массив[20])).Пустая()=Ложь тогда
//              Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Строка(Массив[20])).Ссылка;
//        иначе
//              Контрагент = Справочники.Контрагенты.СоздатьЭлемент();
//              Контрагент.Наименование = Строка(СтрЗаменить(Массив[20],"#",Символ(34)));
//              Контрагент.КодФиделио = Строка(Массив[18]);
//              Контрагент.ЮрФизЛицо=Перечисления.ЮрФизЛицо.ЮрЛицо;
//              Контрагент.Записать();  
//        КонецЕсли;
//    иначе    
       //Если Справочники.Контрагенты.НайтиПоРеквизиту("КодФиделио",Строка(Массив[22])).Пустая()=Ложь тогда
             Контрагент = Справочники.Контрагенты.НайтиПоКоду("000001153");
             //("КодФиделио",Строка(Массив[22])).Ссылка;
       //иначе
       //      Контрагент = Справочники.Контрагенты.СоздатьЭлемент();
       //      Контрагент.Наименование = Строка(СтрЗаменить(Массив[24],"#",Символ(34)));
       //      Контрагент.КодФиделио = Строка(Массив[22]);
       //      Контрагент.ЮрФизЛицо=Перечисления.ЮрФизЛицо.ФизЛицо;
       //      Контрагент.Записать();  
       //КонецЕсли;
   //КонецЕсли;        
/////////////////////Создаем запрос для выборки документа    
ЗапросДок = Новый Запрос;
ЗапросДок.Текст = "ВЫБРАТЬ
|    РеализацияТоваровУслуг.Ссылка
|ИЗ
|    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
|    РеализацияТоваровУслуг.Дата = &Дата
|    И РеализацияТоваровУслуг.Контрагент = &Контрагент";
ЗапросДок.УстановитьПараметр("Дата",Дата(СтрЗаменить(СтрЗаменить(Массив[30],Символ(34),""),"-","") ));
ЗапросДок.УстановитьПараметр("Контрагент",Контрагент.Ссылка);

РезультатДок = ЗапросДок.Выполнить().Выбрать();
//Результат1 = Запросдок.Выполнить().Выгрузить();

       
Если  РезультатДок.Количество()=0 тогда
   ///////////Создаем новый документ
       НовыйДокумент= Документы.РеализацияТоваровУслуг.СоздатьДокумент();
       НовыйДокумент.Организация = Организация ;
       НовыйДокумент.Дата = Дата(СтрЗаменить(СтрЗаменить(Массив[30],Символ(34),""),"-",""));
       НовыйДокумент.Контрагент =Контрагент.Ссылка;
       НовыйДокумент.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;

   /////////////Создаем / Выбираем договор под наименованием "Осмновной договор"    
       ВыборкаДоговора = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию("Основной договор",,,Контрагент.Ссылка);    
               Если ВыборкаДоговора.Пустая()=Истина тогда
                   Договор=Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
                   Договор.Владелец=Контрагент.Ссылка;
                   Договор.Организация =Организация;
                   Договор.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоНаименованию("руб.").Ссылка;
                   Договор.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПокупателем;
                   Договор.Наименование="Основной договор" ;
                   Договор.Записать();
               Иначе
               Договор = ВыборкаДоговора;
           КонецЕсли;
       НовыйДокумент.ДоговорКонтрагента = Договор.Ссылка;    
   НовыйДокумент.УчитыватьНДС=Истина;
   НовыйДокумент.ВалютаДокумента =Справочники.Валюты.НайтиПоНаименованию("руб.").Ссылка;
   

   /////////Создаем строку табличной части услуги
   Услуги = НовыйДокумент.Услуги.Добавить();        
   
   Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("КодФиделио",СтрЗаменить(Массив[5],Символ(34),""));        
   Услуги.Номенклатура=Номенклатура.Ссылка;
   Услуги.Транзакция = Массив[2];
   Услуги.Цена= Массив[11];
   Услуги.Количество= Массив[12];
   Услуги.Сумма = Массив[12]*Массив[11];
   Услуги.Гость = СтрЗаменить(Массив[24],Символ(34),"");
   Услуги.НомерПостоянногоСчета = СтрЗаменить(Массив[33],Символ(34),"");
   Услуги.НомерЧека = СтрЗаменить(Массив[38],Символ(34),"");
   Услуги.Субконто=Номенклатура.НоменклатурнаяГруппа;
   Услуги.КодФиделио= Массив[5];
   
   //Услуги.СубконтоНУ=Номенклатура.НоменклатурнаяГруппа;
   
   Услуги.СтавкаНДС = Номенклатура.СтавкаНДС;
   /////////////Получаем счета учета номенклатуры
   ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(Услуги, НовыйДокумент);
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    СчетаУчетаНоменклатуры.Номенклатура,
                   |    СчетаУчетаНоменклатуры.СчетДоходовОтРеализации,
                   |    СчетаУчетаНоменклатуры.СчетРасходовОтРеализации
                   |ИЗ
                   |    РегистрСведений.СчетаУчетаНоменклатуры КАК СчетаУчетаНоменклатуры
                   |ГДЕ
                   |    СчетаУчетаНоменклатуры.Номенклатура = &Номенклатура";    
    Запрос.УстановитьПараметр("Номенклатура",Номенклатура.Ссылка );
   
   РезультатСчет = Запрос.Выполнить().Выгрузить()[0];    
   Услуги.СчетДоходов = РезультатСчет.СчетДоходовОтРеализации;
   Услуги.СчетРасходов = РезультатСчет.СчетРасходовОтРеализации;    
   //Услуги.СчетУчетаНДСПоРеализации = РезультатСчет.СчетУчетаНДСПоРеализации;
           //Если РезультатСчет.СчетДоходовОтРеализацииНУ<>"" тогда    
       //    Услуги.СчетДоходовНУ = РезультатСчет.СчетДоходовОтРеализацииНУ;
       //    Услуги.СчетРасходовНУ = РезультатСчет.СчетРасходовОтРеализацииНУ;
       //    НовыйДокумент.ОтражатьВНалоговомУчете=Истина;
       //КонецЕсли;
       
       //НовыйДокумент.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;
       //НовыйДокумент.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.РасчетыСПокупателями;
       НовыйДокумент.ЗаполнитьСчетаУчетаРасчетов();


   ////////////Проводим документ    
   
   НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);
   
/////////Создаем счет-фактуру    
Если ЭлементыФормы.СчетФактураФлаг.Значение=Истина тогда    
ВвестиСчетФактуру(НовыйДокумент);    
КонецЕсли;

Иначе
////////////////////Добавляем новую строку услуги в существующий документ
РезультатДокумент = ЗапросДок.Выполнить().Выгрузить()[0];
Документ = РезультатДокумент.Ссылка.ПолучитьОбъект();
Услуги = Документ.Услуги.Добавить();        
   
   Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("КодФиделио",СтрЗаменить(Массив[5],Символ(34),""));        
   Услуги.Номенклатура=Номенклатура.Ссылка;
   Услуги.Транзакция = Массив[2];
   Услуги.Цена= Массив[11];
   Услуги.Количество= Массив[12];
   Услуги.Сумма = Массив[12]*Массив[11];
   Услуги.Гость = СтрЗаменить(Массив[24],Символ(34),"");
   Услуги.НомерПостоянногоСчета = СтрЗаменить(Массив[33],Символ(34),"");
   Услуги.НомерЧека = СтрЗаменить(Массив[38],Символ(34),"");
   Услуги.Субконто=Номенклатура.НоменклатурнаяГруппа;
       Услуги.КодФиделио= Массив[5];

   //Услуги.СубконтоНУ=Номенклатура.НоменклатурнаяГруппа;
       Услуги.СтавкаНДС = Номенклатура.СтавкаНДС;
   ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(Услуги, Документ);
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    СчетаУчетаНоменклатуры.СчетДоходовОтРеализации,
                   |    СчетаУчетаНоменклатуры.СчетРасходовОтРеализации,
                   |    СчетаУчетаНоменклатуры.Номенклатура
                   |ИЗ
                   |    РегистрСведений.СчетаУчетаНоменклатуры КАК СчетаУчетаНоменклатуры
                   |ГДЕ
                   |    СчетаУчетаНоменклатуры.Номенклатура = &Номенклатура";    
    Запрос.УстановитьПараметр("Номенклатура",Номенклатура.Ссылка );
   
   РезультатСчет = Запрос.Выполнить().Выгрузить()[0];    
   Услуги.СчетДоходов = РезультатСчет.СчетДоходовОтРеализации;
   Услуги.СчетРасходов = РезультатСчет.СчетРасходовОтРеализации;    
   //Услуги.СчетУчетаНДСПоРеализации = РезультатСчет.СчетУчетаНДСПоРеализации;
   //СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;
       //Если РезультатСчет.СчетДоходовОтРеализацииНУ<>"" тогда    
       //    Услуги.СчетДоходов = РезультатСчет.СчетДоходовОтРеализации;
       //    Услуги.СчетРасходов = РезультатСчет.СчетРасходовОтРеализации;
       //    Документ.ОтражатьВНалоговомУчете=Истина;
       //КонецЕсли;
       
   ////////////Проводим документ
   //Документ.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;
   //Документ.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.РасчетыСПокупателями;

 
   Документ.Комментарий="загрузка проживания";
   Документ.Записать(РежимЗаписиДокумента.Проведение);
   Документ.Записать();

КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//КонецЕсли;
//КонецЕсли;
//КонецЕсли;

счСтроки = счСтроки + 1;
   
КонецЦикла;

//////////закрываем документ
//Док.Application.Quit();
Сообщить("Загрузка документов завершена !!!");
       СД=Документы.РеализацияТоваровУслуг.ПолучитьФормуСписка();
       СД.Отбор.Комментарий.Значение = "загрузка проживания";
       СД.Отбор.Комментарий.Использование=Истина;
       СД.Открыть();
Док.Application.Quit();

   
КонецПроцедуры
80 kotletka
 
17.12.12
10:29
код даешь? через час зайду посмотреть )
81 kotletka
 
17.12.12
10:31
у тебя не условия долго работают, а ком соединение к эксель файлу, лучше подключаться по ADO
82 anisa8310
 
17.12.12
10:32
не знаю я ADO не работала с ним
83 anisa8310
 
17.12.12
10:33
Обязательно выложу я всегда выкладываю-после успешной работы)
84 kotletka
 
17.12.12
10:33
или COMSafeArray
85 kotletka
 
17.12.12
10:33
(83)не в (80) я просто опоздал, код то в (79)
86 kotletka
 
17.12.12
10:34
87 kotletka
 
17.12.12
10:35
в (86)примерно то же самое но надо считывать
88 Fragster
 
гуру
17.12.12
11:09
еще раз - в (79) эксель используется не как парсер CSV, а как ЧтениеТекста, а потом рубит строки средствами 1с (причем неправильно), отчего и тормозит, отчего и "СтрЗаменить"
89 anisa8310
 
17.12.12
14:46
Короче, сделала процедуру на каждое условие.
Затем общую процу где все (процы с условиями)перечисляю. последовательно происходит обход, в сущ док, добавляю строки с условиями массива. Очень красиво ровно и быстро!
90 kosts
 
17.12.12
14:53
(89) Можно увидеть код?
91 anisa8310
 
17.12.12
16:46
Код один и тот же) просто процедуры разные условия.
И одна процедура кнопка которая обходит все процедуры с разными условиями.
92 anisa8310
 
17.12.12
16:46
По Челябински решила проблему) сурово)