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

Автор Тема: 1С УПП не работает обработка по загрузки в отчет списка значений отбора из Excel  (Прочитано 270 раз)

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

Оффлайн jyurik

  • *
  • Сообщений: 21
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-02-07
  • Сайт: 
  • Профессия: Программист 1С
Добрый день
У меня есть обработка «ФормаНастройка» я ее добавил в конфигурацию, а на форме внешнего отчета установил кнопку для вызова этой формы. Данная обработка должна подгрузит список из excel файла в форму настройки отчета значения в виде списка. В итоге вместо нужных мне названий в строке написано: <Пустое значение>.




Оффлайн jyurik

  • *
  • Сообщений: 21
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-02-07
  • Сайт: 
  • Профессия: Программист 1С
Не получается картинку добавить

Добавлено: 14 Мар 2019, 15:34

Код ФормаНастройка:


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

   Закрыть();
   
КонецПроцедуры
 
Функция ПолучитьПараметрыЗагрузки(Элемент)      
   рекв  = Неопределено;
   ФормаВыбораРеквизита = Обработки.м_ФормаНастройка.ПолучитьФорму("ФормаВыбораРеквизита");
   рекв = ФормаВыбораРеквизита.ОткрытьМодально();
   Возврат рекв;     
КонецФункции

Процедура ЗагрузитьДанные(СтрукПараметров,РеквизитДляЗаполнения)
   Попытка
      Эксель = Новый COMОбъект("Excel.Application");
   Исключение
      Сообщить("Ошибка работы с Excel!");
      Возврат;
   КонецПопытки;
   Книга   = Эксель.Workbooks.Open(СтрукПараметров.Файл);

   ТекЛист = Книга.WorkSheets(1);
   Область = ТекЛист.Cells.CurrentRegion;
   КолвоСтрок  = Область.Rows.Count;

   
   РеквизитДляЗаполнения.Очистить();
   

   Для Инд = СтрукПараметров.Строка по КолвоСтрок Цикл
         Значение = СокрЛП(ТекЛист.Cells(Инд, СтрукПараметров.Колонка).Value);
         Если СтрукПараметров.Реквизит = Неопределено Тогда
            РеквизитДляЗаполнения.Добавить(Значение);
         Иначе
         КонецЕсли;          
   КонецЦикла;
   Эксель.Quit();
КонецПроцедуры

Процедура ОтборЗначениеНачалоВыбора(Элемент, СтандартнаяОбработка)

   Если ЭлементыФормы.Отбор.ТекущаяСтрока.ВидСравнения = ВидСравнения.ВСписке или
       ЭлементыФормы.Отбор.ТекущаяСтрока.ВидСравнения = ВидСравнения.ВСпискеПоИерархии или
       ЭлементыФормы.Отбор.ТекущаяСтрока.ВидСравнения = ВидСравнения.НеВСписке или
       ЭлементыФормы.Отбор.ТекущаяСтрока.ВидСравнения = ВидСравнения.НеВСпискеПоИерархии Тогда

      СтандартнаяОбработка = Ложь;
       СтрукПараметров = ПолучитьПараметрыЗагрузки(ЭлементыФормы.Отбор.ТекущаяСтрока.ЗначениеС);       
      
      Если  СтрукПараметров =  Неопределено Тогда
         Возврат;
      КонецЕсли;
      ЗагрузитьДанные(СтрукПараметров,ЭлементыФормы.Отбор.ТекущаяСтрока.Значение);
   КонецЕсли;
   
КонецПроцедуры



Код ФормаВыбораРеквизита:


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

Процедура ФайлЗагрузкиНачалоВыбора(Элемент, СтандартнаяОбработка)
   ДиалогФыбораФайла                        =   Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);   
   ДиалогФыбораФайла.Фильтр                  =   "Файл данных (*.XLS)|*.XLS|Все|*.*";
   ДиалогФыбораФайла.Заголовок                  =   "Выберите файл Excel";
   ДиалогФыбораФайла.ПредварительныйПросмотр      =   Ложь;
   ДиалогФыбораФайла.Расширение               =   "";
   ДиалогФыбораФайла.ИндексФильтра               =   0;
   ДиалогФыбораФайла.ПроверятьСуществованиеФайла   =   Ложь;
   ДиалогФыбораФайла.Выбрать();
   
    ЭлементыФормы.ФайлЗагрузки.Значение = ДиалогФыбораФайла.ПолноеИмяФайла;
КонецПроцедуры

Процедура ИспользоватьРеквизитПриИзменении(Элемент)
   Если Элемент.Значение  Тогда
       ЭлементыФормы.НадписьРеквизит.Видимость = Истина;
      ЭлементыФормы.Реквизит.Видимость = Истина;
    Иначе
       ЭлементыФормы.НадписьРеквизит.Видимость = ложь;
      ЭлементыФормы.Реквизит.Видимость = ложь;
   КонецЕсли;
КонецПроцедуры

  ЭлементыФормы.Строка.Значение = 2;
  ЭлементыФормы.Колонка.Значение = 1;

Добавлено: 14 Мар 2019, 15:43


Добавлено: 14 Мар 2019, 15:45


Последний раз редактировалось: jyurik; 14 Мар 2019, 15:45. Причина: Объединение сообщений

Оффлайн antoneus

  • ***
  • Сообщений: 123
  • РЕПУТАЦИЯ: 32
  • КПД: 26%
  • Регистрация: 2018-11-22
  • Сайт: 
  • Профессия: Программист 1С
В excel файле что находится? А в списке что должно находиться?

Оффлайн jyurik

  • *
  • Сообщений: 21
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-02-07
  • Сайт: 
  • Профессия: Программист 1С
В excel файле что находится? А в списке что должно находиться?

В excel один столбец со списком контрагентов, соответственно он же должен попасть в отбор - списком

Оффлайн LexaK

  • *****
  • Сообщений: 1654
  • РЕПУТАЦИЯ: 471
  • КПД: 28%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
Цитировать
В excel один столбец со списком контрагентов
скорее всего это просто наименование контрагента, (тип:строка)

вот вы эту "строку" получаете и помещаете в список где должны быть ссылки!

(только для вас) вам можно попробовать сделать минимальное изменение настройки
при условии что имена контрагентов совпадают с Екселевскими

там где у вас отбор сделать
Контрагент.Наименование В списке ВашСписок
т.е. делать отбор не по ссылке контрагентов а по наименованию
и в Параметрах укажите что ваш список значений содержит элементы Тип: Строка
(попробуйте должно заработать)

или если все по правильному делать, при (или после) загрузки данных из Екселя, ищите Контрагентов и помещайте ссылки в ваш список.

Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн jyurik

  • *
  • Сообщений: 21
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-02-07
  • Сайт: 
  • Профессия: Программист 1С
Цитировать
В excel один столбец со списком контрагентов
скорее всего это просто наименование контрагента, (тип:строка)

вот вы эту "строку" получаете и помещаете в список где должны быть ссылки!

(только для вас) вам можно попробовать сделать минимальное изменение настройки
при условии что имена контрагентов совпадают с Екселевскими

там где у вас отбор сделать
Контрагент.Наименование В списке ВашСписок
т.е. делать отбор не по ссылке контрагентов а по наименованию
и в Параметрах укажите что ваш список значений содержит элементы Тип: Строка
(попробуйте должно заработать)

или если все по правильному делать, при (или после) загрузки данных из Екселя, ищите Контрагентов и помещайте ссылки в ваш список.


Спасибо за ответ
буду пробовать
Добавлено: 14 Мар 2019, 16:41

там где у вас отбор сделать
Контрагент.Наименование В списке ВашСписок
т.е. делать отбор не по ссылке контрагентов а по наименованию
и в Параметрах укажите что ваш список значений содержит элементы Тип: Строка
(попробуйте должно заработать)

или если все по правильному делать, при (или после) загрузки данных из Екселя, ищите Контрагентов и помещайте ссылки в ваш список.

[/quote]
Я добавил эту обработку в конфу, чтобы этот отбор был универсален для разных вариантов отчетов (контрагент, заказ или еще что-то), а так если указать только Контрагент.Наименование уже не универсален
Как же доработать для универсальности?

Последний раз редактировалось: jyurik; 14 Мар 2019, 16:41. Причина: Объединение сообщений

Оффлайн LexaK

  • *****
  • Сообщений: 1654
  • РЕПУТАЦИЯ: 471
  • КПД: 28%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
Цитировать
Как же доработать для универсальности?
надо идти от простого к сложному! :befhbt:

добейтесь сначала что бы у вас этот (один) вариант заработал, потом второй, (3,4,...)
а затем уже и универсальный легко сделаете.
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн jyurik

  • *
  • Сообщений: 21
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-02-07
  • Сайт: 
  • Профессия: Программист 1С
Цитировать
В excel один столбец со списком контрагентов
там где у вас отбор сделать
Контрагент.Наименование В списке ВашСписок
т.е. делать отбор не по ссылке контрагентов а по наименованию
и в Параметрах укажите что ваш список значений содержит элементы Тип: Строка
(попробуйте должно заработать)

я правильно понял Вас:

Процедура ОтборЗначениеНачалоВыбора(Элемент, СтандартнаяОбработка)

   Если ЭлементыФормы.Отбор.ТекущаяСтрока.ВидСравнения = ВидСравнения.Контрагент.Наименование или
       ЭлементыФормы.Отбор.ТекущаяСтрока.ВидСравнения = ВидСравнения.ВСпискеПоИерархии или
       ЭлементыФормы.Отбор.ТекущаяСтрока.ВидСравнения = ВидСравнения.НеВСписке или
       ЭлементыФормы.Отбор.ТекущаяСтрока.ВидСравнения = ВидСравнения.НеВСпискеПоИерархии Тогда

      СтандартнаяОбработка = Ложь;
       СтрукПараметров = ПолучитьПараметрыЗагрузки(ЭлементыФормы.Отбор.ТекущаяСтрока.ЗначениеС);       
     
      Если  СтрукПараметров =  Неопределено Тогда
         Возврат;
      КонецЕсли;
      ЗагрузитьДанные(СтрукПараметров,ЭлементыФормы.Отбор.ТекущаяСтрока.Значение);
   КонецЕсли;
   
КонецПроцедуры

Оффлайн LexaK

  • *****
  • Сообщений: 1654
  • РЕПУТАЦИЯ: 471
  • КПД: 28%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
это что?
Цитировать
  Если ЭлементыФормы.Отбор.ТекущаяСтрока.ВидСравнения = ВидСравнения.Контрагент.Наименование или
вы вообще понимаете что вы пишите?
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн jyurik

  • *
  • Сообщений: 21
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2011-02-07
  • Сайт: 
  • Профессия: Программист 1С
это что?
Цитировать
  Если ЭлементыФормы.Отбор.ТекущаяСтрока.ВидСравнения = ВидСравнения.Контрагент.Наименование или
вы вообще понимаете что вы пишите?


Вы меня извините, я не настолько силен в этом вопросе и не совсем понял Вас, как это переделать


Теги:
 


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

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

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


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

* Реклама

* Поиск

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

* Реклама

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

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

Геннадий ОбьГЭС Геннадий ОбьГЭС
35 Сообщений
wise wise
33 Сообщений
AIFrame AIFrame
32 Сообщений
alexandr_ll
31 Сообщений
DmitriyF DmitriyF
13 Сообщений
SGIRG SGIRG
12 Сообщений
vova-1c@xaker.ru
11 Сообщений
Shohana
11 Сообщений
Мария112689
10 Сообщений
kiksi
10 Сообщений

* Кто онлайн

  • Точка Гостей: 314
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

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

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

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

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

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal