Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )




>  Помогите разобраться в коде
poison
Отправлено: 24.06.15, 18:08


Молчаливый
*

Группа: Пользователи
Сообщений: 4
Регистрация: 22.06.15
Пользователь №: 44495


Цитата(Petre @ 24.06.15, 9:52) *
Все равно ничего не понятно.

Справочники.ИнформационныеКарты.НайтиПоРеквизиту("КодКарты",КодКарты)

находит нужную ссылку?

Какой тип у "СтрокаТЧ.ДисконтнаяКарта"?


тип число у СтрокаТЧ.ДисконтнаяКарта
  Форум: Программирование в 1С Предприятие 8.1 (8.0) · Просмотр сообщения: #100228 · Ответов: 7 · Просмотров: 2703
 

>  Помогите разобраться в коде
poison
Отправлено: 23.06.15, 17:50


Молчаливый
*

Группа: Пользователи
Сообщений: 4
Регистрация: 22.06.15
Пользователь №: 44495


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

    СтрокаДляВыполнения = "ВспомогательныйРеквизит = Документы." + Документ.<a class="glossary-term" href="http://forum-1c.ru/index.php?topic=26437.0" title="Метаданными в 1С:Предприятии называют данные, которые описывают то, как должны быть представлены данные. То есть, это структура объектов их представления (формы), реквизиты, различные модули, ...">Метаданные</a>().Имя + ".ПолучитьФормуНовогоДокумента();";
    Выполнить(СтрокаДляВыполнения);
    ВспомогательныйРеквизит.Открыть();

    ДокЭксель = Получить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"+КодМой;
                КонецЕсли;

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

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



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

после этого идет как я понимаю часть кода импорта строк из файла эксель в 1с, вот мне нужно разобраться как мне записать строкаТЧ. ДисконтнаяКарта документ реализации товаров и услуг, куда уже пишутся все 4 столбца из файла эксель, но не импортируется 5ый столбец
//Выполнить("Если " + строка.ТипРеквизитаТЧДока + ".НайтиПоКоду(""" + КодМой + """) = " + строка.ТипРеквизитаТЧДока + ".ПустаяСсылка() тогда " 
                    //+ "Сообщить(""Элемент справочника " + Прав(строка.ТипРеквизитаТЧДока, СтрДлина(строка.ТипРеквизитаТЧДока) - Найти(строка.ТипРеквизитаТЧДока, ".")) + " с наименованием " + ДокЭксель.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 (8.0) · Просмотр сообщения: #100196 · Ответов: 7 · Просмотров: 2703
 

>  Помогите разобраться в коде
poison
Отправлено: 23.06.15, 8:59


Молчаливый
*

Группа: Пользователи
Сообщений: 4
Регистрация: 22.06.15
Пользователь №: 44495


Граждане специалисты не уж то это так сложно, что никто не может написать пару строк помощи
  Форум: Программирование в 1С Предприятие 8.1 (8.0) · Просмотр сообщения: #100183 · Ответов: 7 · Просмотров: 2703
 

>  Помогите разобраться в коде
poison
Отправлено: 22.06.15, 19:43


Молчаливый
*

Группа: Пользователи
Сообщений: 4
Регистрация: 22.06.15
Пользователь №: 44495


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

    СтрокаДляВыполнения = "ВспомогательныйРеквизит = Документы." + Документ.<a class="glossary-term" href="http://forum-1c.ru/index.php?topic=26437.0" title="Метаданными в 1С:Предприятии называют данные, которые описывают то, как должны быть представлены данные. То есть, это структура объектов их представления (формы), реквизиты, различные модули, ...">Метаданные</a>().Имя + ".ПолучитьФормуНовогоДокумента();";
    Выполнить(СтрокаДляВыполнения);
    ВспомогательныйРеквизит.Открыть();

    ДокЭксель = Получить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 (8.0) · Просмотр сообщения: #100158 · Ответов: 7 · Просмотров: 2703
 


Новые сообщения  Открытая тема (есть новые ответы)
Опрос  Опрос (есть новые голоса)
Нет новых сообщений  Открытая тема (нет новых ответов)
Нет новых голосов  Опрос (нет новых голосов)
Популярная тема  Горячая тема (есть новые ответы)
Закрыта  Закрытая тема
Нет новых  Горячая тема (нет новых ответов) Перемещена  Тема перемещена
 

RSS Текстовая версия Сейчас: 13.06.24, 3:38
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!