0. duhh 190 24.08.17 17:56 Сейчас в теме

Клиент-банк, поиск плательщиков по назначению платежа

Решение задачи рассмотрим на примере загрузки и разнесения банковской выписки по договорам и контрагентам из текста назначения платежа.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. Scottlinch 8 24.09.17 21:33 Сейчас в теме
А почему нельзя было воспользоваться регулярными выражениями? Ну скажем из вашего примера подошло бы что то "\s(\d{2}-\d{1,3}-\d{1,3}(-)?(\d{1})?)\s|\s(\d{2}-\d{1,3})\s". Разумеется я не знаю какие в принципе у Вас еще бывают л/с, но готов поспорить могу и к ним ключик подобрать =)
2. duhh 190 25.09.17 10:07 Сейчас в теме
(1) В том то и дело,. что я считаю, нет шаблона у л/с. Хотя кто знает, вот условия: длина произвольная, русские английские буквы, цифры. "-". Встречаются с пробелами. бывают похожие например 111, 111-2, к-111, кк-111-1. ss-ss-111-1. Более того в тексте могут указать номер квартиры, дома что тоже можно принять за л/с.
3. Scottlinch 8 25.09.17 23:33 Сейчас в теме
(2) согласен не очень приятный набор л/с. И с тем учётом что не всегда пробелы стоят до и после л/с дела плохи. А на сколько быстро работает ваш запрос?
4. duhh 190 26.09.17 10:06 Сейчас в теме
(3) На моих данных порядка 20-30 сек. Но главное то, что это ГОРАЗДО быстрей бухгалтера.
5. Scottlinch 8 26.09.17 11:38 Сейчас в теме
(4) 20-30 сек на какое количество платежей?
6. duhh 190 26.09.17 12:25 Сейчас в теме
(5) приблизительно 200 платежей, 7000 лс
7. Scottlinch 8 26.09.17 22:27 Сейчас в теме
ясно у нас 100 000 и 20 000 платежей по времени тоже 1 минуту ищем правда немного другим способом. У Вас очень правильный и интересный способ.
8. user902158 07.06.18 17:07 Сейчас в теме
Добрый день.
Извините за тупой вопрос, я немного не понял куда этот код воткнуть и что должно произойти по нажатию кнопки ?
9. duhh 190 08.06.18 09:21 Сейчас в теме
(8)Воткнуть можно в обработку "КлинтБанк". Идея такая, сначала в обработке загружается файл из банка, а потом по нажатию кнопки по назначениям платежа подбираются плательщики (контрагенты, договоры), далее штатными средствами формируются документы. Можно скачать расширение и подключить к своей конфе.
10. user902158 09.06.18 13:40 Сейчас в теме
Добавил в обработку "Клиент-Банк" Этот код убрал все ошибки, но вот с одной бьюсь уже второй день может кто подскажет где я туплю ?

Вот код ошибки:
ВнешняяОбработка.КлиентБанк.Форма.Форма.Форма(155,3)}: Процедура или функция с указанным именем не определена (ДляРасширения_УточнитьХозяйственнуюОперациюДаннымиВведенными­Пользователем)
<<?>>ДляРасширения_УточнитьХозяйственнуюОперациюДаннымиВведенны­миПользователем(НайденныеСтроки[0], "Контрагент,Договор,ВидОперации") (Проверка: Толстый клиент (обычное приложение))
11. duhh 190 09.06.18 15:27 Сейчас в теме
(10) Два мало, нужно биться как минимум три, а потом если усилия не приведут к результату, добавить эту процедуру

&НаСервере
Процедура ДляРасширения_УточнитьХозяйственнуюОперациюДаннымиВведенными­Пользователем(СтрокаДокументыКИмпорту, ИменаВведенныхДанных)
	
	Если ЗначениеЗаполнено(СтрокаДокументыКИмпорту.Документ) Тогда
		// Если есть документ, то хозяйственная операция не определена,
		// поэтому создадим и заполним её полностью.
		// Это нужно для того, чтобы при загрузке документ перезаполнился
		ВведенныеДанные = Новый Структура("Контрагент,ВидОперации,СчетКонтрагента,Договор,СтатьяДДС");
	Иначе
		ВведенныеДанные = Новый Структура(ИменаВведенныхДанных);
	КонецЕсли;
	ЗаполнитьЗначенияСвойств(ВведенныеДанные, СтрокаДокументыКИмпорту);
	
	// Приведем ВведенныеДанные в соответствие ХозяйственнаяОперация
	Если ВведенныеДанные.Свойство("ВидОперации") Тогда
		ВидОперацииДокумента = ВведенныеДанные.ВидОперации;
		ВведенныеДанные.Удалить("ВидОперации");
		ВведенныеДанные.Вставить("ВидОперацииДокумента", ВидОперацииДокумента);
	КонецЕсли;
	Если ВведенныеДанные.Свойство("Договор") Тогда
		ДоговорДокумента = ВведенныеДанные.Договор;
		ВведенныеДанные.Удалить("Договор");
		ВведенныеДанные.Вставить("ДоговорКонтрагента", ДоговорДокумента);
	КонецЕсли;
	Если ВведенныеДанные.Свойство("СчетКонтрагента") Тогда
		СчетКонтрагентаДокумента = ВведенныеДанные.СчетКонтрагента;
		ВведенныеДанные.Удалить("СчетКонтрагента");
		ВведенныеДанные.Вставить("БанковскийСчетКонтрагента", СчетКонтрагентаДокумента);
	КонецЕсли;
	Если ВведенныеДанные.Свойство("СтатьяДДС") Тогда
		СтатьяДДСДокумента = ВведенныеДанные.СтатьяДДС;
		ВведенныеДанные.Удалить("СтатьяДДС");
		ВведенныеДанные.Вставить("СтатьяДвиженияДенежныхСредств", СтатьяДДСДокумента);
	КонецЕсли;
	
	РаспознанныеДанныеИзБанка = ПолучитьИзВременногоХранилища(АдресХранилищаРаспознанныеДанныеИзБанка);
	
	ХозяйственнаяОперация = ЗагрузкаВыпискиПоБанковскомуСчету.УточнитьХозяйственнуюОперациюДаннымиВведеннымиПользователем(
		ВведенныеДанные,
		СтрокаДокументыКИмпорту.ИдентификаторВыписки,  // Идентифицируют выписку в РаспознанныеДанныеИзБанка
		СтрокаДокументыКИмпорту.ИдентификаторОперации, // Идентифицируют операцию в РаспознанныеДанныеИзБанка
		РаспознанныеДанныеИзБанка,
		НастройкиЗагрузки());
		
	//Палий вернем договор найденный по ЛС	
	ХозяйственнаяОперация.Вставить("ДоговорКонтрагента", СтрокаДокументыКИмпорту.Договор);
	
	АдресХранилищаРаспознанныеДанныеИзБанка = ПоместитьВоВременноеХранилище(РаспознанныеДанныеИзБанка, АдресХранилищаРаспознанныеДанныеИзБанка);
	
	ЗаполнитьСтрокуПоХозяйственнойОперации(РаспознанныеДанныеИзБанка, СтрокаДокументыКИмпорту, ХозяйственнаяОперация);
	
	РазместитьПредупреждение(СтрокаДокументыКИмпорту);
	ПодготовитьОтображениеПредупреждений(СтрокаДокументыКИмпорту, Объект.СоздаватьНенайденныеЭлементы);
	
КонецПроцедуры
Показать
user902158; +1 Ответить
12. user902158 20.06.18 12:58 Сейчас в теме
Появилось время заняться этим вопросом, добавил процедуру, но теперь вот такая ошибка. Я раньше не сталкивался с <wbr> если ставлю скобку как просит то другая ошибка.

