У меня возникла такая проблема: Я начал делать обработку для автоматической загрузки заявок на товар покупателей из документа EXEL. В этом документе соответственно идут колонки Товар Артикул Количество Покупатель. Мне нужно, чтобы создавались документы для каждого покупателя. Но одно но. Иногда в этой заявке как-нибудь по извращенному названы покупатели, не так как в базе. Поэтому я решил, что если обработка не находит нужного покупателя в базе, то вылетает подбор, где вручную можно выбрать покупателя. Но такая пробла - подбор находиться в цикле и поэтому после того как вылетает подбор, обработка не дожидается пока выбирится покупатель и дальше продолжает выполнять алгоритм. Подскажите как можно реализовать, чтобы обработка продолжалась только после быбора.
вот код:
Код
Перем ИмяФайла, ExcelApp, Осталось;
Функция НайтиПосл(Знач Стр,Что)
Поз=0;
Пока 1=1 Цикл
ЛокПоз = Найти(Стр,Что);
Если ЛокПоз=0 Тогда
Возврат Поз;
КонецЕсли;
Поз = Поз+ЛокПоз;
Стр = Сред(Стр,ЛокПоз+1);
КонецЦикла;
КонецФункции
Функция __ФИмя(ИмяФайла)
Стр = ИмяФайла;
Пока Найти(Стр,"�")<>0 Цикл
Стр = Сред(Стр,Найти(Стр,"�")+1);
КонецЦикла;
Возврат Стр;
КонецФункции
Функция __ФКаталог(ИмяФайла)
Возврат Лев(ИмяФайла,НайтиПосл(ИмяФайла,"�"));
КонецФункции
Процедура ОбработкаПодбора(ВыбЗнач, КонтФормыПодбора)
ПокупательСправ =СоздатьОбъект("Справочник.Контрагенты");
ОткрытьПодбор("Справочник.Контрагенты",ПокупательСправ,0);
ПолучитьЗначениеИзПодбора("Наименование");
КонецПроцедуры
Процедура ВыбратьФайл()
__Ф = __ФИмя(ИмяФайла);
__К = __ФКаталог(ИмяФайла);
Если ФС.ВыбратьФайл(0,__Ф,__К,"Выбрать файл с данными для импорта","XLS файлы (*.xls)|*.xls")=1 Тогда
ИмяФайла = __К+__Ф;
Файл = ИмяФайла;
КонецЕсли;
КонецПроцедуры
Процедура Выполнить()
Если Вопрос("Выполнить загрузку заявок в базу?","Да+Нет")="Нет" Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
ExcelApp =СоздатьОбъект("Excel.Application");
Workbook =ExcelApp.WorkBooks.Open(ИмяФайла);
Sheet =Workbook.Worksheets(1);
Range =Sheet.UsedRange;
RowCount =Range.Rows.Count;
ColCount =Range.Columns.Count;
Row = 0;
Для Row = 1 По RowCount Цикл
Col = 0;
Таб="";
Для Col = 1 По ColCount Цикл
Таб=Таб+Sheet.Cells(Row,Col).Value+", ";
КонецЦикла;
Сообщить("Строка="+Строка(Row)+' = '+Таб);
КонецЦикла;
Сообщить("Строк="+Строка(RowCount)+", Столбцов="+Строка(ColCount),"i");
ПокупательСправ =СоздатьОбъект("Справочник.Контрагенты");
Пользователь =СоздатьОбъект("Справочник.Пользователи");
Документ =СоздатьОбъект("Документ.ЗаявкаПокупателя");
Единицы =СоздатьОбъект("Справочник.Единицы");
ТипыЦен =СоздатьОбъект("Справочник.ТипыЦен");
Товары =СоздатьОбъект("Справочник.Номенклатура");
Пользователь.НайтиЭлемент(глПользователь);
ПредПокупательСправ="";
Для Row = 3 По RowCount Цикл
Col = 0;
Таб="";
Наименование =Sheet.Cells(row,1).Value;
Артикул =Sheet.Cells(row,2).Value;
Количество =Sheet.Cells(row,5).Value;
Покупатель =Sheet.Cells(row,6).Value;
Если ПустоеЗначение(Покупатель)=0 Тогда
Если ПокупательСправ.НайтиПоНаименованию(Покупатель,1)=0 Тогда
Вопрос("Не найден покупатель ==>" +Покупатель+ "<== в справочнике! Выбирите покупателя вручную","ОК");
ОбработкаПодбора(ПокупательСправ, НАименование);
Если ПредПокупательСправ<>ПокупательСправ.ТекущийЭлемент() Тогда
Если ПустоеЗначение(ПокупательСправ)=0 Тогда
Документ.Записать();
Сообщить("Создан документ: " +Строка(Документ));
КонецЕсли;
Документ.Новый();
Документ.ВидОперации=Операция;
Документ.Фирма=Фирма;
Документ.Склад=Склад;
Документ.Договор=ПокупательСправ.ОсновнойДоговор.ТекущийЭлемент();
Документ.Контрагент=ПокупательСправ.ТекущийЭлемент();
ПредПокупательСправ=ПокупательСправ.ТекущийЭлемент();
КонецЕсли;
Документ.НоваяСтрока();
Документ.Номенклатура=Товары.НайтиПоНаименованию(Наименование,0);
Документ.Количество=Число(Количество);
Документ.Единица=Товары.БазоваяЕдиница;
Документ.СтавкаНДС=Товары.СтавкаНДС;
Документ.СтавкаНП=Товары.СтавкаНП;
Документ.СтавкаНДС=Документ.Номенклатура.СтавкаНДС;
ПроцНДС=глНачисляемыйНДС(Документ.Номенклатура.СтавкаНДС);
Документ.Коэффициент=1;
Сообщить("Добавлена строка: "+Товары+"...ОК");
Осталось=rowcount-row;
Состояние("Осталось строк: "+Осталось+" из "+rowcount);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Если ПустоеЗначение(ПредПокупательСправ)=0 Тогда
Документ.Записать();
Сообщить("Создан документ: " +Строка(Документ));
КонецЕсли;
ExcelApp.Visible = 1;
УдалитьОбъекты(ExcelApp);
Сигнал();
Вопрос("Загрузка завершена!","ОК");
КонецПроцедуры
