К списку форумов К списку вопросов
Возможно ли из внешней обработки открыть и закрыть форму элементов справочника
GSoft
04.08.2004 - 20:17
Возможно ли из внешней обработки открыть и закрыть форму элементов справочника перебирая их при этом?
New Angel
1 - 04.08.2004 - 20:45
(0) Можно. Тока нужно предварительно поломать проц. ПриОткрытии() справочника. (Это если штатными средствами). А если нештатными - загляник к АЛьФу, у него помоему такое было.
Guk
2 - 04.08.2004 - 20:52
(0) Что за манера, в формулировке вопроса задать ребус, никак не относящийся к вопросу?
Нормальным русским языком, объяснить можешь, что тебе нужно сделать?...
МихаилМ
3 - 04.08.2004 - 20:54
можно и штатными . на синоре посмотрите.
Марат
4 - 04.08.2004 - 21:01
прикольно :^) а это зачем, если не секрет? вот так вот прямо помелетешить перед юзером всеми элементами?
Вот интересно, а с частотой 25 элементов в секунду Альф смогёт? :^)
GSoft
5 - 04.08.2004 - 21:10
Все до банальности просто - такой ребус возник от незнания.
Суть: необходимо перенести ряд справочников из ТиС 927 в ПУБ 283
так вот отдельная информация в справочниках хранится не в реквизитах самого справочника, а в его внутренних переменных(поправьте если ошибаюсь в определениях).
Найденные мной обработки переноса справочников переносят только реквизиты справочника и не более. Я пошел самым простым путем(как мне тогда казалось) - создал соответствующие реквизиты для того чтобы присвоить им значения соответствующих переменных. Но получается это сделать только при открытой форме элемента. Вот отсюда и возник этот ребус. Если у кого есть другие соображения выслушаю все, так как сам пока еще в области 1С новичок
Guk
6 - 04.08.2004 - 21:14
(5)>>хранится не в реквизитах самого справочника, а в его внутренних переменных(поправьте если ошибаюсь в определениях)
Когда я вот это пойму, наверное смогу тебе помочь...
GSoft
7 - 04.08.2004 - 21:19
к примеру
модуль формы элемента справочника
Функция ЗаписьЮрФизЛица()
  
  ВидЮрФизЛица = ВидКонтрагента.ПолучитьЗначение(ВидКонтрагента.ТекущаяСтрока());
  
  // Объект для записи юр/физ. лица.
  Объект = СоздатьОбъект("Справочник."+ВидЮрФизЛица);
  Если Объект.НайтиЭлемент(ЮрФизЛицо) = 0 Тогда
    Объект.Новый();
  КонецЕсли;
  
  Если ВидЮрФизЛица <> "ФизЛица" Тогда
    // Заполнение реквизитов слоя "ЮрЛицо".
    Объект.Наименование = НаименованиеЮрЛица;
    Объект.ПолнНаименование = ПолнНаименованиеЮрЛица;
    Объект.ИНН = ИННЮрЛица;
    Объект.Телефоны = ТелефоныЮрЛица;
    Объект.ОКПО = ОКПО;
  Иначе
    // Заполнение реквизитов слоя "ФизЛицо".
    Объект.Наименование = НаименованиеФизЛица;
    Объект.ПолнНаименование = ПолнНаименованиеФизЛица;
    Объект.ИНН = ИННФизЛица;
    Объект.Телефоны = ТелефоныФизЛица;
    Объект.ДокументУдЛичность = ДокументУдЛичность;
  КонецЕсли;
  
  Объект.ЮрАдрес = ЮрАдрес;
  Объект.ФактАдрес = ФактАдрес;
  
тот же ИНН - насколько я понимаю он здесь описан как реквизит слоя, а как его значение получить извне простой обработке перебора
Guk
8 - 04.08.2004 - 21:23
Видимо речь идет о реквизитах формы, не относящихся напрямую к реквизитам справочника?
Если да, то на них можно забить. Их нет в БД. Надо смотреть алгоритмы, формирующие их из данных, к коим как раз относятся реквизиты справочника...
GSoft
9 - 04.08.2004 - 21:32
возможно, но как?
к примеру все тот же инн
Насколько я понимаю нижеприведенная процедура выполняется при любом изменении ИНН. Исходя из этого к каким объектам необходимо обратиться чтобы получить его значение?
//******************************************************************************
// ПриИзмененииИНН()
//
// Параметры:
//
// Возвращаемое значение:
// Нет.
//
// Вызывается из формул элементов диалога:
// ИННЮрЛица, ИННФизЛица.
//
// Описание:
// Проверяет уникальность ИНН в справочнике юр. / физ. лиц.
//
Процедура ПриИзмененииИНН()
  
  ВидЮрФизЛица = ВидКонтрагента.ПолучитьЗначение(ВидКонтрагента.ТекущаяСтрока());
  
  // ИНН и длина ИНН.
  Если ВидЮрФизЛица <> "ФизЛица" Тогда
    ИНН = ИННЮрЛица;
    Длина = 20;
  Иначе
    ИНН = ИННФизЛица;
    Длина = 12;
  КонецЕсли;
  
  // ИНН может быть не указан.
  Длина = Метаданные.Справочник(ВидЮрФизЛица).Реквизит("ИНН").Длина;
  Если СтрДлина(СокрЛП(ИНН)) < Длина Тогда
    Возврат;
  КонецЕсли;
  
  // Список найденных элементов с таким же ИНН.
  Список = СоздатьОбъект("СписокЗначений");
  
  Объект = СоздатьОбъект("Справочник."+ВидЮрФизЛица);
  Объект.ВыбратьЭлементыПоРеквизиту("ИНН", ИНН, 0, 1);
  
  // Поиск элементов с таким же ИНН.
  Пока Объект.ПолучитьЭлемент(1) = 1 Цикл
    Если Объект.ТекущийЭлемент() = ЮрФизЛицо Тогда
      Возврат; // элемент уже был записан
    Иначе
      Список.ДобавитьЗначение(Объект.ТекущийЭлемент());
    КонецЕсли;
  КонецЦикла;
  
  // Элементы с таким же ИНН не найдены.
  Если Список.РазмерСписка() = 0 Тогда
    Возврат;
  
  // Найден один элемент с таким же ИНН.
  ИначеЕсли Список.РазмерСписка() = 1 Тогда
    Стр = "В справочнике """+Объект.ПредставлениеВида()+""" уже есть элемент с таким же ИНН!
     |Выбрать существующий элемент справочника?";
    
    Если Вопрос(Стр, "Да+Нет", 60) = "Да" Тогда
      ЮрФизЛицо = Список.ПолучитьЗначение(1);
      ПриИзмененииЮрФизЛица();
      
      // Автозаполнение наименования контрагента.
      Наименование = ЮрФизЛицо.Наименование;
    КонецЕсли;
    
  // Найдено несколько элементов с таким же ИНН.
  Иначе
    Стр = "В справочнике """+Объект.ПредставлениеВида()+""" уже есть элементы с таким же ИНН!
     |Выбрать один из существующих элементов справочника?";
    
    Если Вопрос(Стр, "Да+Нет", 60) = "Да" Тогда
      Если Список.ВыбратьЗначение(ЮрФизЛицо, "Элементы с ИНН "+ИНН, 0, 60, 0) = 1 Тогда
        ПриИзмененииЮрФизЛица();
        
        // Автозаполнение наименования контрагента.
        Наименование = ЮрФизЛицо.Наименование;
      КонецЕсли;
    КонецЕсли;
    
  КонецЕсли;
  
КонецПроцедуры // ПриИзмененииИНН()
//******************************************************************************
Guk
10 - 04.08.2004 - 21:44
(9) Видимо из соответствующих реквизитов, соответствующих справочников. ИНН - это реквизит (насколько я помню ТиС, хотя могу ошибаться) справочника физ. лица и справочника юр. лица. В справочнике ЮрФизЛица имеется ссылка либо на тот, либо на другой справочник...
GSoft
11 - 04.08.2004 - 21:47
я об этом догадывался, но весь вопрос в том как до них достучаться
самому пока знаний не хватает
pit
12 - 04.08.2004 - 22:07
В последних ТиСах много такой хни навернуто. Извращенцы...
..
P.S. задолбался... при переносах... разбираться с некоторыми алгоритмами формирования... тьфу... лучше я просто достану их из кармана... и ее глава...
Guk
13 - 04.08.2004 - 22:10
(12) Странно. Я хни не видел. По-моему всё логично...
GSoft
14 - 04.08.2004 - 22:12
умом Россию не понять...

К списку вопросов на форуме 1C

>>