Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Клиент-банк: поиск по ОКПО поменять на поиск по комментарию          
Dima999222 Подменю пользователя
сообщение 08.01.13, 13:38
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 29
Из: Киев
Спасибо сказали: 1 раз
Рейтинг: 0

Доброго Всем времени суток!

Если Вам не сложно, помогите пожалуйста в решении одной маленькой проблемы.

Есть Клиент-Банк, в нем в процедуре "ИмпортВыписки" присутствует поиск по ОКПО контрагента.
Как сделать что бы искало в первую очередь по комментарию контрагента, а ежели он пуст обращалось к поиску по ОКПО????

Конфигурация: УТП Релиз: 1.2.12.3 Платформа: 8.2.16.363

Заранее благодарен за Вашу помощь!!!


 ! 

Правила, 4
 


Сообщение отредактировал Vofka - 08.01.13, 13:45


Signature
Кoгда мне плoхо, я пою. Когда я пою, становится всем плохо. Когда всем становится плохо, мне становится хорошо.

Vofka Подменю пользователя
сообщение 08.01.13, 13:46
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

В чем конкретно трудность?

Dima999222 Подменю пользователя
сообщение 08.01.13, 14:20
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 29
Из: Киев
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Vofka @ 08.01.13, 13:46) *
В чем конкретно трудность?


Некоторая компания хочет раздать своим клиентам ID и что бы они их обязательно указывали во время оплаты за те или иные услуги.
Этот ID буде попадать в назначение платежа. От куда будет считываться в реквизит "УникальныйИД". Во время чтения выписки Клиент-банком он (Клиент банк) ищет контрагента согласно ОКПО (ЕГРПОУ) а необходимо что бы искал по ID Который записан в комментарий контрагента. Ежели комментарий пуст то по ОКПО.

Проблема в том как искать по комментарию???
Поиск по ОКПО в форме:
ВыборкаПоОКПО = НайтиПоОКПО(Строка.УникальныйИД, Строка.Контрагент);
        НайденКонтрагент = Ложь;
        Если ВыборкаПоОКПО.Следующий() Тогда //есть хоть один
            
            Контрагент     = ВыборкаПоОКПО.Ссылка;
            НайденКонтрагент = Истина;


И в модуле объекта:
Функция НайтиПоОКПО(ОКПО, Наименование) Экспорт
        
    Запрос = Новый Запрос;
    ТекстЗапросаОКПО = "";
    
    // Если ОКПО пусто, не ищем по нему, только по Наименованию юр лица.
    
    Если Не ПустаяСтрока(ОКПО) Тогда
        
        Запрос.УстановитьПараметр("ОКПО", Формат(Число(ОКПО),"ЧГ=0"));
        Запрос.УстановитьПараметр("ОКПО8", Формат(Число(ОКПО),"ЧЦ=8;ЧВН=;ЧГ=0"));
        Запрос.УстановитьПараметр("ОКПО12", Формат(Число(ОКПО),"ЧЦ=12;ЧВН=;ЧГ=0"));
        
        ТекстЗапросаОКПО = "
        |    КодПоЕДРПОУ = &ОКПО ИЛИ
        |    КодПоЕДРПОУ = &ОКПО8 ИЛИ
        |    КодПоЕДРПОУ = &ОКПО12 ИЛИ";
    КонецЕсли;

    
    
    Запрос.УстановитьПараметр("Имя", Наименование);
    
    ТекстЗапроса = "ВЫБРАТЬ
    |    Ссылка
    |ИЗ
    |    Справочник." + ПолучитьИмяОбъектаКонфигурации("ТипСправочникаКонтрагенты") + "
    |
    |ГДЕ" + ТекстЗапросаОКПО + "
    |    Наименование = &Имя ИЛИ
    |    НаименованиеПолное ПОДОБНО &Имя";
    
        
    
    //// объединяем с физическими лицами
    //ТекстЗапросаДРФО = "";
    //
    //Если Не ПустаяСтрока(ОКПО) Тогда
    //    Запрос.УстановитьПараметр("ДРФО", Формат(Число(ОКПО),"ЧГ=0"));
    //    Запрос.УстановитьПараметр("ДРФО10", Формат(Число(ОКПО),"ЧЦ=10;ЧВН=;ЧГ=0"));
    //    Запрос.УстановитьПараметр("ДРФО12", Формат(Число(ОКПО),"ЧЦ=12;ЧВН=;ЧГ=0"));
    //    ТекстЗапросаДРФО = "
    //    |    КодПоДРФО = &ДРФО ИЛИ
    //    |    КодПоДРФО = &ДРФО10 ИЛИ
    //    |    КодПоДРФО = &ДРФО12 ИЛИ";
    //КонецЕсли;
    
    Запрос.Текст = ТекстЗапроса;
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    
    Возврат Выборка;
    
