|
Альфа-Авто отчет Движения взаиморасчетов | ☑ | ||
---|---|---|---|---|
0
Mikhail Volkov
02.12.21
✎
12:21
|
Пользователи просят в Альфа-Авто в отчет Движения взаиморасчетов добавить галочку Оплата, при установки которой в документе движения еще дописывалась информация об его оплате. Если это заказ-наряд или реализация, то есть ли у него подчиненный документ(ы) оплаты: полной или частичной. А если это документ оплаты, то есть ли у него основание (ПКО или Чек на оплату) или указан ли в нем документ сделки (в Строка банковской выписки). Сформировать такую строку информации не проблема. Проблема: где, в каком месте перехватить документ движения, чтобы описать к нему строку об оплате?
|
|||
1
piter3
02.12.21
✎
12:22
|
зачем документы?????
|
|||
2
vicof
02.12.21
✎
12:38
|
(0) Теперь отчеты будут делать движения в регистрах?
|
|||
3
Fish
02.12.21
✎
12:40
|
(0) Я не понял. Ты хочешь, чтобы в ОТЧЕТЕ была галочка, которая меняла бы данные документа? Не нужно так делать.
|
|||
4
Mikhail Volkov
02.12.21
✎
12:57
|
(1) Иногда клиенты безналично платят частично (округленно до 10 руб.) или сразу за 2-3 сделки, причем не по порядку задолженности, и по назначению платежа не понять за что платит клиент. Возникают трудности какую сделку указывать в строке банковской выписки. А в отчете Движения взаиморасчетов нет информации что оплачено, что нет. Добавить надо бы...
(2) С чего взял? Нет конечно. (3) Нет не данные документа, а выводила в отчет доп. информацию об оплате документа: указана или нет. |
|||
5
vicof
02.12.21
✎
14:09
|
(4) "в отчет Движения взаиморасчетов добавить галочку Оплата, при установки которой в документе движения еще дописывалась информация об его оплате."
|
|||
6
Mikhail Volkov
02.12.21
✎
14:37
|
(5) Не сам же документ, а в то что выводится в отчет - его наименование: тип, номер, дата и время. Как в товарных отчетах к наименованию номенклатуры добавляется артикул или код.
|
|||
7
Михаил Козлов
02.12.21
✎
20:40
|
(5) Если в Альфа-Авто отчет на СКД, то обычно это можно делать в пользовательском режиме.
|
|||
8
Seducer
02.12.21
✎
21:08
|
(4) >А в отчете Движения взаиморасчетов нет информации что оплачено, что нет.
В АА взаиморасчеты содержат информацию о сделке. Добавить группировку "Сделка" в отчет не вариант? Если сделка закрыта - то по ней конечный остаток будет 0 |
|||
9
Mikhail Volkov
03.12.21
✎
10:01
|
(7) Дополнительные отчеты делаю на СКД, но у 1С-Рарус своя система отчетов, пытаюсь в ней разобраться...
(8) Добавлял группировку "Сделка" в отчет, то что отчет становится громоздким, это ничего. Но самое главное (по моему): он сам группирует документы в строгом порядке возникновения задолженности, и не смотрит на сделки, указанные в строках банковских выписок. По такому отчету получается все ранние документы оплачены, не оплачены только последние. Хотя клиент иногда оплачивает не по порядку. Например, оплатил конкретный документ точно на сумму документа, в назначении платежа указал именно этот документ. Хотя у него не оплачен более ранний документ на меньшую сумму. Бухгалтер, заполняя банковскую выписку, указала сделку правильно. А в отчете с группировкой Сделка попадает эта строка выписки попадает в группировку более раннего неоплаченного документа. Далее идет группировка с нашей строкой выписки на оставшуюся сумму от "оплаты" более раннего неоплаченного документа. И так далее... Верить такому отчету нельзя, только итоговым цифрам. Или что-то не настроено? |
|||
10
Михаил Козлов
03.12.21
✎
10:20
|
(9) Т.е. Вы считаете, что соответствие оплат "отгрузкам" должно определяться строковым реквизитом назначение платежа?
Смотрели как в регистре взаиморасчетов соотносятся отгрузки и оплаты? Какие варианты ведения взаиморасчетов возможны в Альфа-Авто (по договору, по сделке, по расчетным документам)? |
|||
11
Mikhail Volkov
03.12.21
✎
12:33
|
(10) Способ закрытия сделок: По расчетным документам.
Заглянул ф РН Взаиморасчеты компании, смотрел операции Банковская выписка, вроде везде Сделка заполнена документом сделки. Но у некоторых Сделка заполнена той же Банковской выпиской, что и в регистраторе. Думал что в них не указана Сделка, открываю документ Банковская выписка - все указано!? |
|||
12
Mikhail Volkov
03.12.21
✎
16:30
|
(10) > Т.е. Вы считаете, что соответствие оплат "отгрузкам" должно определяться строковым реквизитом назначение платежа?
Нет, к взаиморасчетам в Альфа-Авто у меня вообще нет претензий. Поясню зачем понадобилось информацию об оплате документа: Альфа-Авто упр. программа. Чтобы получить полную отчетность все документы перегружаются в УПП. Если клиент оплачивает ПКО или банковской картой, то проблем нет: сделка передается в УПП как документ-основание. А если по безналу, то сделка передается, которая указана в строке банковской выписки, т.е. что бухгалтер в ней указал. Если сумма платежа не равна сумме сделки, и назначении платежа неясно написано, то бухгалтер оставляет ее пустой. Вот он и просит добавить в отчет Движения взаиморасчетов добавить к выводимому документу информацию об его оплате, чтобы видеть что оплачено, а что нет. |
|||
13
Seducer
03.12.21
✎
17:27
|
(9) А в договоре стоит автозакрытие сделки или нет? Если автозакрытие - то система сама будет распределять закрытие. Если в выписке указываете сделку, то в этой строке справа есть флаг автозакрытия, его нужно снять. Если его оставить, то заполнение поля сделки не будет иметь силу.
|
|||
14
Mikhail Volkov
04.12.21
✎
05:01
|
(13) Флаг АвтоЗакрытиеСделок (Если флажок установлен, то при проведении документа сначала будут оплачены все незакрытые сделки) установлен во всех договорах, и всех строках выписки при Оплата от покупателя. Если клиент платит правильно: указывает за что (сделку), даже если не по порядку платит, то мне не важно как закрываются его сделки (флаги АвтоЗакрытиеСделок можно снять). А вот когда неясно за что платеж, и сделка остается не заполненной, то очень сомневаюсь, что снятие флагов АвтоЗакрытиеСделок правильно распределит платеж по сделкам.
Повторяю: к взаиморасчетам в Альфа-Авто нет претензий (12). |
|||
15
Mikhail Volkov
04.12.21
✎
08:06
|
Смотрю отчет ОстаткиИОборотыТоваров, в его настройка к измерениям можно добавлять Доп. поля. Обычно по умолчанию к измерению Номенклатура добавляется Артикул (№ по каталогу). Можно Доп. поля выводить в отдельной колонке. Хочу понять как к строкам отчета добавляется доп. информация...
В модуле этого отчета есть Функция СформироватьТабличныйДокумент(), которая вызывает общую (для всех отчетов в общем модуле отОтчеты) функцию ПодготовкаПостроителяОтчета(ОтчетОбъект, ПостроительОтчета). В ней заполняется СтруктураПолейОтчета, она состоит из таблиц значений, среди них ТаблицаПолей. Когда в Доп. поля что-то указано, то она заполняется: например, ТаблицаПолей.Имя = "НоменклатураАртикул", ТаблицаПолей.ПолноеПредставление = "№ по каталогу (Номенклатура)"... Далее в функции ПодготовкаПостроителяОтчета() есть: ТекстЗапроса = отПолучитьИерархическийЗапросПостроителяОтчетов(ОтчетОбъект, СтруктураПолейОтчета); Но сравнивал тексты запроса с установлеными Доп. полями, и без них - вроде одинаковые. Не знаю с ПостроительОтчета по разбираться, или сразу с ТабличныйДокумент? Где и как к строкам отчета может добавляться доп. информация? |
|||
16
Мимохожий Однако
04.12.21
✎
09:34
|
Все манипуляции есть смысл делать только в банковской выписке, чтобы правильно формировались движения.
Доп.поля, флажки и прочие ходули, на мой взгляд, избыточны и усложняют базу. В банковской выписке нет возможности получить табличную таблицу расчетных документов списком? Только строка? |
|||
17
Мимохожий Однако
04.12.21
✎
09:37
|
В бухгалтерии 3.0 есть в документе Списание с расчетного счета табличная часть Расшифровка платежа. Если уж делать, то по аналогии с типовой конфигурацией.
|
|||
18
Mikhail Volkov
04.12.21
✎
10:58
|
(16) Банковская выписка в Альфа-Авто имеет табличную часть Состав, в каждую строку заносится платеж от клиента (или поставщику), указывается Сумма и НДС платежа, документ Сделка (за что платеж), текст Назначение платежа... не понял вопрос?
|
|||
19
Mikhail Volkov
06.12.21
✎
14:08
|
(17) С БП3.0 и другими конфигурациями на УФ мало работаю, чаще на УПП. В ней тоже можно добавлять Доп. поля к выводимым полям измерений. Например, в отчете "Товары на складах" по умолчанию к измерению Номенклатура по умолчанию добавляется Базовая единица измерения. Можно добавить Номенклатура.Код, Номенклатура.Артикул... Кстати, если Доп. поле выводится пустым, но запятая с пробелом все равно выводится - не порядок!
Вернемся к (15): трудность в том, что в Альфа-Авто текст функции СформироватьТабличныйДокумент() недоступен ОбработкаЗащиты.Компонента.отСформироватьТабличныйДокумент(), спрятан в V8AutoSalon.dll. Но она обращается к доступным процедурам и функциям. Про функции ПодготовкаПостроителяОтчета() и ПодготовкаПостроителяОтчета() уже писал в (15) - не помогли мне в моей задаче. А вот Процедура отСформироватьМакетИзмеренияСтроки() - формирует строку измерений макета построителя отчета, в ней есть фрагмент: ДополнительныеПоляОтчета = ОтчетОбъект.ДополнительныеПоляОтчета.НайтиСтроки(Новый Структура("НеСвязанные", Ложь)); Если ДополнительныеПоляОтчета.Количество() > 0 И Не ДополнительныеПоляВОтдельнойКолонке Тогда ТекстШаблона = ""; Для ИндПоля=0 По ДополнительныеПоляОтчета.Количество()-1 Цикл ТекПоле = ДополнительныеПоляОтчета[ИндПоля]; ОбластьДопПоле = МакетОтчета.Область(НомерСтроки, НачальныйНомерВыводаКолонок, НомерСтроки, НачальныйНомерВыводаКолонок); Если (СтруктураСвязиСвойств.Свойство(ТекПоле.Имя)) И (НЕ ЭтоИерархия) Тогда ЗаполнятьПараметр = ТекИзмерение.Имя = СтруктураСвязиСвойств[ТекПоле.Имя].ИмяИзмерения; Иначе ЗаполнятьПараметр = (ТекПоле.ПутьКДанным <> ТекИзмерение.ПутьКДанным И Найти(ТекПоле.ПутьКДанным, ТекИзмерение.ПутьКДанным) > 0); КонецЕсли; Если ЗаполнятьПараметр Тогда ТекстШаблона = ТекстШаблона + ", [" + ТекПоле.Имя + "]"; КонецЕсли; КонецЦикла; Если Не обЗначениеНеЗаполнено(ТекстШаблона) Тогда ТипЗаполненияОбластиИзмерения = ТипЗаполненияОбластиТабличногоДокумента.Шаблон; ИмяТекИзмерения = "[" + ИмяТекИзмерения + "]"+ТекстШаблона; КонецЕсли; КонецЕсли; Внес в нее свои изменения: ДополнительныеПоляОтчета = ОтчетОбъект.ДополнительныеПоляОтчета.НайтиСтроки(Новый Структура("НеСвязанные", Ложь)); Если (ДополнительныеПоляОтчета.Количество() > 0 И Не ДополнительныеПоляВОтдельнойКолонке) Или ВыводитьИнформациюОбОплате Тогда //+МВ 05.12.2021 ТекстШаблона = ""; Если ДополнительныеПоляОтчета.Количество() > 0 И Не ДополнительныеПоляВОтдельнойКолонке Тогда Для ИндПоля=0 По ДополнительныеПоляОтчета.Количество()-1 Цикл ТекПоле = ДополнительныеПоляОтчета[ИндПоля]; ОбластьДопПоле = МакетОтчета.Область(НомерСтроки, НачальныйНомерВыводаКолонок, НомерСтроки, НачальныйНомерВыводаКолонок); Если (СтруктураСвязиСвойств.Свойство(ТекПоле.Имя)) И (НЕ ЭтоИерархия) Тогда ЗаполнятьПараметр = ТекИзмерение.Имя = СтруктураСвязиСвойств[ТекПоле.Имя].ИмяИзмерения; Иначе ЗаполнятьПараметр = (ТекПоле.ПутьКДанным <> ТекИзмерение.ПутьКДанным И Найти(ТекПоле.ПутьКДанным, ТекИзмерение.ПутьКДанным) > 0); КонецЕсли; Если ЗаполнятьПараметр Тогда ТекстШаблона = ТекстШаблона + ", [" + ТекПоле.Имя + "]"; КонецЕсли; КонецЦикла; КонецЕсли; Если ВыводитьИнформациюОбОплате Тогда ТекстШаблона = ТекстШаблона + ", [" + ИнформацияОбОплате() + "]"; КонецЕсли; //+МВ 05.12.2021 Если Не обЗначениеНеЗаполнено(ТекстШаблона) Тогда ТипЗаполненияОбластиИзмерения = ТипЗаполненияОбластиТабличногоДокумента.Шаблон; ИмяТекИзмерения = "[" + ИмяТекИзмерения + "]"+ТекстШаблона; КонецЕсли; КонецЕсли; Добавил функцию, пока так: Функция ИнформацияОбОплате() Экспорт //+МВ Возврат "ИнформацияОбОплате"; КонецФункции // ИнформацияОбОплате() Галочку ВыводитьИнформациюОбОплате внес в настойки отчета аналогично ВыводитьДополнительныеПоляВОтдельнойКолонке. В результате смотрю пошагово в ИмяТекИзмерения принимает значение: [ПериодРегистратор], [ПериодРегистраторКомментарий], [ИнформацияОбОплате] (еще в Доп. поля добавляю Комментарий), а в сам отчет выводится только документ, комментарий документа и запятая в конце - не воспринимает СформироватьТабличныйДокумент() ИнформацияОбОплате как функцию. Если в ТекстШаблона = ТекстШаблона + ", [" + ИнформацияОбОплате() + "]"; заменить на ТекстШаблона = ТекстШаблона + ", ИнформацияОбОплате()"; то в отчете в строкам документов добавляется текст ", ИнформацияОбОплате()". Если кто что-то дельное по существу вопроса не подскажет, то придется анализировать результат функции СформироватьТабличныйДокумент(), искать в нем тексты "ИнформацияОбОплате()", заменять их на результаты выполнения ИнформацияОбОплате(Документ). |
|||
20
Mikhail Volkov
06.12.21
✎
18:34
|
Видимо придется анализировать результат функции СформироватьТабличныйДокумент() сам уже заполненный ТабличныйДокумент. Но как это делать (не разу не приходилось)? В приведенном фрагменте (19) чуть ниже:
ОбластьКолонки.Объединить(); ОбластьКолонки.РазмещениеТекста = ТипРазмещенияТекстаТабличногоДокумента.Переносить; ОбластьКолонки.Заполнение = ТипЗаполненияОбластиИзмерения; ОбластьКолонки.Параметр = ИмяТекИзмерения; ОбластьКолонки.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Лево; ОбластьКолонки.ВертикальноеПоложение = ВертикальноеПоложение.Центр; ОбластьКолонки.Шрифт = ОформлениеУровня.Шрифт; Неверное мне как-то искать в ТабличныйДокумент эти ОбластьКолонки с Заполнение: ТипЗаполненияОбластиТабличногоДокумента.Шаблон, и Параметр, в котором есть текст ", ИнформацияОбОплате()"? Но как? |
|||
21
Mikhail Volkov
07.12.21
✎
08:09
|
Нашел на https://infostart.ru/public/546665/
Процедура ЗаменитьТекстВТабличномДокументе(ТабличныйДокумент, ПодстрокаПоиска, ПодстрокаЗамены) Экспорт НайденныеОбласти = НайтиОбластиТабличногоДокументаПоВхождениюПодстроки(ТабличныйДокумент, ПодстрокаПоиска); Для каждого Строка из НайденныеОбласти Цикл Строка.Область.Текст = СтрЗаменить(Строка.Область.Текст, ПодстрокаПоиска, ПодстрокаЗамены); КонецЦикла; КонецПроцедуры Правда не понял зачем сперва ищутся все НайденныеОбласти? Можно сразу, нашел и заменил. Наверное НайтиОбластиТабличногоДокументаПоВхождениюПодстроки() общая для других процедур. Ладно, вставил ее пока в свою: Функция СформироватьТабличныйДокумент(ДокументРезультат=Неопределено) Экспорт Результат = отСформироватьТабличныйДокумент(ЭтотОбъект, ДокументРезультат,, глПрава); Если ВыводитьИнформациюОбОплате Тогда //+МВ 07.12.2021 ПодстрокаПоиска = "ИнформацияОбОплате()"; НайденныеОбласти = НайтиОбластиТабличногоДокументаПоВхождениюПодстроки(Результат, ПодстрокаПоиска); Для каждого Строка из НайденныеОбласти Цикл Строка.Область.Текст = СтрЗаменить(Строка.Область.Текст, ПодстрокаПоиска, "Информация об оплате"); КонецЦикла; КонецЕсли; //-МВ Возврат Результат; КонецФункции // ЗаполнитьНачальныеНастройки() Найденная Строка.Область.Текст содержит Документ в начале строки в виде текста. А как получить сам Документ? Может Строка.Область.Параметр, или еще что-нибудь? Мне надо его поставить в качестве аргумента в функцию ИнформацияОбОплате(Документ), и ее результатом заменить текст "ИнформацияОбОплате()". |
|||
22
Mikhail Volkov
07.12.21
✎
18:29
|
Сам Документ содержится Строка.Область.Расшифровка. Теперь функция так выглядит:
Функция СформироватьТабличныйДокумент(ДокументРезультат=Неопределено) Экспорт Результат = отСформироватьТабличныйДокумент(ЭтотОбъект, ДокументРезультат,, глПрава); Если ВыводитьИнформациюОбОплате Тогда //+МВ 07.12.2021 Контрагент = ""; ПодстрокаПоиска = мвДоработки.ТекстИнформацияОбОплате(); НайденныеОбласти = мвДоработки.НайтиОбластиТабличногоДокументаПоВхождениюПодстроки(Результат, ПодстрокаПоиска); Для каждого Строка из НайденныеОбласти Цикл ИнформацияОбОплате = мвДоработки.ИнформацияОбОплате(Строка.Область.Расшифровка, Контрагент); Строка.Область.Текст = СтрЗаменить(Строка.Область.Текст, ?(ПустаяСтрока(ИнформацияОбОплате), ", ", "") + ПодстрокаПоиска, ИнформацияОбОплате); КонецЦикла; КонецЕсли; //-МВ Возврат Результат; КонецФункции // СформироватьТабличныйДокумент() Вроде все работает как надо. Единственное, в функцию ИнформацияОбОплате() кроме Документ пришлось добавить Контрагент. Обычно его можно получить из документа, но если это банковская выписка, то нет. Конечно редко в отчете 1-й документ банковская выписка, но все же... желательно в таблице значений НайденныеОбласти 1-м не был с банковская выписка. |
|||
23
Mikhail Volkov
09.12.21
✎
06:16
|
В НайденныеОбласти можно получить Контрагент:
Функция НайтиОбластиТабличногоДокументаПоВхождениюПодстроки(ТабличныйДокумент, ПодстрокаПоиска, Контрагент = Неопределено) Экспорт НайденныеОбласти = Новый ТаблицаЗначений; НайденныеОбласти.Колонки.Добавить("Область"); НайденныеОбласти.Колонки.Добавить("Текст"); НайденныеОбласти.Колонки.Добавить("Расшифровка"); НайденнаяОбласть = ТабличныйДокумент.НайтиТекст(ПодстрокаПоиска); Пока НайденнаяОбласть <> Неопределено Цикл НоваяСтрока = НайденныеОбласти.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, НайденнаяОбласть); НоваяСтрока.Область = НайденнаяОбласть; НайденнаяОбласть = ТабличныйДокумент.НайтиТекст(ПодстрокаПоиска, НайденнаяОбласть); КонецЦикла; Для каждого Строка Из НайденныеОбласти Цикл Если ТипЗнч(Строка.Область.Расшифровка) = Тип("ДокументСсылка.Выписка") Тогда Продолжить; КонецЕсли; Контрагент = Строка.Область.Расшифровка.Контрагент; Прервать; КонецЦикла; Возврат НайденныеОбласти; КонецФункции // НайтиОбластиТабличногоДокументаПоВхождениюПодстроки() Даже хорошо, что не сразу заменяется (21). Тему можно считать закрытой, но если что-то дельное подскажет, буду рад... |
|||
24
Mikhail Volkov
10.12.21
✎
18:05
|
Оказывается НайденныеОбласти Расшифровка может быть не только документом, но и различным справочником. Пришлось дополнить анализ Расшифровка по типу:
Для каждого Строка Из НайденныеОбласти Цикл Если ТипЗнч(Строка.Область.Расшифровка) = Тип("СправочникСсылка.ДоговорыВзаиморасчетов") Или ТипЗнч(Строка.Область.Расшифровка) = Тип("СправочникСсылка.ПодразделенияКомпании") Или ТипЗнч(Строка.Область.Расшифровка) = Тип("СправочникСсылка.Организации") Или ТипЗнч(Строка.Область.Расшифровка) = Тип("СправочникСсылка.Контрагенты") Или ТипЗнч(Строка.Область.Расшифровка) = Тип("ДокументСсылка.Выписка") Тогда Продолжить; КонецЕсли; Контрагент = Строка.Область.Расшифровка.Контрагент; Прервать; КонецЦикла; Возврат НайденныеОбласти; Возможно еще какие-то типы... Как заменить условие на Не документ? |
|||
25
Mikhail Volkov
11.12.21
✎
08:46
|
Нашел на https://forum.infostart.ru/forum9/topic6348/
Для каждого Строка Из НайденныеОбласти Цикл // Если ТипЗнч(Строка.Область.Расшифровка) = Тип("СправочникСсылка.ДоговорыВзаиморасчетов") // Или ТипЗнч(Строка.Область.Расшифровка) = Тип("СправочникСсылка.ПодразделенияКомпании") // Или ТипЗнч(Строка.Область.Расшифровка) = Тип("СправочникСсылка.Организации") // Или ТипЗнч(Строка.Область.Расшифровка) = Тип("СправочникСсылка.Контрагенты") Если Не Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Строка.Область.Расшифровка)) Или ТипЗнч(Строка.Область.Расшифровка) = Тип("ДокументСсылка.Выписка") Тогда Продолжить; КонецЕсли; Контрагент = Строка.Область.Расшифровка.Контрагент; Прервать; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |