Переключение на Главную Страницу Страницы: 1 ... 77 78 [79] 80  ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПоставщикДанных" - обсуждения. Часть 2. (число прочтений - 355655 )
DJRelax
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Местоположение: Москва
Зарегистрирован: 26. Января 2017
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1170 - 07. Марта 2017 :: 13:30
Печать  
Камрады, простите меня, но есть еще вопросик или проблема:
Пробую разместить "ПоставщикДанных.ТабличнаяЧасть", ставлю на форму две кнопки, основную ТЧ перемещаю на другой слой. В коде в процедуре "ПослеОткрытия" пишу:
Код (C++)
Выбрать все
	ПД = СоздатьОбъект("ПоставщикДанных");
	ПД.ТипЗначений = "ТабличнаяЧасть.тестСводнаяЗаявкаПрих";
	ПД.КонтейнерКоманднойПанели = "ПанельТЧ";
	ПД.КонтейнерТабличногоПоля = "ТЧДокумента";

	Данные = ПД.Данные;
	Данные.СоздатьКнопкиПоУмолчанию();

	ПД.Обновить(); 



При открытии документа, таблица появляется, а вот панель нет, т.е. класс пытается создать панель видимо, но она пустая, без кнопок.
Видимо из-за этого 1С падает, даже при попытке просто закрыть этот документ.
У меня ИБ DBF-ная, релиз 27
ВК вот эти(в порядке загрузки):
1) 1С++ 3.2.4.3
2) 1sqlite.dll - 1.0.2.6/3.16.2.14 (пробовал и другие версии)
3) FormEx.dll - 2.0.5.121
4) SpreadSheet.dll - 1.1.2.0

Винда, 10х64, но и это ни причем, пробовал на WinServer 2003х64, то же самое.
Что самое интересное, сделал форму подбора документов на поставщике данных, она работает нормально. а вот ТабличнаяЧасть не хочет.
Пытался что нить найти отладчиком, ни чего не находится Улыбка
Грешу что может я что нить не включил в ПД.
  
Наверх
 
IP записан
 
JB
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 5
Зарегистрирован: 24. Февраля 2015
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1171 - 21. Марта 2017 :: 14:56
Печать  
Подскажите, пожалуйста. Использую ПД для журнала документов.

При создании используется процедура:

Код
Выбрать все
Процедура УстановитьПоставщикаДанныхЖурналДокументов()
	ПоставщикДанных = СоздатьОбъект("ПоставщикДанных");
	ПоставщикДанных.КонтейнерТабличногоПоля = "ЖурналСписокДополнительныйЖурнал";
	ПоставщикДанных.КонтейнерКоманднойПанели = "ИДКоманднаяПанель";
	ПоставщикДанных.ТипЗначений = "Журнал.Наряды";

	ТабличноеПоле = ПоставщикДанных.ТабличноеПоле;
	ТабличноеПоле.СтильРамки = 1;
	ТабличноеПоле.СтильЗаголовков = 1;

	Данные = ПоставщикДанных.Данные;
	Данные.СоздатьКнопкиПоУмолчанию();
	Данные.РеквизитСортировки = "ДатаДокумента";
	Данные.КолонкаПиктограмм = "НомерДокумента";
	Данные.РежимВыбора = 0;
	Данные.РежимОтладки = -1;
	Данные.АвтоОбновление = 1;
	Данные.ПериодАвтоОбновления = 10;

	Данные.РазрешитьОтборПоГрафам = 1;
...
 


Она практически содрана из примера, который vandalsvq приводил вместе с лохматой (3 или 4) версией класса. На последней (5-й) версии ПД вылетает на строке
Данные.РазрешитьОтборПоГрафам = 1;
с ошибкой:
Код
Выбрать все
Если ЭлементОтбора.ПолеНастройки.ГрафаЖурнала = 1 Тогда
рнал.ert(1217) }

