Имя: Пароль:
1C
1С v8
Поиск Банка по классификатору банков (макет)
0 web_profiler
 
13.08.13
13:33
Есть классификатор банков (макет справочника). Как в макете перебрать строки и найти с нужным мне МФО банк и получить эту строку?
Помогите, пожалуйста
1 Maxus43
 
13.08.13
13:35
почему макет? с РБК грузят банки все, классификатор как бы меняется каждую неделю
2 web_profiler
 
13.08.13
13:36
Конфа: Бухгалтерия для Украины - КлассификаторБанков выполнен макетом справочника
3 web_profiler
 
13.08.13
13:37
Подбор по нему осуществляется выводом в поле таблДокумента макета и получение расшифровки выбранной строки
4 Рэйв
 
13.08.13
13:39
(0)Макет создан только для дефолтного заполнения. Ищи РС, где хранятся эти данные и бери оттуда
5 CepeLLlka
 
13.08.13
13:40
(4)А как же такие конфигурации как УНФ? В ней вот макетом сделано.. и нет обновления с РБК..
Как быть? Не обновлять?
6 Славен
 
13.08.13
13:40
делать нефиг, пользуй НайтиТекст
7 web_profiler
 
13.08.13
13:40
(4) сейчас скину обработчик типового выбора банка по классификатору:

Процедура ПолеТабличногоДокументаОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    // Получение значений полей выбранной строки.

    ТабличныйДокумент = ЭлементыФормы.ПолеТабличногоДокумента;
    ТекущаяОбласть    = ТабличныйДокумент.ТекущаяОбласть;

    ОбластьКодМФО             = ТабличныйДокумент.Области.КодМФО;
    ОбластьНаименование     = ТабличныйДокумент.Области.Наименование;
    ОбластьГород              = ТабличныйДокумент.Области.Город;
    ОбластьАдрес              = ТабличныйДокумент.Области.Адрес;
    ОбластьЕДРПОУ              = ТабличныйДокумент.Области.ЕДРПОУ;
    ОбластьТелефоны            = ТабличныйДокумент.Области.Телефоны;
    ОбластьКоррСчет            = ТабличныйДокумент.Области.КоррСчет;

    КодМФО             = ТабличныйДокумент.Область(ТекущаяОбласть.Верх, ОбластьКодМФО.            Лево, ТекущаяОбласть.Низ, ОбластьКодМФО.        Право).Текст;
    Наименование     = ТабличныйДокумент.Область(ТекущаяОбласть.Верх, ОбластьНаименование.      Лево, ТекущаяОбласть.Низ, ОбластьНаименование.  Право).Текст;
    Город              = ТабличныйДокумент.Область(ТекущаяОбласть.Верх, ОбластьГород.          Лево, ТекущаяОбласть.Низ, ОбластьГород.          Право).Текст;
    Адрес              = ТабличныйДокумент.Область(ТекущаяОбласть.Верх, ОбластьАдрес.          Лево, ТекущаяОбласть.Низ, ОбластьАдрес.          Право).Текст;
    ЕДРПОУ          = ТабличныйДокумент.Область(ТекущаяОбласть.Верх, ОбластьЕДРПОУ.          Лево, ТекущаяОбласть.Низ, ОбластьЕДРПОУ.          Право).Текст;
    Телефоны        = ТабличныйДокумент.Область(ТекущаяОбласть.Верх, ОбластьТелефоны.          Лево, ТекущаяОбласть.Низ, ОбластьТелефоны.      Право).Текст;
    КоррСчет        = ТабличныйДокумент.Область(ТекущаяОбласть.Верх, ОбластьКоррСчет.          Лево, ТекущаяОбласть.Низ, ОбластьКоррСчет.      Право).Текст;
        
    // Проверка наличия выбранного банка.

    Ссылка = Справочники.Банки.НайтиПоКоду(КодМФО);

    Если НЕ Ссылка.Пустая() Тогда
        Вопрос = Локализация.СтрШаблон(НСтр("ru='В справочнике ""Банки"" уже существует элемент с кодом (МФО) ""¤1¤""! Добавить новый элемент ? "
"(При ответе ""Нет"" будет открыт существующий элемент справочника)';uk='У довіднику ""Банки"" уже існує елемент із кодом (МФО) ""¤1¤""! Додати новий елемент? "
"(При відповіді ""Ні"" буде відкрито існуючий елемент довідника)'"), КодМФО);
        Ответ  = Вопрос(Вопрос, РежимДиалогаВопрос.ДаНетОтмена, , КодВозвратаДиалога.Отмена, );

        Если Ответ = КодВозвратаДиалога.Нет Тогда
            Ссылка.ПолучитьФорму( , ВладелецФормы, ).Открыть();
            Возврат;            
        ИначеЕсли Ответ = КодВозвратаДиалога.Отмена  Тогда        
            Возврат;
        КонецЕсли;
    КонецЕсли;

    // Создание нового банка.

    ФормаНовогоЭлемента = Справочники.Банки.ПолучитьФормуНовогоЭлемента(, ВладелецФормы, );

    ФормаНовогоЭлемента.Код             = КодМФО;
    ФормаНовогоЭлемента.Наименование    = Наименование;
    ФормаНовогоЭлемента.Город           = Город;
    ФормаНовогоЭлемента.Адрес           = Адрес;
    ФормаНовогоЭлемента.КодПоЕДРПОУ     = ЕДРПОУ;
    ФормаНовогоЭлемента.Телефоны           = Телефоны;
    ФормаНовогоЭлемента.КоррСчет           = КоррСчет;

    ФормаНовогоЭлемента.Открыть();

КонецПроцедуры
8 web_profiler
 
13.08.13
13:41
(4) как тебе?
9 Рэйв
 
13.08.13
13:42
(8)Круть.
Хорошо, что я с такой конфой не работаю:-)
10 web_profiler
 
13.08.13
13:42
казалось бы задача беспантовая, ан нет...
11 Maxus43
 
13.08.13
13:43
(10) у тебя же есть код уже, трудно область с текущей поменять на перебор областей?
12 web_profiler
 
13.08.13
13:43
Бл.. че вывести в таблДок, и перебирать строки табДока? Ну ведь это через ж...!!!
13 Славен
 
13.08.13
13:43
+(6)делаешь табл документ, получаешь облать макета, и в ней используешь НайтиТекст(.....), получаешь ячейку соответственно  строка получается изменением адреса колонки
14 web_profiler
 
13.08.13
13:44
(11) мне перебирать около 500 банков
15 Славен
 
13.08.13
13:45
можно загрузить нужные колонки макета в тз и оттуда вытягивать
16 web_profiler
 
13.08.13
13:45
(11)Область одна, в ней много строк с банками
17 web_profiler
 
13.08.13
13:45
(15) анука?! и как это замутить?
18 Maxus43
 
13.08.13
13:48
(17) перебрать всё равно придётся
19 web_profiler
 
13.08.13
13:49
(18) согласен. Ладненько, спасибо. Получаю табдок и перебираю
20 Maxus43
 
13.08.13
13:51
не надо выводить в таб док, получи макет и перебирай его области без вывода
21 Славен
 
13.08.13
13:53
+потому что после получения макет сам таб документ
22 web_profiler
 
13.08.13
13:56
(20) так как же перебрать строки области, если она одна?
23 Maxus43
 
13.08.13
14:00
(22) Область(верх, низ, лево, право).... СП короче
24 web_profiler
 
13.08.13
14:03
(23) спс
25 web_profiler
 
13.08.13
15:03
Может Кому-то будет интересно как режил вопрос: перебрал макет КлассификатораБанков и загнал его в ТЗ

СпрБанки8 = Справочники.Банки;
ТЗБанки = Новый ТаблицаЗначений;
ТЗБанки.Колонки.Добавить("КодМФО",,"КодМФО");
ТЗБанки.Колонки.Добавить("Наименование",,"Наименование");
ТЗБанки.Колонки.Добавить("Город",,"Город");
ТЗБанки.Колонки.Добавить("Адрес",,"Адрес");
ТЗБанки.Колонки.Добавить("ЕДРПОУ",,"ЕДРПОУ");
ТЗБанки.Колонки.Добавить("Телефоны",,"Телефоны");
ТЗБанки.Колонки.Добавить("КоррСчет",,"КоррСчет");
            
ТабличныйДокумент = СпрБанки8.ПолучитьМакет("КлассификаторБанков");
ТекущаяОбласть =ТабличныйДокумент.Область("ОбластьРасшифровки");
ОбластьКодМФО             = ТабличныйДокумент.Области.КодМФО;
ОбластьНаименование     = ТабличныйДокумент.Области.Наименование;
ОбластьГород              = ТабличныйДокумент.Области.Город;
ОбластьАдрес              = ТабличныйДокумент.Области.Адрес;
ОбластьЕДРПОУ              = ТабличныйДокумент.Области.ЕДРПОУ;
ОбластьТелефоны            = ТабличныйДокумент.Области.Телефоны;
ОбластьКоррСчет            = ТабличныйДокумент.Области.КоррСчет;
            
НомерСтр = 4;
Пока НомерСтр <> ТекущаяОбласть.Низ Цикл
Если ТабличныйДокумент.Область(НомерСтр, ОбластьКодМФО.Лево, ТекущаяОбласть.Низ, ОбластьКодМФО.Право).Текст <> "" Тогда
        СтрокаТЗБанки = ТЗБанки.Добавить();
        СтрокаТЗБанки.КодМФО             = ТабличныйДокумент.Область(НомерСтр, ОбластьКодМФО.Лево, ТекущаяОбласть.Низ, ОбластьКодМФО.Право).Текст;
    СтрокаТЗБанки.Наименование     = ТабличныйДокумент.Область(НомерСтр, ОбластьНаименование.Лево, ТекущаяОбласть.Низ, ОбластьНаименование.Право).Текст;
    СтрокаТЗБанки.Город          = ТабличныйДокумент.Область(НомерСтр, ОбластьГород.Лево, ТекущаяОбласть.Низ, ОбластьГород.Право).Текст;
    СтрокаТЗБанки.Адрес          = ТабличныйДокумент.Область(НомерСтр, ОбластьАдрес.Лево, ТекущаяОбласть.Низ, ОбластьАдрес.Право).Текст;
    СтрокаТЗБанки.ЕДРПОУ          = ТабличныйДокумент.Область(НомерСтр, ОбластьЕДРПОУ.Лево, ТекущаяОбласть.Низ, ОбластьЕДРПОУ.Право).Текст;
    СтрокаТЗБанки.Телефоны        = ТабличныйДокумент.Область(НомерСтр, ОбластьТелефоны.Лево, ТекущаяОбласть.Низ, ОбластьТелефоны.Право).Текст;
    СтрокаТЗБанки.КоррСчет        = ТабличныйДокумент.Область(НомерСтр, ОбластьКоррСчет.Лево, ТекущаяОбласть.Низ, ОбластьКоррСчет.Право).Текст;
КонецЕсли;
КонецЦикла;
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн