Вид операции 17

Вид операций в банковской выписке

Admin 7 ноября, 2019

Попросили меня на днях подсказать, как программа при загрузке банковских выписок определяет вид операции ‘КомиссияБанка’. Я сказал: дайте мне 10 минут и я все выясню! Но только спустя пару часов я смогу разобраться в этом вопросе. Даже поиск в интернете не выдал мне нужного ответа.

Как оказалось – механизм определения видов операций при загрузке банковской выписки это черный ящик, в котором не так-то просто разобраться.

И так, давай рассмотрим где же все таки хранятся эти срытые от всего мира механизмы. Имеем:

  • Конфигурацию: ‘Бухгалтерия предприятия, редакция 3.0 БИТ.ФИНАНС 3.1’;
  • Задачу: как программа определяет по данным из банковских выписок вид операции ‘КомиссияБанка’?

Бесконечная отладка и замеры производительности в конечном итоге вывели меня на функцию ‘ХозяйственнаяОперация‘ в общем модуле ‘ЗагрузкаВыпискиПоБанковскомуСчету‘:

Функция ХозяйственнаяОперация(Параметры, ПравилаОпределенияХозяйственныхОпераций, ВыполнитьПравилоОбязательно = Ложь).

И в этой функции есть вызов не менее интересной функции ‘ВыполнитьПравилоОпределенияХозяйственнойОперации‘, в которой собственно и происходит все самое интересное:

1С (Код)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 &НаКлиенте Функция ВыполнитьПравилоОпределенияХозяйственнойОперации(Параметры, Правило, ПроверитьПрименимостьПравила) Параметры.Правило = Правило; Параметры.ПроверитьПрименимостьПравила = ПроверитьПрименимостьПравила; Параметры.ПротоколыВыбораСсылок.Очистить(); Если Правило.ПоступилоСписано = «Поступило» Тогда РезультатОпределенияХозяйственнойОперации = ХозяйственнаяОперацияПоступило(Параметры); Иначе РезультатОпределенияХозяйственнойОперации = ХозяйственнаяОперацияСписано(Параметры); КонецЕсли; Если РезультатОпределенияХозяйственнойОперации.Определена Тогда УстановитьПоказателиРасчетов(РезультатОпределенияХозяйственнойОперации.ХозяйственнаяОперация, Параметры); УстановитьПоказателиНДС(РезультатОпределенияХозяйственнойОперации.ХозяйственнаяОперация, Параметры); УстановитьБанковскийСчетКонтрагента(РезультатОпределенияХозяйственнойОперации.ХозяйственнаяОперация, Параметры); Если Не РезультатОпределенияХозяйственнойОперации.ХозяйственнаяОперация.Свойство(«СтатьяДвиженияДенежныхСредств») Тогда УстановитьСтатьюДвиженияДенежныхСредств(РезультатОпределенияХозяйственнойОперации.ХозяйственнаяОперация, Параметры); КонецЕсли; // Для ссылок на новые объекты, установленных в ХозяйственнаяОперация, дозаполним из выписки значения реквизитов ЗаполнитьРеквизитыНовыхОбъектов( Параметры.УчастникиОпераций, РезультатОпределенияХозяйственнойОперации.ХозяйственнаяОперация, Параметры.Операция, Параметры.ИсточникиСсылок, Параметры.ВладелецСчета, Параметры.КешОбщихПараметров.РеквизитыНовыхОбъектовИнформационнойБазы); КонецЕсли; Возврат РезультатОпределенияХозяйственнойОперации; КонецФункции

Здесь же стоит обратить внимание на две функции ‘ХозяйственнаяОперацияПоступило‘ и ‘ХозяйственнаяОперацияСписано‘, в которых собственно и происходит определение вида операции по параметрам платежа:

‘ХозяйственнаяОперацияПоступило’ и ‘ХозяйственнаяОперацияСписано’.