{ВнешняяОбработка.КлиентБанк.МодульОбъекта(101,70)}: Ожидается символ '('
Процедура ДляРасширения_УточнитьХозяйственнуюОперациюДаннымиВведенным<­<?>> <wbr>иПользователем(СтрокаДокументыКИмпорту, ИменаВведенныхДанных)экспорт (Проверка: Толстый клиент (обычное приложение))

{ВнешняяОбработка.КлиентБанк.МодульОбъекта(101,71)}: Ожидается имя формального параметра
Процедура ДляРасширения_УточнитьХозяйственнуюОперациюДаннымиВведенным(<<?>><wbr>иПользователем(СтрокаДокументыКИмпорту, ИменаВведенныхДанных)экспорт (Проверка: Толстый клиент (обычное приложение))
Прикрепленные файлы:
13. duhh 190 20.06.18 14:26 Сейчас в теме
14. user902158 20.06.18 16:47 Сейчас в теме
Спасибо за помощь =)
Правда появилась куча других ошибок, но с ними я постараюсь сам разобраться.


{ВнешняяОбработка.КлиентБанк.МодульОбъекта(135,63)}: Переменная не определена (АдресХранилищаРаспознанныеДанныеИзБанка)
РаспознанныеДанныеИзБанка = ПолучитьИзВременногоХранилища(<<?>>АдресХранилищаРаспознанныеДанныеИзБанка); (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлиентБанк.МодульОбъекта(137,29)}: Переменная не определена (ЗагрузкаВыпискиПоБанковскомуСчету)
ХозяйственнаяОперация = <<?>>ЗагрузкаВыпискиПоБанковскомуСчету.УточнитьХозяйственнуюОперациюДаннымиВведеннымиПользователем( (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлиентБанк.МодульОбъекта(152,67)}: Переменная не определена (Объект)
ПодготовитьОтображениеПредупреждений(СтрокаДокументыКИмпорту, <<?>>Объект.СоздаватьНенайденныеЭлементы); (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлиентБанк.МодульОбъекта(2534,52)}: Переменная не определена (ДокументыКВыгрузке)
Запрос.УстановитьПараметр("ДокументыКВыгрузкеТЗ", <<?>>ДокументыКВыгрузке); (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлиентБанк.МодульОбъекта(2540,3)}: Переменная не определена (ДокументыКВыгрузке)
<<?>>ДокументыКВыгрузке[Выборка.НомерСтроки - 1].ЗаявкаНаРасходованиеДенежныхСредств = (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлиентБанк.МодульОбъекта(2742,10)}: Переменная не определена (ДокументыКВыгрузке)
Возврат <<?>>ДокументыКВыгрузке.НайтиСтроки(Отбор); (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлиентБанк.МодульОбъекта(142,9)}: Процедура или функция с указанным именем не определена (НастройкиЗагрузки)
<<?>>НастройкиЗагрузки()); (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлиентБанк.МодульОбъекта(149,5)}: Процедура или функция с указанным именем не определена (ЗаполнитьСтрокуПоХозяйственнойОперации)
<<?>>ЗаполнитьСтрокуПоХозяйственнойОперации(РаспознанныеДанныеИзБанка, СтрокаДокументыКИмпорту, ХозяйственнаяОперация); (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлиентБанк.МодульОбъекта(151,5)}: Процедура или функция с указанным именем не определена (РазместитьПредупреждение)
<<?>>РазместитьПредупреждение(СтрокаДокументыКИмпорту); (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.КлиентБанк.МодульОбъекта(152,5)}: Процедура или функция с указанным именем не определена (ПодготовитьОтображениеПредупреждений)
<<?>>ПодготовитьОтображениеПредупреждений(СтрокаДокументыКИмпорту, Объект.СоздаватьНенайденныеЭлементы); (Проверка: Толстый клиент (обычное приложение))
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Бизнес-архитектор 1С, ведущий консультант
Санкт-Петербург
Полный день

Руководитель проектов 1С
Санкт-Петербург
Полный день


Специалист техподдержки 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Полный день

Системный аналитик 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Полный день