Переключение на Главную Страницу Страницы: 1 ... 10 11 [12] 13 14 ... 79 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПоставщикДанных" - обсуждения, примеры, вопросы (число прочтений - 363954 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #165 - 11. Сентября 2009 :: 05:39
Печать  
ПОЗДРАВЛЯЮ!!!!
  
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Событие ПередОкончаниемРедактирования
Ответ #166 - 11. Сентября 2009 :: 05:41
Печать  
2 vandalsvq - поздравления и наилучшие пожелания в связи с прошедшим ДР!!!

Ну и когда прийдёшь в себя может ответишь на вопорос ..... Улыбка

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


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


Но во первых я не хочу править чужой класс, т.к. при обновлении все потеряется, во вторых - может я подошел к решению не с той стороны и есть способ попроще?
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #167 - 11. Сентября 2009 :: 06:33
Печать  
Возьми событие ПриРедактированииЗначения (штатное). Дело в том что ПередОкончаниемРедактирования срабатывает ДО ЗАПИСИ ЭЛЕМЕНТА. А тебе же можно и после записи. А событие ПриРедактированииЗначения в форме вызовется ТОЛЬКО ПОСЛЕ обработки в классе. Т.о. в тот момент элемент (с изменениями) уже будет записан в базу. Если же ты не хочешь чтобы проходила запись, то в ПередОкончаниемРедактирования тебе надо ФСО = 0 поставить и полностью писать запись элемента с вызовом ПоставщикДанных.Данные.ОбновитьСтроки().
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #168 - 11. Сентября 2009 :: 08:34
Печать  
vandalsvq писал(а) 11. Сентября 2009 :: 06:33:
Возьми событие ПриРедактированииЗначения (штатное). Дело в том что ПередОкончаниемРедактирования срабатывает ДО ЗАПИСИ ЭЛЕМЕНТА. А тебе же можно и после записи. А событие ПриРедактированииЗначения в форме вызовется ТОЛЬКО ПОСЛЕ обработки в классе. Т.о. в тот момент элемент (с изменениями) уже будет записан в базу.

Ну будет он в базе или нет - это в общем-то не принципиально. Мне интересно как мне свои изменения производить. Куда их пихать в смысле? Если только через
Код
Выбрать все
Спр = СоздатьОбъект("Справочник."+ВидСправочника);
Спр.НайтиЭлемент(ТекущийЭлемент);
......Контроль блокировок.......
Спр.Записать() 


то это как-то некошерно получается Улыбка
Хотелось-бы как в штатной предопределенной процедуре ПриЗаписи() - поменял что надо, а оно само записало.
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #169 - 11. Сентября 2009 :: 08:44
Печать  
Понятно что при записи было бы кошернее Улыбка но видимо не судьба
Я везде делал через
Код
Выбрать все
Спр = СоздатьОбъект("Справочник.ТвойВидСправочника");
Спр.НайтиЭлемент(ТП.ТекущаяСтрока);
Спр. (бла бла бла)
Спр.Записать(); 


А если редактирование через форму тут я думаю проблем никаких.
В общем пусть так и остается.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #170 - 11. Сентября 2009 :: 09:56
Печать  
Это примерно из той же серии http://www.1cpp.ru/forum/YaBB.pl?num=1248941896/30#42
  
Наверх
 
IP записан
 
avgreen
Senior Member
****
Отсутствует



Сообщений: 254
Местоположение: Украина, Кривой Рог
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #171 - 11. Сентября 2009 :: 10:27
Печать  
JohnyDeath писал(а) 11. Сентября 2009 :: 09:56:
Это примерно из той же серии http://www.1cpp.ru/forum/YaBB.pl?num=1248941896/30#42

Ну почти то-же ....... только я предложил не добавлять параметр а сделать все внутри метода "ПриРедактированииЗначения"
Т.е. в этом случае интерфейс не меняется и переписывать все места где используется класс не нужно. Меняется только реализация и при этом выносится в класс повторяемый код.... но Александр почему-то не хочет этого делать. Ну тут ничего не поделаешь - автору виднее  Улыбка
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #172 - 11. Сентября 2009 :: 12:07
Печать  
avgreen писал(а) 11. Сентября 2009 :: 10:27:
JohnyDeath писал(а) 11. Сентября 2009 :: 09:56:
Это примерно из той же серии http://www.1cpp.ru/forum/YaBB.pl?num=1248941896/30#42

Ну почти то-же ....... только я предложил не добавлять параметр а сделать все внутри метода "ПриРедактированииЗначения"
Т.е. в этом случае интерфейс не меняется и переписывать все места где используется класс не нужно. Меняется только реализация и при этом выносится в класс повторяемый код.... но Александр почему-то не хочет этого делать. Ну тут ничего не поделаешь - автору виднее  Улыбка


Стоп... а я то сначала не понял что ты хочешь. Т.е. во второй (первый) параметр передавать не текущую строку, а сразу объект справочника. А вот это оч. хорошая идея, текущий код она не испортит (что это будет ссылка, что объект один х. разница), а вот с точки зрения удобства и "красоты" решения будет очень даже очень очень  Очень довольный

Спасибо за идею. Реализую в следующей версии ближе к Вс.  Класс

