Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2017, 02:50
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как дописать часть кода  (Прочитано 980 раз)

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

Оффлайн pavel.garkov

  • *
  • Сообщений: 1
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-06-22
  • Сайт: 
  • Профессия: Ученик 1С
Все привет, подскажите опытные программисты как реализовать мне такую ситуацию есть файл ексел из него происходит импорт данных в документ 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 
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
154 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
46 Сообщений
andron81_81
44 Сообщений
oleg-x
44 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
BuhRust
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 142
  • Точка Скрытых: 0
  • Точка Пользователей: 0

Нет пользователей онлайн.

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal