Имя: Пароль:
1C
1C 7.7
v7: Выгрузка номенклатуры для сайта
0 maxxxl-ms
 
18.07.12
15:16
Здравствуйте, проблема вот в чём: есть в 7 1С стандартная обработка Выгрузка номенклатуры.ert и необходимо по ней производить выгрузку списка каталогов для сайта из документа excel с подбором из номенклатуры, при этом вбивая все каталоги в выбор номенклатуры вручную и нажимать enter для ввода в таблицу группы. Можно ли связав с excel как нибудь автоматизировать данный процесс доработав код или у кого может быть есть похожие примеры?
1 mikecool
 
18.07.12
15:17
сломал мозг, но не понял о чем речь
2 Amra
 
18.07.12
15:18
(1) +100
3 Ёпрст
 
18.07.12
15:18
Прочитал 2 раза - не осилил, что откуда и куда
4 povar
 
18.07.12
15:19
(0) жесть, Штирлиц отдыхает
5 povar
 
18.07.12
15:19
(3) это шифровка в центр
6 План счетов
 
18.07.12
15:26
>> вручную и нажимать enter

попробуй:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "{ENTER}"
7 mikecool
 
18.07.12
15:27
какой вброс от автора...
никто не протелепатировал еще?
8 maxxxl-ms
 
18.07.12
15:28
Ладно разъясню, я выгружаю каталоги магазина на сайт битрикс в формате .cvs. Но прежде чем получить этот файл для выгрузки мне необходимо подбором по номенклатуре вручную искать каталоги из excel в номенклатуре и после нажимая ентер они попадают в ТаблицаДляПодбора. Так примерно:
Процедура ОбработкаПодбора(Элемент, Конт)
   Если ТаблицаДляПодбора = Группы Тогда
       Если (Элемент.Вид() = "Номенклатура") и (Группы.Принадлежит(Элемент) = 0) и (Элемент.ЭтоГруппа() = 1) Тогда
           Группы.ДобавитьЗначение(Элемент.ТекущийЭлемент(),Элемент.Наименование);
       КонецЕсли;
   Иначе
       Если (Элемент.Вид() = "Номенклатура") и (ТаблицаДляПодбора.Принадлежит(Элемент) = 0) и (Элемент.ЭтоГруппа() = 0) Тогда
           ТаблицаДляПодбора.ДобавитьЗначение(Элемент.ТекущийЭлемент(),Элемент.Наименование);
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
9 maxxxl-ms
 
18.07.12
15:29
Весь код:
Перем ТаблицаДляПодбора;  // Имя таблицы в которую производится подбор номенклатуры