Пы.сы. однако стоит учитывать что реквизит который отредактировал пользователь при ФСО = 1 будут записываться стандартно и будет меняться на то что передано в параметре Значение. Вот как.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Событие ПередОкончаниемРедактирования
Ответ #173 - 11. Сентября 2009 :: 12:09
Печать  
avgreen писал(а) 11. Сентября 2009 :: 05:41:
2 vandalsvq - поздравления и наилучшие пожелания в связи с прошедшим ДР!!!


Неееее..... др у меня как раз таки сегодня  Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #174 - 11. Сентября 2009 :: 12:31
Печать  
Ну собственно я уже сделал, получилось достаточно удобно и хорошо. Теперь подумаю где еще может понадобиться объект, а не элемент справочника.

Есть только одно "но". Если у кого ранее в данном событии был код "Спр = Создать... Спр.НайтиЭлемент()... Спр.Записать()" он не будет больше работать поскольку объект заблокирован. Вот теперь думаю насколько, это критично... ведь пропадает обратная совместимость  Язык Смущённый
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Berck
Junior Member
**
Отсутствует



Сообщений: 66
Местоположение: Москва
Зарегистрирован: 17. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #175 - 11. Сентября 2009 :: 12:32
Печать  
ПОЗДРАВЛЯЮ!!!!
Улыбка и жду новых версий
  
Наверх
 
IP записан
 
Zealot
1c++ donor
Отсутствует


Будьте профессионалами!

Сообщений: 180
Местоположение: KIEV
Зарегистрирован: 17. Сентября 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #176 - 11. Сентября 2009 :: 12:32
Печать  
А если реквизит периодический  Нерешительный

vandalsvq писал(а) 11. Сентября 2009 :: 12:07:
avgreen писал(а) 11. Сентября 2009 :: 10:27:
JohnyDeath писал(а) 11. Сентября 2009 :: 09:56:
Это примерно из той же серии http://www.1cpp.ru/forum/YaBB.pl?num=1248941896/30#42

Ну почти то-же ....... только я предложил не добавлять параметр а сделать все внутри метода "ПриРедактированииЗначения"
Т.е. в этом случае интерфейс не меняется и переписывать все места где используется класс не нужно. Меняется только реализация и при этом выносится в класс повторяемый код.... но Александр почему-то не хочет этого делать. Ну тут ничего не поделаешь - автору виднее  Улыбка


Стоп... а я то сначала не понял что ты хочешь. Т.е. во второй (первый) параметр передавать не текущую строку, а сразу объект справочника. А вот это оч. хорошая идея, текущий код она не испортит (что это будет ссылка, что объект один х. разница), а вот с точки зрения удобства и "красоты" решения будет очень даже очень очень  Очень довольный

Спасибо за идею. Реализую в следующей версии ближе к Вс.  Класс

Пы.сы. однако стоит учитывать что реквизит который отредактировал пользователь при ФСО = 1 будут записываться стандартно и будет меняться на то что передано в параметре Значение. Вот как.

  

Старание и труд все перетрут.
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #177 - 11. Сентября 2009 :: 12:43
Печать  
Zealot писал(а) 11. Сентября 2009 :: 12:32:
А если реквизит периодический  Нерешительный

По умолчанию будет передаваться объект с ИспользоватьДату(ДатаПериодическихРеквизитов). НО: поскольку только после вызова метода ПередОкончаниемРедактирования происходит дальнейшая работа (т.е. спрос у пользователя даты установки периодического реквизита и собственно запись элемента) тут надо проверить что будет если в событии установить значение, и в какую дату оно попадет после выбора пользователем.

В общем я еще погоняю и так и сяк данное решение, меня еще пара моментов смущает. Когда окончательно выработаю решение тогда и выдам в народ.  Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #178 - 14. Сентября 2009 :: 10:07
Печать  
В общем предварительный бетарелиз для того чтобы была возможность попробовать на вкус нововведения.
Нововведения касаются только расширений "Справочник" и "Журнал".
Общие изменения:
- новый публичный атрибут ПрямойЗапрос. Объект "ПоставщикДанных.ПрямойЗапрос"
- новое событие расширения "ПриПолученииЗапроса(КоллекцияЗапрос)"
Данное событие вызывается в момент составление запроса и передает коллекцию в качестве параметра для чтения и записи. Атрибуты коллекции: "Колонки","Источник","Условия".

Расширение "ПоставщикДаннвх.Справочник" добавлено:
- событие "ПередОкончаниемРедактирования" первым параметром теперь получает объект справочника, а не его ссылку. При этом установлен параметр ИспользоватьДату равный параметру ДатаПубличныхРеквизитов. Следует обратить внимание что событие вызывается до того как пользователь выбирает дату на которую необходимо установить значение периодического реквизита.
- отбор по справочнику строиться с учетом использования реквизитов в справочнике. Т.е. теперь при отборе по какому-либо реквизиту только для элемента не будет приводить к тому что исчезнут группы (при условии что количество уровней >1 и признак иерархический просмотр включен)

В общем попробуйте. У кого какие замечания.
Пы.сы. предупреждаю что на текущий момент я все еще рассматриваю возможность изменения интерфейса события ПриПолученииЗапроса, собственно как и отмену изменений в событии ПередОкончаниемРедактирования.

Пы.пы.сы. небольшое изменение. Изменил составление строки отбора.  Улыбка
  

1Cv7_ext_TF_003.rar ( 339 KB | Загрузки )

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПоставщикДанных"
Ответ #179 - 14. Сентября 2009 :: 10:21
Печать  
Внес небольшое изменение. Кто брал, возьмите заново Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 10 11 [12] 13 14 ... 79
ОтправитьПечать