![]() |
|
1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
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 | |||
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 | добавлять еще один параметр в процедуру ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначения) я не могу - не будет работать заполнение |
|
Список тем форума
|
Правила | Описание | Реклама на форуме | Волшебные решения | Поиск | Секции | Рейтинг | Книга знаний | Вики-миста (КЗ2) | Мобильная | Архив | Модераторы | Галерея | Регистрация | 18+ |