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

Хранилище

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

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



> Подбор из формы списка справочника          
uanr81 Подменю пользователя
сообщение 28.01.13, 10:05
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 56
Из: Краматорск, Донецкая, Украина
Спасибо сказали: 16 раз
Рейтинг: 0

Здравствуйте. В табличную часть документа поле "поступл" (тип справочник.ПлатежиПоступления) нужно организовать подбор, справочник справочник.ПлатежиПоступления подчинён справочнику справочник.ВидыРасходПриход с реквизитами для отбора("ДляПрихода" и "ДляРасхода" галочки в свойствах установлены) при котором имеються формысписка "ДляПрихода" и "ДляРасхода" в каждой из этих форм в модуле процедура
Процедура ПриОткрытии()
УстановитьОтбор("ДляПрихода",1);//"1" здесь значение для отбора
КонецПроцедуры

Как сделать чтобы при обработкеподбора открывалась формасписка "ДляПрихода" справочника справочник.Виды.РасходПриход (уже отфильтрованого с нужным значением отбора), затем при выборе элемента-хозяина открывалась формасписка дляПодбора подчинённого справочника справочник.ПлатежиПоступления и потом выбранный элемент залетал в табличную часть???????????.
ОткрытьПодбор("Справочник.ВидыРасходПриход","ДляПрихода",,,);
Процедура ОбработкаПодбора();
//"справочник.ПлатежиПоступления"

Спасибо


 ! 

Правила, п 2, 5
 


Сообщение отредактировал logist - 28.01.13, 10:24

Cthulhu Подменю пользователя
сообщение 28.01.13, 18:41
Сообщение #2

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0

Во-первых - все-таки лучше бы сначала аккуратнее сформулировать - "кто на ком стоял?"
В форме документа? Какого? В реквизиты? В какие? Выполняется ПОДбор (нажатием на кнопку на кнопку, вызывающую процедуру, которая программно открывает подбор с помощью "ОткрытьПодбор") или все-таки ВЫБор значения (нажатием на кнопку выбора или клавишей F4 в самом реквизите)? Какого типа(+вида) реквизит(ы)? и как-откуда-что нужно выбрать - что потом открыть - и что в результате куда подставить?

uanr81 Подменю пользователя
сообщение 28.01.13, 19:07
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 56
Из: Краматорск, Донецкая, Украина
Спасибо сказали: 16 раз
Рейтинг: 0

Цитата(Cthulhu @ 28.01.13, 19:41) *
Во-первых - все-таки лучше бы сначала аккуратнее сформулировать - "кто на ком стоял?"
В форме документа? Какого? В реквизиты? В какие? Выполняется ПОДбор (нажатием на кнопку на кнопку, вызывающую процедуру, которая программно открывает подбор с помощью "ОткрытьПодбор") или все-таки ВЫБор значения (нажатием на кнопку выбора или клавишей F4 в самом реквизите)? Какого типа(+вида) реквизит(ы)? и как-откуда-что нужно выбрать - что потом открыть - и что в результате куда подставить?

нажатием на кнопку на кнопку, вызывающую процедуру, которая программно открывает подбор с помощью "ОткрытьПодбор". В интерактивном (при тычке в строке табличной части документа для которого происходит подбор ) открываеться форма списка справочника для подбора , но без сортировки по реквизиту. Выбираю владельца, открываеться подчинённый справочник выбираю нужный элемент -- всё нормально залетает в документ. Нужно отсортировать по реквизиту справочник владелец

logist Подменю пользователя
сообщение 28.01.13, 19:12
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Офф
Цитата(uanr81 @ 28.01.13, 19:07) *
при тычке в строке табличной

Спасибо! Отличное завершение рабочего дня smile.gif)


Signature
Личные бесплатные консультации не даю, для этого есть форум!

uanr81 Подменю пользователя
сообщение 28.01.13, 19:44
Сообщение #5

Говорящий
***
Группа: Пользователи
Сообщений: 56
Из: Краматорск, Донецкая, Украина
Спасибо сказали: 16 раз
Рейтинг: 0

Цитата(uanr81 @ 28.01.13, 20:07) *
нажатием на кнопку на кнопку, вызывающую процедуру, которая программно открывает подбор с помощью "ОткрытьПодбор". В интерактивном (при тычке в строке табличной части документа для которого происходит подбор ) открываеться форма списка справочника для подбора , но без сортировки по реквизиту. Выбираю владельца, открываеться подчинённый справочник выбираю нужный элемент -- всё нормально залетает в документ. Нужно отсортировать по реквизиту справочник владелец