Данные.РазрешитьОтборПоГрафам = 1;
{U:\BASES\1C\DATA\EXTFORMS\ТЕСТ ЖУРНАЛНАРЯДЫ.ERT(29)}: ПоставщикДанных.Журнал::ПриЗаписи_РазрешитьОтборПоГрафам(Число Параметр=1) : Значение не представляет агрегатный объект
Если ЭлементОтбора.ПолеНастройки.ГрафаЖурнала = 1 Тогда
рнал.ert(1217) } 



Если использовать старую версию ПД, то все нормально работает. Но старую версию ПД использовать не могу, т.к. у меня в других модулях активно используется новая. Как причесать этот код, чтобы ошибка не вылетала ?
  
Наверх
 
IP записан
 
BotMan
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 28. Июля 2017
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1172 - 28. Июля 2017 :: 12:19
Печать  
Подскажите пожалуйста, создал журнал с табличным полем, все отлично работает, а вот как устанавливать свои фильтры не могу понять.
Допустим: на форме есть реквизит "Клиент", как программно отобразить только строки с клиентов выбранным в этом реквизите ? Очень довольный
  
Наверх
 
IP записан
 
Mink Snopes
Junior Member
**
Отсутствует


bookkeeping considered
harmful

Сообщений: 30
Местоположение: Dombabwe
Зарегистрирован: 05. Ноября 2013
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1173 - 28. Июля 2017 :: 13:01
Печать  
BotMan писал(а) 28. Июля 2017 :: 12:19:
Подскажите пожалуйста, создал журнал с табличным полем, все отлично работает, а вот как устанавливать свои фильтры не могу понять.
Допустим: на форме есть реквизит "Клиент", как программно отобразить только строки с клиентов выбранным в этом реквизите ? Очень довольный


Я использую примерно такую процедуру:
Код
Выбрать все
Процедура ОбновитьОтбор(Имя, Знч, ОбновлятьПД = 0)
	Перем Отбор, ВидыСравнения;
	Данные = ПоставщикДанных.Данные;
	Отбор = ПоставщикДанных.Данные.Отбор;

	ВидыСравнения=СоздатьОбъект("ПоставщикДанных.ВидыСравнения");

	НовОтбор = Данные.Отбор.НайтиОтбор(Имя);
	НовОтбор.ВидСравнения = ВидыСравнения.Равно;
	НовОтбор.Значение = Знч;
	НовОтбор.Использование = 1 - ПустоеЗначение(Знч);

	Если ОбновлятьПД = 1 Тогда
		ПоставщикДанных.Обновить();
	КонецЕсли;
КонецПроцедуры 



В твоем случае вызывать как-то так:
Код
Выбрать все
ОбновитьОтбор("Клиент", ВыбКлиент); 


  
Наверх
 
IP записан
 
BotMan
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 28. Июля 2017
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1174 - 28. Июля 2017 :: 13:13
Печать  
Спасибо, сработало, но только с небольшой поправкой на ветер:

Mink Snopes писал(а) 28. Июля 2017 :: 13:01:
Код
Выбрать все
	ВидыСравнения=СоздатьОбъект("ВидыСравнения");
 




  
Наверх
 
IP записан
 
BotMan
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 28. Июля 2017
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1175 - 29. Июля 2017 :: 10:47
Печать  
Слушай, а как отменить отбор теперь ? )))

что-то у меня не получается даже сделать пустым реквизит на форме...


Пробую вот так
Код
Выбрать все
Процедура ОтменитьОтбор(Имя)
	ПоставщикДанных.Данные.Отбор.Удалить(Имя);
	ПоставщикДанных.Обновить();
КонецПроцедуры
 

  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1176 - 31. Июля 2017 :: 09:40
Печать  
Пиши:

Код
Выбрать все
НовОтбор.Использование = 0; 

  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
BotMan
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 28. Июля 2017
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1177 - 31. Июля 2017 :: 10:34
Печать  
Да, уже разобрался, спасибо.
  
Наверх
 
IP записан
 
BotMan
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 28. Июля 2017
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1178 - 12. Сентября 2017 :: 09:15
Печать  
Подскажите в чем может быть косяк. На win 10x64 при закрытии 1с что-то идет не так и при повторном запуске программа просит переиндексацию?
В конфе гружу полный пакет поставщика данных, использую прямойзапрос и журналы.
Переносил конфу на win 7 32 (потестить) ошибок не наблюдал!
  
Наверх
 
IP записан
 
nicesc
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 52
Зарегистрирован: 13. Июня 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1179 - 13. Сентября 2017 :: 01:45
Печать  
В win10 класс падает в недрах перехватчика, времени не пока было разобраться, поэтому я просто перевёл на табличное поле.
  
Наверх
 
IP записан
 
BotMan
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 28. Июля 2017
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1180 - 16. Сентября 2017 :: 11:01
Печать  
После нескольких дней наблюдения, сделал вывод что рушится что-то именно если закрывать всю программу, если закрыть сперва окно, в котором развернут ПоставщикДанных.Журнал, то отрабатывает все норм. возможно не успевает отработать какой-то Деструктор().

На данный момент проблему обошел вот таким костылем:

Процедура ПриЗавершенииРаботыСистемы()
     Если Вопрос("Завершить работу программы?",4) = 7 Тогда
           СтатусВозврата(0);
           Возврат;
     КонецЕсли;
//     Сервис - Это формекс
     Сервис.ЗакрытьВсеОкна(100);
КонецПроцедуры

Буду наблюдать за происходящим )
  
Наверх
 
IP записан
 
BotMan
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 28. Июля 2017
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1181 - 21. Сентября 2017 :: 06:45
Печать  
Собственно после добавления закрытия всех форм ПриЗавершенииРаботы и установки "Запускать программу в режиме совместимости windows 7" 1с-ка перестала рушиться.
  
Наверх
 
IP записан
 
BotMan
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 19
Зарегистрирован: 28. Июля 2017
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1182 - 09. Октября 2017 :: 07:44
Печать  
Подскажите пожалуйста, как лучше сделать.

Добавил колонку:
//****
     Данные.ДобавитьКолонкуДанных("Долг","Долг","''","Число",15,2);
     Данные.НоваяКолонка("Долг",1);
//****

Далее:
Процедура ЭкранПриВыводеСтроки(ТабличноеПоле, ОформлениеСтроки, ДанныеСтроки, ТипРегиона)
     Если ТипРегиона = 3 Тогда
           ТекДок = ДанныеСтроки.Получить("ТекущийДокумент");
           ОформлениеЯчейки = ОформлениеСтроки.Ячейки.Получить("Долг");
           ОформлениеЯчейки.УстановитьТекст(Регистр.ДолгОтгрузки.Остаток(ТекДок, "Долг"));
        КонецЕсли
КонецПроцедуры;


Подскажите пож, как правильно запихать Сумму этих долгов в подвал ?

  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1183 - 30. Октября 2017 :: 16:01
Печать  
Интересно было бы узнать мнение на счет возможности отбора элементов справочника по второстепенным данным.

Например, нужно отобразить клиентов, с которыми текущий сотрудник заключил договор. Т.е. в документе "Договор" есть поле "Сотрудник" и вот в спр.Клиентов нужно отборазить всех клиентов, у которых в договоре Сотрудник=ТекущийПользователь. Как это можно сделать с помощью класса ПоставщикДанных?

И помимо этого задача еще осложняется тем, что нужно показывать также клиентов, в карточке которых этот текущий пользователь установлен как Менеджер. Этот фильтр легко устанавливается с помощью Отбора. А вот как добавить к нему "ИЛИ" из первого условия по договорам?

В обычном варианте справочника выполнялся лайтовский запрос, на выходе которого получали список клиентов. И этот список подставлялся в ИспользоватьСписокЭлементов().
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
nicesc
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 52
Зарегистрирован: 13. Июня 2009
Пол: Мужской
Re: Класс "ПоставщикДанных" - обсуждения. Часть 2.
Ответ #1184 - 31. Октября 2017 :: 02:17
Печать  
Что мешает получить список нужных элементов через запрос и потом его скормить через тот же `отбор`?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 77 78 [79] 80 
ОтправитьПечать