Вход | Регистрация


1С:Предприятие ::

Метки: 

УФ 8.2: как сделать, чтобы при открытии формы появился список складов с пометкам

Я
   Kleo
 
07.01.13 - 16:00
УФ 8.2: как сделать, чтобы при открытии формы появился список складов с пометками. затем пользователь сам устанавливает пометки, и затем выбранные склады передаются в модуль объекта. как сделать? вроде прсото, ноя  запуталась, обработка внешняя на УФ, для заполнения ТЧ документа
 
 
   IamAlexy
 
1 - 07.01.13 - 16:00
взять и сделать..
   Kleo
 
2 - 07.01.13 - 16:07
делаю в модуле объекта обработки:
Процедура ВыполнитьОтбор() Экспорт

    Запрос = Новый Запрос;
    
    Запрос.Текст = "ВЫБРАТЬ
                   |    0 КАК Пометка,
                   |    Склады.Ссылка
                   |ИЗ
                   |    Справочник.Склады КАК Склады
                   |ГДЕ
                   |    Склады.ЭтоГруппа = ЛОЖЬ
                   |    И Склады.ПометкаУдаления = ЛОЖЬ";
                   
            
    Список = Запрос.Выполнить().Выгрузить();

КонецПроцедуры


затем в модуле формы:

&НаСервере
Процедура ВыполнитьОтбор()
    Обработка = ДанныеФормыВЗначение(Объект, Тип("ВнешняяОбработка.ЗаполнитьПеремещение"));
    Обработка.ВыполнитьОтбор();
    
    ЗначениеВДанныеФормы(Обработка, Объект);
КонецПроцедуры


&НаКлиенте
Процедура ПриОткрытии(Отказ)
   //Вставить содержимое обработчика
 
    ВыполнитьОтбор();
КонецПроцедуры


а затем при запуске обработки пишет, что не найден тип внешняя обработка... скажите, как правильно прописать путь к внешней обработки в строке

Обработка = ДанныеФормыВЗначение(Объект, Тип("ВнешняяОбработка.ЗаполнитьПеремещение"));
   GROOVY
 
Ведущий
3 - 07.01.13 - 16:21
На какого процедуру описывать в модуле обработки?
   Kleo
 
4 - 07.01.13 - 16:22
(3) чтобы запрос сделать? можно в модуле формы сделать?
   GROOVY
 
Ведущий
5 - 07.01.13 - 16:24
(4) Можно в серверной процедуре.
   Kleo
 
6 - 07.01.13 - 16:28
сделала вот так:

&НаСервере
Процедура ВыполнитьОтбор()
   //Обработка = ДанныеФормыВЗначение(Объект, Тип("ВнешняяОбработка.ЗаполнитьПеремещение"));
 
   //Обработка.ВыполнитьОтбор();
 
   //
 
   //ЗначениеВДанныеФормы(Обработка, Объект);
 
    
    Запрос = Новый Запрос;
    
    Запрос.Текст = "ВЫБРАТЬ
                   |    0 КАК Пометка,
                   |    Склады.Ссылка
                   |ИЗ
                   |    Справочник.Склады КАК Склады
                   |ГДЕ
                   |    Склады.ЭтоГруппа = ЛОЖЬ
                   |    И Склады.ПометкаУдаления = ЛОЖЬ";
                   
            
    Объект.Список = Запрос.Выполнить().Выгрузить();

КонецПроцедуры


&НаКлиенте
Процедура ПриОткрытии(Отказ)
   //Вставить содержимое обработчика
 
    ВыполнитьОтбор();
    
КонецПроцедуры


при запуске формы пишет: "Нельзя изменять поле, содержащее объект данных формы". что не так?
   Kleo
 
7 - 07.01.13 - 16:31
сделала фот так:


&НаСервере
Процедура ВыполнитьОтбор()
   //Обработка = ДанныеФормыВЗначение(Объект, Тип("ВнешняяОбработка.ЗаполнитьПеремещение"));
 
   //Обработка.ВыполнитьОтбор();
 
   //
 
   //ЗначениеВДанныеФормы(Обработка, Объект);
 
    
   //Запрос = Новый Запрос;
 
   //
 
   //Запрос.Текст = "ВЫБРАТЬ
 
   //               |    0 КАК Пометка,
 
   //               |    Склады.Ссылка
 
   //               |ИЗ
 
   //               |    Справочник.Склады КАК Склады
 
   //               |ГДЕ
 
   //               |    Склады.ЭтоГруппа = ЛОЖЬ
 
   //               |    И Склады.ПометкаУдаления = ЛОЖЬ";
 
   //               
 
   //        
 
   //Объект.Список = Запрос.Выполнить().Выгрузить();
 

    Объект.Список.Очистить();
    Выборка = Справочники.Склады.Выбрать();
    Пока Выборка.Следующий() Цикл
        Если Выборка.ЭтоГруппа = Истина Тогда Продолжить;КонецЕсли;
        Если Выборка.ПометкаУдаления = Истина Тогда Продолжить; КонецЕсли;
        Сп = Объект.Список.Добавить();
        Сп.Пометка = ЛОжь;
        Сп.Склад = Выборка.Ссылка;
    КонецЦикла;    

