Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Выбор из справочника  (Прочитано 4355 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kiser
Участник

by
Offline Offline

« : 06-10-2010 08:49 » 

Есть документ, который заполняется при продаже товара и соответственно справочник с товарами.
Можно ли при выборе товара из справочника для заполнения табличной части как-то передать в форму параметр? А именно указать на какой "точке" выполняется продажа ("Справочник.Точки"), чтобы в справочнике товара отображались остатки товара именно для этой точки, а не по всем.
Или же как на форме выбора в справочнике товара "увидеть" из какого документа к нему обратились, чтобы прочитать параметр точки?
Записан
AndyG
Постоялец

by
Offline Offline

« Ответ #1 : 06-10-2010 09:18 » 

Ты можешь описать любое количество глобальных переменных, куда передашь что угодно!
Но есть такая штука как "контекст" котрый ты можешь передать любой форме

В открываемой форме он фигурирует как Форма.Параметр

А для вывода остатков я написал себе глобальную процедуру


Процедура глОстаткиТоварныхЗапасов(Конт,ТО,Сдатчик,ФильтрТовара=0,ВыбТовар=0
   ,ВыводДиалога=1,ПределКоличества=-99999999999999) Экспорт
   Перем тара,РЦ,ОптЦ,ПрНац,НП,СтНДС;
   //ТО - либо ТЗ либо число (цена)
   //Сдатчик - Склад отправитель
   //ФильтрТовара - товар, тара, стеклобанка, ингредиент...
   //ВыбТовар - отбор по конкретному товару (или по группе)...
   //ПределКоличества - выводить только остатки больше данного параметра
...............

которую вызываю из доков след образом
глОстаткиТоварныхЗапасов(контекст,ТЗОстТов,Откуда,ФильтрТовара);
в данном случае из внутреннего перемещения где есть 2 склада, Откуда и Куда
процедура возвращает мне заполненную остатками ТЗОстТов
заметь, не справочник, а ТЗ, а вот как с ней работать (отображать, выбирать) решать тебе:)


2 ПриОкончанииРедактированияСтроки
глОстаткиТоварныхЗапасов(Контекст,РозничнаяЦена,Откуда,,Товар); - тут уже проверка конкретного товара на наличие

А вот чем ты пользуешься БИ или регистрами - так и заполняешь процедуру кодом
Кстати в стандартных конфах встречаются в справочнике Номенклатура ФормаДляВыбора, где описана твоя ситуация

« Последнее редактирование: 06-10-2010 09:34 от AndyG » Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 06-10-2010 09:35 » 

AndyG, глобальные переменные для данной задачи - не лучшее решение (глобальные функции - другое дело)

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

by
Offline Offline

« Ответ #3 : 06-10-2010 10:12 » 

а может можно "увидеть" из какого документа к нему обратились, чтобы прочитать параметр точки?
Записан
kiser
Участник

by
Offline Offline

« Ответ #4 : 06-10-2010 11:05 » 

Спс, отлично подошло ПриНачалеВыбораЗначения()
Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 06-10-2010 11:06 » 

Ты можешь контекст формы вызова передать в вызываемую форму:
Код:
Сп=СоздатьОбъект("СписокЗначений");
Сп.Установить("Контекст", Контекст);
ОткрытьФорму("Справочник.Товары", Сп);

// В форме списка справочника товаров:
Процедура ПриОткрытии()
    Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда
        КонтДок=Форма.Параметр.Получить("Контекст");
        Точка=КонтДок.Точка;
    КонецЕсли;
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines