Не загружаются данные в документ Заказ поставщику из файла Excel

1. sergqwert15 2 13.07.20 16:58 Сейчас в теме
Не загружаются данные из файла эксель в документ Заказ поставщику.

Процедура ПечатьПеремещениеТоваровОтветственноеХранение()


Если не ЗначениеЗаполнено(ЗаказПоставщику) Тогда
Сообщить("Укажите заказ поставщика для экспорта ", СтатусСообщения.ОченьВажное);
Возврат;
КонецЕсли;

РЗапрос = ПолучитьЗапросПоТоварам();


Если РЗапрос.Количество() = 0 Тогда
Сообщить("Отсутствуют перемещения по параметрам выбранным на форме!", СтатусСообщения.Важное);
Иначе
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПеремещениеТоваров_Накладная";
Макет = ПолучитьМакет("НакладнаяОтветственноеХранение");

// печать производится на языке ИБ
КодЯзыкаПечать = Локализация.КодЯзыкаИнформационнойБазы();
Макет.КодЯзыкаМакета = КодЯзыкаПечать;

// Выводим шапку накладной

ОбластьМакета = Макет.ПолучитьОбласть("Шапка");
//ОбластьМакета.Параметры.Номер = СокрЛП(Номер);
ОбластьМакета.Параметры.Дата = Формат(Дата, "ДФ=dd.MM.yyyy");
ОбластьМакета.Параметры.РеквизитыОрганизации = СокрЛП(Организация.Наименование);
ТабДокумент.Вывести(ОбластьМакета);

Нпп = 1;

Для Каждого Зн Из РЗапрос Цикл

ОбластьМакета = Макет.ПолучитьОбласть("Строка");
ОбластьМакета.Параметры.Заполнить(Зн);
ОбластьМакета.Параметры.Нпп = Нпп;
ТабДокумент.Вывести(ОбластьМакета);

Нпп = Нпп + 1;

КонецЦикла;

ОбластьМакета = Макет.ПолучитьОбласть("Подвал");
ОбластьМакета.Параметры.ИтогСуммаБезПДВ = РЗапрос.Итог("СуммаБезНДС");

ВрСуммаБезНДС = РЗапрос.Итог("СуммаБезНДС");
ВрСуммаСНДС = Окр(ВрСуммаБезНДС * 1.2, 2);
ВрСуммаНДС = ВрСуммаСНДС - ВрСуммаБезНДС;

ОбластьМакета.Параметры.ПДВ = ВрСуммаНДС;
ОбластьМакета.Параметры.СуммаВсего = ВрСуммаБезНДС + ВрСуммаНДС;

ТабДокумент.Вывести(ОбластьМакета);

ТабДокумент.Показать();

КонецЕсли;

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

Процедура ФайлЭксельДляЗаполненияНачалоВыбора(Элемент, СтандартнаяОбработка)
ФайлЭксельДляЗаполнения = ВыборФайла(ФайлЭксельДляЗаполнения, СтандартнаяОбработка);
КонецПроцедуры

Функция ВыборФайла(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВыборФайла.Фильтр = "Документ xls (*.xls)|*.xls| Документ xlsx (*.xlsx)|*.xlsx";
ВыборФайла.ПроверятьСуществованиеФайла = Истина;
ВыборФайла.ПолноеИмяФайла = Элемент;
Выбор = ВыборФайла.Выбрать();
Если НЕ Выбор Тогда
Возврат "";
КонецЕсли;
Возврат ВыборФайла.ВыбранныеФайлы[0];
КонецФункции

Функция ПолучитьЗапросПоТоварам()
Запрос = Новый Запрос;

Запрос.Текст =
"ВЫБРАТЬ
| ЗаказПоставщикуТовары.Номенклатура,
| ЕСТЬNULL(НоменклатураКонтрагентов.КодНоменклатурыКонтрагента, """") КАК АртикулЧумак,
| ЗаказПоставщикуТовары.ЕдиницаИзмерения.Вес КАК ВесИОбъем,
| ЗаказПоставщикуТовары.Количество,
| ВЫБОР
| КОГДА ЗаказПоставщикуТовары.Ссылка.СуммаВключаетНДС
| ТОГДА ЗаказПоставщикуТовары.Цена
| ИНАЧЕ ЗаказПоставщикуТовары.Цена * 1.2
| КОНЕЦ КАК ЦенаСНДС,
| ВЫБОР
| КОГДА ЗаказПоставщикуТовары.Ссылка.СуммаВключаетНДС
| ТОГДА ЗаказПоставщикуТовары.Сумма
| ИНАЧЕ ЗаказПоставщикуТовары.Сумма + ЗаказПоставщикуТовары.СуммаНДС
| КОНЕЦ КАК СуммаСНДС,
| ВЫБОР
| КОГДА ЗаказПоставщикуТовары.Ссылка.СуммаВключаетНДС
| ТОГДА ЗаказПоставщикуТовары.Цена / 1.2
| ИНАЧЕ ЗаказПоставщикуТовары.Цена
| КОНЕЦ КАК ЦенаБезНДС,
| ВЫБОР
| КОГДА ЗаказПоставщикуТовары.Ссылка.СуммаВключаетНДС
| ТОГДА ЗаказПоставщикуТовары.Сумма - ЗаказПоставщикуТовары.СуммаНДС
| ИНАЧЕ ЗаказПоставщикуТовары.Сумма
| КОНЕЦ КАК СуммаБезНДС,
| ЗаказПоставщикуТовары.СуммаНДС КАК СуммаНДС,
| ЛОЖЬ КАК ВыгруженВФайл
|ИЗ
| Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
| ПО ЗаказПоставщикуТовары.Номенклатура = НоменклатураКонтрагентов.Номенклатура
| И (НоменклатураКонтрагентов.Контрагент = &Контрагент)
|ГДЕ
| ЗаказПоставщикуТовары.Ссылка = &Ссылка
|
|УПОРЯДОЧИТЬ ПО
| ЗаказПоставщикуТовары.Номенклатура.Наименование";

Запрос.УстановитьПараметр("Ссылка", ЗаказПоставщику);
Запрос.УстановитьПараметр("Контрагент", ЗаказПоставщику.Контрагент);


//Запрос.УстановитьПараметр("ТипЦенИзКонстанты", УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойТипЦенПродажи"));
//Запрос.УстановитьПараметр("НачДата", НачалоДня(Дата));
//Запрос.УстановитьПараметр("КонДата", КонецДня(Дата));
Запрос.УстановитьПараметр("Бондюэль", Справочники.Номенклатура.НайтиПоКоду("A3391"));
Запрос.УстановитьПараметр("Ролтон", Справочники.Номенклатура.НайтиПоКоду("A3930"));

Возврат Запрос.Выполнить().Выгрузить();
КонецФункции

Процедура ОсновныеДействияФормыЗаполнитьДанными(Кнопка)

Если не ЗначениеЗаполнено(ЗаказПоставщику) Тогда
Сообщить("Укажите заказ поставщика для экспорта ", СтатусСообщения.ОченьВажное);
Возврат;
КонецЕсли;

Если ЗначениеЗаполнено(ФайлЭксельДляЗаполнения) Тогда


РЗапрос = ПолучитьЗапросПоТоварам();

Если РЗапрос.Количество() = 0 Тогда
Сообщить("Отсутствуют перемещения по параметрам выбранным на форме!", СтатусСообщения.Важное);
Возврат;
Иначе

//Уберем в реквизите АртикулЧумак 160 символ , и символ НПП

Для Каждого А Из РЗапрос Цикл
ТАртикулЧумак = СокрЛП(А.АртикулЧумак);
ТАртикулЧумак = СтрЗаменить(СтрЗаменить(ТАртикулЧумак, Символ(160), ""), Символы.НПП , "");
А.АртикулЧумак = ТАртикулЧумак;
КонецЦикла;


Попытка
// Создать объект.
ExcelПриложение = Новый COMОбъект("Excel.Application");
Исключение
Сообщить("Не удалось инициализировать Excel");
Возврат;
КонецПопытки;


Попытка

// Если при отработке следующего фрагмента кода произойдет ошибка объект "Excel.Application" будет закрыт.

Состояние("Открытие файла Microsoft Excel...");
ExcelФайл = ExcelПриложение.WorkBooks.Open(ФайлЭксельДляЗаполнения);

ExcelЛист = ExcelФайл.Sheets(НомерЛиста);
xlCellTypeLastCell = 11;
ExcelПоследняяСтрока = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Row;
ExcelПоследняяКолонка = ExcelЛист.Cells.SpecialCells(xlCellTypeLastCell).Column;

Для Строка = НачальнаяСтрокаНоменклатуры По ExcelПоследняяСтрока Цикл

АртикулИзФайла = СокрЛП(Формат(ExcelЛист.Cells(Строка, НомерКолонкиАртикулаВФайле).Value,"ЧГ=0"));
//АртикулИзФайла = Число(АртикулИзФайла);
АртикулИзФайла = СтрЗаменить(СтрЗаменить(АртикулИзФайла, Символ(160), ""), Символы.НПП , "");

Если ПустаяСтрока(АртикулИзФайла) Тогда
Прервать;
КонецЕсли;

СтртураОтбора = Новый Структура("АртикулЧумак", АртикулИзФайла);
СтрокиСОтбором = РЗапрос.НайтиСтроки(СтртураОтбора);

//Очищаем количество в каждой строке
ExcelЛист.Cells(Строка, НомерКолонкиКоличестваВФайле).Value = 0;

Если СтрокиСОтбором.Количество() = 1 Тогда
//Заполняем если были перемещения
ExcelЛист.Cells(Строка, НомерКолонкиКоличестваВФайле).Value = СтрокиСОтбором[0].Количество;
СтрокиСОтбором[0].ВыгруженВФайл = Истина;
ИначеЕсли СтрокиСОтбором.Количество() > 1 Тогда
//Ругаемся
Сообщить("Артикул: " + АртикулИзФайла + " дублируется в таблице выгрузки!", СтатусСообщения.ОченьВажное);
ExcelПриложение.DisplayAlerts = 0;
ExcelПриложение.Quit();
Возврат;
КонецЕсли;
КонецЦикла;

Исключение
Сообщить(ОписаниеОшибки());
ExcelПриложение.DisplayAlerts = 0;
ExcelПриложение.Quit();
КонецПопытки;


СтртураОтбора = Новый Структура("ВыгруженВФайл", Ложь);
СтрокиСОтбором = РЗапрос.НайтиСтроки(СтртураОтбора);

Если СтрокиСОтбором.Количество() > 0 Тогда

Для Каждого Вр Из СтрокиСОтбором Цикл
Сообщить("Для номенклатуры " + """" + СокрЛП(Вр.Номенклатура.Наименование) + """" + ", с артикулом " + """" + Вр.АртикулЧумак + """" + " не найдено соответствия в файле Excel!", СтатусСообщения.ОченьВажное);
КонецЦикла;

ExcelПриложение.DisplayAlerts = 0;
ExcelПриложение.Quit();

Иначе
ExcelПриложение.Visible = Истина;
КонецЕсли;

КонецЕсли;

Иначе

Сообщить("Выберите файл для заполнения!", СтатусСообщения.ОченьВажное);

КонецЕсли;


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

Процедура ЗаказПоставщикуПриИзменении(Элемент)
Организация = ЗаказПоставщику.Организация;
КонецПроцедуры
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. SeverBaP 5 13.07.20 18:05 Сейчас в теме
Что конкретно выдает за ошибку?
3. ZergKRSK 129 14.07.20 08:17 Сейчас в теме
(2) вы же профессионал, должны догадаться!
4. yurikmellon 6 14.07.20 08:20 Сейчас в теме
(3) у нас штатный телепат с сегодня в отпуске
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)