КонецПроцедуры


&НаКлиенте
Процедура ПриОткрытии(Отказ)
   //Вставить содержимое обработчика
 
    ВыполнитьОтбор();
    
КонецПроцедуры


заработало.... странно...
   Kleo
 
8 - 07.01.13 - 16:33
помогите дальше.... теперь мне нужно выбранные с пометками склады передать в модуль  объекта, чтобы по выбранным складам проверить остатки на складе... в модуле обработки уже написана процедура, она заполняет, но пока только по одному складу, заданному на форме документа, из которго вызывается внешняя обработка по заполнению ТЧ документа. Все заоплняется, только мне теперь нужно, чтобы в запросе делался отбор по тем складам, которые заданы в форме. как сделать?
   MRAK
 
9 - 07.01.13 - 16:37
(8) а в чем сложность-то? Таблица - это ТЧ обработки?
   kiruha
 
10 - 07.01.13 - 16:40
А зачем в модуль объекта ?
Чем модуль формы не не нравится ?
 
 Рекламное место пустует
   GROOVY
 
Ведущий
11 - 07.01.13 - 16:43
Объект.Список.Загрузить(Запрос.Выполнить().Выгрузить());
   Kleo
 
12 - 07.01.13 - 16:49
(9) нет. Объект.Список - это ТЧ формы обработки  - которая состоит из списка складов, а вот нужно заполнить ТЧ уже документа, откуда вызывается данная обработка. мне нужно для запроса задать параметр (список) в  модуле объекта обработки
   Kleo
 
13 - 07.01.13 - 16:50
(10) у меня процедура уже написана в модуле объекта обрабботки... я уже запуталась..
   Kleo
 
14 - 07.01.13 - 16:54
у меня есть типовой документ в УТ "Заказ на перемещение". в нем я вызываю внешнюю обработку по заполнению ТЧ документа. при открытии обработки выбираю команду на клиенте  - открытие формы. на ней при открытии открывается список складов с пометками, пользователь выставляет нужные пометки сам. затем нужно нажать кнопку "ОК" на форме обработки и чтобы дальше выполнилась процедура в модуле объекта обработки
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) Экспорт

как сделать и чтобы в эту процедуру передался список отобранных в форме обработки складов.
   MRAK
 
15 - 07.01.13 - 17:01
(12) тогда (11)
   Kleo
 
16 - 07.01.13 - 17:02
(15) у меня уже получилось загрузить список складов на форму обработки. теперь мне этотсписок складов нужно передать ф модуль объекта обработки, где происходит заполнение ТЧ документа Заказа на перемещение
   kiruha
 
17 - 07.01.13 - 17:03
(13)
Перенеси процедуру в модуль формы или модуль менеджера
Для модуля объекта можно, но не очень тривиально
 
напр
v8: 1с 8.2 вызов процедуры в модуле формы
   Kleo
 
18 - 07.01.13 - 17:05
(17) не я это придумала.... взяла типовой образец внешней обработки для заполнения ТЧ документов...
   Kleo
 
19 - 07.01.13 - 17:05
обидно.... ведь там уже все написала... и осталось только передать список справочников...
   kiruha
 
20 - 07.01.13 - 17:08
&НаСервере
Функция ПередатьСкладыВМодульОбъекта()
    НашОбъект = РеквизитФормыВЗначение("Объект");
    Возврат НашОбъект.ПроцедуркаВОбъекте(СписокСправочников);
КонецФункции
   Kleo
 
21 - 07.01.13 - 17:12
(20) расшифруйте, что есть, что в этой обработке... у меня проблема. вот отркыла я форму выбора списка складов, выбраль пользователь. дальше нажимает на кнопку Выполнить в этой форме и что дальше? я уже замучалась... не получается у меня дальше передать направление на выполнение процеудры в модуле объекта обработки на заполнение ТЧ....
   Kleo
 
22 - 07.01.13 - 17:15
мне нужно вот так в модуле формы обработки:


&НаСервере
Процедура ВыполнитьДействие()
   // здесь нужно прописать процедуру, чтобы вызвала процедуру из модуля объекта ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения)Экспорт 
 
КонецПроцедуры


&НаКлиенте
Процедура НажмиМеня(Команда)
   //// Вставить содержимое обработчика.
 
   //Сообщение = Новый СообщениеПользователю;
 
   //Сообщение.Текст = "Hello Word (из формы обработки)";
 
   //Сообщение.Сообщить();
 
   //ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения);
 
    ВыполнитьДействие();
