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С, руководитель проектов
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

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

Консультант-аналитик 1С
Рязань
зарплата до 80 000 руб.
Полный день