Эти функции со вспомогательными методами описаны в соответствующих областях ‘Списано’ и ‘Поступило’:

Область ‘Списано’ и ‘Поступило’.

Вот описание этих функций:

1С (Код)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 &НаКлиенте Функция ХозяйственнаяОперацияСписано(Параметры) // Эти правила должны быть объявлены в ЗаполнитьПредопределенныеПравилаОпределенияХозяйственныхОпераций() Если Параметры.Правило.Имя = «Налог» Тогда Возврат ХозяйственнаяОперацияНалог(Параметры); ИначеЕсли Параметры.Правило.Имя = «СнятиеНаличных» Тогда Возврат ХозяйственнаяОперацияСнятиеНаличных(Параметры); ИначеЕсли Параметры.Правило.Имя = «КомиссияБанка» Тогда Возврат ХозяйственнаяОперацияКомиссияБанка(Параметры); ИначеЕсли Параметры.Правило.Имя = «ВыводПредпринимателемЛичныхСредств» Тогда Возврат ХозяйственнаяОперацияВыводПредпринимателемЛичныхСредств(Параметры); ИначеЕсли Параметры.Правило.Имя = «ПереводНаДругойСчет» Тогда Возврат ХозяйственнаяОперацияПереводМеждуСобственнымиСчетами(Параметры); ИначеЕсли Параметры.Правило.Имя = «ЗаработнаяПлата» Или Параметры.Правило.Имя = «ЗаработнаяПлатаПоВедомости» Тогда Возврат ХозяйственнаяОперацияЗаработнаяПлата(Параметры); ИначеЕсли Параметры.Правило.Имя = «ОплатаИзвестномуПоставщику» Тогда Возврат ХозяйственнаяОперацияПоВидуДоговора(Параметры); ИначеЕсли Параметры.Правило.Имя = «ПрочиеВыплатыКонтрагентам» Тогда Возврат ХозяйственнаяОперацияПоВидуДоговора(Параметры); ИначеЕсли Параметры.Правило.Имя = «ВозвратПокупателю» Тогда Возврат ХозяйственнаяОперацияПоВидуДоговора(Параметры); ИначеЕсли Параметры.Правило.Имя = «ДругиеПлатежиГосОрганам» Тогда Возврат ХозяйственнаяОперацияДругиеПлатежиГосОрганам(Параметры); ИначеЕсли Параметры.Правило.Имя = «ОплатаНовомуПолучателюПрочихВыплат» Тогда Возврат ХозяйственнаяОперацияОплатаНовомуПолучателюПрочихВыплат(Параметры); ИначеЕсли Параметры.Правило.Имя = «ОплатаНовомуПоставщику» Тогда Возврат ХозяйственнаяОперацияОплатаНовомуПоставщику(Параметры); Иначе Возврат НовыйРезультатОпределенияХозяйственнойОперации(); КонецЕсли; КонецФункции Функция ХозяйственнаяОперацияПоступило(Параметры) // Эти правила должны быть объявлены в ЗаполнитьПредопределенныеПравилаОпределенияХозяйственныхОпераций() Если Параметры.Правило.Имя = «ПоступлениеНаличныхВБанк» Тогда Возврат ХозяйственнаяОперацияПоступлениеНаличныхВБанк(Параметры); ИначеЕсли Параметры.Правило.Имя = «ВыручкаРозничнойТорговлиЧерезПосредника» Тогда Возврат ХозяйственнаяОперацияВыручкаРозничнойТорговлиЧерезПосредника(Параметры); ИначеЕсли Параметры.Правило.Имя = «ВнесениеПредпринимателемЛичныхСредств» Тогда Возврат ХозяйственнаяОперацияВнесениеПредпринимателемЛичныхСредств(Параметры); ИначеЕсли Параметры.Правило.Имя = «ПереводССобственногоСчета» Тогда Возврат ХозяйственнаяОперацияПереводМеждуСобственнымиСчетами(Параметры); ИначеЕсли Параметры.Правило.Имя = «ОплатаОтИзвестногоПокупателя» Тогда Возврат ХозяйственнаяОперацияПоВидуДоговора(Параметры); ИначеЕсли Параметры.Правило.Имя = «ПрочиеПоступленияОтКонтрагентов» Тогда Возврат ХозяйственнаяОперацияПоВидуДоговора(Параметры); ИначеЕсли Параметры.Правило.Имя = «ВозвратОтПоставщика» Тогда Возврат ХозяйственнаяОперацияПоВидуДоговора(Параметры); ИначеЕсли Параметры.Правило.Имя = «ОплатаОтНовогоПокупателя» Тогда Возврат ХозяйственнаяОперацияОплатаОтНовогоПокупателя(Параметры); Иначе Возврат НовыйРезультатОпределенияХозяйственнойОперации(); КонецЕсли; КонецФункции

Ну и собственно ответ на сам вопрос про ‘КомиссиюБанка’:

Вид операции комиссия банка.‘ЭтоКомиссияБанка’?.

В этих трех функциях ‘ЭтоСчетДоходовБанка‘, ‘ЭтоСчетРасчетовСБанком‘, ‘ЭтоБанковскийОрдер‘ общего модуля и происходит определение данного вида операции по переданным параметрам:

1С (Код)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 &НаКлиенте Функция ЭтоСчетДоходовБанка(БалансовыйСчет) Экспорт Возврат БалансовыйСчет = «70601» // Доходы (банка) Или БалансовыйСчет = «61301» // Доходы (банка) будущих периодов по кредитным операциям Или БалансовыйСчет = «61304»; // Доходы (банка) будущих периодов по другим операциям КонецФункции Функция ЭтоСчетРасчетовСБанком(БалансовыйСчет) Экспорт Возврат БалансовыйСчет = «47423»; // Требования по прочим операциям — «отражаются требования кредитной организации» КонецФункции Функция ЭтоБанковскийОрдер(ШифрОперации) Экспорт Возврат ШифрОперации = 17; // 17 — Списано, зачислено по банковскому ордеру КонецФункции

Надеюсь данная информацию кому-нибудь пригодится, так как в интернете я не нашел ни одного полезного совета о том где смотреть или хотя бы где копать. Алгоритм этот я думаю в разных конфигурациях от 1с должен быть одинаков, ну или с небольшими изменениями в зависимости от версии, релиза и т.д.

Зная теперь где находится этот черный ящик, можно без труда с помощью отладки посмотреть алгоритмы для описанных видов операций.

Столичные налоговики с особой тщательностью проверяют затраты компаний на консультации от сторонних специалистов, если в штате есть сотрудники, которым по должности положено выполнять такие же обязанности. Подозрения у инспекторов могут вызвать даже самые безобидные расходы, вроде затрат на консультации по бухучету налогообложению. Галина Тимофеева, корреспондент «УНП»

