Имя: Пароль:
1C
1С v8
Оптимизация обработки (Кривой)
,
0 volfy
 
21.11.12
21:55
Добрый вечер форумчане, не подскажете как в обработке по созданию и заполнению табличной части оптимизировать скорость? Как получить объект один раз а не в цикле каждый раз?
1 zak555
 
21.11.12
21:56
переписать её
2 volfy
 
21.11.12
21:56
Функция ПрочитатьТабличныйДокументExcelВТЗВДокумент(ИмяФайла)

  xlLastCell = 11;
   
   ВыбФайл = Новый Файл(ИмяФайла);    
   Если НЕ ВыбФайл.Существует() Тогда        
       Сообщить("Файл не существует!");
       Возврат 0;
   КонецЕсли;
   
   Попытка
       Excel = Новый COMОбъект("Excel.Application");    
       Excel.WorkBooks.Open(ИмяФайла);                    
       ExcelЛист = Excel.Sheets(2);                      
   Исключение
       Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
       Возврат 0;
   КонецПопытки;
   
   ActiveCell = ExcelЛист.Cells.SpecialCells(xlLastCell);
   RowCount = ActiveCell.Row;                            
   ColumnCount = ActiveCell.Column;
   
   Перебрано = 0;
   НеУникально = 0;
   Добавлено = 0;
   
        ТЗ = Новый ТаблицаЗначений;
        ТЗ.Колонки.Добавить("Артикул");
        ТЗ.Колонки.Добавить("Товар");
        ТЗ.Колонки.Добавить("Цена");
        ТЗ.Колонки.Добавить("Номер");
        ТЗ.Колонки.Добавить("Количество");
       
   
   Док = Документы.ЗаказКлиента.СоздатьДокумент();             //Создали и заполнили документ
   Док.Дата = ТекущаяДата();                                               //
   Док.Статус = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован;   //
   ТЧ = Док.Товары.Добавить();                                        //  Добавляем строки
   Запись = ТЗ.Добавить();    
   
   
   
   
   ДобСтроку = Док.Товары.Добавить();
   
   Для Row = 2 По RowCount Цикл
        Запись.Артикул = ExcelЛист.Cells(Row, 3).Value;
        Запись.Товар = ExcelЛист.Cells(Row, 4).Value;
        Запись.Цена = ExcelЛист.Cells(Row, 5).Value;
        Запись.Номер = ExcelЛист.Cells(Row, 1).Value;
        Запись.Количество = ExcelЛист.Cells(Row, 2).Value;
   КонецЦикла;    
   
    ТЗ.Сортировать("Номер Возр");
    Док = Док.ПолучитьОбъект();
   
   
   Для Каждого Элемент ИЗ ТЗ Цикл
       
           Док = Документы.ЗаказКлиента.;      
                                                                                                           
           Если Док.Пустая() Тогда                                                                          
               Док = Документы.ЗаказКлиента.СоздатьДокумент();  
               Добавлено = Добавлено + 1;
           Иначе                    
               НеУникально = НеУникально + 1;  
               Док = Док.ПолучитьОбъект();  //!!!!!!!!!
           КонецЕсли;                                                                                      
           Док.Дата = ТекущаяДата();
           Док.НомерПоДаннымКлиента = Элемент.Номер;
           
           А = 0;
           
           Для Каждого Строка ИЗ Док.Товары Цикл
               Если Строка.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Строка(Элемент.Товар), Истина) Тогда
                  А = А + 1;
              КонецЕсли;
           КонецЦикла;  
         
           Если А = 0 Тогда
               
               ДобСтроку.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Строка(Элемент.Товар), Истина);                                                                                                    
               ДобСтроку.Цена = Элемент.Цена;
               ДобСтроку.Количество = Элемент.Количество;
               Док.Записать();
           КонецЕсли;            
       КонецЦикла;
       
       Обработано = Добавлено + НеУникально;
       
       Сообщение = Новый СообщениеПользователю;
       Сообщение.Текст = "Загрузка документов завершена, обработано: " + Обработано;
       Сообщение.Сообщить();

КонецФункции
3 volfy
 
21.11.12
21:57
Очень хочется по максимуму оптимизировать ...опыта у меня почти ноль написал как мог ...знаю что там есть ошибки...
4 volfy
 
21.11.12
21:57
Укажите какие ...ну очень хочется избавиться от "получить объект()" в цикле
5 Нуф-Нуф
 
21.11.12
21:57
запрос тебя спасет
6 zak555
 
21.11.12
21:58
кем формируется эксель-файл ?
7 Нуф-Нуф
 
21.11.12
21:58
либо помести ПолучитьОбъект в общий модуль с хешированием
8 volfy
 
21.11.12
21:59
Файл формирует фирма...сторонняя
9 Нуф-Нуф
 
21.11.12
21:59
кстати вот здесь ничего не попутано?

Запись = ТЗ.Добавить();    
   
   
   
   
   ДобСтроку = Док.Товары.Добавить();
   
   Для Row = 2 По RowCount Цикл
        Запись.Артикул = ExcelЛист.Cells(Row, 3).Value;
        Запись.Товар = ExcelЛист.Cells(Row, 4).Value;
        Запись.Цена = ExcelЛист.Cells(Row, 5).Value;
        Запись.Номер = ExcelЛист.Cells(Row, 1).Value;
        Запись.Количество = ExcelЛист.Cells(Row, 2).Value;
   КонецЦикла;
10 volfy
 
21.11.12
22:00
О_о с хэшированием? ...боюсь для меня это что то невыполнимое... + обработка должна быть внешней
11 volfy
 
21.11.12
22:01
ну я сначала всё в ТЗ , там сортирую, после в цикле создаю документы если таких еще нет, и заполняю табличную часть
12 volfy
 
21.11.12
22:01
уже из ТЗ
13 Нуф-Нуф
 
21.11.12
22:02
(12) не вижу в цикле в (9) - добавить строку.
14 servs
 
21.11.12
22:02
Посмотри замером производительности что дольше всего выполняется.
15 zak555
 
21.11.12
22:02
>  Док = Документы.ЗаказКлиента.СоздатьДокумент();

док -- это объект документ

//...
> Док = Док.ПолучитьОбъект();

как у тебя он тогда не ругается на это ?
16 volfy
 
21.11.12
22:02
Пардон =)

   Для Row = 2 По RowCount Цикл
        Запись = ТЗ.Добавить();    
        Запись.Артикул = ExcelЛист.Cells(Row, 3).Value;
        Запись.Товар = ExcelЛист.Cells(Row, 4).Value;
        Запись.Цена = ExcelЛист.Cells(Row, 5).Value;
        Запись.Номер = ExcelЛист.Cells(Row, 1).Value;
        Запись.Количество = ExcelЛист.Cells(Row, 2).Value;
   КонецЦикла;
17 Нуф-Нуф
 
21.11.12
22:03
тут два варианта:
- сунуть полученную ТЗ в запрос и соединить со справочником номенклатура
- использовать функцию хешируемого общего модуля
18 servs
 
21.11.12
22:04
volfy, не зачет, читай ЖКК, приходи через неделю :)
19 volfy
 
21.11.12
22:05
Да уже просто весь код перелопатил ..ща кину есть исходник
20 volfy
 
21.11.12
22:05
Функция ПрочитатьТабличныйДокументExcelВТЗВДокумент(ИмяФайла)

  xlLastCell = 11;
   
   ВыбФайл = Новый Файл(ИмяФайла);    
   Если НЕ ВыбФайл.Существует() Тогда        
       Сообщить("Файл не существует!");
       Возврат 0;
   КонецЕсли;
   
   Попытка
       Excel = Новый COMОбъект("Excel.Application");    
       Excel.WorkBooks.Open(ИмяФайла);                    
       ExcelЛист = Excel.Sheets(2);                      
   Исключение
       Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
       Возврат 0;
   КонецПопытки;
   
   ActiveCell = ExcelЛист.Cells.SpecialCells(xlLastCell);
   RowCount = ActiveCell.Row;                            
   ColumnCount = ActiveCell.Column;
   
   Перебрано = 0; //Сколько строк будет перебираться
   НеУникально = 0;
   Добавлено = 0;
   
   //Попытка
       
        ТЗ = Новый ТаблицаЗначений;
        ТЗ.Колонки.Добавить("Артикул");
        ТЗ.Колонки.Добавить("Товар");
        ТЗ.Колонки.Добавить("Цена");
        ТЗ.Колонки.Добавить("Номер");
   Для Row = 2 По RowCount Цикл
        Запись = ТЗ.Добавить();
        Запись.Артикул = ExcelЛист.Cells(Row, 3).Value;
        Запись.Товар = ExcelЛист.Cells(Row, 4).Value;
        Запись.Цена = ExcelЛист.Cells(Row, 5).Value;
        Запись.Номер = ExcelЛист.Cells(Row, 1).Value;
   КонецЦикла;    
   
    ТЗ.Сортировать("Номер Возр");

   
   Для Каждого Элемент ИЗ ТЗ Цикл
       
           Док = Документы.ЗаказКлиента.НайтиПоРеквизиту("НомерПоДаннымКлиента", Строка(Элемент.Номер));      
                                                                                                           
           Если Док.Пустая() Тогда                                                                          
               Док = Документы.ЗаказКлиента.СоздатьДокумент();  
               Добавлено = Добавлено + 1;
           Иначе                    
               НеУникально = НеУникально + 1;  
               Док = Док.ПолучитьОбъект();
           КонецЕсли;                                                                                      
           Док.Дата = ТекущаяДата();
           Док.НомерПоДаннымКлиента = Элемент.Номер;
           
           А = 0;
           
           Для Каждого Строка ИЗ Док.Товары Цикл
               Если Строка.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Строка(Элемент.Товар), Истина) Тогда
                  А = А + 1;
              КонецЕсли;
           КонецЦикла;  
         
           Если А = 0 Тогда
               ДобСтроку = Док.Товары.Добавить();
               ДобСтроку.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Строка(Элемент.Товар), Истина);                                                                                                    
               ДобСтроку.Цена = Элемент.Цена;                          
               Док.Записать();
           КонецЕсли;            
       КонецЦикла;
       
       Обработано = Добавлено + НеУникально;
       
       Сообщение = Новый СообщениеПользователю;
       Сообщение.Текст = "Загрузка документов завершена, обработано: " + Обработано;
       Сообщение.Сообщить();

КонецФункции
21 volfy
 
21.11.12
22:06
Вот за это начальник ...не погладил =) сказал что слишком часто получаю объект...
22 volfy
 
21.11.12
22:06
попытка там лишняя конечно...просто убрать забыл
23 volfy
 
21.11.12
22:07
Код работает...интересует увеличение оперативности..
24 Нуф-Нуф
 
21.11.12
22:08
будь мужиком, блеать! сделай (17)!
25 volfy
 
21.11.12
22:08
servs  К твоему возрасту я буду шарить не хуже=)
26 volfy
 
21.11.12
22:08
Нуф-Нуф, хорошо =) I'll try
27 H A D G E H O G s
 
21.11.12
22:11
Толпа дятлов...
28 H A D G E H O G s
 
21.11.12
22:12
Нуф-Нуф самый главный дъятель, походу.
29 H A D G E H O G s
 
21.11.12
22:13
Для Row = 2 По RowCount Цикл
        Запись = ТЗ.Добавить();
        Запись.Артикул = ExcelЛист.Cells(Row, 3).Value;
        Запись.Товар = ExcelЛист.Cells(Row, 4).Value;
        Запись.Цена = ExcelЛист.Cells(Row, 5).Value;
        Запись.Номер = ExcelЛист.Cells(Row, 1).Value;
   КонецЦикла;

Это что за ёб4566й стыд?
30 H A D G E H O G s
 
21.11.12
22:14
Убрать (29) и почитать про
Worksheet.UsedRange

http://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.excel.worksheet.usedrange.aspx
31 volfy
 
21.11.12
22:17
H A D G E H O G s  разве не это?


    ActiveCell = ExcelЛист.Cells.SpecialCells(xlLastCell);
   RowCount = ActiveCell.Row;                            
   ColumnCount = ActiveCell.Column;
32 volfy
 
21.11.12
22:17
Получаю последние заполненные ячейки
33 volfy
 
21.11.12
22:17
...вроде)
34 H A D G E H O G s
 
21.11.12
22:18
А, не не заметил, что ты исправился.
Запись = ТЗ.Добавить();
35 servs
 
21.11.12
22:19
(27) (34) +1
36 H A D G E H O G s
 