//******************************************************************************
// КаталогИмяФайла(ПолноеИмяФайла, Каталог, Файл)
//
// Параметры:
//  ПолноеИмяФайла - строка: каталог и имя файла.
//  Каталог        - если передан, в него будет возвращено имя каталога.
//  Файл           - если передан, в него будет возвращено имя файла.
//
// Возвращаемое значение:
//  0 - если указанного каталога не существует
//  1 - если указанный каталог существует
//
// Описание:
//  Если каталог не существует, то пользователю предлагается его создать.
//
Функция КаталогИмяФайла(ПолноеИмяФайла, Каталог, Файл)
   
   Каталог="";
   Файл=ПолноеИмяФайла;
   Если ПустоеЗначение(Файл) = 1 Тогда  // Файл еще не задан, сгенерим его из направления
       Если Направление.ТекущаяСтрока() = 1 Тогда
           Файл = "ves";
       ИначеЕсли Направление.ТекущаяСтрока() = 2 Тогда
           Файл = "prom";
       ИначеЕсли Направление.ТекущаяСтрока() = 3 Тогда
           Файл = "zap";
       Иначе
           Файл = "tech";
       КонецЕсли;
   КонецЕсли;
   Разд=Найти(Файл, "\");
   
   Пока 0 < Разд Цикл
       Каталог=Каталог+Лев(Файл, Разд); Файл=Сред(Файл, Разд+1); Разд=Найти(Файл, "\");
   КонецЦикла;
   Каталог=Каталог+".";

   Если СтрДлина(Каталог)<4 Тогда
   ИначеЕсли ФС.СуществуетФайл(Каталог)=1 Тогда
   ИначеЕсли "Да"=Вопрос(Каталог+"
                         |Указанный каталог не существует! Создать?","Да+Нет") Тогда
       ФС.СоздатьКаталог(Каталог);
   Иначе
       Каталог=""; Возврат(0);
   КонецЕсли;
   
   Возврат(1);
   
КонецФункции // КаталогИмяФайла()

Процедура ПриВыбореНаправления()
   Если (ПустоеЗначение(ИмяФайлаВыгрузки1) = 1) и (ПустоеЗначение(ИмяФайлаВыгрузки1) = 1) Тогда
       Если Направление.ТекущаяСтрока() = 1 Тогда
           ИмяФайлаВыгрузки1 = "ves1";
           ИмяФайлаВыгрузки2 = "ves2";
       ИначеЕсли Направление.ТекущаяСтрока() = 2 Тогда
           ИмяФайлаВыгрузки1 = "prom1";
           ИмяФайлаВыгрузки2 = "prom2";
       ИначеЕсли Направление.ТекущаяСтрока() = 3 Тогда
           ИмяФайлаВыгрузки1 = "zap1";
           ИмяФайлаВыгрузки2 = "zap2";
       Иначе
           ИмяФайлаВыгрузки1 = "tech1";
           ИмяФайлаВыгрузки2 = "tech2";
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
Функция ОбработатьСтроку(ТекСтрока = "")  // Удаляет пробелы и заменяет запятые на ;
   Результат = СтрЗаменить(СтрЗаменить(СокрЛП(ТекСтрока),";",","),"""","");
   Возврат Результат;
КонецФункции

// Обрабатывает цену, округляет до "круглого" значения если выбран соответствующий режим и отличие не превышает 5 копеек
Функция ОбработатьЦену(Цена)
Перем Результат;
   Результат = Окр(Цена,0);
   Если (ABS(Результат-Цена) > 0.05) Тогда
       Результат = Цена;
   КонецЕсли;
   Возврат Результат;
КонецФункции    // ОбработатьЦену  

Процедура Сформировать()
   
   Перем ТЗ;
   Перем Вид, Часы, Минуты, Секунды, Кодир, Тип, Заголовок;

   Если КаталогИмяФайла(ИмяФайлаВыгрузки1, "", "") = 0 Тогда
       Активизировать(ИмяФайлаВыгрузки1);
       Возврат;
   КонецЕсли;
   
   Если КаталогИмяФайла(ИмяФайлаВыгрузки2, "", "") = 0 Тогда
       Активизировать(ИмяФайлаВыгрузки2);
       Возврат;
   КонецЕсли;
   
   Если ИмяФайлаВыгрузки1 = ИмяФайлаВыгрузки2 Тогда
       Предупреждение("Файлы должны быть разными");
       Возврат;
   КонецЕсли;

   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "Номенклатура = Справочник.Номенклатура.ТекущийЭлемент;
   | Обрабатывать НеПомеченныеНаУдаление;
   | ГруппаТМЦ    = Справочник.Номенклатура.Родитель;
   | Группировка ГруппаТМЦ упорядочить по ГруппаТМЦ.Код без групп;
   | Группировка Номенклатура упорядочить по Номенклатура.Код Без Групп;
   |";//}}ЗАПРОС

   Если Группы.РазмерСписка() > 0 Тогда
       ТекстЗапроса = ТекстЗапроса + "Условие (Номенклатура в Группы);"
   КонецЕсли;

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

   ТекущееВремя(Часы, Минуты, Секунды);
   Время=Шаблон("[Часы#Ч(0)2]:[Минуты#Ч(0)2]:[Секунды#Ч(0)2]");

   //Текст1.ДобавитьСтроку("Кодировка="+Кодир);
   //Текст1.ДобавитьСтроку("ДатаСоздания="+Формат(ТекущаяДата(), "ДДДММГГГГ"));
   //Текст1.ДобавитьСтроку("ВремяСоздания="+Время);
   
   Текст2=СоздатьОбъект("Текст");
   Текст2.КодоваяСтраница(Кодировка.ПолучитьЗначение(Кодировка.ТекущаяСтрока(), Кодир));

   //Текст2.ДобавитьСтроку("Кодировка="+Кодир);
   //Текст2.ДобавитьСтроку("ДатаСоздания="+Формат(ТекущаяДата(), "ДДДММГГГГ"));
   //Текст2.ДобавитьСтроку("ВремяСоздания="+Время);

   // Вроде как шаблон
   СтрокаВыгрузки = "IE_XML_ID;IE_NAME;IE_ID;IE_ACTIVE;IE_ACTIVE_FROM;IE_ACTIVE_TO;IE_PREVIEW_PICTURE;IE_PREVIEW_TEXT;IE_PREVIEW_TEXT_TYPE;IE_DETAIL_PICTURE;IE_DETAIL_TEXT;IE_DETAIL_TEXT_TYPE;IE_CODE;IE_TAGS;";
   СтрокаСвойств = "";
   Если Направление.ТекущаяСтрока() = 1 Тогда
       СтрокаСвойств = "IP_PROP16;IP_PROP17;IP_PROP18;IP_PROP19;";
   ИначеЕсли Направление.ТекущаяСтрока() = 2 Тогда
       СтрокаСвойств = "IP_PROP24;IP_PROP25;IP_PROP26;IP_PROP27;";
   ИначеЕсли Направление.ТекущаяСтрока() = 3 Тогда
       СтрокаСвойств = "IP_PROP36;IP_PROP37;IP_PROP38;IP_PROP39;";
   Иначе
       СтрокаСвойств = "IP_PROP40;IP_PROP41;IP_PROP42;IP_PROP43;";
   КонецЕсли;
   СтрокаВыгрузки = СтрокаВыгрузки + СтрокаСвойств + "IC_GROUP0;IC_GROUP1";
   Текст1.ДобавитьСтроку(СтрокаВыгрузки);
   
   // Вроде как шаблон
   СтрокаВыгрузки = "IE_XML_ID;IE_NAME;IE_ACTIVE;IE_ACTIVE_FROM;IE_ACTIVE_TO;IE_SORT;IE_PREVIEW_TEXT;IE_PREVIEW_TEXT_TYPE;IE_DETAIL_TEXT;IE_CODE;CP_QUANTITY;CP_QUANTITY_TRACE;CP_WEIGHT;";
   СтрокаВыгрузки = СтрокаВыгрузки + СтрокаСвойств + "IC_XML_ID0;IC_GROUP0;IC_GROUP1;IC_CODE0;CV_PRICE_1;CV_CURRENCY_1;CV_PRICE_2;CV_CURRENCY_2";
   Текст2.ДобавитьСтроку(СтрокаВыгрузки);
   
   Форма.ИспользоватьСлой("Основной, Прогресс");
   Запрос.Выгрузить(ТЗ,3);
   глМаксЭлемент = ТЗ.КоличествоСтрок();
   ТекущийЭлемент = 0;
   КолвоСтрок = 0;
   Прогрессор = глСоздатьПрогрессор(Контекст);

   ТекЦена = СоздатьОбъект("Справочник.ТипыЦен");
   
   Пока Запрос.Группировка("ГруппаТМЦ") = 1 Цикл
       Пока Запрос.Группировка("Номенклатура") = 1 Цикл
             ТекущийЭлемент = ТекущийЭлемент + 1;
           ТМЦ = Запрос.Номенклатура;
           ТМЦ.ИспользоватьДату(РабочаяДата());

           Если (флАссортимент = 1) и (ТМЦ.МинОстаток <= 0) Тогда
               Продолжить;
           КонецЕсли;
   
           Если флОстаток = 1 Тогда
               Остаток = Рег.СводныйОстаток(,ТМЦ,,,"Количество");
               Если (Остаток <= 0) Тогда // Пропуск нулевых остатков
                   Продолжить;
               КонецЕсли;  
           КонецЕсли;

           флНовинка = 0; флСпецпредложение = 0;
           Если Новинки.НайтиЗначение(ТМЦ) > 0 Тогда
               флНовинка = 1;
           КонецЕсли;
           
           Если Спецпредложение.НайтиЗначение(ТМЦ) > 0  Тогда
               флСпецпредложение = 1;
           КонецЕсли;
           
           //    Розничная цена
           ЦенаОпт = 0; ПечЦенаОпт = "";
           Если ТекЦена.НайтиПоКоду("00004")=1 Тогда
               Если глВернутьЦену(ТМЦ, ТекЦена,РабочаяДата(),ЦенаОпт) =1 тогда  
                   ЦенаОпт = ОбработатьЦену(ЦенаОпт*(1+глНачисляемыйНДС(ТМЦ.СтавкаНДС)));
                   ПечЦенаОпт=глФРМ(ЦенаОпт);
               иначе
                   ПечЦенаОпт="";
                   Продолжить;
               КонецЕсли;
           Иначе
               Сообщить("Не найдена розничная цена");
               Продолжить;
           КонецЕсли;

           глОбновитьПрогрессор(Прогрессор,ТекущийЭлемент/глМаксЭлемент*100);
           Форма.Обновить(1);
   
           СтрокаКода = ТМЦ.Код;
           СтрокаНаименования =  СокрЛП(ТМЦ.ПолнНаименование);
           Описание = ОбработатьСтроку(СокрЛП(ТМЦ.КаталожныйНомер) + " "+СокрЛП(ТМЦ.Применяемость) + " " + СтрокаКода);
           Группа = СокрЛП(глВернутьРодителя(ТМЦ).Комментарий);

           Если СтрДлина(Группа) = 0 Тогда
               Сообщить("Группа для "+ ТМЦ.Код+" "+ТМЦ.Наименование+" не описана. Пропущена",".");
               Продолжить;
           КонецЕсли;
           
           Если Найти(Группа,"*") = 0 Тогда
               Группа1 = "";
               Группа0 = СокрЛП(Группа);
           Иначе
               Группа1 = СокрЛП(Прав(Группа,СтрДлина(Группа)-Найти(Группа,"*")));
               Группа0 = СокрЛП(Лев(Группа,Найти(Группа,"*")-1));
           КонецЕсли;
           ГруппаМА = ТМЦ.ГруппаМА;
           КолвоМА = ТМЦ.МинОстаток;
       
//  IE_XML_ID;
           СтрокаВыгрузки = ""+СтрокаКода+";";
//  IE_NAME;
           СтрокаВыгрузки = СтрокаВыгрузки + ОбработатьСтроку(СтрокаНаименования)+";";
//  IE_ID;
           СтрокаВыгрузки = СтрокаВыгрузки+ТекущийЭлемент+";";
//  IE_ACTIVE;
           СтрокаВыгрузки = СтрокаВыгрузки+"Y;";
//  IE_ACTIVE_FROM;
           СтрокаВыгрузки = СтрокаВыгрузки + Формат(ТекущаяДата(),"ДД.ММ.ГГГГ")+";";
//    IE_ACTIVE_TO;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//    IE_PREVIEW_PICTURE;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//    IE_PREVIEW_TEXT;
           СтрокаВыгрузки = СтрокаВыгрузки + Описание+";";
//    IE_PREVIEW_TEXT_TYPE;
           СтрокаВыгрузки = СтрокаВыгрузки + "text;";
//    IE_DETAIL_PICTURE;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//    IE_DETAIL_TEXT;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//  IE_DETAIL_TEXT_TYPE;
           СтрокаВыгрузки = СтрокаВыгрузки + "text;";
//    IE_CODE;
           СтрокаВыгрузки = СтрокаВыгрузки + СтрокаКода+";";
//    IE_TAGS;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//  IP_PROP16;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//    IP_PROP17;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//  IP_PROP18;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//  IP_PROP19;            
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//    IC_GROUP0;
           СтрокаВыгрузки = СтрокаВыгрузки + ОбработатьСтроку(Группа0) + ";";
//    IC_GROUP1;
           СтрокаВыгрузки = СтрокаВыгрузки + ОбработатьСтроку(Группа1) + ";";

           Текст1.ДобавитьСтроку(СтрокаВыгрузки);

//  Второй файл
//  IE_XML_ID;
           СтрокаВыгрузки = ""+СтрокаКода+";";
//    IE_NAME;
           СтрокаВыгрузки = СтрокаВыгрузки + ОбработатьСтроку(СтрокаНаименования)+";";
//    IE_ACTIVE;
           СтрокаВыгрузки = СтрокаВыгрузки+"Y;";
//    IE_ACTIVE_FROM;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//    IE_ACTIVE_TO;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//  IE_SORT;
           СтрокаВыгрузки = СтрокаВыгрузки + "500;";
//  IE_PREVIEW_TEXT;
           СтрокаВыгрузки = СтрокаВыгрузки + Описание+";";
//    IE_PREVIEW_TEXT_TYPE;
           СтрокаВыгрузки = СтрокаВыгрузки + "text;";
//    IE_DETAIL_TEXT;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//    IE_CODE;
           СтрокаВыгрузки = СтрокаВыгрузки + СтрокаКода+";";
//    CP_QUANTITY;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//    CP_QUANTITY_TRACE;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//    CP_WEIGHT;
           Вес = ТМЦ.БазоваяЕдиница.Вес*1000;
           СтрокаВыгрузки = СтрокаВыгрузки + Вес+";";
//    IP_PROP16;
           Признак = "";            
           Если флСпецпредложение = 1 Тогда
               Признак = "да";
           КонецЕсли;
           СтрокаВыгрузки = СтрокаВыгрузки + Признак+";";
//    IP_PROP17;
           Признак = "";            
           Если флНовинка = 1 Тогда
               Признак = "да";
           КонецЕсли;
           СтрокаВыгрузки = СтрокаВыгрузки + Признак+";";
//    IP_PROP18;
           Признак = "";
           Если ГруппаМА = Перечисление.ГруппаАссортимента.ГруппаА Тогда
               Признак = "да";
           КонецЕсли;
           СтрокаВыгрузки = СтрокаВыгрузки + Признак +";";
//    IP_PROP19;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//    IC_XML_ID0;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//    IC_GROUP0;
           СтрокаВыгрузки = СтрокаВыгрузки + ОбработатьСтроку(Группа0) + ";";
//    IC_GROUP1;
           СтрокаВыгрузки = СтрокаВыгрузки + ОбработатьСтроку(Группа1) + ";";
//    IC_CODE0;
           СтрокаВыгрузки = СтрокаВыгрузки + ";";
//    CV_PRICE_1;
           СтрокаВыгрузки = СтрокаВыгрузки + ПечЦенаОпт+ ";";
//    CV_CURRENCY_1;
           СтрокаВыгрузки = СтрокаВыгрузки + "RUB;";
//    CV_PRICE_2;
           //    Оптовая цена
           ЦенаОпт = 0; ПечЦенаОпт = "";
           Если ТекЦена.НайтиПоКоду("00002")=1 Тогда
               Если глВернутьЦену(ТМЦ, ТекЦена,РабочаяДата(),ЦенаОпт) =1 тогда  
                   ЦенаОпт = ОбработатьЦену(ЦенаОпт*(1+глНачисляемыйНДС(ТМЦ.СтавкаНДС)));
                   ПечЦенаОпт=глФРМ(ЦенаОпт);
               иначе
                   ПечЦенаОпт="";
               КонецЕсли;
           КонецЕсли;
           СтрокаВыгрузки = СтрокаВыгрузки + ПечЦенаОпт+ ";";
//    CV_CURRENCY_2"
           СтрокаВыгрузки = СтрокаВыгрузки + "RUB;";
           Текст2.ДобавитьСтроку(СтрокаВыгрузки);
           КолвоСтрок = КолвоСтрок + 1;
       КонецЦикла;
   КонецЦикла;    

   Текст1.ДобавитьСтроку("");
   Текст2.ДобавитьСтроку("");
   
   глСтатусСтрока(Контекст,"Выгрузка завершена");
   глОбновитьПрогрессор(Прогрессор,100);

   Текст1.Записать(ИмяФайлаВыгрузки1);
   Текст2.Записать(ИмяФайлаВыгрузки2);

   
   глСброситьПрогрессор(Прогрессор);
   Форма.ИспользоватьСлой("Основной,Подвал");
   Сообщить("Файлы сформированы. Выведено "+КолвоСтрок+" элементов номенклатуры","!!");
КонецПроцедуры

//******************************************************************************
// Предопределенная процедура
//
Процедура ПриНачалеВыбораЗначения(ЭлементДиалога, ФлагОбработки)
   
   Перем Каталог, Файл;
   
   Если ЭлементДиалога="ИмяФайлаВыгрузки1" Тогда
       КаталогИмяФайла(ИмяФайлаВыгрузки1, Каталог, Файл);
       Если ФС.ВыбратьФайл(0, Файл, Каталог, "Файл выгрузки",
                           "C разделителями (*.csv)|*.csv", "csv")=1 Тогда
           ИмяФайлаВыгрузки1=Каталог+Файл;
       КонецЕсли;
   ИначеЕсли ЭлементДиалога="ИмяФайлаВыгрузки2" Тогда
       КаталогИмяФайла(ИмяФайлаВыгрузки2, Каталог, Файл);
       Если ФС.ВыбратьФайл(0, Файл, Каталог, "Файл выгрузки",
                           "C разделителями (*.csv)|*.csv", "csv")=1 Тогда
           ИмяФайлаВыгрузки2=Каталог+Файл;
       КонецЕсли;
   КонецЕсли;
   
КонецПроцедуры // ПриНачалеВыбораЗначения()      

//******************************************************************************
// Предопределенная процедура.
//
Процедура ПриОткрытии()
   Форма.ИспользоватьСлой("Основной,Подвал");
   Кодировка.ДобавитьЗначение(0, "Windows");
   Кодировка.ДобавитьЗначение(1, "DOS");
   
   Направление.ДобавитьЗначение(0, "Импортные товары");
   Направление.ДобавитьЗначение(1, "Промышленные товары");
   Направление.ДобавитьЗначение(2, "Запасные части");
   Направление.ДобавитьЗначение(3, "Сельхозтехника");
   
   флТолькоВключаемые = 1;

КонецПроцедуры // ПриОткрытии()

//******************************************************************************
// Процедуры управления добавления данных с списки значений

Процедура ПоКнопкеДобавитьГруппу(Режим)
   ТаблицаДляПодбора = Группы;
   ОткрытьПодбор("Справочник.Номенклатура","ДляВыбора",1, Режим);
КонецПроцедуры    

Процедура ПоКнопкеДобавитьНовинки(Режим)
   ТаблицаДляПодбора = Новинки;
   ОткрытьПодбор("Справочник.Номенклатура","ДляВыбора",1, Режим);
КонецПроцедуры    

Процедура ПоКнопкеДобавитьСпецпредложение(Режим)
   ТаблицаДляПодбора = Спецпредложение;
   ОткрытьПодбор("Справочник.Номенклатура","ДляВыбора",1, Режим);
КонецПроцедуры    

Процедура ОбработкаПодбора(Элемент, Конт)
   Если ТаблицаДляПодбора = Группы Тогда
       Если (Элемент.Вид() = "Номенклатура") и (Группы.Принадлежит(Элемент) = 0) и (Элемент.ЭтоГруппа() = 1) Тогда
           Группы.ДобавитьЗначение(Элемент.ТекущийЭлемент(),Элемент.Наименование);
       КонецЕсли;
   Иначе
       Если (Элемент.Вид() = "Номенклатура") и (ТаблицаДляПодбора.Принадлежит(Элемент) = 0) и (Элемент.ЭтоГруппа() = 0) Тогда
           ТаблицаДляПодбора.ДобавитьЗначение(Элемент.ТекущийЭлемент(),Элемент.Наименование);
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
10 maxxxl-ms
 
18.07.12
15:55
У меня есть окно Номенклатура(Подбор) в котором я вбиваю в области "код" номер каталога из 4 цифр и далее enter чтобы добавить каталог в таблицу для подбора, как можно сделать чтобы был автоматический подбор нужных каталогов и занесение их в таблицу для подбора? Подскажите пожалуйста.
11 maxxxl-ms
 
19.07.12
11:07
Имееться обработка Выгрузка номенклатуры.ert, в ней часть кода такая:
+ Code

// Предопределенная процедура.

//

Процедура ПриОткрытии()
   Форма.ИспользоватьСлой("Основной,Подвал");
   Кодировка.ДобавитьЗначение(0, "Windows");
   Кодировка.ДобавитьЗначение(1, "DOS");
   
   Направление.ДобавитьЗначение(0, "Импортные товары");
   Направление.ДобавитьЗначение(1, "Промышленные товары");
   Направление.ДобавитьЗначение(2, "Запасные части");
   Направление.ДобавитьЗначение(3, "Сельхозтехника");
   
   флТолькоВключаемые = 1;

КонецПроцедуры // ПриОткрытии()


//******************************************************************************

// Процедуры управления добавления данных с списки значений


Процедура ПоКнопкеДобавитьГруппу(Режим)
   ТаблицаДляПодбора = Группы;
   ОткрытьПодбор("Справочник.Номенклатура","ДляВыбора",1, Режим);
КонецПроцедуры  

Тут мы выбираем из справочника номенклатура каталоги товаров, при этом производя выборку из списка путём ручного ввода(поиска) по каталогу и затем нажимаем enter чтобы добавить товар в ТаблицаДляПодбора, вот за это отвечает думаю этот код:

Процедура ОбработкаПодбора(Элемент, Конт)
   Если ТаблицаДляПодбора = Группы Тогда
       Если (Элемент.Вид() = "Номенклатура") и (Группы.Принадлежит(Элемент) = 0) и (Элемент.ЭтоГруппа() = 1) Тогда
           Группы.ДобавитьЗначение(Элемент.ТекущийЭлемент(),Элемент.Наименование);
       КонецЕсли;
   Иначе
       Если (Элемент.Вид() = "Номенклатура") и (ТаблицаДляПодбора.Принадлежит(Элемент) = 0) и (Элемент.ЭтоГруппа() = 0) Тогда
           ТаблицаДляПодбора.ДобавитьЗначение(Элемент.ТекущийЭлемент(),Элемент.Наименование);
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры

Так вот сама задача состоит в том, можно ли сделать так чтобы из справочника номенклатура в ТаблицаДляПодбора, выборка происходила автоматически без ввода вручную, например заранне ввести весь список каталогов и чтобы оттуда черпались каталоги, сравнивались с теми что есть в номенклатуре и вносились в ТаблицаДляПодбора? Подскажите может есть что то подобное в качестве примера.
12 Ёпрст
 
19.07.12
11:10
(11) можно.
Только этот список хранить надо где-то, в текстовом файлике, в справочнике,документе, в табличке БД, еще где.
13 vladko
 
19.07.12
11:10
перебирай элементы справочника и вноси нужные группы и элементы в таблицы в процедуре ПриОткрытии()
14 Ёпрст
 
19.07.12
11:10
либо просто получать всю номенклатуру запросом по определенным условиям
15 Lea_Lear
 
19.07.12
11:19
Сам же все нам порассказал сам же о чем то и просит - чудно...Вот же решение у тя в (11) : "из справочника номенклатура в ТаблицаДляПодбора, выборка происходила автоматически без ввода вручную, например заранне ввести весь список каталогов и чтобы оттуда черпались каталоги, сравнивались с теми что есть в номенклатуре и вносились в ТаблицаДляПодбора" ну дык и сделай! делов то!
16 maxxxl-ms
 
19.07.12
11:39
Так сделать то можно, но факт в том как это сделать? У меня каталоги вбиты в документ excel, а там их порядка 100 значений и эти значения надо считывать оттуда перемещаясь по документу excel примерно и вбивая их в номенклатуру, а затем в ТаблицаДляПодбора. Не судите строго с 1С только начал разбираться, раньше работал с Делфи, думал тут будет проще с 1С после делфи, оказалось много ньюансов и мало примеров работы.
17 Ёпрст
 
19.07.12
11:42
(16) дык считывай при открытии (или по кнопке) свой каталог из excel файлика, ищи по наименованию/коду/внутреннему системному представлению/по id /еще как свою номенклатуру и пихай в табличку подбора.
18 maxxxl-ms
 
19.07.12
11:51
А как это будет выглядеть примерно в 1с?

Перем Книга;
Процедура Сформировать()
    Попытка
Эксель= СоздатьОбъект("Excel.Application");
Исключение

Сообщить(ОписаниеОшибки() +    " Программа Exсel не установлена на данном компьютере!");
Возврат;

КонецПопытки;

Книга=Эксель.WorkBooks.Open("C:\Documents and Settings\Admin\Рабочий стол\изэкселяводинсупращаторовбиватор\импортl.xls");

Эксель.Visible = 1;

Лист=Книга.WorkSheets(1);

Значение=Лист.Cells(1,3).Value;

КонецПроцедуры

Примерно такой рабочий код я сделал для считывания ячейки из документа excel, но потом как это значение найти в номенклатуре по коду и занести в ТаблицаДляПодбора? И сделать это в цикле наверно нужно перемещаясь по ячейкам excel и считывая каждое значение, затем искать его по коду и внося в ТаблицаДляПодбора. Или же можно сразу считать все ячейки excel и совпадения их по коду внести в ТаблицаДляПодбора?
19 Ёпрст
 
19.07.12
12:00
(18) да как угодно,всё зависит от того, что ты в экселевской табличке хранишь.
Если просто наименование или код, то поиск по наименованию/коду.
Можешь и внутреннее системное представление объекта хранить в экселе в служебной колонке, тогда и искать ничего не надо быдет.
20 maxxxl-ms
 
19.07.12
12:08
Можешь и внутреннее системное представление объекта хранить в экселе в служебной колонке, тогда и искать ничего не надо быдет.

А как это будет выглядеть?
21 Ёпрст
 
19.07.12
12:33
(20) как ЗначениеВСтрокуВнутр

пример тут:
http://infostart.ru/public/16140/
22 Ыщъ
 
19.07.12
13:12
Ошибка здесь: "C:\Documents and Settings\Admin\Рабочий стол\изэкселяводинсупращаторовбиватор\импортl.xls"

Надо: "C:\Documents and Settings\Admin\Рабочий стол\изэкселяводинсупращаторовибратор\импортl.xls"
23 maxxxl-ms
 
19.07.12
13:22
Нет там ошибок и ты написал одно и тоже.
24 maxxxl-ms
 
19.07.12
13:52
изэкселяводинсупращаторовибратор\импортl.xls
Ха вибратор смешно))))
25 maxxxl-ms
 
19.07.12
15:23
Так устал описывать уже. Последовательность действий такая:
Открываю excel документ [URL="http://upwap.ru/2619599"]ссылка на excel[/URL]. Вхожу в 1С:Предприятие 7.7, открываю обработку Выгрузка номенклатуры.ert[URL="http://upwap.ru/2619604"]ссылка на Выгрузка номенклатуры.ert[/URL], затем нажимаю на кнопку открытия подбора номенклатуры кнопка с 5-ю точками, там вбиваю по коду номер номенклатуры из excel и затем enter и номенклатура попадает в таблицу для отбора, и так нужно с каждым каталогом отдельно. Можно ли сделать считывание из excel циклом и вбивание автоматом? Схему последовательности действий наглядно ещё показал тут на рисунке: [URL="http://upwap.ru/2619680"]ЗАДАЧА[/URL]
26 maxxxl-ms
 
19.07.12
15:25
Так устал описывать уже. Последовательность действий такая:
Открываю excel документ http://upwap.ru/2619599. Вхожу в 1С:Предприятие 7.7, открываю обработку Выгрузка номенклатуры.erthttp://upwap.ru/2619604], затем нажимаю на кнопку открытия подбора номенклатуры кнопка с 5-ю точками, там вбиваю по коду номер номенклатуры из excel и затем enter и номенклатура попадает в таблицу для отбора, и так нужно с каждым каталогом отдельно. Можно ли сделать считывание из excel циклом и вбивание автоматом? Схему последовательности действий наглядно ещё показал тут на рисунке: http://upwap.ru/2619680
27 Ёпрст
 
19.07.12
15:36
(26) можно.
Более того, если в поделке Выгрузка номенклатуры.ert в свойствах формы воткнешь 2 галки - режим сохранения настройки и панель инструментов, то все найденные группы при повторном открытии формы ужо будут сохранены автоматически.
28 Злой Бобр
 
19.07.12
15:57
(0) Можно. Примеров найти поиском непроблема.
Вопрос в том - а нафига тебе эсель? Ну поставь в номенклатуре признак "выгружать на сайт" и забудь про эксели. Вот уж действительно рвут гланды через Ж...
29 maxxxl-ms
 
19.07.12
17:07
(26) можно.
Более того, если в поделке Выгрузка номенклатуры.ert в свойствах формы воткнешь 2 галки - режим сохранения настройки и панель инструментов, то все найденные группы при повторном открытии формы ужо будут сохранены автоматически.
Не работает, пробовал разные варианты, настройки не сохраняються.
(0) Можно. Примеров найти поиском непроблема.
Вопрос в том - а нафига тебе эсель? Ну поставь в номенклатуре признак "выгружать на сайт" и забудь про эксели.
Предприятию надо через эксель.
30 Злой Бобр
 
19.07.12
18:22
(29) Дык этим идиотам наверное никто и несказал что можно напрямую грузить, минуя прокладки.
31 maxxxl-ms
 
20.07.12
08:49
Блин, неужели никто не может кодом помочь мне? Я не так силён в 1С и не знаю как это реализовать, примерно хотя бы.
32 Ёпрст
 
20.07.12
09:45
(31)
на вот, развлекайся
http://zalil.ru/33590253
33 Ёпрст
 
20.07.12
09:47
тока верхние процы-пустышки заремь в коде..
Ну и, если нужны другие листы/колонки.. добавишь по аналогии
34 maxxxl-ms
 
20.07.12
10:39
Ёпрст4, дружище спасибо ты спас мои глаза! РАБОТАЕТ! Чуть сейчас листы подправлю и будет кайф!
35 Ёпрст
 
20.07.12
10:46
И это, вот тут галку воткни - не надо будет каждый раз грузить при открытии, всё будет ужо заполненным:

http://s2.ipicture.ru/uploads/20120720/av2WzSHy.jpg
36 maxxxl-ms
 
20.07.12
10:47
Ёпрст4, спасибо с меня магар!
37 maxxxl-ms
 
20.07.12
10:49
Теперь попробую сделать выгрузку с разных листов, по типу каталога и может быть в конце по кнопке сформировать автоматом формирование каталогов.
38 Ёпрст
 
20.07.12
10:52
(37) так можно:

Рекордсет.Source = "
|Select F1 from ["+лист+"$]
|Union ALL
|Select F1 from ["+лист2+"$]
|Union ALL
|Select F1 from ["+лист3+"$]
.....

";
F1 - это первый столбец, нужны другие - F2,F3 и т.д
39 maxxxl-ms
 
20.07.12
10:56
Другие столбцы мне не нужны. А вот условие например как написать что если у меня сейчас в пункте направление наменклатуры выбраны Импортные товары, то считывать из excel лист1?
40 Ёпрст
 
20.07.12
10:57
(39) дык разный текст запроса скармливай по условию и усё..
41 Ёпрст
 
20.07.12
10:59
Если <Импорт> Тогда
 ТекстЗапроса = ..
ИначеЕсли ТекстЗапроса = ..


Или можешь писать так

Текст запроса = "select Вася from Федя"
Если Если <Импорт> Тогда
 ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Федя","Лист...");

или "разрывай" текст запроса по условию..
Короче, развлекайся
42 maxxxl-ms
 
20.07.12
10:59
Если Направление.ТекущаяСтрока() = 1 Тогда
Процедура ГрузанутьНоменклатурку()
   
   Если ФС.СуществуетФайл(СокрЛП(ИмяФайлаВыгрузки3))=0 Тогда
       Возврат;
   КонецЕсли;
   
   Адо=CreateObject("ADODB.Connection");
   Рекордсет=CreateObject("ADODB.recordset");                                  
   лист  = "пром";
   Адо.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(ИмяФайлаВыгрузки3)+";Extended Properties=""Excel 8.0;HDR=No;IMEX=1;""";
   Адо.Open();
   Рекордсет.ActiveConnection = Адо;
   Рекордсет.CursorType = 3;
   Рекордсет.LockType = 2;
   Рекордсет.Source = "Select F1 from ["+лист1+"$] ";
   Рекордсет.Open();
   спр = СоздатьОбъект("Справочник.Номенклатура");
   Пока Рекордсет.Eof()=0 Цикл
       Если Спр.НайтиПоКоду(Рекордсет.Fields("F1").Value,0)=1 Тогда
           Если Спр.ЭтоГруппа()=1 Тогда
               Группы.ДобавитьЗначение(Спр.ТекущийЭлемент());
           КонецЕсли;
       КонецЕсли;
       Рекордсет.MoveNext();
   КонецЦикла;
   Рекордсет.Close();
   Адо.Close();
КонецПроцедуры
КонецЕсли;

Так правильно?
43 maxxxl-ms
 
20.07.12
11:00
А понял, сейчас попробую.
44 maxxxl-ms
 
20.07.12
11:01
Хорошо поразвлекаюсь.
45 Ёпрст
 
20.07.12
11:01
(42) так не видно, где переменной лист1 присваиваешь чего -то
46 maxxxl-ms
 
20.07.12
11:03
Кстати почему у меня считывает со второго листа, ведь стоит тут как бы первый если назван лист: Рекордсет.Source = "Select F1 from ["+лист1+"$] ";
47 Fragster
 
гуру
20.07.12
11:04
сделаю удаленно за 40000 рублей
48 maxxxl-ms
 
20.07.12
11:05
Вернее указано лист, по идее читать он должен с первого листа, а у меня читает со второго: Рекордсет.Source = "Select F1 from ["+лист+"$] ";
49 Ёпрст
 
20.07.12
11:06
(48) у тебя выше в коде
   лист  = "пром";
вот с листа "пром" и читает
50 Ёпрст
 
20.07.12
11:06
что такое лист1, и где ты этой переменной присваиваешь значение - не видно
51 maxxxl-ms
 
20.07.12
11:14
А разобрался. Отточил до совершенной задачи:
Процедура ГрузанутьНоменклатурку()
   Если Направление.ТекущаяСтрока() = 1 Тогда
   Если ФС.СуществуетФайл(СокрЛП(ИмяФайлаВыгрузки3))=0 Тогда
       Возврат;
   КонецЕсли;
   
   Адо=CreateObject("ADODB.Connection");
   Рекордсет=CreateObject("ADODB.recordset");                                  
   лист  = "импортные";
   Адо.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(ИмяФайлаВыгрузки3)+";Extended Properties=""Excel 8.0;HDR=No;IMEX=1;""";
   Адо.Open();
   Рекордсет.ActiveConnection = Адо;
   Рекордсет.CursorType = 3;
   Рекордсет.LockType = 2;
   Рекордсет.Source = "Select F1 from ["+лист+"$] ";
   Рекордсет.Open();
   спр = СоздатьОбъект("Справочник.Номенклатура");
   Пока Рекордсет.Eof()=0 Цикл
       Если Спр.НайтиПоКоду(Рекордсет.Fields("F1").Value,0)=1 Тогда
           Если Спр.ЭтоГруппа()=1 Тогда
               Группы.ДобавитьЗначение(Спр.ТекущийЭлемент());
           КонецЕсли;
       КонецЕсли;
       Рекордсет.MoveNext();
   КонецЦикла;
   Рекордсет.Close();
   Адо.Close();
ИначеЕсли Направление.ТекущаяСтрока() = 2 Тогда
Если ФС.СуществуетФайл(СокрЛП(ИмяФайлаВыгрузки3))=0 Тогда
       Возврат;
   КонецЕсли;
   
   Адо=CreateObject("ADODB.Connection");
   Рекордсет=CreateObject("ADODB.recordset");                                  
   лист  = "пром";
   Адо.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(ИмяФайлаВыгрузки3)+";Extended Properties=""Excel 8.0;HDR=No;IMEX=1;""";
   Адо.Open();
   Рекордсет.ActiveConnection = Адо;
   Рекордсет.CursorType = 3;
   Рекордсет.LockType = 2;
   Рекордсет.Source = "Select F1 from ["+лист+"$] ";
   Рекордсет.Open();
   спр = СоздатьОбъект("Справочник.Номенклатура");
   Пока Рекордсет.Eof()=0 Цикл
       Если Спр.НайтиПоКоду(Рекордсет.Fields("F1").Value,0)=1 Тогда
           Если Спр.ЭтоГруппа()=1 Тогда
               Группы.ДобавитьЗначение(Спр.ТекущийЭлемент());
           КонецЕсли;
       КонецЕсли;
       Рекордсет.MoveNext();
   КонецЦикла;
   Рекордсет.Close();
   Адо.Close();
ИначеЕсли Направление.ТекущаяСтрока() = 3 Тогда
Если ФС.СуществуетФайл(СокрЛП(ИмяФайлаВыгрузки3))=0 Тогда
       Возврат;
   КонецЕсли;
   
   Адо=CreateObject("ADODB.Connection");
   Рекордсет=CreateObject("ADODB.recordset");                                  
   лист  = "авто и сельхоз";
   Адо.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(ИмяФайлаВыгрузки3)+";Extended Properties=""Excel 8.0;HDR=No;IMEX=1;""";
   Адо.Open();
   Рекордсет.ActiveConnection = Адо;
   Рекордсет.CursorType = 3;
   Рекордсет.LockType = 2;
   Рекордсет.Source = "Select F1 from ["+лист+"$] ";
   Рекордсет.Open();
   спр = СоздатьОбъект("Справочник.Номенклатура");
   Пока Рекордсет.Eof()=0 Цикл
       Если Спр.НайтиПоКоду(Рекордсет.Fields("F1").Value,0)=1 Тогда
           Если Спр.ЭтоГруппа()=1 Тогда
               Группы.ДобавитьЗначение(Спр.ТекущийЭлемент());
           КонецЕсли;
       КонецЕсли;
       Рекордсет.MoveNext();
   КонецЦикла;
   Рекордсет.Close();
   Адо.Close();
ИначеЕсли Направление.ТекущаяСтрока() = 4 Тогда
Если ФС.СуществуетФайл(СокрЛП(ИмяФайлаВыгрузки3))=0 Тогда
       Возврат;
   КонецЕсли;
   
   Адо=CreateObject("ADODB.Connection");
   Рекордсет=CreateObject("ADODB.recordset");                                  
   лист  = "техника";
   Адо.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(ИмяФайлаВыгрузки3)+";Extended Properties=""Excel 8.0;HDR=No;IMEX=1;""";
   Адо.Open();
   Рекордсет.ActiveConnection = Адо;
   Рекордсет.CursorType = 3;
   Рекордсет.LockType = 2;
   Рекордсет.Source = "Select F1 from ["+лист+"$] ";
   Рекордсет.Open();
   спр = СоздатьОбъект("Справочник.Номенклатура");
   Пока Рекордсет.Eof()=0 Цикл
       Если Спр.НайтиПоКоду(Рекордсет.Fields("F1").Value,0)=1 Тогда
           Если Спр.ЭтоГруппа()=1 Тогда
               Группы.ДобавитьЗначение(Спр.ТекущийЭлемент());
           КонецЕсли;
       КонецЕсли;
       Рекордсет.MoveNext();
   КонецЦикла;
   Рекордсет.Close();
   Адо.Close();    
КонецЕсли    
КонецПроцедуры // ГрузанутьНоменклатурку
52 Ёпрст
 
20.07.12
11:18
(51) как то у тебя мозги набекрень работают
:)

Процедура ГрузанутьНоменклатурку()
   лист = Направление.ТекущаяСтрока();
   Если  лист= 1 Тогда
       лист  = "импортные";
   ИначеЕсли лист = 2 Тогда
       лист  = "пром";
   ИначеЕсли лист = 3 Тогда
       лист  = "техника";
   Иначе
       Предупреждение("Облом, Альфредо!",60);
       Возврат;
   КонецЕсли;
  Если ФС.СуществуетФайл(СокрЛП(ИмяФайлаВыгрузки3))=0 Тогда
       Возврат;
   КонецЕсли;
   
   Адо=CreateObject("ADODB.Connection");
   Рекордсет=CreateObject("ADODB.recordset");                                  
   Адо.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(ИмяФайлаВыгрузки3)+";Extended Properties=""Excel 8.0;HDR=No;IMEX=1;""";
   Адо.Open();
   Рекордсет.ActiveConnection = Адо;
   Рекордсет.CursorType = 3;
   Рекордсет.LockType = 2;
   Рекордсет.Source = "Select F1 from ["+лист+"$] ";
   Рекордсет.Open();
   спр = СоздатьОбъект("Справочник.Номенклатура");
   Пока Рекордсет.Eof()=0 Цикл
       Если Спр.НайтиПоКоду(Рекордсет.Fields("F1").Value,0)=1 Тогда
           Если Спр.ЭтоГруппа()=1 Тогда
               Группы.ДобавитьЗначение(Спр.ТекущийЭлемент());
           КонецЕсли;
       КонецЕсли;
       Рекордсет.MoveNext();
   КонецЦикла;
   Рекордсет.Close();
   Адо.Close();

КонецПроцедуры // ГрузанутьНоменклатурку
53 Ёпрст
 
20.07.12
11:19
Да, если че, можно в одном запросе обойти все листы и все колонки(или нужные)...
54 maxxxl-ms
 
20.07.12
11:26
Ёпрст4, нормально вроде работают, просто 1с для меня новинка.
55 maxxxl-ms
 
20.07.12
11:28
Ну работает же)))
56 Ёпрст
 