КонецПроцедуры


и вот в процедуре ВыполнитьДействие ругается на параметры процедуры..
   Kleo
 
23 - 07.01.13 - 17:16
Форма.ФормаВыбора.Форма(75,20)}: Переменная не определена (ИдентификаторКоманды)
     ВыполнитьКоманду(<<?>>ИдентификаторКоманды, ОбъектыНазначения) (Проверка: Сервер)
{Форма.ФормаВыбора.Форма(75,42)}: Переменная не определена (ОбъектыНазначения)
     ВыполнитьКоманду(ИдентификаторКоманды, <<?>>ОбъектыНазначения) (Проверка: Сервер)
{Форма.ФормаВыбора.Форма(75,3)}: Процедура или функция с указанным именем не определена (ВыполнитьКоманду)
     <<?>>ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) (Проверка: Сервер)
   kiruha
 
24 - 07.01.13 - 17:18
Нужно почитать про передачу параметров
   Kleo
 
25 - 07.01.13 - 17:20
(20) сделала процедуру... а дальше в модуле объекта, как мне получить таблицу этих складов?
   Kleo
 
26 - 07.01.13 - 17:22
(24) дело в том, что это уже параметры, заданные по умолчанию... это как по принципу заразервированной процедуры "Инициализировать" для обычного режима... и тут также... я ничего не придумала, а взяла за основу пример заполнения ТЧ
   Kleo
 
27 - 07.01.13 - 17:28
псих уже берет... уже в обычной форме давно бы сделала(((


простые вещи вроде: октрыть форму внешней обработки, задать склады, какие нужны для проверки остатков, а затем по этим складам в запросе сделать поиск остатокв и заполнить ТЧ документа, из которого запущена внешняя обработка по заполнению...
   Kleo
 
28 - 07.01.13 - 17:39
перенесла содержание процедуры по заполнению ТЧ документа из модуля обработки в модуль формы и ругается:
"Нельзя изменять поле, содержащее объект данных формы"
   Kleo
 
29 - 07.01.13 - 17:42
(28) поняла)) одинаково назывались переменные))) Объект и там и там, но разные совершенно объекты
   Kleo
 
30 - 07.01.13 - 18:42
проблема.... уже туплю... необходимо в тексте запроса проверялось вхождение Ресурса регистра Склады в список значений складов... Склады в (&Склады) и Склады = (&Склады) не работают... из-за несовпадения типов...
   Kleo
 
31 - 07.01.13 - 18:45
как в СписокЗначений передать тип значений?
   Kleo
 
32 - 07.01.13 - 19:27
СЗ - это реквизит формы обработки, там нужно было установить ТипЗначения - Справочники.Склады. сдалала.


но почему в запросе не работает часть кода:
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&ДатаДок, Склад В (&Склады)) КАК СвободныеОстаткиОстатки


где
Запрос.УстановитьПараметр("Склады", СЗ); СЗ - реквизит формы обработки, его видит,все, он не пустой... но вот условие в параметрах виртуальной таблицы регистра не срабатывает(((
   Kleo
 
33 - 07.01.13 - 19:48
получается все сделала... а самое главное вхождение складов в список складов не работает(((
 
 
   Kleo
 
34 - 10.01.13 - 12:01
не работает вот эта функция:

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


потому что ПроцедураВОбъекте  - это процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения)

и если я ее подставляю, то ругается, что параметры ИдентификаторКоманды, ОбъектыНазначения неопределены.


что нкито не писал на УФ внешнюю обработку по заполнению ТЧ документа?
   kiruha
 
35 - 10.01.13 - 13:29
Если вызываешь процедуру, ты обязана заполнить параметры.
Например если это
Процедура МояПроцедура(ИмяКоманды)

ты должна при вызове поместить один параметр, по смыслу совпадающий с тем, что происхдит в процедуре
 //...
 
МояПроцедура("Выполнить")

в процедуре ИмяКоманды будет иметь значение "Выполнить"
   Kleo
 
36 - 10.01.13 - 13:55
(35) это все понятно, это прописные истины. НО у меня есть внешняя обработка для заполнения ТЧ документа, в ней есть предопределенная процедура, в которой как раз прописан механизм заполнения - это стандартный образец обработки - ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения), так вот. если я ее буду прописывать ПередатьСкладыВМодульОбъекта(), то ругается на параметры. возьмите типовую обработку заполнения ТЧ для УФ 8.2! вся сложность в том, что мне перед заполнением документа сначала нужно открыть форму обработки, выбрать нужные мне склады, а затем передать список этих складов в эту обработку ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения)
   Kleo
 
37 - 10.01.13 - 13:55
добавлять еще один параметр в процедуру ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) я не могу - не будет работать заполнение



Список тем форума
Рекламное место пустует Рекламное место пустует
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует