1 дек. 2016 г.

Множественный отобор в списке Справочника 7.7

Для реализации возможности одновременно выбора фильтров по нескольким значениям в форме списка справочника я сначала добавил флажки на форму где каждому флажку присвоил Заголовок и Идентификатор, а во вкладке Дополнительно написал такую формулу
?(Новый = 1,УстановитьФильтры(Перечисление.СтатусДокумента.Новый,1),УстановитьФильтры(Перечисление.СтатусДокумента.Новый,0))
ну типа, если флажок установлен, тогда мы в функцию передаем по какому фильтру мы 
будем искать элементы в списке.

А вот и самое главное
Перем АрхивТТН;        
Перем СписокСтатусов;  
             
Функция ПодготовитьФильтр(СтатусПоиска,ДобавитьУдалить)             
                                                            
 Если ДобавитьУдалить = 1 Тогда
  //добавляем 
  АрхивТТН.ВыбратьЭлементыПоРеквизиту("Статус",СтатусПоиска,,0);
  Пока АрхивТТН.ПолучитьЭлемент() = 1 Цикл      
   НайденныйЭлемент = СписокСтатусов.НайтиЗначение(АрхивТТН.ТекущийЭлемент());
   Если НайденныйЭлемент= 0 Тогда    
    //документ добавляем в список фильтров
    СписокСтатусов.ДобавитьЗначение(АрхивТТН.ТекущийЭлемент());
   Иначе      
    //документ уже есть в списке фильтров
    Продолжить;
   КонецЕсли;
  КонецЦикла;    
 Иначе
  //удаляем        
  АрхивТТН.ВыбратьЭлементыПоРеквизиту("Статус",СтатусПоиска,,0);  
  Пока АрхивТТН.ПолучитьЭлемент() = 1 Цикл      
   НайденныйЭлемент = СписокСтатусов.НайтиЗначение(АрхивТТН.ТекущийЭлемент());   
   Если НайденныйЭлемент <> 0 Тогда    
    //элемент найден в списке фильтров
    СписокСтатусов.УдалитьЗначение(НайденныйЭлемент);  
   КонецЕсли;
  КонецЦикла;
 КонецЕсли;            
 
 Возврат СписокСтатусов;
    
КонецФункции     

Функция УстановитьФильтры(СтатусПоиска,ДобавитьУдалить)          
 СписокСтатусов = ПодготовитьФильтр(СтатусПоиска,ДобавитьУдалить);   
 Если СписокСтатусов.РазмерСписка() = 0 Тогда      
  ИспользоватьСписокЭлементов();
 Иначе
  ИспользоватьСписокЭлементов(СписокСтатусов);
 КонецЕсли;
КонецФункции                                           

АрхивТТН = СоздатьОбъект("Справочник.АрхивТТН");
СписокСтатусов = СоздатьОбъект("СписокЗначений");         
где мы сначала объявляем переменные и присваиваем им значения Справочника где будем
искать значения и СписокЗначений куда будем ложить найденные по множественному фильтру
значения.
Далее логика такая, если флажок установлен мы по передаваемом значении флажка ищем в нашем
справочнике нужное значение и если находим то записываем найденное значение в СписокЗначений.
Плюс если мы сняли флажок тогда мы должны опять найти в Справочнике нужное нам значение
и потом по найденном значении проверить, есть ли оно в СпискеЗначений, если есть тогда удалить,
ведь мы уже не хотим иметь по данном значении (флажке) фильтр.
Только после того как заполнился СписокЗначений мы можем воспользоваться методом платформы
для отбора в списке Формы ИспользоватьСписокЭлементов()куда нам нужно поместить список значений
с теми значениями, по которым нужно отфильтровать список, ну а если СписокЗначений наш пуст, тогда
ничего не передавая в ИспользоватьСписокЭлементов()мы отключим все фильтры

Вот результат


На всякий случай конфигурация, в ней это реализовано в АрхивТТН объекте, форма Списка.

Продолжение


Добавить новую константу в общую форму настроек констант

Обычные формы. Типовые конфигурации.
Для добавление своей константы в общую форму настроек констант через Операции-Константы

открываем свойства формы ОбщиеФормы-НастройкаПараметровУчета и в свойстве Состав добавляем нашу константу


а теперь уже в списке Форма-Размещение данных... появиться выбор добавления константы на общую типовую форму


26 нояб. 2016 г.

Строки неограниченной длинны сгруппировать в запросе

Если нужно сгруппировать в СКД поле не ограниченной длинны, тогда нужно применить функцию ВЫРАЗИТЬ() для этого поля
ВЫРАЗИТЬ(ПолеНеОграниченнойДлинны КАК Строка(200))

Использование в отборе Категорий в СКД

Конфигурация Управление Торговлей.

Постала задача в отбор отчета на СКД добавить возможность выбора из Справочники.Номенклатура категорий.


Для решения открываем наш запрос и в конце запроса добавляем 
{ХАРАКТЕРИСТИКИ
   ТИП(Справочник.Номенклатура)
   ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
         СвойстваОбъектов.Ссылка,
         СвойстваОбъектов.ТипЗначения,
         "Свойство: " + СвойстваОбъектов.Наименование КАК Наименование
      ИЗ
         ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваОбъектов
      ГДЕ
         СвойстваОбъектов.НазначениеСвойства = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура))
   ПОЛЕКЛЮЧА Ссылка
   ПОЛЕИМЕНИ Наименование
   ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения
   ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.ЗначенияСвойствОбъектов
   ПОЛЕОБЪЕКТА Объект
   ПОЛЕВИДА Свойство
   ПОЛЕЗНАЧЕНИЯ Значение }
{ХАРАКТЕРИСТИКИ
   ТИП(Справочник.Номенклатура)
   ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
         КатегорииОбъектов.Ссылка,
         "Категория: " + КатегорииОбъектов.Наименование КАК Наименование
      ИЗ
         Справочник.КатегорииОбъектов КАК КатегорииОбъектов
      ГДЕ
         КатегорииОбъектов.НазначениеКатегории = ЗНАЧЕНИЕ(ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура))
   ПОЛЕКЛЮЧА Ссылка
   ПОЛЕИМЕНИ Наименование
   ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.КатегорииОбъектов
   ПОЛЕОБЪЕКТА Объект
   ПОЛЕВИДА Категория
}
Взято с ссылка

Переопределить кнопку Выбора 7.7

Есть форма элемента Справочника с реквизитом типа Ссылка на Документ.РасходнаяНакладная.
Нужно при нажатии кнопки открытия этого реквизита открывался не список документов, а конкретный документ


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

Обработка нажатия формы списка 7.7

Пример, есть форма списка Справочника с несколькими колонками


В свойствах этого справочника стоит настройка Редактировать: В диалоге


мне нужно сделать так, что бы при нажатии на колонку Документ открывалась сразу форма выбранного документа, а в остальных случаях, что бы выполнялся стандартная обработка открытия объекта.

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

 Форма.ОбработкаВыбораСтроки(1);
А значит, если пользователь выбрал колонку Документ (Док) то будет открыт форма документа, а если выбрал любую другую колонку тогда мы ищем из текущей строки объект по коду в нашем справочнике и открываем его.

11 нояб. 2016 г.

Назначить тип реквизиту 7.7

Есть Документ.ПКО в которого есть реквизит с типом Неопределенній


при программном заполнении реквизита этого документа прежде чем заполнить реквизит "субконто" ему нужно назначить тип, для этого 
Док = СоздатьОбъект("Документ.ПКО");
//назначем реквизиту Субконтотип Справочник.Номенклатура
Док.НазначитьТип("Субконто","Справочник.Номенклатура"); 

28 окт. 2016 г.

Добавить в контекстное меню Обычные формы

Что бы добавить в контекстное меню ("ПКМ" по Табличной части) свою команду нужно:

  • На форму добавляем "Командная панель"
  • "ПКМ" по добавленной на форме командной панели - добавляем команду
  • Добавленной панели устанавливаем свойство "Видимость" = Ложь
  • В свойстве "КонтекстноеМеню" Табличной части указываем нашу добавленную ранее панель 

Результат



Итоги в табличном документ Обычное формы

Для отображения Итого (в Подвале) табличной части не управляемых форм нужно:

  • в свойствах Табличной части на форме установить галку "Подвал"
  • в свойствах Колонки табличной части (с типом Число) найти и установить галку "ОтображатьИтогВПодвале"

Вывести полное наименование в типовый отчет

Возьмем, например типовый отчет "Ведомость по товарам в розницу" конфигурации "Управление торговлей для Украины", редакция 2.3. Если зайти в выбор Поле (Группировка строк) то увидим, что Полное наименование, из справочника номенклатура никак не вытянуть, этого поля нет.

Что бы выводить Полное наименование номенклатуры нужно зайти в расширенные настройки Настроек, перейти на вкладку Дополнительные поля и уже там будет возможность из справочника Номенклатура вытянуть поле Полное наименование.


в результате получаем то что нужно




26 окт. 2016 г.

Запись xml из строки 7.7

Для сохранения хмл строки в хмл документ выполним
 Попытка
  ТекстовыйДокумент = СоздатьОбъект("Текст"); 
  ТекстовыйДокумент.Записать("D:\1.xml"); 
  
  ТекстовыйДокумент.Открыть("D:\1.xml");
  ТекстовыйДокумент.ДобавитьСтроку(ИмяВыбрФайла);  
  ТекстовыйДокумент.КодоваяСтраница(0);  
  ТекстовыйДокумент.Записать("D:\1.xml");         
  Предупреждение("ОК");    
 Исключение    
  Сообщить(ОписаниеОшибки());
 КонецПопытки;
!ИмяВыбрФайла - это строка в виде хмл
 

CopyPaste Copyright © 2017 - |- Шаблон создан O Pregador - |- Отредактирован myr4ik07