20.07.12
11:42
(55) вот так и на автовазе ведра собирают - "ну ездиют же!"
57 maxxxl-ms
 
20.07.12
11:46
Русский дух)))
58 maxxxl-ms
 
20.07.12
11:46
С размахом сделал я код))
59 maxxxl-ms
 
20.07.12
13:21
Почему то из листа авто и сельхоз не все значения читает, а лишь часть. И после того когда я нажимаю сформировать пишет ошибку:
Если (ABS(Результат-Цена) > 0.05) Тогда
{D:\1C\EXTFORMS\_НА_ВОТ.ERT(145)}: Операции сравнения на больше-меньше допустимы только над значениями совпадающих базовых типов (число, строка, дата)
60 maxxxl-ms
 
20.07.12
13:27
Почему такая ошибка возникает? Когда вручную вбиваю каталоги, ошибки нет. Может есть у кого предположения? Рагается на это:
// Обрабатывает цену, округляет до "круглого" значения если выбран соответствующий режим и отличие не превышает 5 копеек
Функция ОбработатьЦену(Цена)
Перем Результат;
   Результат = Окр(Цена,0);
   Если (ABS(Результат-Цена) > 0.05) Тогда
       Результат = Цена;
   КонецЕсли;
   Возврат Результат;
КонецФункции    // ОбработатьЦену
61 maxxxl-ms
 
20.07.12
17:32
Ошибку исправил, всё работает. Из за процов была что в начале.
62 DGorgoN
 
20.07.12
18:14
(61) Если не вдаваться в подробности
Функция ОбработатьЦену(Цена)
Перем Результат;
Результат = 0;
Попытка
   Результат = Окр(Цена,0);
   Если (ABS(Результат-Цена) > 0.05) Тогда
       Результат = Цена;
   КонецЕсли;
Исключение
Сообщить(Ошибка в цене);
КонецПопытки;
   Возврат Результат;

КонецФункции    // ОбработатьЦену
63 maxxxl-ms
 
20.07.12
18:47
Понял почему из листа авто и сельхоз не все значения читало, потому там не с первой колонки было считывание.