Прочтите сначала вроде всё описал


 ! 

Правила, п.13
 

Попробую перефразировать. Нужно открыть подбор из формы документа , вначале выбрать элемент-владелец на форме спика справочника владельца, при выборе которого - откроеться формасписка подчиненных элементов, где при выборе элемента осуществиться тот выбор и выбранный элемент попадёт в табличную часть документа

Сообщение отредактировал logist - 28.01.13, 19:50

Cthulhu Подменю пользователя
сообщение 29.01.13, 17:44
Сообщение #6

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0

С трудом продираясь через сложно-подчиненные конструкции, все-таки уточню: я правильно понял, что проблема заключается в сортировке формы списка справочника владельцев - при выборе владельца, для которого потом в реквизит выбирается элемент подчиненного справочника? если "да" - то вроде никто не отменял при просмотре формы списка Справочника "Меню"-"Действия"-"Сортировка"-"По наименованию" (или на форме списка ПКМ - "Сортировка"-"По наименованию", или даже просто Ctrl+2)... при этом во следующие разы эта самая форма списка будет открываться именно с той сортировкой, которая была (установлена) в прошлый раз.
или об чём таки речь?..

uanr81 Подменю пользователя
сообщение 04.02.13, 22:52
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 56
Из: Краматорск, Донецкая, Украина
Спасибо сказали: 16 раз
Рейтинг: 0

Цитата(Cthulhu @ 29.01.13, 18:44) *
С трудом продираясь через сложно-подчиненные конструкции, все-таки уточню: я правильно понял, что проблема заключается в сортировке формы списка справочника владельцев - при выборе владельца, для которого потом в реквизит выбирается элемент подчиненного справочника? если "да" - то вроде никто не отменял при просмотре формы списка Справочника "Меню"-"Действия"-"Сортировка"-"По наименованию" (или на форме списка ПКМ - "Сортировка"-"По наименованию", или даже просто Ctrl+2)... при этом во следующие разы эта самая форма списка будет открываться именно с той сортировкой, которая была (установлена) в прошлый раз.
или об чём таки речь?..

"справочник.ПлатежиПоступления" подчинён "справочник.ВидыРасходПриход". У хозяина два реквизита для отбора -"ДляПрихода", "ДляРасхода". Если элемент используеться, в данном реквизите устанавливаеться "1", элемент может использоваться и для одного и для другого и для обоих сразу. В документ для которого идёт подбор тип значения подбора "справочник.ПлатежиПоступления", какя должна быть процедура?
процедура добавить() 
    открытьподбор("Справочник.ВидыРасходПриход","ДляРасхода");
конецпроцедуры
  процедура обработкаподбора(эл,конт)
  новаястрока();
  расход=эл;
  конецпроцедуры

в формесписка "ДляРасхода"
Процедура ПриОткрытии()
УстановитьОтбор("ДляРасхода",1);
КонецПроцедуры

Владельца я выберу, а как выбрать подчинённый владельцу?
Если установить:
процедура добавить() 
    открытьподбор("справочник.ПлатежиПоступления");
конецпроцедуры
  процедура обработкаподбора(эл,конт)
  новаястрока();
  расход=эл;
  конецпроцедуры

открываеться форма "не выбран владелец" , я уже и так писал
процедура добавить() 
    открытьподбор("Справочник.ВидыРасходПриход","ДляРасхода");
