8.х открытие форм выбора справочника отфильтрованного по реквизиту

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем svetlana2017, 23 июл 2017.

  1. TopicStarter Overlay
    svetlana2017
    Offline

    svetlana2017

    Регистрация:
    3 июн 2017
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Добрый день!
    Кто знает как программно по щелчку на ячейке табличного документа вызвать модально форму отбора справочника с группами и элементами отфильтрованную по реквизитам в ОБЫЧНОМ ПРИЛОЖЕНИИ 8.3?
    Т.Е.
    В УНИВЕРСАЛЬНОМ ДОКУМЕНТЕ НУЖНО ВЫБРАТЬ ТОЛЬКО ТЕ ОПЕРАЦИИ с группами ИЗ справочника операции, которые будут иметь СчетДт =" 20"
    а после выбора конкретной операции установить её СчетКт в следующую колонку.
    upload_2017-7-23_11-14-15.png

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

    субконто при выборе счета проставляются согласно их очередности процедурой
    Код:
    Процедура ОперацииСчетПриИзменении(Элемент)
           // УправлениеДоступностьюСубконто();
    
             Для НомерСтроки = 0 По (Операции.Количество()-1) Цикл
                 Операции.Получить(НомерСтроки);
                 для Сч=1 по 3    цикл    
                   Операции[НомерСтроки]["Субконто"+Сч]=Операции[НомерСтроки].Счет.ВидыСубконто[Сч-1].ВидСубконто.ТипЗначения.ПривестиЗначение(Операции[НомерСтроки]["Субконто"+Сч]);
            
                КонецЦикла;
    
             КонецЦикла;
    
    
    КонецПроцедуры
    
    но как автоматически вызвать окно отфильтрованного справочника для выбора операции и определения 2-го счета проводки?
    Код:
    Процедура ОперацииОперацииНачалоВыбора(Элемент, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    ФормаВыбора = Справочники.Операции.ПолучитьФормуВыбора(, ЭтаФорма);
    ФормаВыбора.СправочникСписок.Отбор.Ссылка.ВидСравнения = ВидСравнения.Равно;
    ФормаВыбора.СправочникСписок.Отбор.Ссылка.Использование = Истина;
    ФормаВыбора.СправочникСписок.Отбор.Ссылка.Значение =Справочники.Операции.НайтиПоРеквизиту("СчетДт","301");
    
    ФормаВыбора.Открыть();
    
    КонецПроцедуры
    
    данный код выдаёт форму выбора справочника с группами но без элементов, как выбрать с группами и элементами согласно заданному значению реквизита или СчетДт или СчетКт, в зависимости от перечисления в первой колонке +/-, внести название данной операции в колонку операции, а соответствующий ей счет в соседнюю колонку счет (в одном случае СчетДт, в другом СчетКт), автоматом установив типы субконто (Процедура ОперацииСчетПриИзменении(Элемент)) ?
    Заранее спасибо за помощь....

    попробовала еще сделать вариант с запросом
    Код:
    Процедура ОперацииОперацииНачалоВыбора(Элемент, СтандартнаяОбработка)
    
    
    Запрос = Новый Запрос();
    Запрос.Текст = " ВЫБРАТЬ   
                 |ДДС.Ссылка
                 |ИЗ
                 |Справочник.ДДС КАК ДДС
                  |ГДЕ
                 |ДДС.СчетКт.Код = &Счет";
                  
                  
        СписокСпецификаций = Новый СписокЗначений;           
                      
    Запрос.УстановитьПараметр("Счет", "301");
    
      
    СписокСпецификаций.ЗагрузитьЗначения(запрос.выполнить().выгрузить().ВыгрузитьКолонку("Ссылка"));
    ФормаВыбора = Справочники.ДДС.ПолучитьФормуВыбора(,Элемент,Элемент);
    ФормаВыбора.ПараметрВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.ГруппыИЭлементы;
    ЭлементОтбора = ФормаВыбора.СправочникСписок.Отбор.Ссылка;
    ЭлементОтбора.ВидСравнения = ВидСравнения.ВСписке;
    ЭлементОтбора.Значение = СписокСпецификаций;
    
    
    
    КонецПроцедуры
    
    НЕ СРАБАТЫВАЕТ САМ ОТБОР, Т.Е. ВЫХОДИТ ФОРМА СО ВСЕМИ ЭЛЕМЕНТАМИ ДОСТУПНЫМИ К ВЫБОРУ , А НЕ СОГЛАСНО УСЛОВИЮ (ХОТЯ СПИСОК ФОРМИРУЕТСЯ ПРАВИЛЬНО, ЗАПРОС РАБОТАЕТ ПРАВИЛЬНО)
    каК ИСПРАВИТЬ? ЧТО БЫ ПОЛЬЗОВАТЕЛЬ ВИДЕЛ ТОЛЬКО ЭЛЕМЕНТЫ СОГЛАСНО УСЛОВИЯ?
    КАК НАСТРОИТЬ ФИЛЬТР?
    [/QUOTE]
    И НЕ ЗАПОЛНЯЕТ ЗНАЧЕНИЕ КОЛОНКИ.
    А ВЫДАЕТ ФОРМУ ВЫБОРА БЕЗ ОТБОРА, С ВОЗМОЖНОСТЬЮ ВЫБОРА ЛЮБОГО ЗНАЧЕНИЯ.

    А НУЖНО ВЫБРАТЬ ТОЛЬКО ТЕ ОПЕРАЦИИ с группами ИЗ справочника операции, которые будут иметь СчетДт =" 20"
    а после выбора конкретной операции установить её СчетКт в следующую колонку.


    КТО ЗНАЕТ В ЧЕМ ОШИБКА?
    Заранее спасибо за помощь....
    Последнее редактирование: 23 июл 2017
  2. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    162
    Баллы:
    104
    Наверное, там должен быть список значений, а не массив.
    --- Объединение сообщений, 23 июл 2017 ---
    Код:
    ФормаВыбора.ПараметрВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.ГруппыИЭлементы;
  3. TopicStarter Overlay
    svetlana2017
    Offline

    svetlana2017

    Регистрация:
    3 июн 2017
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    ОНО РУГАЕТСЯ НА "ЭлементОтбора.Значение = СписокСпецификаций;"
    Код:
    Запрос.УстановитьПараметр("Счет", "301");
    
    СписокСпецификаций = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");  
    
    ФормаВыбора = Справочники.ДДС.ПолучитьФормуВыбора(,Элемент,Элемент);
    ФормаВыбора.ПараметрВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.ГруппыИЭлементы;
    ЭлементОтбора = ФормаВыбора.СправочникСписок.Отбор.Ссылка;
    ЭлементОтбора.ВидСравнения = ВидСравнения.ВСписке;
    ЭлементОтбора.Значение = СписокСпецификаций;
    ЭлементОтбора.Использование = Истина;
    ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.Ссылка.Доступность = Ложь;
    ФормаВыбора.Открыть(); 
    
  4. pavl_vs
    Offline

    pavl_vs Профессионал в 1С

    Регистрация:
    18 июн 2011
    Сообщения:
    494
    Симпатии:
    41
    Баллы:
    54
    Список для отбора - это список с разделителем ","; СписокСпецификаций имеет, как я понимаю, разделителем "пробел".
    Возможно, я неправ.
  5. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.807
    Симпатии:
    496
    Баллы:
    104
    Потому что метод ВыгрузитьКолонку возвращает массив, а Вам надо СписокЗначений.
  6. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    162
    Баллы:
    104
    ТАМ ДОЛЖЕН БЫТЬ СПИСОК ЗНАЧЕНИЙ, А НЕ МАССИВ.
    Так лучше?
  7. TopicStarter Overlay
    svetlana2017
    Offline

    svetlana2017

    Регистрация:
    3 июн 2017
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    nbIpKuH_BaH9I, А КАК ТОГДА СДЕЛАТЬ?
    --- Объединение сообщений, 23 июл 2017 ---
    1с-ник , ЧТО НУЖНО ИСПРАВИТЬ В КОДЕ?
  8. TopicStarter Overlay
    svetlana2017
    Offline

    svetlana2017

    Регистрация:
    3 июн 2017
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    СПАСИБО ИСПРАВИЛА, ОШИБКИ УЖЕ НЕТ
    Код:
    СписокСпецификаций = Новый СписокЗначений;           
                      
    Запрос.УстановитьПараметр("Счет", "301");
    
    СписокСпецификаций.ЗагрузитьЗначения(запрос.выполнить().выгрузить().ВыгрузитьКолонку("Ссылка"));
    
    НО НЕ СРАБАТЫВАЕТ САМ ОТБОР, Т.Е. ВЫХОДИТ ФОРМА СО ВСЕМИ ЭЛЕМЕНТАМИ ДОСТУПНЫМИ К ВЫБОРУ , А НЕ СОГЛАСНО УСЛОВИЮ (ХОТЯ СПИСОК ФОРМИРУЕТСЯ ПРАВИЛЬНО, ЗАПРОС РАБОТАЕТ ПРАВИЛЬНО)
    каК ИСПРАВИТЬ? ЧТО БЫ ПОЛЬЗОВАТЕЛЬ ВИДЕЛ ТОЛЬКО ЭЛЕМЕНТЫ СОГЛАСНО УСЛОВИЯ?
    КАК НАСТРОИТЬ ФИЛЬТР?
    --- Объединение сообщений, 23 июл 2017 ---
    ЖИВЫЕ ЕСТЬ?
    Последнее редактирование: 23 июл 2017
  9. TopicStarter Overlay
    svetlana2017
    Offline

    svetlana2017

    Регистрация:
    3 июн 2017
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
  10. nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    7.807
    Симпатии:
    496
    Баллы:
    104
    Заглавный шрифт в переписке на форуме, равносилен крику. Вам никто ничем не обязан. Первой и последнее предупреждение. Будьте сдержанней.

    Код:
        СтандартнаяОбработка = Ложь;
       
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    Операции.Ссылка КАК Ссылка
        |ИЗ
        |    Справочник.Операции КАК Операции
        |ГДЕ
        |    Операции.СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Двадцатый)";
        РезультатЗапроса = Запрос.Выполнить();
        Если НЕ РезультатЗапроса.Пустой() Тогда
            СписокОпераций = Новый СписокЗначений;
            ВыборкаЗапроса = РезультатЗапроса.Выбрать();
            Пока ВыборкаЗапроса.Следующий() Цикл
                СписокОпераций.Добавить(ВыборкаЗапроса.Ссылка);
            КонецЦикла;
        КонецЕсли;
       
        ФормаВыбора = Справочники.Операции.ПолучитьФормуВыбора(, Элемент);
        ФормаВыбора.СправочникСписок.Отбор.Ссылка.ВидСравнения  = ВидСравнения.ВСписке;
        ФормаВыбора.СправочникСписок.Отбор.Ссылка.Использование = Истина;
        ФормаВыбора.СправочникСписок.Отбор.Ссылка.Значение      = СписокОпераций;
        ФормаВыбора.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Ложь;
        ФормаВыбора.Открыть();
  11. TopicStarter Overlay
    svetlana2017
    Offline

    svetlana2017

    Регистрация:
    3 июн 2017
    Сообщения:
    16
    Симпатии:
    0
    Баллы:
    1
    Огромное спасибо

Поделиться этой страницей