21.11.12
22:19
Тогда просто используй
UsedRange

Это COMSafeArray - передашь 1 раз и данные твои, чем 100500 раз чехвостить тормозной standalone сервер Excel.
37 volfy
 
21.11.12
22:20
Объясните уже по нубовски... Вот я получил ячейки... мне нужно просто выцепить эти данные и записать в документы "ЗаказыПокупателей"

Там просто заполнить таб часть, и всё... при условии что повторный вызов не убъёт документы и номенклатуру конечно ...

Да извини.... там из перелопаченого кода просто куски((
38 volfy
 
21.11.12
22:20
Ой спасибо =) Ща прочитаю про него и сделаю))
39 H A D G E H O G s
 
21.11.12
22:26
Нуф-Нуф -а не забудьте перевести в падаваны, чтобы отчеты писать или в руководители проектов, чтобы эффективно автоматизировать.
40 Азат
 
21.11.12
23:28
(0) ну косаря за 3 могу помочь)
41 volfy
 
21.11.12
23:54
(40) За 3 косаря я могу двойной апперкот прописать)
42 volfy
 
21.11.12
23:54
(41) + в мортал комбат хД)
43 H A D G E H O G s
 
21.11.12
23:55
Молодой, горячий, наивный, глупый... Эххх, годы, годы..
44 volfy
 
21.11.12
23:56
H A D G E H O G s   да ты сам не стар =)
45 Азат
 
21.11.12
23:56
(41) + (42) дерзай
46 volfy
 
21.11.12
23:56
(45) не уходим от темы
47 H A D G E H O G s
 
21.11.12
23:57
(44) Реальные пацаны играют в Battlefield 3!
48 volfy
 
21.11.12
23:57
Функция ПрочитатьТабличныйДокументExcelВТЗВДокумент(ИмяФайла)

  xlLastCell = 11;
   
   ВыбФайл = Новый Файл(ИмяФайла);    
   Если НЕ ВыбФайл.Существует() Тогда        
       Сообщить("Файл не существует!");
       Возврат 0;
   КонецЕсли;
   
   Попытка
       Excel = Новый COMОбъект("Excel.Application");    
       Excel.WorkBooks.Open(ИмяФайла);                    
       ExcelЛист = Excel.Sheets(2);                      
   Исключение
       Сообщить("Ошибка. Возможно неверно указан номер листа книги Excel.");
       Возврат 0;
   КонецПопытки;
   
   ActiveCell = ExcelЛист.Cells.SpecialCells(xlLastCell);
   RowCount = ActiveCell.Row;                            
   ColumnCount = ActiveCell.Column;
   
   
    ДанныеExcel = ExcelЛист.UsedRange.Value;
    ТаблДанные = Новый ТаблицаЗначений;
    ВсегоКолонок = ДанныеExcel.GetLength(1);
    А = 0;
    Для нКол=1 По ВсегоКолонок-0 Цикл
       А = А + 1; // КОЛОНКИ С СИМВОЛАМИ ДАЮТ ОШИБКУ!!!
     Имя = "Колонка" + А;
    //ИмяКолонки = ДанныеExcel.GetValue(нКол,1);
    ТаблДанные.Колонки.Добавить(Имя); // Ошибка НЕВЕРНОЕ ИМЯ КОЛОНКИ
49 volfy
 
21.11.12
23:58
И так и сяк крутил ... в  отладке в табло имя присваивается ....а на деле...нет =(
50 volfy
 
21.11.12
23:59
(47) у меня 2 работы...какие тут игры
51 H A D G E H O G s
 
22.11.12
00:02
100500 тема на мисте была.

Почему вы, молодешъ, не пользуете поиск? Как так????

https://www.google.ru/search?as_sitesearch=forum.mista.ru&q=UsedRange
52 volfy
 
22.11.12
00:03
(51) Извини =( правда уже "кипю" .... с 6 утра за 1с... учусь
53 H A D G E H O G s
 
22.11.12
00:03
v8: Как узнать сколько всего строк в на листе Excel?
пост номер 3, готовый код @Fragster-а, ему можно верить, он куйню не пишет.
54 H A D G E H O G s
 
22.11.12
00:04
Вернее, пост номер 2, пардон.
55 H A D G E H O G s
 
22.11.12
00:05
(52) Иди, выпей 100 грамм красного полусладкого и ложись спать, завтра с утра за 10 минут напишешь.
56 volfy
 
22.11.12
00:06
(55) Хорошо ...всем спокойной ночи =) спасибо!
57 Fragster
 
гуру
22.11.12
00:11
(53) я тебе (ну и всем заинтересованным в многопоточности) подарочек ваяю счас, тока помощь нужна будет для тестирования
58 H A D G E H O G s
 
22.11.12
00:12
(57) Тестирование новых экспериментальных препаратах на ежиках?
Кошки дохнут?
Мышки взрываются?

Да я всегда -только за!
59 volfy
 
23.11.12
01:42
Результат такой


..................

Функция ПрочитатьТабличныйДокументExcelВТЗВДокумент(ИмяФайла, ЕстьНазванияКолонок = Истина)

  xlLastCell = 11;
  Таблица = Новый ТаблицаЗначений;

  Массив = Новый Массив;                               //
  КЧ = Новый КвалификаторыСтроки(100);                  //     ОПИСЫВАЮ ТИПЫ КОЛОНОК, ОТ ЭТОГО НАДО
  Массив.Добавить(Тип("Строка"));                           //              КАК ТО ИЗБАВИТЬСЯ
  ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);       //

 
   ВыбФайл = Новый Файл(ИмяФайла);    
   Если НЕ ВыбФайл.Существует() Тогда        
       Сообщить("Файл не существует!");
       Возврат 0;
   КонецЕсли;
       
       excel = Новый COMОбъект("excel.application");
       workbook = excel.workbooks.open(ИмяФайла);
       Массив = workbook.Sheets(2).usedrange.value.Выгрузить();
       workbook.close();
       workbook = 0;
       excel = 0;
       
       ЧислоКолонок = Массив.ВГраница();
       ЧислоСтрок = Массив.Получить(0).ВГраница();
       
       Для СчКол = 0 По ЧислоКолонок Цикл
           Если ЕстьНазванияКолонок Тогда
               Попытка
                   Таблица.Колонки.Добавить(Массив.Получить(СчКол).Получить(0), ОписаниеТиповЧ);
               Исключение
                   Таблица.Колонки.Добавить("Кол"+Формат(СчКол,"ЧГ=0"), ОписаниеТиповЧ);   // !!!!!!! ИЗМЕНИТЬ
               КонецПопытки;
           Иначе
               Таблица.Колонки.Добавить("Кол"+Формат(СчКол,"ЧГ=0"), ОписаниеТиповЧ);
           КонецЕсли;
       КонецЦикла;
           
       Для СчСтрок = ?(ЕстьНазванияКолонок,1,0) По ЧислоСтрок Цикл
           ЕстьЗначение = Ложь;
           Для СчКол = 0 По ЧислоКолонок Цикл
               Если Не ПустаяСтрока(Массив[СчКол][СчСтрок]) Тогда
                   ЕстьЗначение = Истина;
                   Прервать;
               КонецЕсли;
           КонецЦикла;
           Если ЕстьЗначение Тогда
               Строка = Таблица.Добавить();
               Для СчКол = 0 По ЧислоКолонок Цикл
                   Строка[СчКол] = Массив[СчКол][СчСтрок];
               КонецЦикла;
           КонецЕсли;
       КонецЦикла;
       
       
       
    //ПОЛУЧАЕМ УНИКАЛЬНЫЕ НОМЕРА ЗАКАЗЧИКОВ
               
       Запрос3 = Новый Запрос;
       Запрос3.УстановитьПараметр("Таблица", Таблица);
       Запрос3.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    Таблица.Кол
        |ПОМЕСТИТЬ ВТ
        |ИЗ
        |    &Таблица КАК Таблица
        |;
        |ВЫБРАТЬ
        |    ВТ.Кол
        |ИЗ
        |    ВТ КАК ВТ";
       Выборка3 = Запрос3.Выполнить();
       Результат3 = Выборка3.Выбрать();
       
       Номера = Новый ТаблицаЗначений;
       Номера.Колонки.Добавить("Номер", ОписаниеТиповЧ);
       
           Пока Результат3.Следующий() Цикл
               Номера.Добавить().Номер = Число(Результат3.Кол);
          КонецЦикла;
       
         
         
   Для Каждого Номер ИЗ Номера Цикл
       // ИЩЕМ ДОКУМЕНТЫ   !!!!!!!!!!ДОБАВИТЬ ВЫБОР ПО ЗАКАЗЧИКУ И ОТБОР ПО ДАТЕ!!!
       Запрос = Новый Запрос;
       Запрос.Текст =
       "ВЫБРАТЬ
       |    ЗаказКлиента.Ссылка,
       |    ЗаказКлиента.Дата,
       |    ЗаказКлиента.НомерПоДаннымКлиента,
       |    ЗаказКлиента.Товары.(
       |        Номенклатура,
       |        Количество,
       |        Цена
       |    )
       |ИЗ
       |    Документ.ЗаказКлиента КАК ЗаказКлиента
       |ГДЕ
       |    ЗаказКлиента.НомерПоДаннымКлиента = &НомерПоДаннымКлиента";
       Запрос.УстановитьПараметр("НомерПоДаннымКлиента", Строка(Номер.Номер));
               
       Выборка = Запрос.Выполнить();
       Результат = Выборка.Выбрать();
       
       
       Если Выборка.Пустой() Тогда    /// ДОКУМЕНТ С ТАКИМ НОМЕРОМ НЕ НАЙДЕН! СОЗДАЁМ! И ЗАПОЛНЯЯЯЯЯЯЕМ!!!!
                       
                      // СОЗДАЁМ
                   Док = Документы.ЗаказКлиента.СоздатьДокумент();
                   Док.Дата = Дата;
                   Док.Статус = Перечисления.СтатусыЗаказовКлиентов.Согласован;
                   Док.НомерПоДаннымКлиента = Строка(Номер.Номер);
                   
                      // ЗАПОЛНЯЕМ
                   Запрос4 = Новый Запрос;
                   Запрос4.УстановитьПараметр("Таблица", Таблица);
                   Запрос4.УстановитьПараметр("Номер", Номер.Номер);
                   Запрос4.Текст =
                    "ВЫБРАТЬ
                    | *
                    |ПОМЕСТИТЬ ВТ
                    |ИЗ
                    |    &Таблица КАК Таблица
                    |
                    |ГДЕ
                    |     Таблица.Кол = &Номер
                    |;
                    |ВЫБРАТЬ
                    |    *
                    |ИЗ
                    |    ВТ КАК ВТ";
                   Выборка4 = Запрос4.Выполнить();
                   Результат4 = Выборка4.Выбрать();
                   Пока Результат4.Следующий() Цикл
                           ТЧ = Док.Товары.Добавить();
                           ТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Результат4.Товар, ИСТИНА);
                           ТЧ.КоличествоУпаковок = Число(Результат4.Кол1);
                           ТЧ.Цена = Число(Результат4.Цена);
                           ТЧ.СтавкаНДС = ТЧ.Номенклатура.СтавкаНДС;
                           ТЧ.Сумма = ТЧ.Цена * ТЧ.КоличествоУпаковок;
                           СтруктураДействий = Новый Структура;
                           СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(Док);
                           СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
                           СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
                           СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
                           СтруктураДействий.Вставить("ПересчитатьСумму");
                           КэшированныеЗначения = Неопределено;
                           ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТЧ, СтруктураДействий, КэшированныеЗначения);

                  КонецЦикла;
                     Док.Записать();
               КонецЕсли;
               
       Пока Результат.Следующий() Цикл
   
           
           // ДОКУКМЕНТ НАЙДЕН! ЗАПОЛНЯЕМ ТАБ ЧАСТЬ
           Запрос2 = Новый Запрос;
           Запрос2.УстановитьПараметр("Таблица", Таблица);
           Запрос2.УстановитьПараметр("Номер", Номер.Номер);
           Запрос2.Текст =
           "ВЫБРАТЬ
                    | *
                    |ПОМЕСТИТЬ ВТ
                    |ИЗ
                    |    &Таблица КАК Таблица
                    |
                    |ГДЕ
                    |     Таблица.Кол = &Номер
                    |;
                    |ВЫБРАТЬ
                    |    *
                    |ИЗ
                    |    ВТ КАК ВТ";

           Выборка2 = Запрос2.Выполнить();
           Результат2 = Выборка2.Выбрать();
           Пока Результат2.Следующий() Цикл
                   Док = Результат.Ссылка.ПолучитьОбъект();
                   ТЧ = Док.Товары.Добавить();
                   ТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Результат2.Товар, ИСТИНА);
                   ТЧ.КоличествоУпаковок = Число(Результат2.Кол1);
                   ТЧ.Цена = Число(Результат2.Цена);
                   ТЧ.СтавкаНДС = ТЧ.Номенклатура.СтавкаНДС;
                   ТЧ.Сумма = ТЧ.Цена * ТЧ.КоличествоУпаковок;
                   СтруктураДействий = Новый Структура;
                   СтруктураПересчетаСуммы = ОбработкаТабличнойЧастиКлиентСервер.ПолучитьСтруктуруПересчетаСуммыНДСВСтрокеТЧ(Док);
                   СтруктураДействий.Вставить("ПересчитатьКоличествоЕдиниц");
                   СтруктураДействий.Вставить("ПересчитатьСуммуНДС", СтруктураПересчетаСуммы);
                   СтруктураДействий.Вставить("ПересчитатьСуммуСНДС", СтруктураПересчетаСуммы);
                   СтруктураДействий.Вставить("ПересчитатьСумму");
                   КэшированныеЗначения = Неопределено;
                   ОбработкаТабличнойЧастиСервер.ОбработатьСтрокуТЧ(ТЧ, СтруктураДействий, КэшированныеЗначения);            
                   Док.Записать();
           КонецЦикла;
           КонецЦикла;
     КонецЦикла;

           
           // кол - Номер
           // кол1 - Позиций
           // Артикул - Артикул        СПРАВКА
           // Товар = Наименование
           // Цена = Цена
       
   Возврат Таблица;
КонецФункции
........................
60 volfy
 
23.11.12
01:46
Можно еще что то оптимизировать?
Из планов в доработку :

  Поиск номенклатуры по артикулу, как сделать так что бы поиск был максимально быстрым? (если не найдено добавим)

   Не добавлять дубли строк тч если такой документ уже есть ( КАК УЗНАТЬ ЧТО ЭТО ИМЕННО ТОТ ДОКУМЕНТ?)
 
   Документы добавляются по номеру заказчика сейчас так как это первый ввод документов, как добавлять документы в следующий раз новыми а не опять в эти же документы?
61 volfy
 
23.11.12
01:46
Ну это уже доработки...основную роль она выполняет .... большое спасибо всем кто помогал кстати =)
62 volfy
 
23.11.12
01:47
Если еще есть советы и предложения во вопросам или есть варианты оптимизации скажите пожалуйста
63 Конфигуратор1с
 
23.11.12
01:48
(62)За запрос в цикле тебя щас порвут на британский флаг
64 volfy
 
23.11.12
01:48
А как избавиться?
65 volfy
 
23.11.12
01:49
у меня импорт из экселя....

там несколько строк могут относиться к одному документу
66 volfy
 
23.11.12
01:52
просто уж как короче не знаю....и так обработка на моём двухядерном 1.6 ггц проце выполняется 1 минуту
67 volfy
 
23.11.12
01:52
как сократить...не знаю честно.... подскажи)
68 Конфигуратор1с
 
23.11.12
01:54
(67)Получить все данные сразу и уже результат запроса обрабатывать
69 volfy
 
23.11.12
01:55
(68) Выгрузить в тз?
70 volfy
 
23.11.12
01:55
просто схема не ясна....ща покумекаю
71 Конфигуратор1с
 
23.11.12
01:56
Запрос3 = Новый Запрос;
       Запрос3.УстановитьПараметр("Таблица", Таблица);
       Запрос3.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    Таблица.Кол
        |ПОМЕСТИТЬ ВТ
        |ИЗ
        |    &Таблица КАК Таблица
        |;
        |ВЫБРАТЬ
        |    ВТ.Кол
        |ИЗ
        |    ВТ КАК ВТ";
       Выборка3 = Запрос3.Выполнить();
       Результат3 = Выборка3.Выбрать();
       
       Номера = Новый ТаблицаЗначений;
       Номера.Колонки.Добавить("Номер", ОписаниеТиповЧ);
       
           Пока Результат3.Следующий() Цикл
               Номера.Добавить().Номер = Число(Результат3.Кол);
          КонецЦикла;
        а это у тебя точно работает?
72 volfy
 
23.11.12
01:57
Признаюсь у меня идей нет.
73 Конфигуратор1с
 
23.11.12
01:57
Вот тут
Запрос3 = Новый Запрос;
       Запрос3.УстановитьПараметр("Таблица", Таблица);
       Запрос3.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    Таблица.Кол
        |ПОМЕСТИТЬ ВТ
        |ИЗ
        |    &Таблица КАК Таблица
        |;
        |ВЫБРАТЬ
        |    ВТ.Кол
        |ИЗ
        |    ВТ КАК ВТ";
       Выборка3 = Запрос3.Выполнить();
       Результат3 = Выборка3.Выбрать();
       
       Номера = Новый ТаблицаЗначений;
       Номера.Колонки.Добавить("Номер", ОписаниеТиповЧ);
       
           Пока Результат3.Следующий() Цикл
               Номера.Добавить().Номер = Число(Результат3.Кол);
          КонецЦикла;
       
         
         
   Для Каждого Номер ИЗ Номера Цикл
       // ИЩЕМ ДОКУМЕНТЫ   !!!!!!!!!!ДОБАВИТЬ ВЫБОР ПО ЗАКАЗЧИКУ И ОТБОР ПО ДАТЕ!!!

       Запрос = Новый Запрос;
       Запрос.Текст =
       "ВЫБРАТЬ
       |    ЗаказКлиента.Ссылка,
       |    ЗаказКлиента.Дата,
       |    ЗаказКлиента.НомерПоДаннымКлиента,
       |    ЗаказКлиента.Товары.(
       |        Номенклатура,
       |        Количество,
       |        Цена
       |    )
       |ИЗ
       |    Документ.ЗаказКлиента КАК ЗаказКлиента
       |ГДЕ
       |    ЗаказКлиента.НомерПоДаннымКлиента = &НомерПоДаннымКлиента";
       Запрос.УстановитьПараметр("НомерПоДаннымКлиента", Строка(Номер.Номер));
               
       Выборка = Запрос.Выполнить();
       Результат = Выборка.Выбрать();

Почему не сделать одним запросом сразу а уже его результат обходить?
74 volfy
 
23.11.12
01:57
У меня всё отрабатывает отлично
75 Конфигуратор1с
 
23.11.12
01:58
Запрос3 = Новый Запрос;
       Запрос3.УстановитьПараметр("Таблица", Таблица);
       Запрос3.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    Таблица.Кол
        |ПОМЕСТИТЬ ВТ
        |ИЗ
        |    &Таблица КАК Таблица
        |;
        |ВЫБРАТЬ
        |    ВТ.Кол
        |ИЗ
        |    ВТ КАК ВТ";
       Выборка3 = Запрос3.Выполнить();
       Результат3 = Выборка3.Выбрать(); - я конечно туплю и спать хочу неимоверно, но разве это без менеджера временных таблиц работает?
76 volfy
 
23.11.12
02:00
Из него но я и без него обошелся, как? не спрашивай , сам понятия не имею)
77 volfy
 
23.11.12
02:00
(73) ЛЕВОЕ СОЕДИНЕНИЕ? Или ВНутренний запрос?.... я в соединениях еще слаб....поэтому нублю =)
78 Конфигуратор1с
 
23.11.12
02:03
(77)Левое соединение. Если нет заказа будет значение нулл
79 volfy
 
23.11.12
02:04
понял, еще косяки есть?)
80 Конфигуратор1с
 
23.11.12
02:22
Запрос4 = Новый Запрос;
                   Запрос4.УстановитьПараметр("Таблица", Таблица);
                   Запрос4.УстановитьПараметр("Номер", Номер.Номер);
                   Запрос4.Текст =
                    "ВЫБРАТЬ
                    | *
                    |ПОМЕСТИТЬ ВТ
                    |ИЗ
                    |    &Таблица КАК Таблица
                    |
                    |ГДЕ
                    |     Таблица.Кол = &Номер
                    |;
                    |ВЫБРАТЬ
                    |    *
                    |ИЗ
                    |    ВТ КАК ВТ";
Этот запрос тоже объединить с первым
81 Конфигуратор1с
 
23.11.12
02:25
ТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Результат2.Товар, ИСТИНА); - вот это тот же запрос в цикле
82 hhhh
 
23.11.12
02:25
(79) ну вот это

 Для Каждого Строка ИЗ Док.Товары Цикл  
       Если Строка.Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию(Строка(Элемент.Товар), Истина)

зачем 55 раз ищешь одну и ту же номенклатуру? От этого она лучше найдется что ли?

вот так можно

НайдТовар = Справочники.Номенклатура.НайтиПоНаименованию(Строка(Элемент.Товар), Истина);
Для Каждого Строка ИЗ Док.Товары Цикл  
       Если Строка.Номенклатура = НайдТовар Тогда
83 Конфигуратор1с
 
23.11.12
02:27
Таблица.Колонки.Добавить(Массив.Получить(СчКол).Получить(0), ОписаниеТиповЧ);
               Исключение
                   Таблица.Колонки.Добавить("Кол"+Формат(СчКол,"ЧГ=0"), ОписаниеТиповЧ);   // !!!!!!! ИЗМЕНИТЬ

               КонецПопытки;
           Иначе
               Таблица.Колонки.Добавить("Кол"+Формат(СчКол,"ЧГ=0"), ОписаниеТиповЧ);
           КонецЕсли;
       КонецЦикла; - ты тут определил тип данных, зачем же в цикле  ТЧ.КоличествоУпаковок = Число(Результат2.Кол1);
                   ТЧ.Цена = Число(Результат2.Цена);
84 volfy
 
23.11.12
04:14
(83) Тип определил как строка ...просто название переменной не поменял) .....это называется помоему быдлокод, я исправлю
85 volfy
 
23.11.12
05:03
Получается что запрос3 (ЗапросТри) вовсе не нужен?
86 volfy
 
23.11.12
22:53
как ни крутите....а запросы объединить не получается... =(
87 Конфигуратор1с
 
23.11.12
23:54
(86)еще как получится
88 volfy
 
24.11.12
09:55
можешь показать как ? может я просто не понимаю ...не дает соединять :(
89 Fynjy
 
24.11.12
10:10
Работает не трожь ...
90 volfy
 
24.11.12
11:58
(89) не вариант
91 volfy
 
25.11.12
05:11
задача решена не без помощи начальника:) если надо решение скину
92 AlexNew
 
25.11.12
06:51
Мне кажется  // !!!!!!! ИЗМЕНИТЬ добавить во все строчки.
93 volfy
 
25.11.12
09:39
(92) Уже всё кординально изменил (начальник помог направил в нужное русло) всем спасибо =) есть новый вопрос, как в типовой УТ 11.0.9.12 программно добавить контрагента, с юридическим адресом и телефоном? никак не могу найти места где хранится эта информация... это справочник ВидыКонтактнойИнформации? если да то как же там привязывается строка именно к этому контрагенту? вообще непонятки((
94 volfy
 
25.11.12
09:48
Никто не знает?
95 Гобсек
 
25.11.12
09:50
(94)С УТ не имел дело, но в других конфах обычно есть регистр сведений "КонтактнаяИнформация". Адрес или телефон - это реквизит "ВидКонтактнойИнформации"
96 volfy
 
25.11.12
09:52
Вот в том то и дело что реквизитов адрес и телефон нет и такого регистра тоже =)
97 volfy
 
25.11.12
09:53
А хотя...сек ща проверю еще разок
98 volfy
 
25.11.12
09:57
"ВидКонтактнойИнформации" справочник есть ... в нем реквезиты с перечислениями ...ну там всё понятно...а регистра нету... =)
99 volfy
 
25.11.12
09:58
есть АдресныйКлассификатор... походу там всё храниться, осталось найти куда сунуть телефон
100 volfy
 
25.11.12
10:02
Нет ...и то не то и этого нет =(
101 volfy
 
25.11.12
10:19
Вроде пошло ...ща покручу поверчу потом если сделаю выложу решение
102 volfy
 
25.11.12
12:35
Да нифига ... как же всё запутано помогите кто нибудь((
103 DrShad
 
25.11.12
12:45
читать всю ветку лениво
104 volfy
 
25.11.12
12:50
ааах ок .... сам разберусь)
105 DrShad
 
25.11.12
12:52
резюмировал бы что не так, может быть и подсказал бы
106 volfy
 
25.11.12
13:05
(105) Надо программно заполнять Юридический адрес у контрагента.... Но если подскажешь как... (УТ 11.0.9.12 ) буду благодарен)
107 volfy
 
25.11.12
13:09
ой ...фактическии
108 volfy
 
25.11.12
13:09
ой , фактический адрес...но это сути дела не меняет
109 DrShad
 
25.11.12
13:29
ну а в чем собственно проблема? контактная информация это ТЧ контрагента
110 volfy
 
25.11.12
13:32
НЕЕЕТ =) в ней нет этого реквизита
111 volfy
 
25.11.12
13:32
в том то и дело =)
112 volfy
 
25.11.12
13:32
стоп...
113 volfy
 
25.11.12
13:34
тип, Вид, представление, значениеПолей, страна регион город Адрес электронной почты , доменное имя, номер телефона и номер телефона без кодов
114 volfy
 
25.11.12
13:34
всё... =)
115 volfy
 
25.11.12
13:34
АААААААА
116 volfy
 
25.11.12
13:34
кажись понял
117 DrShad
 
25.11.12
13:35
ну вот - что творит волшебный пендель :)))
118 zak555
 
25.11.12
13:35
автор пива клинского перепил ?
119 volfy
 
25.11.12
13:35
НоваяСтрока = ФормаНового.НаборКонтактнойИнформации.Добавить();
НоваяСтрока.Объект = ФормаНового.ЭтотОбъект;
НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
НоваяСтрока.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
НоваяСтрока.Представление = "Юридический адрес, дом, улица ";
НоваяСтрока.Комментарий = "Комментарий Юридический";


чужое но кажись оно
120 volfy
 
25.11.12
13:35
спасибо =) пробую
121 volfy
 
25.11.12
13:35
Кста пиво клинское просто ужааасно =)
122 zak555
 
25.11.12
13:36
разжижает мозг оно
123 volfy
 
25.11.12
13:39
=) так я его и не пью ...не намекай....я учусь ты знаешь)
124 volfy
 
25.11.12
13:39
авда муть ...сам открой и посмотри =)
125 volfy
 
25.11.12
13:41
Для Каждого Элемент ИЗ ТЗ Цикл
       НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
       НовыйКонтрагент.Наименование = Элемент.КонтактноеЛицо;
       НовыйКонтрагент.НаименованиеПолное = НовыйКонтрагент.Наименование;
       НовыйКонтрагент.Партнер = Справочники.Партнеры.НеизвестныйПартнер;
       НовыйКонтрагент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
       НовыйКонтрагент.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
       
       НовыйКонтрагент.НомерТелефона = Элемент.Телефон;  
       
       НовыйКонтрагент.Вид = Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
       НовыйКонтрагент.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
       НовыйКонтрагент.Представление = Элемент.КонтактноеЛицо;

   КонецЦикла;


а вот ничего подобного ... ошибочка =(
126 volfy
 
25.11.12
13:41
и при таком обращении и терез табличную часть... открывал в отладчике таб часть...она вообще пустая
127 volfy
 
25.11.12
13:43
Свойство    Значение    Тип
НовыйКонтрагент    наталья николаевна якушкина    СправочникОбъект.Контрагенты
ВерсияДанных    "            "    Строка
Владелец        Неопределено
ДополнительнаяИнформация    ""    Строка
ДополнительныеРеквизиты    СправочникТабличнаяЧасть.Контрагенты.ДополнительныеРеквизиты    СправочникТабличнаяЧасть.Контрагенты.ДополнительныеРеквизиты
ДополнительныеСвойства    Структура    Структура
ИНН    ""    Строка
КПП    ""    Строка
Код    ""    Строка
КодПоОКПО    ""    Строка
КонтактнаяИнформация    СправочникТабличнаяЧасть.Контрагенты.КонтактнаяИнформация    СправочникТабличнаяЧасть.Контрагенты.КонтактнаяИнформация
Наименование    "наталья николаевна якушкина"    Строка
НаименованиеПолное    "наталья николаевна якушкина"    Строка
ОбменДанными    ПараметрыОбменаДанными    ПараметрыОбменаДанными
Партнер    Неизвестный партнер    СправочникСсылка.Партнеры
ПометкаУдаления    Ложь    Булево
Предопределенный    Ложь    Булево
Родитель        СправочникСсылка.Контрагенты
Ссылка        СправочникСсылка.Контрагенты
УдалитьФизЛицо        СправочникСсылка.ФизическиеЛица
ЭтоГруппа    Ложь    Булево
ЭтотОбъект    наталья николаевна якушкина    СправочникОбъект.Контрагенты
ЮрФизЛицо    Юр. лицо    ПеречислениеСсылка.ЮрФизЛицо
ЮридическоеФизическоеЛицо        ПеречислениеСсылка.ЮридическоеФизическоеЛицо


вот во время отладки....
128 zak555
 
25.11.12
13:43
в (125) ты пытаешь создать объект справочник контрагенты
в (119) добавляешь на форму данные

ты чего хочешь ?
129 volfy
 
25.11.12
13:44
Контактная информация пустая
130 volfy
 
25.11.12
13:45
да тот код (119) вообще чужой ... я так не делал я пытался так же обратиться...а ничего подобного ...такая табличная часть не имеет таких реквезитов в конфигураторе ...а когда открываю форму в конфигураторе там даже эта табличная часть не отобраджается(
131 volfy
 
25.11.12
13:46
Я вообще понять не могу где хранится этот долбаный Фактический адрес
132 volfy
 
25.11.12
13:47
Задачу на 70% решил а тут ...жо....ра
133 volfy
 
25.11.12
13:48
Спасайте старейшины 1С =)
134 volfy
 
25.11.12
13:53
Кажись залез в дырочку ) ДобКонтИнфо = НовыйКонтрагент.КонтактнаяИнформация.Добавить();
       ДобКонтИнфо.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
135 zak555
 
25.11.12
14:02
дырочка ? о_О
136 zak555
 
25.11.12
14:07
КонтактнаяИнформация -- это независимый непериодический регистр сведений
137 volfy
 
