Имя: Пароль:
1C
1С v8
Как программно открыть упр.форму выбора справочника из документа?
0 altaykniga
 
01.06.16
17:34
Доброго времени суток, умные люди. Подскажите решение, пожалуйста.

Есть документ ЗаказНаПроизводство. При начале выбора номенклатуры нужно открывать форму выбора справочника, где будут содержаться только те элементы, которые содержатся в ТЧ документа-основания!

Как этого добиться?
1 Гаврилин Игор
 
01.06.16
17:36
А почему не заполнять по документу основанию сразу всю тч? не понял задачу если честно..
2 aleks_default
 
01.06.16
17:37
(0)скока платишь?
3 altaykniga
 
01.06.16
17:38
(1) потому что нужно не перезаполнять ТЧ по документу-основанию, т.к. в текущем доке могут содержаться не все строки из документа-основания. Пользователю надо дать право вручную довносить нужную номенклатуру, но только ту, которая содержится в документе-основании
4 elCust
 
01.06.16
17:40
Интернета нет чтоле?

http://catalog.mista.ru/public/236382/
5 trooba
 
01.06.16
17:40
(3) Ну так при открытии накладывать отборы
6 altaykniga
 
01.06.16
17:41
(5) как наложить отбор, чтобы в форме выбора отображалась только определенная номенклатура, которая находится в ТЧ документа-основания?
7 aleks_default
 
01.06.16
17:42
(6)Ты хочешь чтобы вместо тебя кто-то код написал, или сам уже что-то сделаешь?
8 trooba
 
01.06.16
17:44
(6) Получить номенклатуру документа основания, создать из нее список значений и устанавливать отбор на равеноству списку, видсравнения в списке.
9 Nuobu
 
01.06.16
17:44
(6) ФормаВыбора.СписокНоменклатура.Отбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
СписокВыбора = Новый СписокЗначений;
СписокВыбора.Загрузить(ДокументОснование.Товары.ВыгрузитьКолонку("Номенклатура"));
ФормаВыбора.СписокНоменклатура.Отбор.Ссылка.Значение = СписокВыбора;
ФормаВыбора.СписокНоменклатура.Отбор.Ссылка.Использование = Истина;
10 aleks_default
 
01.06.16
17:47
(9) Вот еще одного халявщика прикормил.
11 altaykniga
 
01.06.16
17:49
(9) это для обычных форм?
12 trooba
 
01.06.16
17:49
(9) Форма управляемаю, там чуть по другому
13 Nuobu
 
01.06.16
17:49
(10) Конец рабочего дня, делать ничего не хочется, хочу немного отдохнуть.
14 trooba
 
01.06.16
17:50
(11)  СписокСотрудников = ПодготовитьСписокСотрудниковПодразделения(Параметры.Подразделение);

        НовыйЭлемент = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
        НовыйЭлемент.ВидСравнения  = ВидСравненияКомпоновкиДанных.ВСписке;
        НовыйЭлемент.ПравоеЗначение   = СписокСотрудников;
        НовыйЭлемент.Применение = ТипПримененияОтбораКомпоновкиДанных.Элементы;
15 trooba
 
01.06.16
17:50
+(14) Адаптируй для себя сам
16 altaykniga
 
01.06.16
17:53
(14) что в данном примере есть Список?
17 Nuobu
 
01.06.16
17:54
(16) Халявщик
18 trooba
 
01.06.16
17:54
(16) Подумай
19 BormanMic
 
01.06.16
17:56
Динамический список не предлагать?
20 Chainsaw
 
01.06.16
20:33
(14) Связи параметров выбора же у элемента мышкой натыкать, не?

А то так до реализации на дотнете точно докатитесь...
21 altaykniga
 
02.06.16
13:44
изначальные условия задачи. Есть документ ЗаказНаПроизводство. У него есть документОснование - ЗаказПокупателя.
При начале выбора Номенклатуры из ТЧ "Продукция" ЗаказаНаПроизводство нужно пользователю предоставить выбор только той номенклатуры, которая содержится в ТЧ "Запасы" документаОснования. Причем при выборе номенклатуры нужно тянуть из ТЧ "Запасы" документаОснования еще и значение реквизита ИД_Детали. Т.е. нужно при выборе номенклатуры открывать форму выбора, где будет кроме номенклатуры еще и колонка ИД_детали

Как этого добиться?
22 Nuobu
 
02.06.16
13:46
(21) Написать свою форму выбора.
23 bootini
 
02.06.16
15:21
(21) Если обычные формы, то используй ВыбратьСтроку() из ТЗ результата запроса к ТЧ документаСоснования.

Запрос к ТЧ "Запасы" ДокументаОснования в результате должны быть два поля Ннменклатура и ИД_Детали.

Результат = Запрос.Выполнить().Выгрузить();

НоменклатураИДетали = Результат.ВыбратьСтроку("Выбери");
24 bootini
 
02.06.16
16:11
(23) Сорри, в заголовку Упр. форма.
Добавляй свою форму  с таблицей к ЗаказНаПроизводство в неё результат запроса, и открывай.
25 singlych
 
02.06.16
16:15
(14) список ссылок можно передать через параметры формы, он сам отбор сделает
26 altaykniga
 
02.06.16
18:01
(22), (23) сделал форму выбора. передал в нее параметр ДокументОснованиеСсылка.
В модуле формы выбора :
Процедура ПриСозданииНаСервере()
//обращусь к Параметры.ДокОснование.Запасы
//получу оттуда ТЗ с колонками "ИД_Детали", "Номенклатура"

как теперь строки из ТЗ отобразить на моей ФормеВыбораДетали?

КонецПроцедуры
27 altaykniga
 
02.06.16
18:10
написал так:

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

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

как установить параметры запроса?
28 altaykniga
 
02.06.16
18:44
сделал так:

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

    Список.Параметры.УстановитьЗначениеПараметра("ЗаказПокупателя", Параметры.Документ.ДокументОснование);
    Список.Параметры.УстановитьЗначениеПараметра("СписокДеталейЗаказаНаПроизводство", Параметры.СписокДеталейЗаказаНаПроизводство);    
КонецПроцедуры

открывается пустая форма выбора, т.е. отображена только командная панель, без списка номенклатуры
29 altaykniga
 
02.06.16
21:29
сделал так:
снял галочку "динамическое считывание данных"
основная таблица - пусто
ставим галочку на ПроизвольныйЗапрос.
текст запрос следующий:

ВЫБРАТЬ
    ЗаказПокупателяЗапасы.НомерСтроки КАК НомерСтроки,
    ЗаказПокупателяЗапасы.Номенклатура,
    ЗаказПокупателяЗапасы.ИД_Детали,
    ЗаказПокупателяЗапасы.Спецификация,
    ЗаказПокупателяЗапасы.Количество,
    ЗаказПокупателяЗапасы.Цена,
    ЗаказПокупателяЗапасы.Всего
ИЗ
    Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы
ГДЕ
    ЗаказПокупателяЗапасы.Ссылка = &ЗаказПокупателя
    И НЕ ЗаказПокупателяЗапасы.ИД_Детали В (&СписокДеталейЗаказаНаПроизводство)

УПОРЯДОЧИТЬ ПО
    НомерСтроки


параметры запроса через параметры формы передать не удалось, написал в модуле ФормыВыбораДетали:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

    Список.Параметры.УстановитьЗначениеПараметра("ЗаказПокупателя", Параметры.Документ.ДокументОснование);
    Список.Параметры.УстановитьЗначениеПараметра("СписокДеталейЗаказаНаПроизводство", Параметры.СписокДеталейЗаказаНаПроизводство);    
    
КонецПроцедуры


теперь формаВыбораДетали открывается с нужными строками.

Вопрос: не работает выбор строки. Т.е. щелкаешь на строку - ничего не происходит. Что сделал не так?
30 Nuobu
 
06.06.16
09:49
(29) Опиши обработку выбора
31 aleks_default
 
06.06.16
10:07
При открытии формы выбора нужно указать владельца формы (третий параметр). А в обработчике события "ОбработкаВыбора" владельца прописать заполнение выбранного значения.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший