Имя: Пароль:
1C
Админ
Работа с документом в 1С и документом Excel
🠗 (длинная ветка 27.02.2014 08:22)
0 kotokent
 
21.02.14
06:58
1. В обработку добавить реквизит "Корректированить". (Булево). Если реквизит имеет значение ЛОЖЬ, то обработка работает в том режиме, который есть сейчас.
Если имеет значение ИСТИНА, то алгоритм работы следующий:
По каждому магазину анализируются строки документа "План магазина" и документа Excel. Если есть расхожддения по количеству строк или по значению в колонках, то обработка автоматически создает новый документ "План магазина". Старый при этом полностью блокируется для редактирования и устанавливаются в нем признаки "Откорректирован" и "Документ корректировка"

2. В документа "План магазина" добавить реквизиты:
а). Откорректирован (булево)
б). Документ корректировка (ссылка на документ "План магазина".
1 kotokent
 
21.02.14
06:59
начнем с начала, как "По каждому магазину анализируются строки документа "План магазина" и документа Excel"?
2 Godofsin
 
21.02.14
07:00
Что это? контрольная работа?
3 kotokent
 
21.02.14
07:00
(2) задание
4 огурец
 
21.02.14
07:01
(2) Скорее ТЗ, с сайта для фрилансеров.
5 Godofsin
 
21.02.14
07:02
(3) От нас что хочешь? Чтоб за тебя сделали?
6 kotokent
 
21.02.14
07:03
(5) хочу чтобы подсказали, как делать, пример команд или еще что то?
7 огурец
 
21.02.14
07:03
(1) Берешь строки из документа и строки из Exel, сопоставляешь по неким полям, выводишь расхождени по другим полям. выводишь сообщение если для строки екселя или для строки документа не нашлось пары.
8 kotokent
 
21.02.14
07:04
(7) это понятно, как их сопоставить, вот в чем вопрос?
9 Wobland
 
21.02.14
07:05
запросом - вот в чём ответ
10 kotokent
 
21.02.14
07:07
(9) я еще не работал вместе с Excel и документами 1С
11 kotokent
 
21.02.14
07:07
(9) так что незнаю
12 Godofsin
 
21.02.14
07:10
(10) Читай:
http://www.sky1c.ru/node/248
13 огурец
 
21.02.14
07:12
(8)

Давай разобьем задачу на два этапа.

1. Считать данные из Документа и Exel в таблицы значений.
2. Сопоставить две ТЗ.

Какой именно этап у тебя вызывает сложности?
14 kotokent
 
21.02.14
07:14
(13) если честно то оба
15 kotokent
 
21.02.14
07:14
(13) я даже не представляю как
16 Wobland
 
21.02.14
07:16
разбей теперь каждый этап на два. это называется методом дихотомии
17 kotokent
 
21.02.14
07:20
(16) Пока НЕ RecordSet.EOF() Цикл
        НомерСтроки = НомерСтроки+1;
        Если НомерСтроки<НачальнаяСтрока Тогда
            RecordSet.MoveNext();
        Иначе
            //Дальше обрабатываем RecordSet
            НоваяСтрока = ТаблицаЗначений.Добавить();
            НоваяСтрока.Номер = НомерСтроки;
            НоваяСтрока.Магазин = Строка(RecordSet.Fields(0).Value);
            НоваяСтрока.Бонусы = Строка(RecordSet.Fields(1).Value);
            НоваяСтрока.План = RecordSet.Fields(2).Value;
            НоваяСтрока.ПланСтар = Строка(RecordSet.Fields(3).Value);
            НоваяСтрока.ПроданоЗаМесяц = Строка(RecordSet.Fields(4).Value);
            НоваяСтрока.ПрогнозВыполненияПроц = Строка(RecordSet.Fields(5).Value);
            НоваяСтрока.ПрогнозВыполненияЕд = Строка(RecordSet.Fields(6).Value);
            НоваяСтрока.НеобходимыеЕжедневныеПродажи = Строка(RecordSet.Fields(7).Value);
            НоваяСтрока.ПотенциальныеВзысканияПремии = Строка(RecordSet.Fields(8).Value);
            RecordSet.MoveNext();
        КонецЕсли;
    КонецЦикла;
18 kotokent
 
21.02.14
07:21
(16) это то? считывает данные из Exel
19 огурец
 
21.02.14
07:22
(14)

Вот пример чтения данных из файла:


Есть код для поиска строк в другой тз
Отбор = Новый Структура();
            Отбор.Вставить("ИнвНом",ИнвНом);
            Строки = ТабличноеПоле1.НайтиСтроки(Отбор);
            Если Строки.Количество() = 1  Тогда
                КодОКОФ = Строки[0].КодОКОФ;
                

По хорошему конечно надо ТЗ запрососм сравнивать. но там надо код ручками писать.

Процедура ЧтениеXLSФайла(Элемент)
    
    Если ПустаяСтрока(ИмяФайла) Тогда
        Предупреждение("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel.");
        Возврат;
    КонецЕсли;
    
    Попытка
        // Загрузка Microsoft Excel
        Состояние("Загрузка Microsoft Excel...");
        ExcelПриложение = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        Возврат;
    КонецПопытки;
    
    Попытка
        // Открытие файла Microsoft Excel
        Состояние("Открытие файла Microsoft Excel...");
        ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
    Исключение
        Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
    КонецПопытки;
    НомерЛиста=?(НомерЛиста=0,1,НомерЛиста);
    Попытка
        // Обработка файла Microsoft Excel
        Состояние("Обработка файла Microsoft Excel...");
        // Читаем данные первого листа книги
        ExcelЛист = ExcelФайл.Sheets(НомерЛиста);
        
        // Определить количество строк и колонок выбранного листа книги Excel
        xlCellTypeLastCell = 11;
        ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
        ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;
    Исключение
        Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        // Закрыть COM соединение для экономии памяти
        ExcelПриложение.Quit();
    КонецПопытки;
    
    // Создание описателя типов для таблицы значений
    //КЧ = Новый КвалификаторыЧисла(15,2);
    //КС = Новый КвалификаторыСтроки(0);
    //Массив = Новый Массив;
    //Массив.Добавить(Тип("Строка"));
    //ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС);
    //Массив.Очистить();
    //Массив.Добавить(Тип("Число"));
    //ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ);
    
    // Очистить предыдущие значения
    ТаблицаДокумента.Очистить();
    ТаблицаДокумента.Колонки.Очистить();
    
    // Создать колонки табличного документа
    //ТаблицаДокумента.Колонки.Добавить("Номер",ОписаниеТиповС,"Номер",5);
    //ТаблицаДокумента.Колонки.Добавить("Артикул",ОписаниеТиповС,"Артикул",11);
    //ТаблицаДокумента.Колонки.Добавить("Описание",ОписаниеТиповС,"Описание",25);
    //ТаблицаДокумента.Колонки.Добавить("Цена",ОписаниеТиповЧ,"Цена",6);
    
    ТаблицаДокумента.Колонки.Добавить("КрОшибки",,"Крит.Ошибки",15);//-1
    ТаблицаДокумента.Колонки.Добавить("Ошибки",,"Ошибки",10);//0
    ТаблицаДокумента.Колонки.Добавить("НомерПП",,"Номер п/п",5);//1
    ТаблицаДокумента.Колонки.Добавить("Папка",,"Папка",10);//2
    ТаблицаДокумента.Колонки.Добавить("СчетУчетаОС",,"Счет учета ОО",10);//2
    ТаблицаДокумента.Колонки.Добавить("КБК",,"КБК",10);             //3
    ТаблицаДокумента.Колонки.Добавить("Наименование",,"Наименование",20);//4
    ТаблицаДокумента.Колонки.Добавить("грУчет",,"гр.",2);//5
    ТаблицаДокумента.Колонки.Добавить("ИнвНом",,"Инвентарный номер",10);//6
    ТаблицаДокумента.Колонки.Добавить("Количество",,"Количество",6);       //7
    ТаблицаДокумента.Колонки.Добавить("Стоимость",,"Стоиомсть",6);      //8
    ТаблицаДокумента.Колонки.Добавить("МОЛ",,"МОЛ",10);        //9
    ТаблицаДокумента.Колонки.Добавить("ДатаПриянятия",,"Дата принятия",6);    //10
    ТаблицаДокумента.Колонки.Добавить("ДокПриянятия",,"Док принятия",6);     //11
    ТаблицаДокумента.Колонки.Добавить("НомерДокПриянятия",,"Номер Док принятия",6);       //12
    ТаблицаДокумента.Колонки.Добавить("ДатаВвода",,"Дата ввода",6);    //13
    ТаблицаДокумента.Колонки.Добавить("ДокВвода",,"Док ввода",6);        //14
    ТаблицаДокумента.Колонки.Добавить("НомерДокввода",,"Номер Док ввода",6);     //15
    ТаблицаДокумента.Колонки.Добавить("КодОКОФ",,"Код окоф",10);  //16
    ТаблицаДокумента.Колонки.Добавить("СрокИспользования",,"Срок использования",10);     //17
    ТаблицаДокумента.Колонки.Добавить("СуммаАморт",,"сумма амортиз",10);    //18
    ТаблицаДокумента.Колонки.Добавить("СпособНачисления",,"Способ начисления",10);    //19
    ТаблицаДокумента.Колонки.Добавить("СчетАмортизации",,"счет амортизации",10);   //20
    ТаблицаДокумента.Колонки.Добавить("СчетЗатрат",,"счет затрат",10);        //21
    ТаблицаДокумента.Колонки.Добавить("ВидИмущества",,"Вид имузества",10);      //22
    ТаблицаДокумента.Колонки.Добавить("КВД",,"КВД",2);     //23
    ТаблицаДокумента.Колонки.Добавить("АмортизационнаяГруппа",,"АмортизационнаяГруппа",2);     //24
    
    
    
    Запрос2= Новый Запрос;
    Запрос2.Текст =
    "ВЫБРАТЬ
    |    АмортизационныеГруппыОКОФ.ОКОФ,
    |    АмортизационныеГруппыОКОФ.АмортизационнаяГруппа
    |ИЗ
    |    РегистрСведений.АмортизационныеГруппыОКОФ КАК АмортизационныеГруппыОКОФ";
    
    Результат2= Запрос2.Выполнить();
    Выборка2=Результат2.Выбрать();
    
    
    ЗапросВИ = Новый Запрос;
    ЗапросВИ.Текст =
    "ВЫБРАТЬ
    |    ЕПСБУ.Ссылка КАК Счет,
    |    ВЫБОР
    |        КОГДА ЕПСБУ.Ссылка В ИЕРАРХИИ (&Сч10120)
    |            ТОГДА &Особоценно
    |        ИНАЧЕ ВЫБОР
    |                КОГДА ЕПСБУ.Ссылка В ИЕРАРХИИ (&Сч10130)
    |                    ТОГДА &ИноеЦенное
    |                ИНАЧЕ &Недвижимое
    |            КОНЕЦ
    |    КОНЕЦ КАК ВидИм
    |ИЗ
    |    ПланСчетов.ЕПСБУ КАК ЕПСБУ
    |ГДЕ
    |    ЕПСБУ.Ссылка В ИЕРАРХИИ(&Сч101)";
    
    ЗапросВИ.УстановитьПараметр("ИноеЦенное", Перечисления.ВидыИмущества.ПрочееДвижимое);
    ЗапросВИ.УстановитьПараметр("Недвижимое", Перечисления.ВидыИмущества.НедвижимоеИмущество);
    ЗапросВИ.УстановитьПараметр("Особоценно", Перечисления.ВидыИмущества.ДвижимоеОсобоЦенное);
    ЗапросВИ.УстановитьПараметр("Сч101", планысчетов.ЕПСБУ.ОС);
    ЗапросВИ.УстановитьПараметр("Сч10120", планысчетов.ЕПСБУ.ОС_ОЦДИ);
    ЗапросВИ.УстановитьПараметр("Сч10130", планысчетов.ЕПСБУ.ОС_ИДИ);
    
    Результат3 = ЗапросВИ.Выполнить();
    
    ТЗВидыИмущ =  Результат3.Выгрузить();;
    
    
    Если ПерваяСтрока=0 тогда
        ПерваяСтрока=1;
    КонецЕСли;
    
    Выполнять=Истина;
    
    
    ЕстьКритическиеОшибкиВообще=Ложь;
    
    Строка =ПерваяСтрока;
    НомерПП=0;
    
    элНом=1;
    
    ТекКБК="";
    Пока Выполнять Цикл
        ЕстьОшибки=Ложь;
        ЕстьКритическиеОшибки=Ложь;
        
        
        
        
        ОбработкаПрерыванияПользователя();
        СтрокаКарточки="";
        ИскатьКарточку=Истина;
        КолСтрокПоиска=0;
        
        Пока ИскатьКарточку Цикл
            Попытка    
                СтрокаКарточки  = СокрЛП(ExcelЛист.Cells(Строка, 3).Value);
                СтрокаКарточки1  = СокрЛП(ExcelЛист.Cells(Строка, 1).Value);

            Исключение
                // Не редко происходит ошибка конвертации отдельной ячейки документа
                Сообщить("Ошибка чтения строки файла Microsoft Excel." + Строка + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
            КонецПопытки;
                //Сообщить("хххх"+СтрокаКарточки);
            
            Если ((Найти(СтрокаКарточки1,"101")<>0) и (не ЗначениеЗаполнено(СтрокаКарточки))) Тогда
                СчетУчетаОС_Стр = СокрЛП(ExcelЛист.Cells(Строка, 1).Value);
                
                НомЗпт= Найти(СчетУчетаОС_Стр,",");
                
                МОЛ=СокрЛП(Прав(СчетУчетаОС_Стр,СтрДлина(СчетУчетаОС_Стр)-НомЗпт));
                
                СчетУчетаОС_Стр=Лев(СчетУчетаОС_Стр,НомЗпт-1);
                
                //Сообщить("хъх"+СчетУчетаОС_Стр);
                
                СчетУчетаОС_Стр_6=ПраВ(Лев(Прав(СчетУчетаОС_Стр,9),6),5);
                СчетУчетаОС_Стр_6=Лев(СчетУчетаОС_Стр_6,3)+"."+ Прав(СчетУчетаОС_Стр_6,2);
                СчетУчетаОС=ПоискСчета(СчетУчетаОС_Стр_6,"счет учета",Истина,Ложь);
                Если не ЗначениеЗаполнено(СчетУчетаОС) Тогда
                    СчетУчетаОС=элСчетУчетаОС;
                КонецЕсли;
                СчетАмортизации=УправлениеНефинансовымиАктивами.ОпределитьСчетАмортизацииДляСчетаОС(СчетУчетаОС);
                СчетЗатрат = Планысчетов.ЕПСБУ.ОбщехозяйственныеРасходы1;
                
                
                Если ДляВсехКБК Тогда
                    КБК=КБКпоУмолчанию;
                ИНаче
                КонецЕсли;
                
                КВД=Перечисления.КВД.ПустаяСсылка();
                КВД_стр=Лев(Прав(СчетУчетаОС_Стр,9),1);
                
                Если ЗначениеЗаполнено(КВД_стр) Тогда
                    КВД_Стр=Прав(КВД_стр,1);
                    Если  КВД_Стр="1" Тогда
                        //ЧЕтверка
                        //КВД=Перечисления.КВД.Бюджет;
                        КВД=Перечисления.КВД.СубсидииНаГосзадание;
                    ИНачеЕсли КВД_Стр="2" Тогда
                        КВД=Перечисления.КВД.Внебюджет;
                    ИНачеЕсли КВД_Стр="3" Тогда
                        КВД=Перечисления.КВД.ВременноеРаспоряжение;
                    ИНачеЕсли КВД_Стр="4" Тогда
                        КВД=Перечисления.КВД.СубсидииНаГосзадание;
                    ИНачеЕсли КВД_Стр="5" Тогда
                        КВД=Перечисления.КВД.СубсидииНаИныеЦели;
                    ИНачеЕсли КВД_Стр="6" Тогда
                        КВД=Перечисления.КВД.БюджетныеИнвестиции;
                    ИНачеЕсли КВД_Стр="7" Тогда
                        КВД=Перечисления.КВД.СредстваОМС;
                    Иначе
                        КВД=Перечисления.КВД.ПустаяСсылка();
                        Сообщить("В строке" + Строка +" не удалось понять значение КВД.", СтатусСообщения.ОченьВажное);
                        ЕстьКритическиеОшибки=Истина;
                        ЕстьОшибки=Истина;
                    КонецЕсли;;
                КонецЕсли;
                
                
                ВидИмущества=Перечисления.ВидыИмущества.НедвижимоеИмущество;
                
                Отбор = Новый Структура();
                Отбор.Вставить("Счет",СчетУчетаОС);
                Строки = ТЗВидыИмущ.НайтиСтроки(Отбор);
                Если Строки.Количество() > 0 Тогда
                    ВидИмущества = Строки[0].ВидИм;
                КонецЕсли;
                Если НЕ ЗначениеЗаполнено(ВидИмущества) Тогда
                    Сообщить("В строке" + Строка +" не удалось понять значение строки Вид Имущества, по умолчанию будет назначенно ""иное движимое имущество"".", СтатусСообщения.Внимание);
                    ВидИмущества=Перечисления.ВидыИмущества.ПрочееДвижимое;
                КонецЕсли;
                
                Строка=Строка+1;
            ИначеЕсли не ЗначениеЗаполнено(СтрокаКарточки) Тогда
                Строка=Строка+1;
            Иначе
                НомерПП=НомерПП+1;
                ИскатьКарточку=Ложь;
            КонецЕсли;
            
            КолСтрокПоиска=КолСтрокПоиска+1;
            Если КолСтрокПоиска>20 Тогда
                ИскатьКарточку=Ложь;
            КонецЕсли;
        КонецЦикла;
        
        
        
        Если не ЗначениеЗаполнено(СтрокаКарточки) ТОгда
            Выполнять=Ложь;
            Продолжить;
        КонецЕсли;
        //
        //
        //    Если Строка>100 ТОгда
        //        Выполнять=Ложь;
        //        Продолжить;
        //    КонецЕсли;
        //
        
        
        
        
        //  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //  /////////////////                   счета                        /////////////////////////////////////////////////
        //  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        
        
        
        //  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //  /////////////////////////              даты                            //////////////////////////////////////////////
        //  /////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
        
        ДатаПриянятия_Стр = СокрЛП(ExcelЛист.Cells(Строка, 3).Value);
        ЕстьНомДок=Найти(ДатаПриянятия_Стр,",");
        Если  ЕстьНомДок>2 Тогда
            ДатаПриянятия_Стр=Лев(ДатаПриянятия_Стр,ЕстьНомДок-1);
        ИНачеЕсли ЕстьНомДок=1 ТОгда
            ДатаПриянятия_Стр="";
        КонецЕсли;
        ДатаПриянятия=ПреобразованиеДаты(ДатаПриянятия_Стр, "ДатаПриянятия",Истина,Ложь);
        ДатаВвода=ДатаПриянятия;
        
        //ДатаВвода_Стр = СокрЛП(ExcelЛист.Cells(Строка+18, 24).Value);
        //ДатаВвода=ПреобразованиеДаты(ДатаВвода_Стр, "Дата ввода",Истина,Ложь);
        
        //  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //  /////////////////////////              числа                            //////////////////////////////////////////////
        //  /////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
        //грУчет_Стр = СокрЛП(ExcelЛист.Cells(Строка, 5).Value);
        //грУчет=ПреобразованиеСуммы(грУчет_Стр,"грУчет",0,Ложь,Ложь);
        грУчет=0;
        
        //Количество_Стр = СокрЛП(ExcelЛист.Cells(Строка, 7).Value);
        //Количество=ПреобразованиеСуммы(Количество_Стр,"Количество",1,Ложь,Ложь);
        Количество=1;
        
        Стоимость_Стр = СокрЛП(ExcelЛист.Cells(Строка, 4).Value);
        Стоимость=ПреобразованиеСуммы(Стоимость_Стр,"Стоимость",0,Истина,Ложь);

        СуммаАморт_Стр = СокрЛП(ExcelЛист.Cells(Строка, 5).Value);
        СуммаАморт=ПреобразованиеСуммы(СуммаАморт_Стр,"СрокИспользования",0,Истина,Ложь);

        
        
        
        //  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //  /////////////////////////              Строки                            //////////////////////////////////////////////
        //  /////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
        
        
        
        Наименование = ПроверкаСтроки( СокрЛП(ExcelЛист.Cells(Строка, 2).Value),"Наименование",Истина,Ложь);
        ИнвНом  = СокрЛП(Префикс)+ПроверкаСтроки(СокрЛП(ExcelЛист.Cells(Строка, 1).Value),"ИнвНом",Истина,Ложь);
        
        Если ИнвНом=СокрЛП(Префикс) ТОгда
            ИнвНом2=СокрЛП(Префикс)+"пуст"+СокрЛП(Строка(элНом));
            элНом=элНом+1;
        КонецЕсли;
        
        ДокПриянятия  = "";
        НомерДокПриянятия = "";
        ДокВвода   = "";
        НомерДокввода   = "";
        
        //  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        //  /////////////////////////           Элементы базы                            //////////////////////////////////////////////
        //  /////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
        
            
        СпособНачисления=?(СуммаАморт>=Стоимость,Перечисления.СпособНачисленияАмортизации.ПриВводеВЭксплуатацию,Перечисления.СпособНачисленияАмортизации.Линейный);
             Папка="";
        КодОКОФ="";
        МОЛ2="";
        СрокИспользования=0;
        АГ_стр="";
        Если ИнвНом<>СокрЛП(Префикс) Тогда
            Отбор = Новый Структура();
            Отбор.Вставить("ИнвНом",ИнвНом);
            Строки = ТабличноеПоле1.НайтиСтроки(Отбор);
            Если Строки.Количество() = 1  Тогда
                КодОКОФ = Строки[0].КодОКОФ;
                МОЛ2 = Строки[0].МОЛ;
                СрокИспользования = Строки[0].СрокИспользования;
                АГ_стр=  Строки[0].АмортизационнаяГруппа;
                Папка=  Строки[0].Папка;
            Иначе
            Отбор = Новый Структура();
            Отбор.Вставить("Наименование",СтрЗаменить(Наименование,",",""));
            Отбор.Вставить("ИнвНом",ИнвНом);
            Строки = ТабличноеПоле1.НайтиСтроки(Отбор);
            Если Строки.Количество() > 0 Тогда
                КодОКОФ = Строки[0].КодОКОФ;
                МОЛ2 = Строки[0].МОЛ;
                СрокИспользования = Строки[0].СрокИспользования;
                АГ_стр=  Строки[0].АмортизационнаяГруппа;
                Папка=  Строки[0].Папка;
                //Наименование=Строки[0].Наименование;
            ИНаче
                Сообщить("Не удалось найти соответсвие для "+Наименование+" "+ИнвНом,СтатусСообщения.ОченьВажное);
            КонецЕсли;
            КонецЕсли;
        Иначе
            Отбор = Новый Структура();
            Отбор.Вставить("Наименование",СтрЗаменить(Наименование,",",""));
            Отбор.Вставить("Стоимость",Стоимость);
            Строки = ТабличноеПоле1.НайтиСтроки(Отбор);
            Если Строки.Количество() > 0 Тогда
                КодОКОФ = Строки[0].КодОКОФ;
                МОЛ2 = Строки[0].МОЛ;
                СрокИспользования = Строки[0].СрокИспользования;
                АГ_стр=  Строки[0].АмортизационнаяГруппа;
                Папка=  Строки[0].Папка;
                //Наименование=Строки[0].Наименование;
            ИНаче
                Сообщить("Не удалось найти соответсвие для "+Наименование+" "+Стоимость,СтатусСообщения.ОченьВажное);
            КонецЕсли;
        КонецЕсли;
        
        
        
        
        ЕстьОшибкаАГ=ложь;
        элОКОФ=Справочники.ОбщероссийскийКлассификаторОсновныхФондов.НайтиПоКоду(КодОКОФ);
        Если  ЗначениеЗаполнено(элОКОФ) Тогда
            Выборка2=Результат2.Выбрать();
            Попытка
                СтуктураПоиска2 = Новый Структура("ОКОФ");
                СтуктураПоиска2.ОКОФ = элОКОФ;
                Если Выборка2.НайтиСледующий(СтуктураПоиска2) ТОгда
                    АмортизационнаяГруппа=Выборка2.АмортизационнаяГруппа;
                Иначе
                    СтуктураПоиска2 = Новый Структура("ОКОФ");
                    СтуктураПоиска2.ОКОФ = элОКОФ.Родитель;
                    Если Выборка2.НайтиСледующий(СтуктураПоиска2) ТОгда
                        АмортизационнаяГруппа=Выборка2.АмортизационнаяГруппа;
                    Иначе
                        СтуктураПоиска2 = Новый Структура("ОКОФ");
                        СтуктураПоиска2.ОКОФ = элОКОФ.Родитель.Родитель;
                        Если Выборка2.НайтиСледующий(СтуктураПоиска2) ТОгда
                            АмортизационнаяГруппа=Выборка2.АмортизационнаяГруппа;
                        Иначе
                            СтуктураПоиска2 = Новый Структура("ОКОФ");
                            СтуктураПоиска2.ОКОФ = элОКОФ.Родитель.Родитель.Родитель;
                            Если Выборка2.НайтиСледующий(СтуктураПоиска2) ТОгда
                                АмортизационнаяГруппа=Выборка2.АмортизационнаяГруппа;
                            Иначе
                                ЕстьОшибкаАГ=истина;
                            КонецЕсли;
                        КонецЕсли;
                    КонецЕсли;
                КонецЕсли;
            Исключение
                ЕстьОшибкаАГ=истина;
            КонецПопытки;
        ИНаче
            ЕстьОшибкаАГ=истина;
        КонецЕсли;
        
        Если  ЕстьОшибкаАГ Тогда
        //    АГ_стр   = ПроверкаСтроки(СокрЛП(ExcelЛист.Cells(Строка+4, 50).Value),"АГ",Истина,Истина);
            
            ЕстьОшибкаАГ=Ложь;
            ЕСли  АГ_стр="1" Тогда
                АмортизационнаяГруппа= Перечисления.АмортизационныеГруппы.ПерваяГруппа;
            ИНачеЕСли  АГ_стр="2" Тогда
                АмортизационнаяГруппа= Перечисления.АмортизационныеГруппы.ВтораяГруппа;
            ИНачеЕСли  АГ_стр="3" Тогда
                АмортизационнаяГруппа= Перечисления.АмортизационныеГруппы.ТретьяГруппа;
            ИНачеЕСли  АГ_стр="4" Тогда
                АмортизационнаяГруппа= Перечисления.АмортизационныеГруппы.ЧетвертаяГруппа;
            ИНачеЕСли  АГ_стр="5" Тогда
                АмортизационнаяГруппа= Перечисления.АмортизационныеГруппы.ПятаяГруппа;
            ИНачеЕСли  АГ_стр="6" Тогда
                АмортизационнаяГруппа= Перечисления.АмортизационныеГруппы.ШестаяГруппа  ;
            ИНачеЕСли  АГ_стр="7" Тогда
                АмортизационнаяГруппа= Перечисления.АмортизационныеГруппы.СедьмаяГруппа;
            ИНачеЕСли  АГ_стр="8" Тогда
                АмортизационнаяГруппа= Перечисления.АмортизационныеГруппы.ВосьмаяГруппа;
            ИНачеЕСли  АГ_стр="9" Тогда
                АмортизационнаяГруппа= Перечисления.АмортизационныеГруппы.ДевятаяГруппа;
            ИНачеЕСли  АГ_стр="10" Тогда
                АмортизационнаяГруппа= Перечисления.АмортизационныеГруппы.ДесятаяГруппа;
            Иначе
                ЕстьОшибкаАГ=Истина;
            КонецЕсли;
            
        КонецЕсли;
        
        
        Если ЕстьОшибкаАГ Тогда
            //Сообщить("В строке" + Строка +" не удалось коду ОКОФ сопоставить амортизационную группу.", СтатусСообщения.Обычное);
            ЕстьОшибки=Истина;
            АмортизационнаяГруппа=Перечисления.АмортизационныеГруппы.ПустаяСсылка();
        КонецЕсли;
        
        
        
                       

        
        Стр=ТаблицаДокумента.Добавить();
        Стр.КрОшибки=ЕстьКритическиеОшибки;//1
        Стр.Ошибки=ЕстьОшибки;//1
        Стр.НомерПП=НомерПП;//1
        Стр.Папка=Папка;//2

        Стр.СчетУчетаОС=СчетУчетаОС;//2
        Стр.КБК=КБК;             //3
        Стр.Наименование=Наименование;//4
        Стр.грУчет=грУчет;//5
        Стр.ИнвНом=?(ИнвНом<>СокрЛП(Префикс),ИнвНом,ИнвНом2);//6
        Стр.Количество=Количество;       //7
        Стр.Стоимость=Стоимость;      //8
        Стр.МОЛ=?(ЗначениеЗаполнено(МОЛ2),МОЛ2,МОЛ);        //9
        Стр.ДатаПриянятия=ДатаПриянятия;    //10
        Стр.
20 kotokent
 
21.02.14
07:24
(19) ты совсем что ли, мне столько когда не понять )
21 огурец
 
21.02.14
07:30
(20) Ну хз тогда.

В интернете полно примеров как считать данные в 1с из Exel.

Как получишь сможешь получить данные, спросишь как сопоставить две таблицызначений.
22 Godofsin
 
21.02.14
07:33
(17) Это чтение ДБФ
23 Godofsin
 
21.02.14
07:33
(20) Иди в другую профессию тогда, раз понимать не хочешь
24 огурец
 
21.02.14
07:43
(20) Держи пример по проще

Процедура ЧтениеXLSФайла(Элемент)
    
    Если ПустаяСтрока(ИмяФайла) Тогда
        Предупреждение("Для запуска обработки необходимо предварительно выбрать файл Microsoft Excel.");
        Возврат;
    КонецЕсли;
    
    Попытка
        // Загрузка Microsoft Excel
        Состояние("Загрузка Microsoft Excel...");
        ExcelПриложение = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Ошибка при загрузке Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        Возврат;
    КонецПопытки;
    
    Попытка
        // Открытие файла Microsoft Excel
        Состояние("Открытие файла Microsoft Excel...");
        ExcelФайл = ExcelПриложение.WorkBooks.Open(ИмяФайла);
    Исключение
        Сообщить("Ошибка открытия файла Microsoft Excel." + ИмяФайла + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
    КонецПопытки;
    НомерЛиста=?(НомерЛиста=0,1,НомерЛиста);
    Попытка
        // Обработка файла Microsoft Excel
        Состояние("Обработка файла Microsoft Excel...");
        // Читаем данные первого листа книги
        ExcelЛист = ExcelФайл.Sheets(НомерЛиста);
        
        // Определить количество строк и колонок выбранного листа книги Excel
        xlCellTypeLastCell = 11;
        ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
        ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;
    Исключение
        Сообщить("Ошибка открытия листа №1 Microsoft Excel." + Символы.ПС + ОписаниеОшибки(), СтатусСообщения.Внимание);
        // Закрыть COM соединение для экономии памяти
        ExcelПриложение.Quit();
    КонецПопытки;
    
    ТаблицаДокумента.Колонки.Добавить("КрОшибки",,"Крит.Ошибки",15);//-1
    ТаблицаДокумента.Колонки.Добавить("ИнвНом",,"Инвентарный номер",10);//6
    ТаблицаДокумента.Колонки.Добавить("Количество",,"Количество",6);       //7
    ТаблицаДокумента.Колонки.Добавить("Стоимость",,"Стоиомсть",6);      //8
        
    
    Если ПерваяСтрока=0 тогда
        ПерваяСтрока=1;
    КонецЕСли;
    
    Выполнять=Истина;
    
    
    Строка =ПерваяСтрока;
    НомерПП=0;
    
    Пока Выполнять Цикл
                ОбработкаПрерыванияПользователя();
        
                СтрокаКарточки  = СокрЛП(ExcelЛист.Cells(Строка, 3).Value);
                    
        
        
        Если не ЗначениеЗаполнено(СтрокаКарточки) ТОгда
            Выполнять=Ложь;
            Продолжить;
        КонецЕсли;
            
                
        
        
        ИнвНом  = СокрЛП(Префикс)+ПроверкаСтроки(СокрЛП(ExcelЛист.Cells(Строка, 1).Value),"ИнвНом",Истина,Ложь);
        
                       Стоимость=0;
                       Количество=0;
            Отбор = Новый Структура();
            Отбор.Вставить("ИнвНом",ИнвНом);
            Строки = ТабличноеПоле1.НайтиСтроки(Отбор);
            Если Строки.Количество() = 1  Тогда
                Стоимость = Строки[0].Стоимость;
                Количество = Строки[0].Количество;
        
            КонецЕсли;

        
        Стр=ТаблицаДокумента.Добавить();
        Стр.КрОшибки=ЕстьКритическиеОшибки;//1
        Стр.Ошибки=ЕстьОшибки;//1
        Стр.ИнвНом=?(ИнвНом<>СокрЛП(Префикс),ИнвНом,ИнвНом2);//6
        Стр.Количество=Количество;       //7
        Стр.Стоимость=Стоимость;      //8
                
        Строка=Строка+1;
    КонецЦикла;
    
    ExcelПриложение.Quit();
    
        Предупреждение("Загруженно строк "+(НомерПП),0);
    
    
    
    // Отобразить результаты загрузки в форме элемента
    ЭлементыФормы.ТаблицаДокумента.Значение = ТаблицаДокумента;
    ЭлементыФормы.ТаблицаДокумента.СоздатьКолонки();
    
КонецПроцедуры // ЧтениеXLSФайла(Элемент)
25 sergeev-ag-1977
 
21.02.14
08:25
Есть обработка "Загрузка с табличного документа" - там пример кода как считать с Экселя данные. Анализ же данные уже дело попроще.
26 kotokent
 
21.02.14
08:41
Запрос.Выполнить().Пустой()

что это означает?
27 kotokent
 
21.02.14
08:44
чне надо теперь сопоставить что в экселе и в документе, даные с экселя я считал и занес их в таблицу значений, теперь надо считать с документа и сопоставить их
28 kotokent
 
21.02.14
08:48
ТаблицаЗначений = Новый ТаблицаЗначений;
    ТаблицаЗначений.Колонки.Добавить("Номер");
    ТаблицаЗначений.Колонки.Добавить("Магазин");
    ТаблицаЗначений.Колонки.Добавить("Бонусы");
    ТаблицаЗначений.Колонки.Добавить("План");
    ТаблицаЗначений.Колонки.Добавить("ПланСтар");
    ТаблицаЗначений.Колонки.Добавить("ПроданоЗаМесяц");
    ТаблицаЗначений.Колонки.Добавить("ПрогнозВыполненияПроц");
    ТаблицаЗначений.Колонки.Добавить("ПрогнозВыполненияЕд");
    ТаблицаЗначений.Колонки.Добавить("НеобходимыеЕжедневныеПродажи");
    ТаблицаЗначений.Колонки.Добавить("ПотенциальныеВзысканияПремии");
    
    СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = "+СсылкаНаОбъект;
    СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 12.0"+";HDR=YES;IMEX=1"";";
    
    // Подключаемся
    
    Об_Конект = Новый COMОбъект("ADODB.Connection");
    Попытка
        Об_Конект.Open(СтрокаПодключения);
    Исключение
        Сообщить ("Невозможно подключится к Microsoft Excel Driver!!!
        |Возможно файл ["+СсылкаНаОбъект+"] открыт другим пользователем.");
        Возврат;
    КонецПопытки;
    
    СтрЗапроса = "
    |select * from [Лист1$]"; //данный запрос выбирает все заполненные ячейки листа, однако можно наложить условия отбора. синтаксис SQL
    
    
    Попытка
        RecordSet = Об_Конект.Execute(СтрЗапроса);
    Исключение
        Сообщить("Не удалось выполнить запрос к файлу Excel
        |"+ ОписаниеОшибки(),СтатусСообщения.Важное);
        Возврат;
    КонецПопытки;
    
    НомерСтроки = 1;
    ТекущийМагазин = Неопределено;
    Пока НЕ RecordSet.EOF() Цикл
        НомерСтроки = НомерСтроки+1;
        Если НомерСтроки<НачальнаяСтрока Тогда
            RecordSet.MoveNext();
        Иначе
            //Дальше обрабатываем RecordSet
            НоваяСтрока = ТаблицаЗначений.Добавить();
            НоваяСтрока.Номер = НомерСтроки;
            НоваяСтрока.Магазин = Строка(RecordSet.Fields(0).Value);
            НоваяСтрока.Бонусы = Строка(RecordSet.Fields(1).Value);
            НоваяСтрока.План = RecordSet.Fields(2).Value;
            НоваяСтрока.ПланСтар = Строка(RecordSet.Fields(3).Value);
            НоваяСтрока.ПроданоЗаМесяц = Строка(RecordSet.Fields(4).Value);
            НоваяСтрока.ПрогнозВыполненияПроц = Строка(RecordSet.Fields(5).Value);
            НоваяСтрока.ПрогнозВыполненияЕд = Строка(RecordSet.Fields(6).Value);
            НоваяСтрока.НеобходимыеЕжедневныеПродажи = Строка(RecordSet.Fields(7).Value);
            НоваяСтрока.ПотенциальныеВзысканияПремии = Строка(RecordSet.Fields(8).Value);
            RecordSet.MoveNext();
        КонецЕсли;
    КонецЦикла;
29 kotokent
 
21.02.14
08:48
вот так занес и подключился
30 kotokent
 
21.02.14
08:59
?
31 kotokent
 
21.02.14
11:00
другой вопрос, как строки занести в таблицу значений и потом 2-е таблицы значений сравнить?
32 kotokent
 
21.02.14
11:00
строки документа
33 Wobland
 
21.02.14
11:01
сравнивай сразу с ТЧ документа
34 kotokent
 
21.02.14
11:02
(33) а если надо сравнивать с составляющими еще этого документа
35 Wobland
 
21.02.14
11:07
а если не надо?
36 kotokent
 
21.02.14
11:14
(35) ну смотри, у меня есть ТЗ по экселю, теперь надо просто ее сравнить с ТЧ документа... как их перебрать?
37 kotokent
 
21.02.14
11:14
там ТЧ по магазинам отличаются
38 kotokent
 
21.02.14
11:19
(35) сравнить надо до 1-ого расхождения
39 el7cartel
 
21.02.14
11:21
(14) если честно, просто открой книгу и СП!
40 kotokent
 
21.02.14
11:26
(39) СП это что?
41 Wobland
 
21.02.14
11:35
вот спорим, ты с первого раза не сможешь правильно сказать, что есть расхождение
42 огурец
 
21.02.14
11:36
(36) > ну смотри, у меня есть ТЗ по экселю, теперь надо просто ее сравнить с ТЧ документа... как их перебрать?

Разбиваем задачу на два этапа:
1. Перебрать строки таблицы документа.
2. Найти соответсвующую строку в ТЗ

С какие этапом трудности?
43 Wobland
 
21.02.14
11:39
дихотомия!
мои поставщик поп-корна и гастроэнтеролог скоро озолотятся
44 kotokent
 
21.02.14
11:50
(42) (43) он мне ходит по экселю, по всем строка... проблема в том, что я не могу сообразить как к ним обращаться к этим полям и как помот их сравнить
45 огурец
 
21.02.14
11:57
(44)
> сообразить как к ним обращаться
СокрЛП(ExcelЛист.Cells(Строка, 3).Value);

> как помот их сравнить

Что именно сравнить?
46 kotokent
 
21.02.14
11:59
(45) у меня пока такой код



//Создаем таблицу значений
    ТаблицаЗначений = Новый ТаблицаЗначений;
    ТаблицаЗначений.Колонки.Добавить("Номер");
    ТаблицаЗначений.Колонки.Добавить("Магазин");
    ТаблицаЗначений.Колонки.Добавить("Бонусы");
    ТаблицаЗначений.Колонки.Добавить("План");
    ТаблицаЗначений.Колонки.Добавить("ПланСтар");
    ТаблицаЗначений.Колонки.Добавить("ПроданоЗаМесяц");
    ТаблицаЗначений.Колонки.Добавить("ПрогнозВыполненияПроц");
    ТаблицаЗначений.Колонки.Добавить("ПрогнозВыполненияЕд");
    ТаблицаЗначений.Колонки.Добавить("НеобходимыеЕжедневныеПродажи");
    ТаблицаЗначений.Колонки.Добавить("ПотенциальныеВзысканияПремии");
    
    СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = "+СсылкаНаОбъект;
    СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 12.0"+";HDR=YES;IMEX=1"";";
    
    // Подключаемся
    
    Об_Конект = Новый COMОбъект("ADODB.Connection");
    Попытка
        Об_Конект.Open(СтрокаПодключения);
    Исключение
        Сообщить ("Невозможно подключится к Microsoft Excel Driver!!!
        |Возможно файл ["+СсылкаНаОбъект+"] открыт другим пользователем.");
        Возврат;
    КонецПопытки;
    
    СтрЗапроса = "
    |select * from [Лист1$]"; //данный запрос выбирает все заполненные ячейки листа, однако можно наложить условия отбора. синтаксис SQL
    
    
    Попытка
        RecordSet = Об_Конект.Execute(СтрЗапроса);
    Исключение
        Сообщить("Не удалось выполнить запрос к файлу Excel
        |"+ ОписаниеОшибки(),СтатусСообщения.Важное);
        Возврат;
    КонецПопытки;
    
    НомерСтроки = 1;
    ТекущийМагазин = Неопределено;
    Пока НЕ RecordSet.EOF() Цикл
        НомерСтроки = НомерСтроки+1;
        Если НомерСтроки<НачальнаяСтрока Тогда
            RecordSet.MoveNext();
        Иначе
            //Дальше обрабатываем RecordSet
            НоваяСтрока = ТаблицаЗначений.Добавить();
            НоваяСтрока.Номер = НомерСтроки;
            НоваяСтрока.Магазин = Строка(RecordSet.Fields(0).Value);
            НоваяСтрока.Бонусы = Строка(RecordSet.Fields(1).Value);
            НоваяСтрока.План = RecordSet.Fields(2).Value;
            НоваяСтрока.ПланСтар = Строка(RecordSet.Fields(3).Value);
            НоваяСтрока.ПроданоЗаМесяц = Строка(RecordSet.Fields(4).Value);
            НоваяСтрока.ПрогнозВыполненияПроц = Строка(RecordSet.Fields(5).Value);
            НоваяСтрока.ПрогнозВыполненияЕд = Строка(RecordSet.Fields(6).Value);
            НоваяСтрока.НеобходимыеЕжедневныеПродажи = Строка(RecordSet.Fields(7).Value);
            НоваяСтрока.ПотенциальныеВзысканияПремии = Строка(RecordSet.Fields(8).Value);
            RecordSet.MoveNext();
        КонецЕсли;
    КонецЦикла;
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    ИА_ПланМагазина.Ссылка
    |ИЗ
    |    Документ.ИА_ПланМагазина КАК ИА_ПланМагазина
    |ГДЕ
    |    ИА_ПланМагазина.ИА_Магазин = &ТекМагазин
    |    И ИА_ПланМагазина.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&НачПериода, Месяц) И КОНЕЦПЕРИОДА(&КонПериода, Месяц)";
    Запрос.УстановитьПараметр("НачПериода",НачалоМесяца(Период));
    Запрос.УстановитьПараметр("КонПериода",КонецМесяца(Период));
    НовыйПланМагазина = Документы.ИА_ПланМагазина.ПустаяСсылка();    
    Для каждого СтрокаТаблицы ИЗ ТаблицаЗначений Цикл
        Если НЕ (Найти(СтрокаТаблицы.Магазин,"Магазин:")=0) Тогда
            Продолжить;
        Иначе
            Если НЕ (Найти(СтрокаТаблицы.Магазин,"Итого:")=0) Тогда
                Продолжить;
            Иначе
                Если СтрокаТаблицы.Магазин <> "" И ЗначениеЗаполнено(Справочники.ИА_Магазин.НайтиПоНаименованию(СтрокаТаблицы.Магазин).Ссылка) Тогда
                    Сообщить ("ура");
                Иначе
                                        
                КонецЕсли    
            КонецЕсли
        КонецЕсли
    КонецЦикла;
47 el7cartel
 
21.02.14
12:11
(41) расскажи плиз ТС что такое СП, у тебя лучше всех получается)))
48 Wobland
 
21.02.14
12:17
(40) Святое Писание - это сборник статей, написанный Пророком Нуралиевым и Апостолами-сотрудниками его при помощи Святаго Духа Божьего, открывающие нам тайны Божьего Промысла и дающие спасение душам нашим
49 kotokent
 
21.02.14
12:47
(48) ооо... это Святое писание... никогда не будет доступно для заблудших душ не посвященных...
50 zladenuw
 
21.02.14
12:56
(49) оно доступно для всех. только не верные, могут не понимать о чем глаголят Святые
51 kotokent
 
21.02.14
13:05
(50) святых еще понять надо, они говорят на чудотворном языке... а тот кто молод, не проник всем существом бытия
52 Wobland
 
21.02.14
13:19
интересно, а какое оно - существо бытия? имеет ли оно хвост? длинны ли его уши?
53 kotokent
 
21.02.14
13:33
(52) скажи лучше как обратиться к реквизиту табличной части документа?
54 kotokent
 
21.02.14
13:34
(52) у меня был такой пример

Если СтрокаТаблицы.Магазин <> "" И ЗначениеЗаполнено(Справочники.ИА_Магазин.НайтиПоНаименованию(СтрокаТаблицы.Магазин).Ссылка) Тогда

но он не работает с документом
55 Wobland
 
21.02.14
13:38
(53) через точку. полегчало?
56 Enders
 
21.02.14
13:38
Чую -  это будет весёлая обработка :)
57 kotokent
 
21.02.14
13:40
(55) нет, документ вообще другой, я писал:
СтрокаТаблицы.План <> "" И ЗначениеЗаполнено(Документы.ИА_ПланМагазина.НайтиПоРеквизиту(СтрокаТаблицы.План).Ссылка)


не работает
58 Wobland
 
21.02.14
13:47
ага. была сегодня такая идея уже..
задача: написать обработку, из набора ключевых слов и операторов случайно генерирующую синтаксически верный код. и в качестве развития идеи: случайно генерировать хоть немного осмысленный код, а потом хором и с пивом угадывать, что он делает
59 kotokent
 
21.02.14
13:47
(58) прикольно поди было бы хором и пивом... весело
60 kotokent
 
21.02.14
13:50
СтрокаТаблицы.План <> "" И ЗначениеЗаполнено(Документы.ИА_ПланМагазина.НайтиПоНаименованию(СтрокаТаблицы.План).ИА_План)


мне нужно сравнить СтрокаТаблицы.План и ИА_План,... я не соображу как???
61 Wobland
 
21.02.14
13:54
да, ты никак не сообразишь
62 kotokent
 
21.02.14
13:58
(61) я же не прошу код написать, я подсказку прошу
63 kotokent
 
21.02.14
14:18
Если СтрокаТаблицы.План <> "" И ЗначениеЗаполнено(Документы.ИА_ПланМагазина.НайтиПоРеквизиту("ИА_План", "СтрокаТаблицы.План").Ссылка)  Тогда



как к нему обратиться?
64 kotokent
 
24.02.14
06:06
?
65 kotokent
 
25.02.14
08:57
Для каждого СтрокаEx ИЗ СтрокиExcel Цикл
            НайденаяСтрока = Табл1.Колонки.Найти(СтрокаEx.Бонусы);
            Если НайденаяСтрока = Неопределено Тогда


Табл1 - это выгруженый запрос, надо в нем найти СтрокаEx.Бонусы

что не так делаю?
66 Wobland
 
25.02.14
08:58
1. всё ещё занимаешься этим;
2. не читаешь ошибку;
3. не думаешь;
67 kotokent
 
25.02.14
09:01
(66) нет,
Табл1 = Запрос.Выполнить().Выгрузить();
поместил в Табл1 и к табличной части на прямую обратился
ВЫБРАТЬ
                       |    ИА_ПланМагазина.ИА_Магазин,
                       |    ИА_ПланМагазина.Дата,
                       |    ИА_ПланМагазина.ПланМагазина.ИА_Бонус КАК Бонус,
                       |    ИА_ПланМагазина.ПланМагазина.ИА_План КАК План
                       |ИЗ
                       |    Документ.ИА_ПланМагазина КАК ИА_ПланМагазина
                       |ГДЕ
                       |    ИА_ПланМагазина.ИА_Магазин.Наименование = &Магазин

а вот теперь как найти по параметру другому не могу сделать!?!?
68 kotokent
 
25.02.14
09:02
НайденаяСтрока = Табл1.Колонки.Найти(СтрокаEx.Бонусы);


как тут из СтрокаEx.Бонусы значение сопоставить с Табл1
69 Godofsin
 
25.02.14
09:05
(68) Табл1.Найти(СтруктураОтбора);
70 Godofsin
 
25.02.14
09:05
В структуру вставляй СтрокаEx.Бонусы
71 kotokent
 
25.02.14
09:07
(70)
Отбор = Новый Структура;
Отбор.Вставить("Бонус", СтрокаEx.Бонусы);

так?
72 Wobland
 
25.02.14
09:08
(69) фих
73 Godofsin
 
25.02.14
09:08
(71) угу, если колонка с бонусами в табл1 называется "Бонус"
74 Godofsin
 
25.02.14
09:08
(72) Пусть так делает )))
75 Wobland
 