25.11.12
14:08
Так нет его  в списке регистров сведений =(
138 zak555
 
25.11.12
14:09
там это где ?
139 volfy
 
25.11.12
14:12
ну в конфигураторе
140 volfy
 
25.11.12
14:13
в древе РС
141 zak555
 
25.11.12
14:13
а что за конфигурация у тебя ?
142 volfy
 
25.11.12
14:14
УТ 11.0.9.12
143 volfy
 
25.11.12
14:14
Последняя
144 zak555
 
25.11.12
14:15
в УТ хранится в ТЧ КонтактнаяИнформация справочника Контрагенты
145 volfy
 
25.11.12
14:18
Да может я опять перекипел ...(( процессор слабый не разогнанный.... (я про бошку) =) я просто не видел этой самой ТЧ так как её там просто нет... она есть в конфигураторе а на форме нет...
146 volfy
 
25.11.12
14:20
зачем так сделано?
147 zak555
 
25.11.12
14:23
это тебе знатоки ут 11 расскажут
148 H A D G E H O G s
 
25.11.12
14:24
(146) RLS
149 H A D G E H O G s
 
25.11.12
14:24
Но вообще конечно бредово сделано.
150 zak555
 
25.11.12
14:25
кстати, H A D G E H O G s как в ТЧ КонтактнаяИнформация  добавить несколько элементов ? =)
151 H A D G E H O G s
 
25.11.12
14:25
Автору дать медаль за упорство и коммисовать.
152 volfy
 
25.11.12
14:25
=) Автору просто нравится эта работа
153 H A D G E H O G s
 
25.11.12
14:26
(150) Что за странные вопросы?
ТЧ.Добавить(); в цикле.
154 H A D G E H O G s
 
25.11.12
14:26
Или загрузить из ТЗ.
155 volfy
 
25.11.12
14:26
А смысл добавлять несколько? если их всё равно не будет видно О_о
156 H A D G E H O G s
 
25.11.12
14:27
Все не читал. Автор, че не получается?
157 zak555
 
25.11.12
14:27
(153) только на форме ТП нет
158 Fragster
 
гуру
25.11.12
14:29
(153) аську включи, да!
159 volfy
 
25.11.12
14:29
Да вроде всё получается уже =) Суть в том что в форме НЕТ табличной части вообще... а сделано как таб часть ...
160 H A D G E H O G s
 
25.11.12
14:34
(159) Она создастся в ПриСозданииНаСервере()
161 volfy
 
25.11.12
14:50
а смысл? почему не простые реквизиты?
162 volfy
 
25.11.12
14:58
Юридический и Фактический адреса они же единичны... как одна фирма может быть в двух местах О_о
163 H A D G E H O G s
 
25.11.12
15:00
(162) Че не так?
164 H A D G E H O G s
 
25.11.12
15:01
Есть ЮрАдрес, а есть Факт адрес, например, у нас был пожар и мы полгода сидели по другому факт. адресу.
165 volfy
 
25.11.12
15:02
кажется понял ....ща скину код который получился...посмотрите
166 Fragster
 
гуру
25.11.12
15:02
(164) не идентичны, а ЕДИНИЧНЫ
167 volfy
 
25.11.12
15:05
зачем такой геморой не понимаю ...кто это делал


       ДобКонтИнфо = НовыйКонтрагент.КонтактнаяИнформация.Добавить();
       ДобКонтИнфо.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон;
       ДобКонтИнфо.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
       ДобКонтИнфо.НомерТелефона = Элемент.Телефон;
       НовыйКонтрагент.Записать();
   КонецЦикла;
168 volfy
 
25.11.12
15:06
На кой хер тут ВИД и ТИП ....
169 volfy
 
25.11.12
15:07
Для Каждого Элемент ИЗ ТЗ Цикл
       НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
       НовыйКонтрагент.Наименование = Элемент.КонтактноеЛицо;
       НовыйКонтрагент.НаименованиеПолное = НовыйКонтрагент.Наименование;
       НовыйКонтрагент.Партнер = Справочники.Партнеры.НеизвестныйПартнер;
       НовыйКонтрагент.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
       НовыйКонтрагент.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
       
       ДобКонтИнфо = НовыйКонтрагент.КонтактнаяИнформация.Добавить();
       ДобКонтИнфо.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;
       ДобКонтИнфо.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента;
       ДобКонтИнфо.Представление = Элемент.АдресДоставки;
       ДобКонтИнфо.НомерТелефона = Элемент.Телефон;
       НовыйКонтрагент.Записать();
   КонецЦикла;


Вышло так...ладно вид понял зачем...нахера ТИП ... =(
170 volfy
 
25.11.12
15:08
Адрес, Электрока, Веб, Другое, Телефон, Сайт. - Это варианты перечисления.... кто нибудь объяснит Зачем?!
171 Fragster
 
гуру
25.11.12
15:09
(168) ну, на самом деле типа Вид = телефон, тип = телефон, тип = мобильныйтелефон и т.п... это поскольку 1с не поддерживает в РС множество записей с одинаковыми измерениями. А вообще - с учетом того, что тех же мобильников может быть несколько - логичнее было бы все-таки подчиненный справочник.
172 Fragster
 
гуру
25.11.12
15:09
(170) тяжелое наследие клюшек, когда не было предопределенных элементов
173 volfy
 
25.11.12
15:09
Если тут всего по 1 реквезиту по идее надо заполнить ... и в 1 строке я указываю и адрес и телефон... и электронку...
174 volfy
 
25.11.12
15:10
Просто пропущу ка я это ... закомментю пусть начальник решит
175 volfy
 
27.11.12
00:29
Кто знает как преобразовать строчку так что бы каждая первая буква слова в ней была заглавной
176 volfy
 
27.11.12
00:29
????
177 Fragster
 
гуру
27.11.12
08:14
есть встроенная функция для этого
178 Fragster
 
гуру
27.11.12
08:15
Встроенные функции языка (Script functions)
ТРег (Title)
Синтаксис:
ТРег(<Строка>)
Параметры:
<Строка> (обязательный)
Тип: Строка.
Преобразуемая строка.
Возвращаемое значение:
Тип: Строка.
Описание:
Преобразует строку к титульному регистру. Это означает, у каждого слова первый символ преобразуется к титульному регистру или, если титульный регистр для символа не определен, то к верхнему регистру. Все остальные символы преобразуются к нижнему регистру.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Пример:
Фамилия = ТРег(Стр);
179 volfy
 
27.11.12
13:13
спасибо)