––––––––––
НАПОМНИМ. Как мы сообщали (см. «УНП» № 19, 2007, стр. 1, «Рассекречиваем выгодные разъяснения ФНС по налогу на прибыль»), в материалах ведомственного совещания, посвященного налогу на прибыль, налоговое ведомство обратило внимание подчиненных на проверку расходов на ведение бухучета, консультационных услуг и т.п. В отношении таких расходов налоговики прежде всего должны смотреть, чтобы не было «задвоения» одинаковых расходов.
––––––––––
Показательный пример. Компании, консультирующей клиентов по вопросам бухучета и налогообложения, самой потребовались такие услуги. Она обратилась в аудиторскую фирму. Проверяющие из столичной ИФНС № 31 расценили такие затраты экономически неоправданными, так как в штате предприятия были собственные налоговые консультанты. Но суд их не поддержал: организация вправе учесть в составе расходов затраты на консультационные услуги в области учета и налогов, даже если в штатном расписании есть соответствующая единица, говорится в постановленииФедерального арбитражного суда Московского округа от 06.02.07 № КА-А40/105-07.
Впрочем, как уверяют в инспекции, судебной тяжбы могло не быть. «Почему-то в момент рассмотрения разногласий налогоплательщик не смог представить нам документы о том, что консультационные услуги, оказанные ему аудиторской фирмой, в дальнейшем использовались в его деятельности. Хотя для суда такие доказательства нашлись, и тот их учел. И такие случаи не единичны, – объясняют в ИФНС № 31. – Если затраты компании на консультационные услуги имеют разумные размеры и документально подтверждены, мы готовы снять свои подозрения».
Между тем, налоговых юристов претензии инспекторов к «задвоенным» расходам, как минимум, удивляют. «Введение в практику критерия «задвоения» функций внешних и штатных специалистов позволяет «снимать» затраты по формальным основаниям и перелагает бремя доказывания на налогоплательщика, – считаетуправляющий партнер юридической компании «ЭкспертФинанс» Алексей Архиерейский. – Такой критерий не основан ни на каких правовых актах и используется только благодаря настойчивости налоговых органов».
И все же во избежание придирок при обосновании подобных затрат не стоит жалеть бумагу. В рассмотренном выше случае, к примеру, помимо обычных в таких ситуациях договора, акта выполненных работы и т. д., свою роль сыграла специальная справка. В ней компания-заказчик показала, какие доходы и в каком размере она получила благодаря сторонним консультационным услугам.

📌 Реклама Отключить

v8.3: Задвоился план счетов

Бывает такое после обмена, и проблема всплывает на 8.3. Дело в том, что предопределенность справочника теперь изменчива.

У справочника есть теперь реквизит «ИмяПредопределенныхДанных». Его можно очищать и писать. Конечно, если Вы руками попробуете двум элементам присвоить одинаковое значение, то платформа Вам скажет «ата-та», и Вы не накосячите. но есть случаи, когда платформа не властна над записью элементов справочника. Я говорю о РИБе — распределенной информационной базе. Если при записи элемента режим обмен.загрузка = ИСТИНА, то никакого контроля нет. Раньше это приводило к неуникальности кодов справочников и документов.

Теперь это может привести и к неуникальности имени предопределенного элемента.

Опишу практический пример того, как это бывает:

1. Имеем две базы, в которой есть данные. и есть справочник с предопределенными элементами. При создании баз уникальный идентификатор у них создался разный.

2. Мы выгружаем данные универсальной выгрузкой XML или средствами РИБ.

3. Загружаем XML файл.

4. Платформа синхронизирует все и вся по уникальному идентификатору, а он разный. она не находит элементы и создает новые. Режим обмен.Загрузка у нас ИСТИНА. Контроля при записи нет никакого.

Все, мы получили косяк, грозящий нам большими проблемами. При попытке пометить элемент на удаление мы имеем много мата со стороны платформы:

«Предопределенный элемент не уникален»

Как бороться?

это просто:

1. Рисуем в форме элемента поле «ИмяПредопределенныхДанных», доступное для редактирования.

2. Открываем форму одного из дублей, обязательно меняем имя и стираем ИмяПредопределенныхДанных.

3. Записываем элемент

Все, готово. Теперь мы сможем пометить элемент на удаление.

Если конфигурация типовая и редактировать её нельзя, то пишем обработку, которая сотрет ИмяПредопределенныхДанных и допишет «1» в имя.

Зачем нам править имя? — спросите Вы.

Отвечу: а как Вы узнаете, какой элемент надо оставить, кто из них сейчас сидит как ссылка в данных? Так Вы их сможете визуально отличить. Скорее всего у Вас будут ссылки на оба элемента и Вам понадобиться обработка по поиску и замене значений. При её использовании будет удобнее, если имена будут отличаться.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *