Не загружаются данные в документ Заказ поставщику из файла Excel
Не загружаются данные из файла эксель в документ Заказ поставщику.
Процедура ПечатьПеремещениеТоваровОтветственноеХранение()
Если не ЗначениеЗаполнено(ЗаказПоставщику) Тогда
Сообщить("Укажите заказ поставщика для экспорта ", СтатусСообщения.ОченьВажное);
Возврат;
КонецЕсли;
РЗапрос = ПолучитьЗапросПоТоварам();
Если РЗапрос.Количество() = 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 = Истина;
КонецЕсли;
КонецЕсли;
Иначе
Сообщить("Выберите файл для заполнения!", СтатусСообщения.ОченьВажное);
КонецЕсли;
КонецПроцедуры
Процедура ЗаказПоставщикуПриИзменении(Элемент)
Организация = ЗаказПоставщику.Организация;
КонецПроцедуры
Процедура ПечатьПеремещениеТоваровОтветственноеХранение()
Если не ЗначениеЗаполнено(ЗаказПоставщику) Тогда
Сообщить("Укажите заказ поставщика для экспорта ", СтатусСообщения.ОченьВажное);
Возврат;
КонецЕсли;
РЗапрос = ПолучитьЗапросПоТоварам();
Если РЗапрос.Количество() = 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 = Истина;
КонецЕсли;
КонецЕсли;
Иначе
Сообщить("Выберите файл для заполнения!", СтатусСообщения.ОченьВажное);
КонецЕсли;
КонецПроцедуры
Процедура ЗаказПоставщикуПриИзменении(Элемент)
Организация = ЗаказПоставщику.Организация;
КонецПроцедуры
По теме из базы знаний
- Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки
- Платформа для дропшиппинга. Рабочее место закупки: модуль автоматизации снабжения. Создание заказов поставщикам в 1С
- ВИДы на жительство. Использование внешних источников данных в прикладных задачах
- Заполнение Поступления товара и услуг, Заказа поставщику и Заказа клиента из Excel-файла
- Загрузка данных в документ Заказ клиента из Microsoft Excel (ERP 2, КА 2, УТ 11)
Ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)