КонецФункции // НайтиПоОКПО()


Signature
Кoгда мне плoхо, я пою. Когда я пою, становится всем плохо. Когда всем становится плохо, мне становится хорошо.

Petre Подменю пользователя
сообщение 08.01.13, 14:35
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Написать код поиска по строке, а код поиска по ОКПО после включить в условие отсутствия результата первого поиска.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Ardi Подменю пользователя
сообщение 08.01.13, 14:43
Сообщение #5

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Нужны два программиста. Одним не обойтись.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Vofka Подменю пользователя
сообщение 08.01.13, 15:03
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Мне сама идея не нравится, но ладно, то такое.

В НайтиПоОКПО вместо

Если Не ПустаяСтрока(ОКПО) Тогда
        
        Запрос.УстановитьПараметр("ОКПО", Формат(Число(ОКПО),"ЧГ=0"));
        Запрос.УстановитьПараметр("ОКПО8", Формат(Число(ОКПО),"ЧЦ=8;ЧВН=;ЧГ=0"));
        Запрос.УстановитьПараметр("ОКПО12", Формат(Число(ОКПО),"ЧЦ=12;ЧВН=;ЧГ=0"));
        
        ТекстЗапросаОКПО = "
        |    КодПоЕДРПОУ = &ОКПО ИЛИ
        |    КодПоЕДРПОУ = &ОКПО8 ИЛИ
        |    КодПоЕДРПОУ = &ОКПО12 ИЛИ";
    КонецЕсли;


Напишите это

Если Не ПустаяСтрока(ОКПО) Тогда
        
        Запрос.УстановитьПараметр("ОКПО", Формат(Число(ОКПО),"ЧГ=0"));
        Запрос.УстановитьПараметр("ОКПО8", Формат(Число(ОКПО),"ЧЦ=8;ЧВН=;ЧГ=0"));
        Запрос.УстановитьПараметр("ОКПО12", Формат(Число(ОКПО),"ЧЦ=12;ЧВН=;ЧГ=0"));

        Запрос.УстановитьПараметр("ОКПО_ХЗ", "%"+Формат(Число(ОКПО),"ЧГ=0")+"%");
        Запрос.УстановитьПараметр("ОКПО8_ХЗ", "%"+Формат(Число(ОКПО),"ЧЦ=8;ЧВН=;ЧГ=0")+"%");
        Запрос.УстановитьПараметр("ОКПО12_ХЗ", "%"+Формат(Число(ОКПО),"ЧЦ=12;ЧВН=;ЧГ=0")+"%");
        
        ТекстЗапросаОКПО = "
        |    КодПоЕДРПОУ = &ОКПО ИЛИ Комментарий ПОДОБНО &ОКПО_ХЗ ИЛИ
        |    КодПоЕДРПОУ = &ОКПО8 ИЛИ Комментарий ПОДОБНО &ОКПО8_ХЗ ИЛИ
        |    КодПоЕДРПОУ = &ОКПО12 ИЛИ Комментарий ПОДОБНО &ОКПО12_ХЗ ИЛИ";
    КонецЕсли;


* малёхо подправил

Сообщение отредактировал Vofka - 08.01.13, 15:03

Dima999222 Подменю пользователя
сообщение 08.01.13, 15:04
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 29
Из: Киев
Спасибо сказали: 1 раз
Рейтинг: 0

Вот так?
конт = Справочники.Контрагенты.НайтиПоКоду(Строка.УникальныйИД);
            
        Если Конт.Пустая() тогда


Signature
Кoгда мне плoхо, я пою. Когда я пою, становится всем плохо. Когда всем становится плохо, мне становится хорошо.

Ardi Подменю пользователя
сообщение 08.01.13, 15:06
Сообщение #8

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

1. Из комментариев считываем СпецКода в ТЗ.
2. Перебираем строки ТЗ и ищем в назначении платежа СпецКод.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Dima999222 Подменю пользователя
сообщение 08.01.13, 15:45
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 29
Из: Киев
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Vofka @ 08.01.13, 15:03) *
Мне сама идея не нравится, но ладно, то такое.

В НайтиПоОКПО вместо

Если Не ПустаяСтрока(ОКПО) Тогда
        
        Запрос.УстановитьПараметр("ОКПО", Формат(Число(ОКПО),"ЧГ=0"));
        Запрос.УстановитьПараметр("ОКПО8", Формат(Число(ОКПО),"ЧЦ=8;ЧВН=;ЧГ=0"));
        Запрос.УстановитьПараметр("ОКПО12", Формат(Число(ОКПО),"ЧЦ=12;ЧВН=;ЧГ=0"));
        
        ТекстЗапросаОКПО = "
        |    КодПоЕДРПОУ = &ОКПО ИЛИ
        |    КодПоЕДРПОУ = &ОКПО8 ИЛИ
        |    КодПоЕДРПОУ = &ОКПО12 ИЛИ";
    КонецЕсли;


Напишите это

Если Не ПустаяСтрока(ОКПО) Тогда
        
        Запрос.УстановитьПараметр("ОКПО", Формат(Число(ОКПО),"ЧГ=0"));
        Запрос.УстановитьПараметр("ОКПО8", Формат(Число(ОКПО),"ЧЦ=8;ЧВН=;ЧГ=0"));
        Запрос.УстановитьПараметр("ОКПО12", Формат(Число(ОКПО),"ЧЦ=12;ЧВН=;ЧГ=0"));

        Запрос.УстановитьПараметр("ОКПО_ХЗ", "%"+Формат(Число(ОКПО),"ЧГ=0")+"%");
        Запрос.УстановитьПараметр("ОКПО8_ХЗ", "%"+Формат(Число(ОКПО),"ЧЦ=8;ЧВН=;ЧГ=0")+"%");
        Запрос.УстановитьПараметр("ОКПО12_ХЗ", "%"+Формат(Число(ОКПО),"ЧЦ=12;ЧВН=;ЧГ=0")+"%");
        
        ТекстЗапросаОКПО = "
        |    КодПоЕДРПОУ = &ОКПО ИЛИ Комментарий ПОДОБНО &ОКПО_ХЗ ИЛИ
        |    КодПоЕДРПОУ = &ОКПО8 ИЛИ Комментарий ПОДОБНО &ОКПО8_ХЗ ИЛИ
        |    КодПоЕДРПОУ = &ОКПО12 ИЛИ Комментарий ПОДОБНО &ОКПО12_ХЗ ИЛИ";
    КонецЕсли;


* малёхо подправил


Огромная Вам благодарность!!!! Все работает!


Signature
Кoгда мне плoхо, я пою. Когда я пою, становится всем плохо. Когда всем становится плохо, мне становится хорошо.

Vofka Подменю пользователя
сообщение 08.01.13, 15:50
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(Dima999222 @ 08.01.13, 15:45) *
Огромная Вам благодарность!!!! Все работает!

Жмите палец wink.gif

svinuk Подменю пользователя
сообщение 16.01.13, 9:55
Сообщение #11

Общительный
**
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 9 раз
Рейтинг: 0

Когда-то делал поиск ИНН в комментарии. Выглядело примерно так:
Функция НайтиКодИННВСтрокеНазначенияПлатежа(Строка) Экспорт
    
    //длина ИНН 10 символов
    
    ДлинаСтроки        =    СтрДлина(Строка);
    СчетчикЦифр        =    0;
    ИНН                =    "";
    
    Для а = 1 По ДлинаСтроки Цикл
        
        Если Найти("0123456789", Сред(Строка, а, 1)) = 0 Тогда
            
            Если СчетчикЦифр = 10 Тогда
                Возврат ИНН;
            КонецЕсли;
            СчетчикЦифр    =    0;
            ИНН            =    "";
            Продолжить;
            
        Иначе
            
            ИНН            =    ИНН + Сред(Строка, а, 1);
            СчетчикЦифр    =    СчетчикЦифр + 1;
            
        КонецЕсли;
        
    КонецЦикла;  
    
    Если СчетчикЦифр = 10 Тогда
        Возврат ИНН;
    КонецЕсли;
            
    Возврат "";    
        
КонецФункции


Signature
Не доверяйте лошади с фиолетовыми бровями

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.04.24, 3:52
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!