Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 14:32

Как дописать часть кода

Автор pavel.garkov, 22 июн 2015, 17:02

0 Пользователей и 1 гость просматривают эту тему.

pavel.garkov

Все привет, подскажите опытные программисты как реализовать мне такую ситуацию есть файл ексел из него происходит импорт данных в документ 1с 8.1 вот код его, в екселе появилась новая колонка в которой указан номер дисконта это число 13 значное, но я не могу добиться его импорта именно этого числа в документ, все импортируется кроме данной колонки, мне удалось удалось добиться поиском по реквизиту в справочнике информационных карты добавить такую строку при отладке и наведении на неё мне отображается владелец карты, но как мне сделать что бы данная информация переносилась в сам документ я не пойму.

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

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

ДокЭксель = ПолучитьCOMОбъект(ПутьКФайлу);

счСтрок = 2;
Пока счСтрок <= КоличСтрок Цикл
Выполнить("ЗагружаемаяТЧ = ВспомогательныйРеквизит.ДокументОбъект." + ЭлементыФормы.ТабличныеЧастиДока.ТекущиеДанные.НаименованиеТЧ + ";");
СтрокаТЧ = ЗагружаемаяТЧ.Добавить();
счКолонок = 1;
Для каждого строка Из Соответствия Цикл
Если строка.РеквизитТЧДока <> "" Тогда
Если строка.ТипРеквизитаТЧДока <> "" Тогда

//Выполнить("СтрокаТЧ." + строка.РеквизитТЧДока + " = " + строка.ТипРеквизитаТЧДока + ".НайтиПоКоду(""" + ДокЭксель.Sheets(1).Cells(счСтрок, счКолонок).Value + """);");
КодМой = СокрЛП(ДокЭксель.Sheets(1).Cells(счСтрок, счКолонок).Value);
КодКарты = СокрЛП(ДокЭксель.Sheets(1).Cells(счСтрок,5).Value);
//КодМой = "" + Лев(КодМой,2) + Прав(КодМой,3);

//Сообщить("длина " + СтрДлина(КодМой));
Если СтрДлина(КодМой) = 1 Тогда
КодМой = "0000"+КодМой;
ИначеЕсли СтрДлина(КодМой) = 2 Тогда
КодМой = "000"+КодМой;
ИначеЕсли СтрДлина(КодМой) = 3 Тогда
КодМой = "00"+КодМой;
ИначеЕсли СтрДлина(КодМой) = 4 Тогда
КодМой = "0"+КодМой;
КонецЕсли;


//Кодмой = СтрЗаменить(Кодмой," ", "");
//Кодмой = Строка(Кодмой);
//сообщить("код " + кодмой);

СтрокаТЧ.Номенклатура = Справочники.Номенклатура.НайтиПоКоду(КодМой);
СтрокаТЧ.ЕдиницаИзмерения =  СтрокаТЧ.Номенклатура.БазоваяЕдиницаИзмерения;
СтрокаТЧ.ДисконтнаяКарта = Справочники.ИнформационныеКарты.НайтиПоРеквизиту("КодКарты",КодКарты);// это то что мне удалось сделать
//ПриИзмененииНоменклатурыТабЧасти(СтрокаТЧ, ЭтотОбъект);
//ЗаполнитьЕдиницуЦенуПродажиТабЧасти(СтрокаТЧ, ДокументОбъект, "грн");

                СтрокаТЧ.ЕдиницаИзмерения = СтрокаТЧ.Номенклатура.ЕдиницаХраненияОстатков;
СтрокаТЧ.Коэффициент = СтрокаТЧ.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент;
СтрокаТЧ.СтавкаНДС = СтрокаТЧ.Номенклатура.СтавкаНДС; // ЮМ 478



Режим = РежимДиалогаВопрос.ДаНет;

//Выполнить("Если " + строка.ТипРеквизитаТЧДока + ".НайтиПоКоду(""" + КодМой + """) = " + строка.ТипРеквизитаТЧДока + ".ПустаяСсылка() тогда "
//+ "Сообщить(""Элемент справочника " + Прав(строка.ТипРеквизитаТЧДока, СтрДлина(строка.ТипРеквизитаТЧДока) - Найти(строка.ТипРеквизитаТЧДока, ".")) + " с наименованием " + ДокЭксель.Sheets(1).Cells(счСтрок, счКолонок).Value + " не найден! Добавить элемент??"""");" + "Если Ответ = КодВозвратаДиалога.Да Тогда ФормаЭлемента = " + строка.ТипРеквизитаТЧДока + ".СоздатьЭлемент().ПолучитьФорму(); ФормаЭлемента.Элементыформы.Наименование.Значение = """ + ДокЭксель.Sheets(1).Cells(счСтрок, счКолонок).Value + """; ФормаЭлемента.ОткрытьМодально(); СтрокаТЧ." + строка.РеквизитТЧДока + " = " + строка.ТипРеквизитаТЧДока + ".НайтиПоКоду(""" + ДокЭксель.Sheets(1).Cells(счСтрок, счКолонок).Value + """); КонецЕсли; КонецЕсли;");
////Если Справочники.Номенклатура.НайтиПоКоду(ДокЭксель.Sheets(1).Cells(счСтрок, счКолонок).Value) =  Справочники.Номенклатура.ПустаяСсылка() Тогда
//// Сообщить("Элемент справочника не найден " + Прав(строка.ТипРеквизитаТЧДока, СтрДлина(строка.ТипРеквизитаТЧДока) - Найти(строка.ТипРеквизитаТЧДока);
Иначе


                         

Выполнить("СтрокаТЧ." + строка.РеквизитТЧДока + " = ДокЭксель.Sheets(1).Cells(счСтрок,счКолонок).Value;");
КонецЕсли;
КонецЕсли;
счКолонок = счКолонок + 1;
КонецЦикла;
счСтрок = счСтрок + 1;

КонецЦикла;

ДокЭксель.Application.Quit();
КонецПроцедуры




Теги: 1С 8.1 
Рейтинг@Mail.ru

Поиск