25.02.14
09:09
(74) структура взлетит только с НайтиСтроками
76 Godofsin
 
25.02.14
09:09
+(73) и типы совпадают
77 Godofsin
 
25.02.14
09:09
(75) а, блин, не дописал.
78 Godofsin
 
25.02.14
09:10
.НайтиСтроки()
79 Wobland
 
25.02.14
09:10
давай лучше спросим ТС, что и где нужно найти, и что потом с этой кучей делать
80 Godofsin
 
25.02.14
09:10
возвращает массив с найденными ссылками на строки
81 Godofsin
 
25.02.14
09:11
(79) Ну давай попробуем )))
82 Wobland
 
25.02.14
09:11
что и где нужно найти, и что потом с этой кучей делать?
83 Wobland
 
25.02.14
09:12
(80) я помню, как ломалось моё представление о мире, когда я начинал дружить со ссылками. но это было уже после школы, есть подозрение, что ТС не осилит
84 kotokent
 
25.02.14
09:12
(81) (82) надо сопоставить бонусы в документе и в Экселе, а потом уже другой вопрос
85 Wobland
 
25.02.14
09:15
(84) что с чем?
86 kotokent
 
25.02.14
09:16
что то не работает
(85) Табл1 - это выгруженый запрос, его Бонус надо сопоставить с бонусом в Экселе
87 Godofsin
 
25.02.14
09:17
(84) Сопоставляй сразу в запросе
88 Wobland
 
25.02.14
09:18
(86) и что с этим делать?
89 kotokent
 
25.02.14
09:19
(87) у меня условий и процедур потом куча
90 kotokent
 
25.02.14
09:20
мне сказали так сделать
НайденаяСтрока = Табл1.Найти(СтрокаEx.Бонусы)

но он постояно возвращмает НЕОПРЕДЕЛЕНО
91 Wobland
 
25.02.14
09:20
(89) да, тебе не позавидуешь
92 kotokent
 
25.02.14
09:23
ща картинку кину, мож я что то не правильно сделал
93 kotokent
 
25.02.14
09:23
94 Wobland
 
25.02.14
09:34
(92) откуда эта нотка сомнения в твоих буквах?
95 Godofsin
 
25.02.14
09:38
(93) Фак...
96 Godofsin
 
25.02.14
09:38
НайденнаяСтрока = Табл1.НайтиСтроки(Отбор1);
97 Godofsin
 
25.02.14
09:38
и смотри (80)
98 Godofsin
 
25.02.14
09:39
(89) Кучу условий и процедур выполняй до сопоставления в запросе.
99 Wobland
 
25.02.14
09:43
ёмаё, а кто пустил ребёнку в хранилище?
100 kotokent
 
25.02.14
10:56
(96) мне вот эту строчку не удается только сделать, как ее сделать?
101 kotokent
 
25.02.14
10:57
(96) я так пробовал, не получается
102 Wobland
 
25.02.14
11:00
(101) почему?
103 kotokent
 
25.02.14
11:03
(102) ошибка метода НайтиСторуки
104 Wobland
 
25.02.14
11:04
(103) из-за чего?
105 kotokent
 
25.02.14
11:06
(104) незннаю
106 Wobland
 
25.02.14
11:07
ну всё, ты приплыл. тупик
107 kotokent
 
25.02.14
11:08
(106) ну правда странно, раньше я так в точности делал, и работало, а теперь не работает
108 kotokent
 
25.02.14
11:08
Отбор = Новый Структура;
        Отбор.Вставить("Магазин", СтрокаТаб.Магазин);
        СтрокиExcel = ТаблицаЗначений1.НайтиСтроки(Отбор);
109 Godofsin
 
25.02.14
11:09
(106) ты еще не устал? за 100 перевалило )))
110 Godofsin
 
25.02.14
11:09
(108) отладчик в руки.
111 kotokent
 
25.02.14
11:10
(110) я и так по нему и хожу
112 Wobland
 
25.02.14
11:11
(109) я и за пятьсот переваливал с этим автором
113 kotokent
 
25.02.14
11:13
2 идентичных запроса, но 1-ый работает, а второй нет

Отбор = Новый Структура;
        Отбор.Вставить("Магазин", СтрокаТаб.Магазин);
        СтрокиExcel = ТаблицаЗначений1.НайтиСтроки(Отбор);
        
        Для каждого СтрокаEx ИЗ СтрокиExcel Цикл
            Отбор1 = Новый Структура;
            Отбор1.Вставить("Бонусы", СтрокаEx.Бонусы);
            НайденаяСтрока = Табл1.НайтиСтроки(Отбор1);
114 Godofsin
 
25.02.14
11:14
(113) я тут запросов не наблюдаю
115 Wobland
 
25.02.14
11:15
утверждает, что не работает, откуда-то берёт какие-то "задания", появляется только в рабочее время, теперь вот в хранилище замечен. вопросы дурные задаёт давно, такого уникума уже бы вычислили и выпиннули. по всему выходит зачаток машинного разума. не может живой человек так долго прикидываться
116 Godofsin
 
25.02.14
11:15
(115) гыгыгы))) +100500!!!
117 kotokent
 
25.02.14
11:16
(115) ну вообще, зачаток машины, робот... ты прав
118 kotokent
 
25.02.14
11:16
подскажите лучше
119 Wobland
 
25.02.14
11:18
+(115) но меня смущает тот случайный отзыв на вакансию стажёра...
http://i.imgur.com/nDrB4qh.png
120 Wobland
 
25.02.14
11:19
(119) тьху на меня, это ж сам ТС размещает вакансии
121 Godofsin
 
25.02.14
11:20
(118) Ошибку напиши сюда, которая вылетает при методе НайтиСтроки(), предварительно на ошибке нажав кнопку "Подробно". Скопируй оттуда текст ошибки, дитя машины.
122 kotokent
 
25.02.14
11:21
(121)

{Обработка.ИА_ПомошникСозданияДокументовПланМагазина.Форма.ПомошникСозданияПлановМагазинов.Форма(267)}: Ошибка при вызове метода контекста (НайтиСтроки)
            НайденаяСтрока = Табл1.НайтиСтроки(Отбор1);
по причине:
Неверное имя колонки
123 badboychik
 
25.02.14
11:22
это последствия запуска изучения 1С в школах
124 Godofsin
 
25.02.14
11:24
(122) Как думаешь, вот это о чем говорит: "Неверное имя колонки"?
125 Godofsin
 
25.02.14
11:25
(120) херасе... ТС франч хочет открыть?
126 Wobland
 
25.02.14
11:25
(122)    Wobland
104 - 25.02.14 - 11:04
(103) из-за чего?
   kotokent
105 - 25.02.14 - 11:06
(104) незннаю
127 Wobland
 
25.02.14
11:26
(125) не выйдет, собеседование сам с собой не пройдёт
128 kotokent
 
25.02.14
11:26
(124) (126) имя колонки правильное, сейчас поставил "Бонус" вместо "Бонусы" значение не определено
129 Godofsin
 
25.02.14
11:27
(127) =)))))
130 Godofsin
 
25.02.14
11:27
(128) Значит, не нашел строк.
131 kotokent
 
25.02.14
11:28
(130) строки тоже есть, проверил через вичислитель значений
132 Wobland
 
25.02.14
11:30
(131) ты себе больше доверяешь, чем бездушной железяке?
133 kotokent
 
25.02.14
11:33
(132) эта шайтан-машина меня постоянно подводит
134 kotokent
 
25.02.14
11:33
)))
135 kotokent
 
25.02.14
11:35
он мне вычисляет масив, но там пусто, что то хрень какая то
136 Wobland
 
25.02.14
11:37
зато как удобно сортировать такой массив
137 Godofsin
 
25.02.14
11:39
(135) Значит, типы не совпадают
138 kotokent
 
25.02.14
11:41
(137) он мне передает массив, а мне надо значение...
139 Wobland
 
25.02.14
11:42
мож, глюк платформы? человек хочет значение, а ему внезапно выдают массив
140 kotokent
 
25.02.14
11:43
(139) это не глюк, это ошибка моя
141 Wobland
 
25.02.14
11:44
(140) точно?
142 kotokent
 
25.02.14
11:45
(141) отбор не нужен, надо как то через просто "найти" сделать
143 badboychik
 
25.02.14
11:45
(139) это глюк человека! ))
144 Wobland
 
25.02.14
11:46
(142) почему не нужен?
145 Godofsin
 
25.02.14
11:46
(143) Мы подозреваем, что он не человек ))))
146 kotokent
 
25.02.14
11:47
(144) отбор масив возвращает
147 Wobland
 
25.02.14
11:47
да, давайте скажем "это глюк автора"
148 Wobland
 
25.02.14
11:47
(146) почему так?
149 kotokent
 
25.02.14
11:51
(148) как написать то, он постоянно значение неопределено возвлащает, хоть с отбором хоть без него
150 Wobland
 
25.02.14
11:52
(149) сумрачный кошмар и скрежет зубовный
151 badboychik
 
25.02.14
11:54
это потому что 1Ска еще сырая
152 Wobland
 
25.02.14
11:56
коллеги, раз уж здесь пятница, скажите, где регистр в левой части конструктора?
http://i.imgur.com/nc4Znxt.png
153 vhl
 
25.02.14
11:59
(152) Нажми на "РегистрСведений1" правой кнопкой - "Заменить таблицу"
154 kotokent
 
25.02.14
12:05
(150) (151) (153) как получить значение из этого массива и занести в переменную
155 Wobland
 
25.02.14
12:05
что-то гриншот подводит..
(153) http://s018.radikal.ru/i503/1402/5a/6efcda73a080.png
156 Wobland
 
25.02.14
12:06
(154) какое значение?
157 Godofsin
 
25.02.14
12:07
(154) Для н = 0 по Массив.Количество() - 1 цикл
НаконецТоМоеЗначение = Массив[н].ЗначениеКотороеХочу;
КонецЦикла;
158 kotokent
 
25.02.14
12:13
(157) (156) подождите, другой вопрос, у меня бонус в запросе - таблица значений, надо его в строку превратить... сказали что в построителе запросов гдето это есть... а может я чтото не понял
159 Wobland
 
25.02.14
12:16
опять сомненья вижу. отринь их - ты не понял
160 kotokent
 
25.02.14
12:17
(159) ты как всегда ))), нет бы подсказать
161 Wobland
 
25.02.14
12:18
(160) надоело уже
162 kotokent
 
25.02.14
12:23
(161) ну кинь наметку
163 Godofsin
 
25.02.14
12:25
Все, короче. ТС начинает внушать мне чувство безнадежности, я наваливаю с темы...
164 kotokent
 
25.02.14
12:27
КС = Новый КвалификаторыСтроки(1000);
МассивС = Новый Массив;
МассивС.Добавить(Тип("Строка"));
ОписаниеТиповСтр = Новый ОписаниеТипов(МассивС, ,КС ,);
ТЗ.Колонки.Добавить("КолонкаСтрока", ОписаниеТиповСтр);
165 kotokent
 
25.02.14
12:27
(163) так получится?
166 Wobland
 
25.02.14
12:28
(163) загадка! мне так в диковинку было сегодня с утра ;)
167 vhl
 
25.02.14
12:29
(155) Голимая консоль - брак гонит
168 kotokent
 
25.02.14
12:32
(166) как перевести "Бонус" табличной части в тип строка
169 kotokent
 
25.02.14
12:32
или ссылка
170 brato4karik
 
25.02.14
12:33
(168) А значение в "Бонус" какое?
171 kotokent
 
25.02.14
12:33
(169) лучше строка
172 kotokent
 
25.02.14
12:33
(170) строка
173 brato4karik
 
25.02.14
12:34
Тоесть в источнике данных Строка и надо преобразовать в Строку?
174 kotokent
 
25.02.14
12:35
(173) ща покажу
175 Wobland
 
25.02.14
12:37
(167) могу повторить на любой ;)
176 brato4karik
 
25.02.14
12:37
Уважаемый ТС, молодость не порок, а не знание не грех, но за 180 сообщений было множество подсказок на которые можно опереться. Ты попробуй взглянуть на задачу снова, и из все выше предложенных советов ты ее быстро решишь, не зацикливайся на проблемном участке с кодом.
177 kotokent
 
25.02.14
12:38
(173) (175) http://s020.radikal.ru/i719/1402/35/db4cc2c7615a.png

табл1 - это запрос
178 kotokent
 
25.02.14
12:39
надо перевести бонус и план, они там как таблица значений в значение
179 brato4karik
 
25.02.14
12:42
Ну ты пойми таблицы это коллекции значений(перевод в "значение" вряд ли тебе поможет) получишь строку ноликов запятых и латинских букв. Таблицы можно циклом оббегать и сравнивать значения ячеек в каждых строчках. Ну для иллюстрации представь себе классный журнал двух разных классов, как бы ты из сам сравнил?
180 kotokent
 
25.02.14
12:45
(179) если бы можно было обратиться к значению в табличной части на прямую
181 kotokent
 
25.02.14
12:45
так бы я и сравнил их
182 Wobland
 
25.02.14
12:45
(180) можно и напрямую
(181) что с чем?
183 kotokent
 
25.02.14
12:47
(182) ну смотри, у меня есть Экселевское значение "бонус" и мне надо его сравнить со значением в табличной части, тоже "Бонус"
184 kotokent
 
25.02.14
12:48
(183) запрос по документу я выгрузил в Табл1
185 kotokent
 
25.02.14
12:51
(184) и ещи там их по 1-ому магазину много
186 Wobland
 
25.02.14
12:51
(183) я не хочу смотреть, я спрашиваю: что с чем сравнить?
187 kotokent
 
25.02.14
12:56
(186) ну я же тебе сказал...
Экселевское значение "бонус" и мне надо его сравнить со значением в табличной части, тоже "Бонус"
188 brato4karik
 
25.02.14
12:59
Ну вот в твоем сообщении и ответ сразу есть, сравни значения разных таблиц, а значения находятся в строках. Значения должны быть одного типа.
189 Wobland
 
25.02.14
12:59
1. Экселевское значение "бонус"
2. значение в табличной части, тоже "Бонус"

что такое п. 1?
190 kotokent
 
25.02.14
13:01
(189) значение
191 kotokent
 
25.02.14
13:01
(189) или я не понял тебя
192 Wobland
 
25.02.14
13:02
(191) больше уверенности в голосе
193 Wobland
 
25.02.14
13:03
где взять Экселевское значение "бонус"?
194 kotokent
 
25.02.14
13:04
(193) я его уже беру из файла экселевского по определенному магазину, а там бонусов много
195 Wobland
 
25.02.14
13:05
как выглядит этот момент взятия?
196 kotokent
 
25.02.14
13:06
(195)


//Создаем таблицу значений
    ТаблицаЗначений1 = Новый ТаблицаЗначений;
    ТаблицаЗначений1.Колонки.Добавить("Номер");
    ТаблицаЗначений1.Колонки.Добавить("Магазин");
    ТаблицаЗначений1.Колонки.Добавить("Бонусы");
    ТаблицаЗначений1.Колонки.Добавить("План");
    //ТаблицаЗначений.Колонки.Добавить("ПланСтар");
    //ТаблицаЗначений.Колонки.Добавить("ПроданоЗаМесяц");
    //ТаблицаЗначений.Колонки.Добавить("ПрогнозВыполненияПроц");
    //ТаблицаЗначений.Колонки.Добавить("ПрогнозВыполненияЕд");
    //ТаблицаЗначений.Колонки.Добавить("НеобходимыеЕжедневныеПродажи");
    //ТаблицаЗначений.Колонки.Добавить("ПотенциальныеВзысканияПремии");
    
    СтрокаПодключения = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = "+СсылкаНаОбъект;
    СтрокаПодключения = СтрокаПодключения + "; Extended Properties = "+"""Excel 12.0"+";HDR=YES;IMEX=1"";";
    
    // Подключаемся
    Об_Конект = Новый COMОбъект("ADODB.Connection");
    Попытка
        Об_Конект.Open(СтрокаПодключения);
    Исключение
        Сообщить ("Невозможно подключится к Microsoft Excel Driver!!!
        |Возможно файл ["+СсылкаНаОбъект+"] открыт другим пользователем.");
        Возврат;
    КонецПопытки;
    
    СтрЗапроса = "
    |select * from [Лист1$]"; //данный запрос выбирает все заполненные ячейки листа, однако можно наложить условия отбора. синтаксис SQL
    
    Попытка
        RecordSet = Об_Конект.Execute(СтрЗапроса);
    Исключение
        Сообщить("Не удалось выполнить запрос к файлу Excel
        |"+ ОписаниеОшибки(),СтатусСообщения.Важное);
        Возврат;
    КонецПопытки;
    
    НомерСтроки = 1;
    ТекущийМагазин = Неопределено;
    Пока НЕ RecordSet.EOF() Цикл
        НомерСтроки = НомерСтроки+1;
        Если НомерСтроки<НачальнаяСтрока Тогда
            RecordSet.MoveNext();
        Иначе
            //Дальше обрабатываем RecordSet
            НоваяСтрока = ТаблицаЗначений1.Добавить();
            НоваяСтрока.Номер = НомерСтроки;
            НоваяСтрока.Магазин = Строка(RecordSet.Fields(0).Value);
            НоваяСтрока.Бонусы = Строка(RecordSet.Fields(1).Value);
            НоваяСтрока.План = RecordSet.Fields(2).Value;
            //НоваяСтрока.ПланСтар = Строка(RecordSet.Fields(3).Value);
            //НоваяСтрока.ПроданоЗаМесяц = Строка(RecordSet.Fields(4).Value);
            //НоваяСтрока.ПрогнозВыполненияПроц = Строка(RecordSet.Fields(5).Value);
            //НоваяСтрока.ПрогнозВыполненияЕд = Строка(RecordSet.Fields(6).Value);
            //НоваяСтрока.НеобходимыеЕжедневныеПродажи = Строка(RecordSet.Fields(7).Value);
            //НоваяСтрока.ПотенциальныеВзысканияПремии = Строка(RecordSet.Fields(8).Value);
            RecordSet.MoveNext();
        КонецЕсли;
    КонецЦикла;
197 kotokent
 
25.02.14
13:07
создал таблицузначений1
и теперь
198 kotokent
 
25.02.14
13:07
Для каждого СтрокаТаб ИЗ ТаблицаЗначений1 Цикл
        Запрос = Новый Запрос;
        Запрос.УстановитьПараметр("НачПериода",НачалоМесяца(Период));
        Запрос.УстановитьПараметр("КонПериода",КонецМесяца(Период));
        
        Если НЕ (Найти(СтрокаТаб.Магазин,"Магазин:")=0) Тогда
            Продолжить;
        Иначе
            Если НЕ (Найти(СтрокаТаб.Магазин,"Итого:")=0) Тогда            
                Продолжить;
            Иначе
                Запрос.УстановитьПараметр("Магазин",СтрокаТаб.Магазин);
            КонецЕсли;    
        КонецЕсли;    
            
        Запрос.Текст = "ВЫБРАТЬ
                       |    ИА_ПланМагазина.ИА_Магазин,
                       |    ИА_ПланМагазина.Дата,
                       |    ИА_ПланМагазина.ПланМагазина.ИА_Бонус КАК Бонус,
                       |    ИА_ПланМагазина.ПланМагазина.ИА_План КАК План
                       |ИЗ
                       |    Документ.ИА_ПланМагазина КАК ИА_ПланМагазина
                       |ГДЕ
                       |    ИА_ПланМагазина.ИА_Магазин.Наименование = &Магазин";
        Табл1 = Запрос.Выполнить().Выгрузить();
        
        Если Табл1.Количество() = 0 Тогда
            Сообщить ("Создаем новый документ ""План""");
        КонецЕсли;
        
        Отбор = Новый Структура;
        Отбор.Вставить("Магазин", СтрокаТаб.Магазин);
        СтрокиExcel = ТаблицаЗначений1.НайтиСтроки(Отбор);
        
        Для каждого СтрокаEx ИЗ СтрокиExcel Цикл
            Для каждого СтрТабл1Бонус ИЗ Табл1.Колонки.Бонус Цикл;
                Отбор1 = Новый Структура;
                Отбор1.Вставить("Бонус", СтрокаEx.Бонусы);
                НайденыйБонус = Табл1.НайтиСтроки(Отбор1);
                
                Если НайденыйБонус = Неопределено Тогда
                    Сообщить ("Создаем новый документ ""План""");
                Иначе
                    Отбор2 = Новый Структура;            
                    Отбор2.Вставить("План", СтрокаEx.План);
                    НайденыйПлан = Табл1.НайтиСтроки(Отбор2);
                    Если СтрокаEx.План <> НайденыйПлан Тогда
                        Сообщить ("Надо создавать новый Эксель и заблокировать!!!");
                    КонецЕсли
                КонецЕсли
                
            КонецЦикла    
        КонецЦикла
    КонецЦикла
199 Wobland
 
25.02.14
13:08
на фига весь этот бред? где п.1?
200 kotokent
 
25.02.14
13:09
(199) в (196)
201 Wobland
 
25.02.14
13:11
(200) думаешь, я туда полезу? где Экселевское значение "бонус" ?
202 kotokent
 
25.02.14
13:11
(201) СтрокаEx.Бонусы
203 Wobland
 
25.02.14
13:11
(202) строка чего?
204 kotokent
 
25.02.14
13:12
(203) ну это я так обозвал ее


Для каждого СтрокаEx ИЗ СтрокиExcel Цикл
205 Wobland
 
25.02.14
13:14
пойдёт. теперь скажи про "значение в табличной части, тоже "Бонус"". что это и где взять?
206 kotokent
 
25.02.14
13:15
(205) есть документ "ПланМагазина", в нем табличная часть и там "Бонус", перед этим я делал запрос из этого документа
207 kotokent
 
25.02.14
13:15
(206)
Запрос.Текст = "ВЫБРАТЬ
                       |    ИА_ПланМагазина.ИА_Магазин,
                       |    ИА_ПланМагазина.Дата,
                       |    ИА_ПланМагазина.ПланМагазина.ИА_Бонус КАК Бонус,
                       |    ИА_ПланМагазина.ПланМагазина.ИА_План КАК План
                       |ИЗ
                       |    Документ.ИА_ПланМагазина КАК ИА_ПланМагазина
                       |ГДЕ
                       |    ИА_ПланМагазина.ИА_Магазин.Наименование = &Магазин";
        Табл1 = Запрос.Выполнить().Выгрузить();
208 Wobland
 
25.02.14
13:16
(207) за такое ставят на горох прямо простреленными коленями
ну есть какая-то таблица, и чо?
209 kotokent
 
25.02.14
13:18
(208) мне из нее надо взять бонус
210 Wobland
 
25.02.14
13:19
(209) бери
211 kotokent
 
25.02.14
13:20
(210) может тебе струкруру показать
он не берет, там их много, а надо каждый с каждым сравнивать
212 kotokent
 
25.02.14
13:22
213 brato4karik
 
25.02.14
13:22
Позволь спросить а тип данных "Бонус" какой?
214 Wobland
 
25.02.14
13:22
(211) слишком много счастья. ты будешь уже свой бонус брать?
215 kotokent
 
25.02.14
13:23
(214) я хочу, взять каждый из них и сравнить с экселевским
216 brato4karik
 
25.02.14
13:24
(215) в чем сложность? задай вопрос.
217 kotokent
 
25.02.14
13:27
(216) у меня в Табл1 - запросом выбраное, этот бонус это таблица значений, а в СтрокаEx.Бонус это уже конкретное значение...
надо чтобы бегал по значениям Табл1.Бонус и сравнивал их с текущим СтрокаEx.Бонус
218 Wobland
 
25.02.14
13:28
(217) вперёд
219 brato4karik
 
25.02.14
13:29
(215) ведь снова в вопросе часть ответа. Если у тебя в результате отбора возвращается коллекция(Массив,Таблица) и ты хочешь сравнить одно значение с каждым.
Есть цикл даже похожий Для каждого строка Из НужнаяТебеТаблица Цикл ...
220 kotokent
 
25.02.14
13:33
(219)



Для Каждого ТБонус ИЗ Табл1 Цикл
            Если ТБонус.Бонус = СтрокаEx.Бонусы Тогда
                Сообщить ("Хорошо");
            ИНАЧЕ
                Сообщить ("Плохо");
            КонецЕсли
        КонецЦикла;


так написал, ща посмотри что будет
221 kotokent
 
25.02.14
13:35
(220)все равно таблица значений)))
222 Wobland
 
25.02.14
13:36
(221) откуда она там?
223 kotokent
 
25.02.14
13:37
(222) с запроса
224 brato4karik
 
25.02.14
13:38
Да запрос он так написал, там поди в значении поля одной ТЗ находится другая.
225 kotokent
 
25.02.14
13:38
(222) мне и сказали что в запросе можно как то сделать значения
226 Wobland
 
25.02.14
13:38
(224) я в курсе
(225) а как?
227 brato4karik
 
25.02.14
13:39
За такой запрос нужно коленное сухожилие вязальным крючком подцеплять. Но ты все таки переделай его на вид, который вернет плоскую таблицу значений
228 kotokent
 
25.02.14
13:39
(226) с этим я точно не сталкивался
229 kotokent
 
25.02.14
13:40
(227) (226)

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

как?
230 Wobland
 
25.02.14
13:41
из ИА_ПланМагазина.ПланМагазина
231 brato4karik
 
25.02.14
13:41
Ну если тебе нужно выбрать табличку часть то и обратись к ней в конструкторе запроса. Щелкни по плюсику и в качестве источника выбери нужную тебе ТЧ.
232 kotokent
 
25.02.14
13:42
(231) (230)

Запрос.Текст = "ВЫБРАТЬ
                       |    ИА_ПланМагазина.ИА_Магазин,
                       |    ИА_ПланМагазина.Дата,
                       |    ИА_ПланМагазина.ПланМагазина.(
                       |        ИА_Бонус,
                       |        ИА_План
                       |    )
                       |ИЗ
                       |    Документ.ИА_ПланМагазина КАК ИА_ПланМагазина
                       |ГДЕ
                       |    ИА_ПланМагазина.ИА_Магазин.Наименование = &Магазин";
        Табл1 = Запрос.Выполнить().Выгрузить();
233 kotokent
 
25.02.14
13:42
так что ли
234 Wobland
 
25.02.14
13:43
Щелкни по плюсику и в качестве источника выбери нужную тебе ТЧ.
все слова знаю, но только если они раскиданы по разным предложениям?
235 kotokent
 
25.02.14
13:45
(234)

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


вот так получилось
236 kotokent
 
25.02.14
13:46
(235) запрос
237 Wobland
 
25.02.14
13:46
а забавно. товарищ берёт и за бесплатно рассказывает коммерческую тайну ООО "Интерантенна"
238 kotokent
 
25.02.14
13:46
(237) ты все равно не поймешь что и зачем
239 kotokent
 
25.02.14
13:47
(237) :)
240 Wobland
 
25.02.14
13:47
(238) в самых смелых мечтах не осмеливаюсь
241 kotokent
 
25.02.14
13:49
(240) к стати, теперь и правдазначение показывает
242 kotokent
 
25.02.14
13:50
(237) и интерантена, это просто название организации для тренировки
243 Wobland
 
25.02.14
13:51
(242) сам придумал?
244 kotokent
 
25.02.14
13:52
(243) нет, она вроде где то есть
245 Wobland
 
25.02.14
13:52
а номенклатуру откуда взял?
246 Wobland
 
25.02.14
13:53
"РАБОЧАЯ БАЗА" тоже вроде где-то написано?
247 kotokent
 
25.02.14
13:54
(245) это файлик просто я сделал для тренировки
248 kotokent
 
25.02.14
13:54
(246) база то рабочая, но другой организации
249 brato4karik
 
25.02.14
13:55
Отходил за чаем, много чего произошло, мои поздравления)
P.S. Не останавливайся, у нас 5 человек из конторы следят за твоим успехом.
250 Wobland
 
25.02.14
13:55
гыыы
251 brato4karik
 
25.02.14
13:55
P.P.S. И теперь безопастник еще подключился, тоже стало интересно)
252 kotokent
 
25.02.14
13:56
я опять с отбором туплю
253 Wobland
 
25.02.14
13:58
что-то не вижу на сайте интерантенны форму обратной связи..
254 kotokent
 
25.02.14
13:59
(253) (251) один хрен массив возвращает и пустой
255 Godofsin
 
25.02.14
14:01
(253) Ссылку кинуть хочешь? ))))
256 brato4karik
 
25.02.14
14:02
Ну если посмотреть СП(искренне не люблю такие сокращения), то что нам там говорят по поводу метода НайтиСтроки? Вероятно что  ничего не найдено.
257 Wobland
 
25.02.14
14:03
(255) это вам не запрос в цикле, я подписывался страшными клятвами подобных штук не делать
258 kotokent
 
25.02.14
14:04
(256) (257) капец короче, я в тупике
259 brato4karik
 
25.02.14
14:06
Ну еще раз предлагаю: Перечитай ветку, собери все советы и подсказки, обязательно подумай(только спокойно) и щаг за шагом  сделай все по новой
260 kotokent
 
25.02.14
14:10
(259) все таки он массив там находит, надо с другой стороны подойти, с какой незнаю, сразу говорю
261 Wobland
 
25.02.14
14:12
(260) мне удобней было держать её так, чтобы мести можно было справа налево. попробуй и ты так
262 kotokent
 
25.02.14
14:15
(261) да надо только узнать с какой
263 brato4karik
 
25.02.14
14:16
(260)Ну ты пойми очень хочется сейчас пошутить. Если массив находит(если предположить что ты нас не обманываешь, то он должен быть не пустой) если он пустой - значит не находит.

Хорошо не хочешь сначала, и хочешь с "другой" стороны попробуй(все в меру знаний и испорченности), но ты тогда хотя бы идею или концепцию что ли этого другого подхода нам опиши. Просто на словах.

P.S. Ну даже на улице солнышко вторит хорошему настроению
264 Wobland
 
25.02.14
14:16
(262) там, где прутики - это низ
265 kotokent
 
25.02.14
14:21
(264) :D
(263) Я щас это что сделал мусолю, может сам гдето ошибся, запрос не пустой, у всего есть значения
266 Wobland
 
25.02.14
14:23
>у всего есть значения
этот мир не может без значений, даже у нулла этой весной появляется значение
267 kotokent
 
25.02.14
14:23
с бонусом разберусь, а потом соображу поди кась
268 kotokent
 
25.02.14
14:26
269 kotokent
 
25.02.14
14:26
Отбор = Новый Структура;
        Отбор.Вставить("Магазин", СтрокаТаб.Магазин);
        СтрокиExcel = ТаблицаЗначений1.НайтиСтроки(Отбор);
270 kotokent
 
25.02.14
14:26
что ему надо падле
271 kotokent
 
25.02.14
14:26
Отбор1 = Новый Структура;
            Отбор1.Вставить("Бонусы", СтрокаEx.Бонусы);
            НайденыйБонус = Табл1.Найти(Отбор1);
272 kotokent
 
25.02.14
14:28
(271) я тут исправил
273 kotokent
 
25.02.14
14:33
Отбор1 = Новый Структура;
            Отбор1.Вставить("Бонус", СтрокаEx.Бонусы);
            НайденыйБонус = Табл1.НайтиСтроки(Отбор1);

как их сопоставить
274 Wobland
 
25.02.14
14:34
кого?
275 kotokent
 
25.02.14
14:38
(274) СтрокаEx.Бонусы - этот бонус и бонус в "Табл1"?
276 kotokent
 
25.02.14
14:38
(275) Табл1 - здесь много их, надо нужный
277 kotokent
 
25.02.14
14:41
(276) он не загоняет значение в "НайденыйБонус"
278 kotokent
 
25.02.14
14:41
(277) и это не вычисляет
279 kotokent
 
25.02.14
14:41
Табл1.НайтиСтроки(Отбор1)
280 brato4karik
 
25.02.14
15:09
Ну я уж пообедать успел), с не загоняет все понятно, видать нечего загонять) ,а вот не вычисляет не понятно: тут варианты если ошибка то ее в студию, если возвращает пустой массив то очевидно, что в Табл1 нет строк удовлетворяющих условию из Отбор1(тут снова варианты: либо нет колонки с именем ключа отбора, либо нет строк с указанными значениями поиска(тут снова варианты, если глазками кажется что значения все же есть надо убедиться что они одного типа Число = Число, Строка = Строка(Снова Внимание "Строка   " <> "Строка" или "457,5" <> 457,5 ))))
281 Wobland
 
25.02.14
15:52
(280) "457,5" = 457,5
282 Wobland
 
25.02.14
15:57
хм, приколы 8.3?
http://i.imgur.com/0jw3Ohi.png
283 brato4karik
 
25.02.14
16:02
скриншоты не могу смотреть, политика партии(, но да если равно то это прям и правда юморок(все же излишняя обработка при неявном преобразовании типов не есть гуд, мое мнение) а еще хотел дописать может там у ТС проблемы с разделителем дробной части из Экселя все таки данные тянет. "457.5" <> 457,5 вообщем если он тут будет, пусть пишет значения из отладчика, ну и настроение поднимает конечно
284 zladenuw
 
25.02.14
16:20
(282) да не и в 8.2 те же яйца

Строка(475.5)="475.5" так ложь, меняет знак "." на ","

прикольно блин :)
285 Wobland
 
25.02.14
16:24
похерили ветку, где я как-то так в табле фокусы показывал
http://i.imgur.com/1LT3HAI.png
286 brato4karik
 
25.02.14
16:30
да надо выписать в отдельный топик, все магические преобразования, а то зачастую как у школьника в первый раз, ну  где же ТС, скоро солнце сядет
287 Wobland
 
25.02.14
16:35
(286) он свалил до утра
288 brato4karik
 
25.02.14
16:38
(287) Ну вот, обычное конструктивное уныние)
289 kotokent
 
26.02.14
06:11
(288) (287) у меня в Экселе бонус - строка, а в табл1(запрос - справочник ссылка)
290 Godofsin
 
26.02.14
06:16
(289) Преобразуй строку в справочникСсылка
291 Wobland
 
26.02.14
06:20
за вчера 224 поста. означает ли это, что сегодня результата не будет до 513го поста?
292 Godofsin
 
26.02.14
06:23
(291) как пить дать. Охренеть, на протяжении 300 постов ТС не может сравнить 2 таблички...
293 Wobland
 
26.02.14
06:25
(292) он в прошлом двести постов строку на соответствие маске проверял. строку! одномерную хренотню
294 kotokent
 
26.02.14
06:25
(292) ЗначениеВСтрокуВнутр(Табл1.Колонки.Бонус);
я думаю может не в строку преобразовать бонус в запросе, вот так?
295 Wobland
 
26.02.14
06:26
(294) что получилось?
296 kotokent
 
26.02.14
06:26
(295) да ничего, ссылка как была так и есть
297 kotokent
 
26.02.14
06:27
и вот эта строчка мне сделал значение строка

{"#",e162969e-36e8-44f4-a5fd-fa2bf170a4f5}
298 Wobland
 
26.02.14
06:29
как ещё можно из строки-наименования получить ссылку на справочник?
299 Godofsin
 
26.02.14
06:29
(293) =)))
300 kotokent
 
26.02.14
06:30
(298) хороший вопрос
301 Godofsin
 
26.02.14
06:31
(300) Я бы сказал, ключевой...
302 kotokent
 
26.02.14
06:33
(301) как же это сделать)))
303 kotokent
 
26.02.14
06:33
?
304 Wobland
 
26.02.14
06:33
(300) затянись поглубже и представь себя прогуливающимся по библиотеке с запиской в руке. в записке - наименование книги, она искрится и переливается. книги - элементы справочника. они большие и фиолетовые, угрожающе напирают на тебя со всех сторон. только самый смекалистый человек способен найти нужную книгу и выбраться из этого лабиринта
305 Godofsin
 
26.02.14
06:34
(304) ржу чота ))))
306 kotokent
 
26.02.14
06:35
(305) (304) скажите как лучше сделать, запросное значение преобразовать в строковое или Экселевское в Ссылку?
307 Godofsin
 
26.02.14
06:36
(302) ты литературу вообще не читаешь? Открой книжки наконец, там много чо интересного написано
308 Godofsin
 
26.02.14
06:36
(306) Экселевское в ссылку
309 kotokent
 
26.02.14
06:36
(308) вооот, но я нашел только как в строковое преобразовать
310 Godofsin
 
26.02.14
06:38
СсылкаВЛес = Справочники.ТвоиБонусы.НайтиПоНаименованию(ТвоеНаименование);
311 kotokent
 
26.02.14
06:40
(310) так эксель это таблица значений
312 Wobland
 
26.02.14
06:40
+(310) выдаст первое встречное, если найдёт
313 Godofsin
 
26.02.14
06:41
(312) Пофиг
314 Godofsin
 
26.02.14
06:42
(311) Эксель, млять, это продукт компании Майкрософт и он ссука ни хера не таблица значений.
315 kotokent
 
26.02.14
06:45
(314) (312) что то не понял
316 Wobland
 
26.02.14
06:49
предрекаю: ветка после 500го поста опять превратится в тыкву, так и не побывав каретой
317 Godofsin
 
26.02.14
06:49
(316) и это печально (((
318 kotokent
 
26.02.14
06:50
(316) (317) ну скажите тогда как сделать это?
319 Wobland
 
26.02.14
06:53
(318) да ты задрал. не смешно уже ни черта
320 kotokent
 
26.02.14
06:55
(319) да я е понимаю как это сделать, ты думаешь я сам этому ра
321 kotokent
 
26.02.14
06:58
(320) мне сказали там просто, но я не понимаю как
322 Godofsin
 
26.02.14
07:00
(321) Это не твое, забей. Займись тем, в чем ты хоть что-то понимаешь.
323 kotokent
 
26.02.14
07:02
(322) так у меня задача стоит, надо выполнить, помоги, ты мне написал но я не понял как это применить для моего экселя
324 Wobland
 
26.02.14
07:05
(323) знаешь, почему я никогда не буду работать грузчиком и иметь задачи, предполагающие подъём тяжестей? мне здоровье не позволяет. так же и тебе развитие организма не позволяет заниматься умственной работой
325 kotokent
 
26.02.14
07:08
(324) я сделал с Бонусом, теперь у меня "план" в запросе число, а в экселе строка... надо преобразовать...
326 kotokent
 
26.02.14
07:17
дела, это тоже не просто
327 kotokent
 
26.02.14
07:43
подскажите как, а то он мне возвращает набор цифр и букв
328 Wobland
 
26.02.14
07:53
с точками и тире я бы помог, изучал морзянку
329 kotokent
 
26.02.14
08:14
(328) Я УЖЕ ПЕРЕВЕЛ, ТЕПЕРЬ ПРОБЛЕМА В ДРУГОМ...

Отбор2 = Новый Структура;            
                Отбор2.Вставить("План", СтрокаEx.План);
                НайденыйПлан = Табл1.НайтиСтроки(Отбор2);
                Если СтрокаEx.План <> //Здесь надо чтобы он с числом самим сравнивал из "НайденыйПлан", а он с масивом сравнивает
Тогда
                    Сообщить ("Надо создавать новый Эксель и заблокировать!!!");
                КонецЕсли
330 kotokent
 
26.02.14
08:16
Пишу так:
Если СтрокаEx.План <> НайденыйПлан.План Тогда

А он ругается


{Обработка.ИА_ПомошникСозданияДокументовПланМагазина.Форма.ПомошникСозданияПлановМагазинов.Форма(278)}: Поле объекта не обнаружено (План)
                Если СтрокаEx.План <> НайденыйПлан.План Тогда
331 Wobland
 
26.02.14
08:16
какая из восьмисот найденных строк имеется в виду?
332 kotokent
 
26.02.14
08:17
(331) СтрокаEx.План
333 kotokent
 
26.02.14
08:20
(332) он у нас отобран ранее
334 Wobland
 
26.02.14
08:20
а с чем сравнивается?
335 kotokent
 
26.02.14
08:26
(334) я написал так:


Если СтрокаEx.План <> НайденыйПлан[0].План


но когда он доходит до значения которого нет в документе, ругается

Обработка.ИА_ПомошникСозданияДокументовПланМагазина.Форма.ПомошникСозданияПлановМагазинов.Форма(278)}: Индекс находится за границами массива
                Если СтрокаEx.План <> НайденыйПлан[0].План Тогда
336 Wobland
 
26.02.14
08:27
это почему это?
337 Wobland
 
26.02.14
08:27
>Помошник
двоешник
338 kotokent
 
26.02.14
08:30
(336) блин как его проверить на незаполненость
339 Wobland
 
26.02.14
08:31
(338) что это такое?
340 kotokent
 
26.02.14
08:33
(339) ну он ходит по Экселю (СтрокаEx.План) и по документу, если строки совпадают то все нормально, если нет то надо сообщение вывести как у меня, а если в документе нет этой строки как в Экселе то он так ругается
341 Wobland
 
26.02.14
08:34
а незаполненность массива что такое?
342 kotokent
 
26.02.14
08:35
(341) пустаястрока
343 Wobland
 
26.02.14
08:35
какая строка?
344 kotokent
 
26.02.14
08:36
(343) NULL&
345 kotokent
 
26.02.14
08:36
?
346 Wobland
 
26.02.14
08:37
что за нулл?
347 kotokent
 
26.02.14
08:37
(346) я в нете найти не могу
348 Wobland
 
26.02.14
08:38
это отсутствие мозга, а не нулл
349 kotokent
 
26.02.14
08:39
(348) ну как всегда
350 kotokent
 
26.02.14
08:40
(349) нет бы подсказать
351 Wobland
 
26.02.14
08:44
твой спинной мозг не может понять смысл вопросов?
352 kotokent
 
26.02.14
08:46
(351) конкретно задай, как новичку
353 Wobland
 
26.02.14
08:48
незаполненность массива что такое?
354 kotokent
 
26.02.14
08:50
(353) если честно я не могу найти конкретной информации
355 kotokent
 
26.02.14
08:51
(353) неопределено
356 razlagator
 
26.02.14
08:52
Если Массив.Количество() = 0 Тогда ....
357 kotokent
 
26.02.14
08:54
(356) это будет действовать если прошол цикл над другими записями?
358 kotokent
 
26.02.14
08:56
(356) таже ошибка
359 razlagator
 
26.02.14
08:56
(357) моя твоя не понимать
360 Godofsin
 
26.02.14
08:56
(357) Тебе сколько лет?
361 razlagator
 
26.02.14
08:57
(358) покажи код
362 Godofsin
 
26.02.14
08:58
(361) не думаю, что ты хочешь это увидеть...
363 Wobland
 
26.02.14
08:59
+(362) мы все умрём
364 kotokent
 
26.02.14
09:00
Для каждого СтрокаEx ИЗ СтрокиExcel Цикл
            Отбор1 = Новый Структура;
            Отбор1.Вставить("Бонус", СтрокаEx.Бонусы);
            НайденыйБонус = Табл1.НайтиСтроки(Отбор1);
            
            Если НайденыйБонус = Неопределено Тогда
                Сообщить ("Создаем новый документ ""План""");
            Иначе
                Отбор2 = Новый Структура;            
                Отбор2.Вставить("План", СтрокаEx.План);
                НайденыйПлан = Табл1.НайтиСтроки(Отбор2);
                Если СтрокаEx.План <> НайденыйПлан[0].План ИЛИ НайденыйПлан.Количество()= 0
                    Тогда
                    Сообщить ("Надо создавать новый Эксель и заблокировать!!!");
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
365 Wobland
 
26.02.14
09:01
и почему тут ошибка?
366 kotokent
 
26.02.14
09:03
(365) незнаю, это я у вас спрашиваю и какие нибудь предложения по ее решению
367 Wobland
 
26.02.14
09:04
бесполезно спрашивать, как работает НайтиСтроки(), да?
368 razlagator
 
26.02.14
09:04
Для каждого СтрокаEx ИЗ СтрокиExcel Цикл
            Отбор1 = Новый Структура;
            Отбор1.Вставить("Бонус", СтрокаEx.Бонусы);
            НайденыйБонус = Табл1.НайтиСтроки(Отбор1);
            
            Если НайденыйБонус = Неопределено Тогда
                Сообщить ("Создаем новый документ ""План""");
            Иначе
                Отбор2 = Новый Структура;            
                Отбор2.Вставить("План", СтрокаEx.План);
                НайденыйПлан = Табл1.НайтиСтроки(Отбор2);
Если НайденыйПлан.Количество()<> 0 Тогда
                Если СтрокаEx.План <> НайденыйПлан[0].План                 Тогда
                    Сообщить ("Надо создавать новый Эксель и заблокировать!!!");
                КонецЕсли;
КонецЕсли
            КонецЕсли;
        КонецЦикла;
369 razlagator
 
26.02.14
09:05
что такое Табл1?
370 Wobland
 
26.02.14
09:06
(369) вот тут мы точно все умрём
371 Wobland
 
26.02.14
09:06
+(370) косой запрос
372 razlagator
 
26.02.14
09:07
или лучше так


Для каждого СтрокаEx ИЗ СтрокиExcel Цикл
            Отбор1 = Новый Структура;
            Отбор1.Вставить("Бонус", СтрокаEx.Бонусы);
            НайденыйБонус = Табл1.НайтиСтроки(Отбор1);
            
            Если НайденыйБонус = Неопределено Тогда
                Сообщить ("Создаем новый документ ""План""");
            Иначе
                Отбор2 = Новый Структура;            
                Отбор2.Вставить("План", СтрокаEx.План);
                НайденыйПлан = Табл1.НайтиСтроки(Отбор2);
Если НайденыйПлан.Количество()<> 0 Тогда
                Если СтрокаEx.План <> НайденыйПлан[0].План                 Тогда
                    Сообщить ("Надо создавать новый Эксель и заблокировать!!!");
                КонецЕсли;
Иначе
Сообщить("План не найден!!!");
КонецЕсли
            КонецЕсли;
        КонецЦикла;
373 Wobland
 
26.02.14
09:07
ТуеваХучаНайденныхПланов = Табл1.НайтиСтроки(Отбор2);
374 kotokent
 
26.02.14
09:09
(373) там всего он 1, я не полный же код выложил, перед этим там еще отбор по магазину идет
375 Wobland
 
26.02.14
09:10
ТуеваХучаНайденныхПлановВозможноДажеИзОднойШтуки = Табл1.НайтиСтроки(Отбор2);
376 kotokent
 
26.02.14
09:18
(375) я же перед этим еще и по бонусу их отбираю,

вопрос возник, когда массив возвращает значение "Неопределено"
377 brato4karik
 
26.02.14
09:18
Доброе утро всем, я чаек уже заварил)) щам у нас народ уже подсаживается.
P.S. Напоминает серию из Интернов где Охлабыстин им намеками помогал диагнозы ставить)). У нас все болеют за ТС, и желают ему добиться результата а потом что бы он нам всем код показал
378 Wobland
 
26.02.14
09:19
(376) и чты с этим вопросом сделал?
379 Wobland
 
26.02.14
09:20
(377) у него обед то ли в 1230, то ли в 1300
380 Wobland
 
26.02.14
09:20
(379) по-нашенски, по мск+3
381 kotokent
 
26.02.14
09:21
(378) просто у меня неопределено никогда не появится в строке:
Если НайденыйБонус = Неопределено Тогда

там надо написать, по моему
Если НайденыйБонус.Количество() = 0 Тогда

верно?
382 Wobland
 
26.02.14
09:23
в рот мне ноги, Дэвид Блейн, как ты это сделал?
383 brato4karik
 
26.02.14
09:24
(381) НайденыйБонус какого типа? Из отладчика нам сюда копи паст
да кстати тут баннер постоянно крутиться бесплатный курс Гилева 20 часов и ты программист, кликни туда
384 Wobland
 
26.02.14
09:26
(383) я тут на днях просмотрел "Большую Перемену". там всего 4 часа, правда, но никаких намёков на учителя истории я в себе не обнаружил
385 brato4karik
 
26.02.14
09:27
(384) Ну ты сравнил себя и ТС )) Шутка ли ))
386 kotokent
 
26.02.14
10:53
(382) что именно???
(383) НайденыйБонус массив
387 brato4karik
 
26.02.14
11:01
Ох я уж и забыл если честно в чем у тебя трудность то?
388 kotokent
 
26.02.14
11:16
(387) теперь проблема в другом, как объединить 2 процедуры чтобы работало все нормально
389 kotokent
 
26.02.14
11:16
очень не понятно и сложно
390 Wobland
 
26.02.14
11:20
бедолага
391 brato4karik
 
26.02.14
11:21
Ну нужно объединить, объедини, одну за другой вызывай или вообще все в одну помести, потом глазами пробегись по ней, и исправь, упрости, приведи к приемлемому виду. Если конечно этот код вызовет в тебе такое желание
392 Wobland
 
26.02.14
11:24
(388) делаешь одну новую, берёшь кусок из первой процедуры, перетаскиваешь в новую, потом так же со второй. повторяешь процесс, пока процедуры не кончатся. потом переставляешь строки в результирующей процедуре как тебе вздумается.
эта техника называется техникой пьяной мартышки
393 kotokent
 
26.02.14
11:25
(391) (392) я думаю создание нового документа поместить в функцию и потом ее вызывать когда надо
394 brato4karik
 
26.02.14
11:27
Слова правильные, и последовательность в предложении тоже не вызывает подозрений
395 kotokent
 
26.02.14
11:28
(394) ну что вы так ко мне, я самоучка же :D
396 kotokent
 
26.02.14
11:29
столько мысле, столько мыслей, даже незнаю как что делать  )))
397 kotokent
 
26.02.14
11:30
там в 2-х процедурах код похожий, только одна работает с документом который новы, а вторая проверят поля
398 Wobland
 
26.02.14
11:31
дорогие друзья, мы продолжаем следить за ситуацией на трибуне стадиона "Мандрагена". на помост выходит kotokent. сейчас он будет помещать в функцию. пожелаем ему успехов
399 kotokent
 
26.02.14
11:32
(398) спасибо друзья за ваше доверие
400 Wobland
 
26.02.14
11:33
щетыреста!
401 kotokent
 
26.02.14
11:34
к стати, кто то может рассказать как этот экселевский документ перезаписать и заблокировать при необходимости, и потом ссылку  вывести на перезаписаный документ
402 Wobland
 
26.02.14
11:35
это зачем это?
403 brato4karik
 
26.02.14
11:36
(399) Ты учти, после того как ты закончишь, обязательно нам покажи этот код, конфигурацию, обработку, что ты там делаешь. Это то чего ради здесь собирается столько народу.

P.S. Шутить по поводу надежности кода мы не будем, так как по мнению моих коллег он с легкостью может соперничать с кодом марсоходов, навигации и расчета траектории баллистических ракет.
404 Godofsin
 
26.02.14
11:38
(400) ахренеть!
405 Godofsin
 
26.02.14
11:39
Пора бы уже ветку про Украину по кол-ву постов догонять
406 kotokent
 
26.02.14
11:39
(404) (403) (402) потому что надо по делу разговаривать и не просто переписываться
407 brato4karik
 
26.02.14
11:41
Ну да чегой то мы тут развели, давай жахнем. Так какая у тебя  там сложность?
408 Wobland
 
26.02.14
11:42
(403) я его уже просил как-то о таком. на предложенном мной (отсюда, с табуретки и вслепую) тестовом наборе данных поделился на ноль
409 Wobland
 
26.02.14
11:42
(407) где-то 75 из 80
410 Wobland
 
26.02.14
11:43
(409) не так. O(n!)
411 kotokent
 
26.02.14
11:44
(410) что??? ты о чем
412 brato4karik
 
26.02.14
11:45
(410) Ну тут надо разрядность ограничивать, а то не дай бог он решит задачу такой сложности, придется считать его ребенком Ноосферы или чем то подобным
413 brato4karik
 
26.02.14
11:46
(412) предположительно что n велико
414 Wobland
 
26.02.14
11:47
(413) не больше 65 тыщ, эксель как-то болеет от большего вроде
415 badboychik
 
26.02.14
12:02
(414) в экселе 2007 максимум - ~2 млн
416 kotokent
 
26.02.14
12:05
чтото он у меня зацикливается прямо жестко, долго промеряет по нескольку раз
417 13_Mult
 
26.02.14
12:05
(58) Согласен войти в круг бетта тестеров.
418 brato4karik
 
26.02.14
12:05
так ты сам писал, что нужно несколько раз проверять
419 kotokent
 
26.02.14
12:06
(418) надо один раз проверять, нахера по одним и темже значеним бегать по 5 раз
420 brato4karik
 
26.02.14
12:09
(419) Никто не знает почему ты так написал.
421 kotokent
 
26.02.14
12:10
(420) как я понял, он бегает столько раз по одной записи, сколько находит магазинов определенного названия
422 brato4karik
 
26.02.14
12:11
Ну такое возможно, почему бы и нет
423 Wobland
 
26.02.14
12:12
этот цикл мы зациклим циклом ©
424 kotokent
 
26.02.14
12:12
(422) (423) где то я облажался
425 Wobland
 
26.02.14
12:13
(424) правда?
426 kotokent
 
26.02.14
12:14
(425) не надо говорить что при выборе профессии
427 badboychik
 
26.02.14
12:18
(424) мы догадались еще в (0)
428 Wobland
 
26.02.14
12:19
о какой профессии ты сейчас? программистом тебе не стать
429 kotokent
 
26.02.14
12:20
(428) кто знает... кто знает
430 Wobland
 
26.02.14
12:24
а ты просто поверь. учиться ты не научился, а без этого никак
431 brato4karik
 
26.02.14
12:25
(429) Давай по теме, что тебя в коде смущает?

В войну были сыны полка.
432 kotokent
 
26.02.14
12:45
(431) не могу сообразить, как один цикл убрать чтобы потом код работал без проблем
433 Wobland
 
26.02.14
12:46
о, это препросто. найди ненужный цикл и удали его
434 kotokent
 
26.02.14
12:50
(433) там путаница получилась, его нельзя удалить так как он выбирает магазин, а потом из этих магазинов выбираются бонусы, а потом план и это все сравнивается
435 Wobland
 
26.02.14
12:53
ну тогда добавь один ненужный цикл
436 kotokent
 
26.02.14
12:59
(435) куда
437 Wobland
 
26.02.14
13:00
ну как куда? туда, откуда потом будешь убирать
438 brato4karik
 
26.02.14
13:03
ну может бонус и план в одном цикле пробегать, они наверняка в одной строке для каждого магазина просто в соседних колонках.
439 kotokent
 
26.02.14
13:05
(438) магазин один, только по одному магазину строк много
440 Wobland
 
26.02.14
13:06
документов тьма по магазину с таким названием
441 kotokent
 
26.02.14
13:08
Для каждого СтрокаТаб ИЗ ТаблицаЗначений1 Цикл
....

Отбор = Новый Структура;
        Отбор.Вставить("Магазин", СтрокаТаб.Магазин);
        СтрокиExcel = ТаблицаЗначений1.НайтиСтроки(Отбор);
                
        Для каждого СтрокаEx ИЗ СтрокиExcel Цикл
...........

вот тут он у меня несколько раз ходит по одним и темже значениям
442 brato4karik
 
26.02.14
13:11
Так если СтрокаТаб.Магазин совпадает то не выполняй поиск, или  в ТаблицаЗначений1 сделай так что бы Магазины не повторялись
443 kotokent
 
26.02.14
13:13
(442) если ты про "Свернуть", то я потом не могу значения от туда взять
444 Wobland
 
26.02.14
13:18
>анализируются строки документа "План магазина"
и тут внезапно приходит котокент и достаёт откуда-то ещё магазинов
445 Серго62
 
26.02.14
13:50
(429) Запугиваешь?
446 kotokent
 
26.02.14
13:51
(444) (442) (445) как сделать чтобы документ заблокировался для редактирования
447 Wobland
 
26.02.14
13:56
правильный ответ: не подпускать к документу котокента да и всё
448 brato4karik
 
26.02.14
14:02
(446) Нужно уточнить какой документ? (Если бумажный, то можно в тумбочку запереть)
449 kotokent
 
26.02.14
14:08
ну а серьезно, мне при определенном условии надо один заблокировать для изменений и создать другой
450 Wobland
 
26.02.14
14:09
установи в нём в признаки "Откорректирован" и "Документ корректировка"
451 Wobland
 
26.02.14
14:09
хотя я бы Откорректирован переименовал в Закрыт
452 kotokent
 
26.02.14
14:11
(450) ну с реквизиты на форме создал, теперь надо с обработки их сделать ссылку и блокировку
453 brato4karik
 
26.02.14
14:12
Как в КВН задавай умные вопросы получай правильные ответы ...
454 brato4karik
 
26.02.14
14:13
Какую блокировку? На чтение? Смотреть можно а изменять нельзя? Что делать с движениями документа которые ты "блокируешь", какие движения будет формировать новый документ?
455 Wobland
 
26.02.14
14:14
(452) а теперь затянись ещё, почувствуй себя обработкой и прикрой глаза. видишь форму обрабатываемого документа?
456 kotokent
 
26.02.14
14:17
(455) да.... виже
457 Wobland
 
26.02.14
14:25
поэтому я за алкоголь. с ним не мерещится всякого
458 brato4karik
 
26.02.14
14:29
(457) Вкусный крепкий алькоголь
459 kotokent
 
26.02.14
14:33
(454) смотреть можно, изменять нельзя
460 kotokent
 
26.02.14
14:36
как это сделать, то?
461 kotokent
 
26.02.14
14:43
и еще надо ссылку получить на новый созданый документ и занести ее в поле
462 kotokent
 
26.02.14
14:44
и про блокировать надо срочно сделать
463 brato4karik
 
26.02.14
14:44
ну для практики специально для обучения, посоветую при открытии формы проверять нужный реквизит и пробегать циклом по всем элементам формы устанавливать их свойство доступность в ложь
464 brato4karik
 
26.02.14
14:44
ссылку на новый документ ты получишь после того как его создашь
465 brato4karik
 
26.02.14
14:45
(462) А почему такая срочность то?
466 Серго62
 
26.02.14
15:38
(465) Наверно зачет сдавать надо или курсач или чё он там сдает, а то двойку поставят...
467 Wobland
 
26.02.14
15:42
да прикалывается кто-то. нельзя быть взаправду настолько тупым
468 Серго62
 
26.02.14
15:51
(467) Он не тупой, он просто ленивый, ему проще нагуглить решение, а если не получилось нагуглить, то спросить на форуме, чем самому головой думать и книжки читать - не царское это дело. Такие люди реально бывают.
469 Wobland
 
26.02.14
15:54
(468) ты видал, как он вопросы ставит/задаёт/формулирует? это недоразвитость разума, а не лень
470 Серго62
 
26.02.14
15:56
(469) Так это все от лени. Если ниче не делать, то как разум может развиться?
471 Wobland
 
26.02.14
15:57
хм, что первично - тупость или лень?
472 Серго62
 
26.02.14
15:58
(471) Да фиг его знает - философский вопрос...
473 Wobland
 
26.02.14
15:58
если в силу ограниченности не понимать, что лень мешает развиваться, то это разум такой ;)
474 brato4karik
 
26.02.14
16:04
(472) Мм приятный вопрос, через час можно будет подумать
475 Wobland
 
26.02.14
16:09
надо уже дожать ветку, и пускай  тонет. что я впустую пророчествовал? ;)
476 brato4karik
 
26.02.14
16:12
ну надо до завтра ждать, ведь еще не решенным остался вопрос о "блокировке" документа,создании нового, последующей оптимизации кода. И интересно это уже боевое у него задание или все таки тест?
477 Wobland
 
26.02.14
16:20
это всё в хранилище. думаю, при внедрении у внедряльшика достанет ума посмотреть внутрь и откатить
478 kotokent
 
27.02.14
06:23
как ссылку получить на созданый документ?
479 Wobland
 
27.02.14
06:23
записать не хочешь?
480 kotokent
 
27.02.14
06:26
(479) документ создал и как ссылку на него полк\учить?
481 kotokent
 
27.02.14
06:37
у меня есть в коде такая строчка
НоваяСтрокаТЧ.ПланМагазина = НовыйПланМагазина.Ссылка;

можно из нее ссылку получить?
482 Wobland
 
27.02.14
06:38
разрешаю
483 kotokent
 
27.02.14
06:56
(482) а как
484 Wobland
 
27.02.14
06:59
нужно как-то себя заставить
485 kotokent
 
27.02.14
07:03
(484) как ее от туда вытащить и поместить в переменую на другой форме
486 Wobland
 
27.02.14
07:06
куда?
487 kotokent
 
27.02.14
07:11
(486)
Документы.ИА_ПланМагазина.ИА_ДокументКорректировка = НовыйПланМагазина.Ссылка;

но он ругается, надо к реквизиту формы документа обратиться из этой обработки, но что то не выходит
488 Wobland
 
27.02.14
07:13
а ты поднатужься. если так же не будет выходить, ступай к проктологам
489 kotokent
 
27.02.14
07:14
(488) ну я хоть на правильном пути?
490 Wobland
 
27.02.14
07:22
нет
491 kotokent
 
27.02.14
07:26
(490) ну подскажи тогда как?
492 Wobland
 
27.02.14
07:27
Директору ИП Иванов Л.В.
Иванову Леониду Викторовичу
От (должность)
Петрова Игоря Николаевича



Заявление
     Прошу уволить меня с занимаемой должности по собственному желанию  "___" _____________ 20___года.





Дата (___)___________2____г.

Подпись__________________
493 kotokent
 
27.02.14
07:40
(492) смешно
494 kotokent
 
27.02.14
07:48
вообще что то завис
495 Godofsin
 
27.02.14
07:58
(493) совсем не смешно. Самый наилучший тебе совет за 500 постов.
496 Wobland
 
27.02.14
08:00
а если наилучший совет является ещё и смешным, то и пользы от него вдвойне
497 Web00001
 
27.02.14
08:18
Было дело, лет пять я в таких случаях брался с энтузиазмом и разруливал вопрос, писал почти весь код за новичка объясняя что к чему, хотел помочь. Как результат, оказывалось что человек ниче не понял, из того, что я объяснял и ждет что я буду писать код за него дальше. Бросил это гиблое дело.
498 kotokent
 
27.02.14
08:20
лучше бы помогли
499 Web00001
 
27.02.14
08:20
снизу баннер "Программирование в 1С - за 21 день", CRM разумеется ты не напишешь, но вопросов плана:
"как ссылку получить на созданый документ"
Не будет абсолютно точно.
500 Wobland
 
27.02.14
08:21
ПИСОТ!
501 Web00001
 
27.02.14
08:21
(498) см (497)
502 moon_sparckle
 
27.02.14
08:22
у котокента железные нервы. завидоваю....
503 Wobland
 
27.02.14
08:22
(499) у него проблема в другом: он не хочет
504 kotokent
 
27.02.14
08:24
(503) я уже все облазил и не могу ничего найти
505 Web00001
 
27.02.14
08:27
(504) чего не можешь? http://xn----1-bedvffifm4g.xn--p1ai/prog1C-21days/lp1/?utm_source=mista_1st&utm_campaign=mista_devin21days
полностью бесплатно :) правда 21 день нужен
506 kotokent
 
27.02.14
08:28
(505) надо записать ссылку на документ который создал и записать эту ссылку в реквизит другого документа
507 Web00001
 
27.02.14
08:34
(506)надо понять, что не в этом проблема. Это как попробовать поменять ремень ГРМ, если ты до этого никогда под капот не заглядывал и сокрушаться, что у тебя нет нужного ключа.
Ну получишь ты ссылку, следом вылезет следующая проблема. И так будет очень долго. Что у тебя проблема с ключом стало ясно еще из (0), тебе говорят ты хоть на курсы сходи, тогда вопросов станет меньше где то на 1000штук. Будут вопросы не плана "как открутить гайку" а "как правильно отрегулировать натяжение ремня".
508 kotokent
 
27.02.14
08:35
(507)
НовыйПланМагазина.ИА_ДокументКорректировка = НовыйПланМагазина.ИА_Магазин.Ссылка;
                        НовыйПланМагазина.ИА_Откорректирован = Истина;
                        НовыйПланМагазина.Заблокировать();


я вот так пишу но он реквизиты не меняет
509 kotokent
 
27.02.14
08:36
(507) ни один не меняте
510 Web00001
 
27.02.14
08:37
(508)да собственно и не должен. С чего бы ради?
511 kotokent
 
27.02.14
08:40
(510) ну а как тогда
512 Web00001
 
27.02.14
08:44
(511) ответ в (492), причина в (497)
Ответ на самом деле элементарен. Попробуй таки пройти хоть какие то основы.
513 kotokent
 
27.02.14
08:50
(512) мне надо сегодня уже показывать, я не могу это сделать
514 Wobland
 
27.02.14
08:54
вазелином в деканате я рисую слово "хватит"
515 Web00001
 
27.02.14
08:59
(513)Зачем брался?
ок
Изменить данные можно только у объекта. ПолучитьОбъект() от ссылки тебе поможет. Только это одна строчка кода, а дальше делать будешь че?
516 kotokent
 
27.02.14
09:03
(515) он у меня уже этим кодом записывает, только блокировка для изменения не работае, как ее сделать
517 Web00001
 
27.02.14
09:05
Вот я и говорю, этот вопрос решен, дальше следующий, потом еще один, потом тут не работает, потом там не то, тут не это. Ну и тд.
518 Godofsin
 
27.02.14
09:06
(514) ))))))))))))))
519 catena
 
27.02.14
09:15
(516)Ты этой сторчкой "НовыйПланМагазина.Заблокировать();" - хочешь заблокировать от изменения?
520 Web00001
 
27.02.14
09:18
(519)Ему самому не очень понятно, что ему надо.
Сначала:
>>я вот так пишу но он реквизиты не меняет
потом оказывается:
>>он у меня уже этим кодом записывает
И вот попробуй разбери, чего он хочет и действительно ли он хочет именно этого.
521 catena
 
27.02.14
09:28
(520)Да я с персонажем уже знакома, я все пытаюсь его логику понять. Ну не в случайном же порядке у него нейроны взаимодействуют.
522 brato4karik
 
27.02.14
09:38
Все доброе утро)
523 kotokent
 
27.02.14
10:57
(520) (521) (522) я просто там реквизиты менял после записи, потом переделал, теперь блокировку надо настроить, чтобы документ нельзя было редактировать
524 kotokent
 
27.02.14
11:00
(523) и еще, это надо заблокировать старый документ, а он с запроса вытянут
525 kotokent
 
27.02.14
11:01
как с запроса вытянуть документ?
526 catena
 
27.02.14
11:50
(524)Перескажи своими словами описание метода Заблокировать(), пожалуйста.
527 Wobland
 
27.02.14
11:56
уплыла ветка, еле добрался