конецпроцедуры
  процедура обработкаподбора(эл,конт)
  открытьподбор("Справочник.ПлатежиПоступления,"ДляВыбора",ел);// здесь в форму передавал элемент //владелец, только не понятно а куда вторую процедуру обработку подбора всунуть?
  конецпроцедуры

Сделал так :
перем спрпп,спрврп,спхоз,спподч;
процедура добавить()
    перем хоз,подч,нп,пост;
    хоз="";
    подч="";
    спподч.УдалитьВсе();
    если спхоз.ВыбратьЗначение(хоз,"Выбери тип затрат",,,0)=1 тогда    
        спрпп.ИспользоватьВладельца(хоз);
        спрпп.выбратьэлементы();
        пока спрпп.получитьэлемент()=1 цикл
            спподч.добавитьзначение(спрпп.текущийэлемент());    
        конеццикла;
        если  спподч.ВыбратьЗначение(подч,"Выбери затрату",,,0)=1 тогда
            подск="Из казны в: "+строка(подч.наименование);
            су=0;
            если ВвестиЧисло(су,подск,8,2,)=1 тогда
            новаястрока();
            Расход=подч;
            сумма=су;
            конецесли;
        конецесли;
    конецесли;
конецпроцедуры
спрпп=создатьобъект("справочник.ПлатежиПоступления");
спрврп=создатьобъект("справочник.ВидыРасходПриход");  
спхоз=создатьобъект("списокзначений");
спподч=создатьобъект("списокзначений");
спрврп.ВыбратьЭлементыПоРеквизиту("ДляРасхода",1,,);
пока спрврп.получитьэлемент()=1 цикл
    спхоз.добавитьзначение(спрврп.текущийэлемент());
конеццикла;

Но вопрос остался открытым. Спасибо за то что прочли. С этими подборами что то не выходит, подскажите как с ними справиться

Cthulhu Подменю пользователя
сообщение 05.02.13, 9:51
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0

Да вроде из ОбработкаПодбора при выборе владельца - никто не мешает сделать ОткрытьПодбор подчиненного справочника с установкой для него выбранного владельца, и в этой же ОбработкаПодбора выбранное из подчиненного справочника значение - занести в реквизит... надеюсь, что про различение в ОработкаПодбора того, что именно выбрано (по типу+виду выбранного значения) и так поятно?..

Спасибо сказали: dobruan, uanr81,

uanr81 Подменю пользователя
сообщение 09.02.13, 11:31
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 56
Из: Краматорск, Донецкая, Украина
Спасибо сказали: 16 раз
Рейтинг: 0

спасибо Cthulhu, всё заработало. Вот код
процедура добавить() 
    открытьподбор("Справочник.ВидыРасходПриход","ДляРасхода",,0);
конецпроцедуры
  процедура обработкаподбора(эл,конт)
  если эл.вид()="ВидыРасходПриход" тогда
  открытьподбор("Справочник.ПлатежиПоступления","ДляРастрат",,0,эл);//В этой форме - процедура приоткрытии() метод использоватьвладельца(форма.параметр,0)
иначеесли эл.вид()="ПлатежиПоступления" тогда
  подск="Из казны в: "+строка(эл.наименование);
            су=0;
            если ВвестиЧисло(су,подск,8,2,)=1 тогда
            новаястрока();
            Расход=эл;
            сумма=су;
            конецесли;
  конецесли;
  конецпроцедуры

По суте для подбора можно пройти сколько угодно уровней подчинения. Ещё раз спасибо Cthulhu и всем кто потратил на меня время

Cthulhu Подменю пользователя
сообщение 09.02.13, 15:30
Сообщение #10

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 224
Из: не ту страну назвали Гондурасом
Спасибо сказали: 83 раз
Рейтинг: 0

Цитата(uanr81 @ 09.02.13, 11:31) *
... для подбора можно ...

Пара замечаний.
1. В обработке подбора такой код потенциально ошибочен - потому что метод ".Вид()" есть не у всех типов данных. Лучше подобных ситуаций избегать - предварительно анализируя ТИП полученного из подбора значения: конструкцию
Если эл.Вид()="ВидыРасходПриход" ... ИначеЕсли эл.Вид()="ПлатежиПоступления" ... КонецЕсли;

лучше "обернуть" в проверку типа полученного из подбора значения - например (в данном конкретном случае):
Если ТипЗначенияСтр(эл)="Справочник" Тогда <... тот же код ...> КонецЕсли;


2. Некоторые операции в открытой форме можно сделать кодом прямо из того места, в котором эта форма открывается (и в которую возвращается управление после того, как форма открыта и ф ней отработала предопределенная процедура "ПриОткрытии), например (в данном конкретном случае):
//открытьподбор("Справочник.ПлатежиПоступления","ДляРастрат",,0,эл);//В этой форме - процедура приоткрытии() метод использоватьвладельца(форма.параметр,0)
тКонт=Эл; // а можно и пропустить - если переменная "тКонт" описана в "Перем"
открытьподбор("Справочник.ПлатежиПоступления","ДляРастрат",,0,тКонт); // получили в переменную контекст открытой для подбора формы
тКонт.ИспользоватьВладельца(эл); // установили в открытой для побдора форме отбор по нужному владельцу
// при этом никаких изменений в саму открываемую для подбора (или просто по ОткрытьФорму - так, на будущее) форму (списка) никаких изменений вносить не надо.

При этом в открытую форму управление перейдет уже после завершения выполнения всего кода после ОткрытьПодбор/ОткрытьФорму (до конца процедуры).

Сообщение отредактировал Cthulhu - 09.02.13, 15:34

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

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