Страницы: 1
RSS
Оборотно-сальдовая ведомость. Обработка VBA
 
Приветствую, коллеги подскажите, может у кого есть более рациональное решение.
На картинках привел пример одного из вариантов ОСВ в Excel. Работать с таким форматом крайне не удобно, надо перестроить таблицу в массив в vba и затем вывести нужный вид, проблема в правильном считывании строк.

Я в названии файла обязательно задаю номер счета (в примере 60). VBA по столбцу с контрагентами сверху вниз ищет, где строка начинается на 60. Признаю содержимое этой строки номером счета. Далее в следующей строке, если она не начинается на 60, то начинается список контрагентов по этому субсчету, если начинается на 60, то перезаписываю переменную номер счета. и т.д. пока не дойдет до конца таблицы.

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

Плюс сохраняется проблема в считывании строки ИТОГО, ее не надо считывать, но наименования в разных версиях могут быть разные.

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

Файлы удалены: превышение допустимого размера вложения [МОДЕРАТОР]
Изменено: Boris05036 - 24.05.2018 09:47:44
 
Стандартная выгрузка для геморойного анализа...сталкивался с таким в одной компании в 1С, это ппц) Ну вообще у вас вроде неплохое решения с учетом данной задачи, что касается строки "Итого", добавьте его в исключение, типа если строка начинается на "Итого", то не считывать. Но лучше всего сделать что бы из программы выгружалось сразу нормальное представление отчета.  
 
DopplerEffect, это стандартная выгрузка, я такие от разных компаний получаю, поэтому там даже вид разный может быть в зависимости от версии 1с... С разными видами буду бороться указанием колонок
 
Доброе утро! В настройке-детализация-убрать галочку "по счетам". На форуме встечалась инструкция по настройке 1С.
 
Доброе время суток.
Думаю проще выявлять строки контрагентов по уровню отступа в строке. Судя по картинкам, сейчас это IndentLevel = 2
 
Цитата
Андрей VG написал:
проще выявлять строки контрагентов по уровню отступа в строке
+100. Полностью согласен.
А итоги можно еще отсекать и по жирному шрифту. Судя по скринам - он только в итоговой строке.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Андрей VG написал:
Думаю проще выявлять строки контрагентов по уровню отступа в строке.
В данном случае можно привязаться к значению, а не к форматированию. Первый символ должен быть не цифра.
Неизлечимых болезней нет, есть неизлечимые люди.
 
 Товарищи, поясню
я не могу отредактировать 1с, это не мои выгрузки, я их получаю от разных компаний, только стандартные.

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

плюс бывает, что без формирования, но на моем опыте это как раз, когда номер счёта отсутствует внутри таблицы и там вопрос определения начала списка контрагентов
 
Цитата
Boris05036 написал:
... плюс бывает, что без формирования, но на моем опыте...
Всяко бывает... В Вашем случае непонятно, что за результат нужен? От результата будет и решение.
Неизлечимых болезней нет, есть неизлечимые люди.
 
TheBestOfTheBest, как уже написал для помещения в массив и дальнейшей обработки необходимо правильно считать контрагентов и субсчета, по которым они проходят
 
Ну так помещайте, вам же критерий счет/контрагент подсказали в #7
Неизлечимых болезней нет, есть неизлечимые люди.
 
Цитата
когда номер счёта отсутствует внутри таблицы и там вопрос определения начала списка контрагентов
Приложите пример в формате Excel различных видов таблиц
 
TheBestOfTheBest, такой признак не пройдет, у контрагента может быть и цифра первая, разные наименования бывают плюс компании иногда какой-то свой признак в наименовании контрагента могут проставить в виде цифры
 
Kuzmich, могу фото сделать, с рабочего компа нельзя так делать
 
Странный подход у Вас, декларируете один источник данных, потом говорите что решение должно подходить к другому источнику данных, где данные другие и вообще все не так!
Для решения Вашей проблемы придется для каждого источника писать свой алгоритм.
Как вариант: если строка = "60" это счет, если левые 3 символа "60." - субсчет, остальное контрагенты.
Неизлечимых болезней нет, есть неизлечимые люди.
 
Offtop
Цитата
TheBestOfTheBest написал:
Странный подход у Вас, декларируете один источник данных, потом говорите что решение должно подходить к другому источнику данных, где данные другие и вообще все не так!
Коллега, вы прям как маленький. Почти все ТС ищут "серебряную пулю" чтобы раз и в дамках  :D
Цитата
Boris05036 написал:
там вопрос определения начала списка контрагентов
Тогда тупо составляете справочник контрагентов в отдельной книге. В процессе обработки помечаете строки с распознанными. Если кто не распознавался, то в справочник и  уже теперь на обработку.
 
Вот скриншоты различных вариантов
хочу написать что-то общее, под каждый вариант пользователь не будет заморачиваться с выбором

Замечание в первом сообщении ничему не учит?[МОДЕРАТОР]
 
Уважаемый Boris05036! Скриншоты в таких случаях мало полезны. Скопируйте в новую книгу фрагмент(ы) реальных данных, замените все суммы на 0, наименования контрагентов на условные (ООО Альфа1, ООО Альфа2, ...), ИНН на нули (сохраняя значность) и, с полного одобрения руководства, выложите файл или ссылку на него.
Владимир
 
Скринов, к сожалению уже нет, поэтому затрудняюсь сказать правильно думаю сейчас или нет.
Но когда я делал анализ дебиторов-кредиторов, прочую очистку от "внутренних" оборотов, дополнительно использовал список контрагентов-клиентов.
Во всяком случае список "своих контрагентов" у них точно есть, даже с номерами счетов
В 1С есть такой справочник и отчет.
Можно попросить клиента присылать и этот отчет, а потом просто подружить данный отчет с обороткой.
Как найти вхождения одного списка в другой список частично здесь есть отдельная тема
так даже оборотку по  кассе и р.сч чистил. оставлял только внешних контрагентов, т.к как командированный может взять наличкой из кассы. а потом у него возврат с его личного счета делают. Или Директор на вечеринку из кассы под отчет берет. а зам потом возвращает
Изменено: Sobes - 24.05.2018 15:20:57
 
Sobes, спасибо за наводку, обдумаю
вопрос с отсутствующим счетом я уже разрешил поиском в сочетании с поиском наличия сумм в строке

так что случай свелся только к отделению субсчета от контрагента и итого, думаю, что это решу только тем способом, что в первом сообщении описал
 
Цитата
Boris05036 написал:
разрешил поиском в сочетании с поиском наличия сумм в строке
Увы. суммы при огромном количестве оборотов часто дублируются :)
И будете потом расхождения искать, так как суммы задваиваются и затраиваются.
 
Sobes, это на случай, когда счета нет в строках, тогда там кроме итого больше ничего нет
 
Boris05036,
Может мы просто о разных вещах говорим, тогда извините.  
просто не знаю Вашей конечной цели, но говорю сейчас про очистку всех оборотов от внутренних, т.е про "чистые" обороты, которые учитываются при расчете коэффициентов кредитоспособности.
Как вы будете кассу чистить, если там счета не задействованы, а только ФИО сотрудников, посторонних  и.т.д?.
Под каждого отдельный субсчет открывается? Тогда все эти субсчета надо знать свой-чужой, что тоже требует списка "своих"
Например, командированный может взять наличкой из кассы,завхоз под отчет,  а потом у него возврат с его личного счета делают. Или Директор на вечеринку из кассы под отчет берет. а зам потом возвращает.
 
Sobes, моя цель пока что правильно считать ОСВ в массив по контрагентам и субсчетам, а дальше уже проще работать с ними
 
Boris05036,
понятно. Только если не запросить списка контрагентов у клиента, (что занимает гораздо меньше времени. чем формирование ОСВ), можно использовать хрустальный шар
 
Цитата
Sobes написал:
Как вы будете кассу чистить, если там счета не задействованы, а только ФИО сотрудников, посторонних  и.т.д?.
Боюсь, у несведующих читателей может сложиться крайне искаженное представление о порядке ведения бухгалтерского учета.
Владимир
 
sokol92,
Если несведующие читатели будут выдергивать отдельные слова из контекста, то они могут прочитать и следующие:
"Как кассу чистить, если Директор на вечеринку из кассы берет, а Зам потом ФИО сотрудников требует и возврат с их личного счета?"
Не передергивайте :)  
Изменено: Sobes - 24.05.2018 16:26:48
 
Читаем документ  :) .
Владимир
 
Народ, ну вы и разошлись
 
Пора в курилку переносить.
sokol92,
Я имел ввиду, что НЕ ЗАДЕЙСТВОВАНЫ ЛИЦЕВЫЕ счета контрагентов, а используются счета дебиторки- кредиторки, со сводным субсчетом, куда валится весь шлам. так как бухгалтеру лень под каждого нового рогоносца, который принес копыта в контору по заготовке Рогов и Копыт  новый счет открывать.
Страницы: 1
Наверх