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

Хранилище

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

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



> Передать параметр из формы          
dobruan Подменю пользователя
сообщение 27.08.15, 15:46
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 264
Из: Закарпатская обл
Спасибо сказали: 14 раз
Рейтинг: 0

Всем приветь.

Не выход сделать такую вещь....

Из табличной части Документа для выбора ТМЦ окрывается модально форма обработки, на форме которой есть реквезит типа Справочник.ТМЦ.

Так вот, нужно при выборе этого реквизита остатки выводились(расчитывались) по конкретному складу, задаётся в документе.

В форме Справочника.ТМЦ имееется возможность выбора склада и она работает. Пользователю лень делать один клик мышью. А у меня не выходит програмно сделать это.

Кто сталкивался подскажите.


 ! 

Правила, п.5
 


Сообщение отредактировал logist - 27.08.15, 16:04

igmig65 Подменю пользователя
сообщение 27.08.15, 17:22
Сообщение #2

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 613
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

Если ТиС, то кнопка подбор, там все реализовано, склад берется из контекста документа, который передается как параметр.
Если нет, то передавайте в обработку контекст документа, соответственно Склад = Конт.Склад;

Сообщение отредактировал igmig65 - 27.08.15, 17:22

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

dobruan Подменю пользователя
сообщение 27.08.15, 17:47
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 264
Из: Закарпатская обл
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(igmig65 @ 27.08.15, 18:22) *
Если ТиС, то кнопка подбор, там все реализовано, склад берется из контекста документа, который передается как параметр.
Если нет, то передавайте в обработку контекст документа, соответственно Склад = Конт.Склад;

Конфигурация самописная. Есть куски взятые из ТиС, но это не более чем 20%.
Обработке склад получен. Как при открытии справочника из обработки задать(передать) склад. В этом и есть основная загвоздка.

igmig65 Подменю пользователя
сообщение 27.08.15, 18:29
Сообщение #4

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 613
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

Сначала передавайте контекст в обработку, потом этот же контекст документа передавайте в форму справочника.
Склад = Форма.Параметр.Склад, если реквизит в документе - Склад.

Сообщение отредактировал igmig65 - 27.08.15, 18:30

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

dobruan Подменю пользователя
сообщение 27.08.15, 20:58
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 264
Из: Закарпатская обл
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(igmig65 @ 27.08.15, 19:29) *
Сначала передавайте контекст в обработку, потом этот же контекст документа передавайте в форму справочника.
Склад = Форма.Параметр.Склад, если реквизит в документе - Склад.

В обработке
Склад = ДокументПодбора.Склад; //получает название склада
В справочнике
Склад = Форма.Параметр.Склад;// Значение не представляет агрегатный объект (Склад)
Что не так? 44000000.gif

dobruan Подменю пользователя
сообщение 27.08.15, 22:25
Сообщение #6

Оратор
*****
Группа: Пользователи
Сообщений: 264
Из: Закарпатская обл
Спасибо сказали: 14 раз
Рейтинг: 0

В документе
    спПарам = СоздатьОбъект("СписокЗначений");
    спПарам.Установить("ДокументПодбора", Контекст);
    спПарам.Установить("ТМЦ", ?(ТМЦ.Выбран()=1, ТМЦ, 0));
    спПарам.Установить("Склад", ?(Склад.Выбран()=1, Склад, 0));
    спПарам.Установить("ТабПодбора", 0);
    ОткрытьФормуМодально("Обработка.ПодборТМЦДляДокумента", спПарам);

В обработке
Процедура ПриОткрытии()  
            Если (ТипЗначенияСтр(Форма.Параметр) = "СписокЗначений") Тогда
        Попытка
            ДокументПодбора = Форма.Параметр.Получить("ДокументПодбора");
            ТМЦ = Форма.Параметр.Получить("ТМЦ");
        Исключение
            Сообщить("В обробку підбору ТМЦ передано некоректні параметри!", "!");
            СтатусВозврата(0);
        КонецПопытки;
    Иначе
        Сообщить("Обробка підбору ТМЦ викликається тільки з документів!", "!");
        СтатусВозврата(0);
    КонецЕсли;
    СкладДок = ДокументПодбора.Склад;  
    ТМЦ.ВыборГруппы(0);
КонецПроцедуры

В справочнике
Процедура ПриОткрытии()
    Конт = Форма.Параметр;
         склад=Форма.Параметр.Склад;
****
        КонецПроцедуры

igmig65 Подменю пользователя
сообщение 28.08.15, 3:59
Сообщение #7

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 613
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

Во первых: зачем передавать в параметр список значений, если передаете контекст документа, все реквизиты доступны ч-з контекст.
Тем более ТМЦ, нужно получать в цикле. Достаточно в док-те:
ОткрытьФормуМодально("Обработка.ПодборТМЦДляДокумента", Контекст)

в обработке:
Процедура ПриОткрытии() 
    Конт =  Форма.Параметр;
    Если (ТипЗначенияСтр(Конт) = "ГрупповойКонтекст") Тогда
           Склад = Конт.Склад;

    Иначе
        Сообщить("Обробка підбору ТМЦ викликається тільки з документів!", "!");
        СтатусВозврата(0);
    КонецЕсли;
    ТМЦ.ВыборГруппы(0);
КонецПроцедуры

+
Процедура ПриНачалеВыбораЗначения(Рекв,Флаг)
    Флаг=0;
    Если Рекв = "ТМЦ" Тогда
            ОткрытьПодбор("Справочник.ТМЦ",,Контекст,0,ТМЦ);//если в обработке есть реквизит склад
    Иначе
        Флаг=1;
    КонецЕсли;
КонецПроцедуры

Тут можно и просто ОткрытьФорму("Справочник.ТМЦ", Контекст)
Тогда в справочнике в
ПриОткрытии()
       Конт =  Форма.Параметр;
       Склад = Конт.Склад;//если в обработке есть реквизит склад

Если же в обработке в ПриНачалеВыбораЗначения(Рекв,Флаг)
       Конт =  Форма.Параметр; 
       ОткрытьФорму("Справочник.ТМЦ", Конт);

здесь в Справочник.ТМЦ передается уже контекст документа
У вас же в обработке справочник открывается просто кнопкой и никакие параметры не передаются....

Сообщение отредактировал igmig65 - 28.08.15, 4:06

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

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

Оратор
*****
Группа: Пользователи
Сообщений: 264
Из: Закарпатская обл
Спасибо сказали: 14 раз
Рейтинг: 0

Цитата(igmig65 @ 28.08.15, 4:59) *
Во первых: зачем передавать в параметр список значений, если передаете контекст документа, все реквизиты доступны ч-з контекст.
Тем более ТМЦ, нужно получать в цикле. Достаточно в док-те:
ОткрытьФормуМодально("Обработка.ПодборТМЦДляДокумента", Контекст)

в обработке:
Процедура ПриОткрытии() 
    Конт =  Форма.Параметр;
    Если (ТипЗначенияСтр(Конт) = "ГрупповойКонтекст") Тогда
           Склад = Конт.Склад;

    Иначе
        Сообщить("Обробка підбору ТМЦ викликається тільки з документів!", "!");
        СтатусВозврата(0);
    КонецЕсли;
    ТМЦ.ВыборГруппы(0);
КонецПроцедуры

+
Процедура ПриНачалеВыбораЗначения(Рекв,Флаг)
    Флаг=0;
    Если Рекв = "ТМЦ" Тогда
            ОткрытьПодбор("Справочник.ТМЦ",,Контекст,0,ТМЦ);//если в обработке есть реквизит склад
    Иначе
        Флаг=1;
    КонецЕсли;
КонецПроцедуры

Тут можно и просто ОткрытьФорму("Справочник.ТМЦ", Контекст)
Тогда в справочнике в
ПриОткрытии()
       Конт =  Форма.Параметр;
       Склад = Конт.Склад;//если в обработке есть реквизит склад

Если же в обработке в ПриНачалеВыбораЗначения(Рекв,Флаг)
       Конт =  Форма.Параметр; 
       ОткрытьФорму("Справочник.ТМЦ", Конт);

здесь в Справочник.ТМЦ передается уже контекст документа
У вас же в обработке справочник открывается просто кнопкой и никакие параметры не передаются....


Чуток не то что нужно.
В обработке нет реквизита Склад.
Добавил в обработку Процедура ПриНачалеВыбораЗначения(Рекв,Флаг)
В обработке нет склада.
В справочник добавил
Конт =  Форма.Параметр; 
склад=конт.склад;

Вылетает с ошибкой поле агрегатного типа не обнаружено....
44000000.gif
Список значений нужно для других целей.
Нужно "передать С документа Значение реквизита в форму справочника через форму обработки отрываемую модально".
Пока не выходит.
Запутался с контекстами.

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

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 613
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

Цитата
Склад = Конт.Склад;//если в обработке есть реквизит склад

тяжело его кинуть в форму обработки? если да, то нужно передавать контекст документа из документа в обработку, и его же потом из обработки передавать в справочник.
в документе:
Процедура ПриНачалеВыбораЗначения(Рекв,Флаг)
    Флаг=0;
    Если Рекв = "ТМЦ" Тогда
            ОткрытьПодбор("Справочник.ТМЦ",,Контекст,0,ТМЦ);
    Иначе
        Флаг=1;
    КонецЕсли;
КонецПроцедуры

В справочнике:
Процедура ПриОткрытии()
    Конт =  Форма.Параметр;
    склад=конт.склад;
КонецПроцедуры

и зачем обработка?
Если же она нужна? мало ли, то:
В док-те:
Процедура ПриНачалеВыбораЗначения(Рекв,Флаг)
    Флаг=0;
    Если Рекв = "ТМЦ" Тогда
            ОткрытьФормуМодально("Обработка.ПодборТМЦДляДокумента", Контекст);
    Иначе
        Флаг=1;
    КонецЕсли;
КонецПроцедуры

в обработке:
Процедура ПриНачалеВыбораЗначения(Рекв,Флаг)
    Флаг=0;
    Если Рекв = "ТМЦ" Тогда
            Конт =  Форма.Параметр;
            ТМЦ = Конт.ТМЦ;
            ОткрытьПодбор("Справочник.ТМЦ","Для подбора",Конт,0,ТМЦ);
    Иначе
            Флаг=1;
    КонецЕсли;
КонецПроцедуры

и в справочнике:
Процедура ПриОткрытии()
    Конт =  Форма.Параметр;
    склад=конт.склад;
КонецПроцедуры



Да и вообще в Тисе все это реализовано просто через кнопку Подбор, там склад передается сразу в справочник ТМЦ, и он (реквизит Склад) уже при открытии заполнен....в форме"ДляПодбора", и в этой форме реализован вывод остатка в самой форме.
Поэтому можно в этой форме брать ТМЦ из контекста док-та, чтобы на нем и спозиционироваться.

Сообщение отредактировал igmig65 - 28.08.15, 11:46

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

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


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

 

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