Спорим, вы не знали? Графы затрат в Бухгалтерии предприятия 3.0

05.03.19

Разработка - Механизмы типовых конфигураций

Получение графа затрат из БП, и просмотр онлайн.

В поисках причины "почему перестал закрываться 25й счет в БСХП" в отладчике дошел до общего модуля "РасчетСебестоимости" и процедуры "Рассчитать себестоимость". В которой оказался очень длинный комментарий с описанием методики расчета, основанной на графах.

Графы? Хм, это что-то из какого-там курса института. Ну, там, стрелочки и круглешки. Для решения задач по графам можно считать вершины, но это для самых простых задач. А еще формулы вроде были... Эх, давно это было.

А дальше я увидел вот что:

Процедура ЗаписатьОписаниеГрафаДляОтладки(Затраты, МенеджерВременныхТаблиц, Ссылка)
    
    // Записывает представление данных о затратах на языке Dot. 

    // Может содержать некоторые прикладные данные (наименования подразделений, номенклатурных групп).

    // Эти данные могут быть полезны для настройки распределения затрат.

    
    Если Не ОбщегоНазначенияКлиентСервер.РежимОтладки() Тогда
        Возврат;
    КонецЕсли;
        
    ЗаписьЖурналаРегистрации(
        ИмяСобытияЖурналаРегистрации("Отладка.ПредставлениеЗатрат"),
        УровеньЖурналаРегистрации.Информация,
        Метаданные.Документы.РегламентнаяОперация,
        Ссылка,
        ОписаниеГрафа(Затраты, МенеджерВременныхТаблиц));
    
КонецПроцедуры

Сохранение текстового описания графа в журнал регистрации?

Ввожу в параметрах конфигуратора "РежимОтладки", запускаю закрытие месяца, и...

Гуглим язык dot и википедия советует Graphviz. Ставим, скармливаем текст из ЖР, и... Падение. Скачиваю zip-версию, импорт, и... падение. В общем, Graphviz не захотел питаться моим файлом.

Но это не беда. Гуглим "dot vizualation online" и в конце концов

В общем, рекомендую https://dreampuf.github.io/GraphvizOnline, выбирайте engine=osage для более понятного линейного вида, и format=png для копирования правой кнопкой мыши и печати через paint длинной портянки. Вот такой:

(полная версия есть в скриншотах, надо "открыть картинку")

Ну вот и всё!

Мне была интересна сама возможность получить готовый граф затрат из БП. К сожалению, он оказался неудобочитаемым. Но для отъявленных программистов это не беда. Передаю знамя им.

Граф Затраты

См. также

СКД Механизмы типовых конфигураций Запросы Программист Платформа 1С v8.3 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

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

20.08.2024    2015    PROSTO-1C    0    

18

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Бесплатно (free)

Эта ошибка была обнаружена мной в типовой конфигурации 1С:Комплексная автоматизация 2 (2.5.16.115), БСП версия 3.1.9.302. Возникает она после того, как вы добавляете в расширение бизнес-процесс или задачу, выполняете обновление идентификаторов метаданных расширений, но ошибка при записи любого элемента справочника "Профили групп доступа" всё равно остаётся.

01.07.2024    2064    Vidz    0    

11

Механизмы типовых конфигураций Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

Очень часто в написании кода требуется обращаться к предопределённым значениям. Если идёт обращение к типовым предопределённым значениям, то проблем не возникает.

24.06.2024    1223    olja-ljaaa    0    

3

Механизмы типовых конфигураций Ценообразование, анализ цен Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Россия Абонемент ($m)

Продолжение темы вынесения кусков повторно-используемого кода в запрос. В прошлый раз мы сделали это с вычислением пользовательских формул. Здесь замахнулись на формулы, задаваемые пользователем запросами.

1 стартмани

11.04.2024    1191    tango    5    

3

Механизмы типовых конфигураций Программист Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Какому-либо элементу списка сопоставляется числовое значение, зависящее от других значений, причем эта зависимость изменяется от элемента к элементу. Так, в справочнике "Валюты" курс какой-либо валюты может быть задан формулой (или даже запросом) от значения другой валюты. А в справочнике "Виды цен" формула определяет расчет цены для товарной позиции, т.е. элементов справочника "Номенклатура", у которых в карточке указан этот вид цены. А в 1С:ERP, например, этот механизм используется в ресурсной спецификации.

10 стартмани

11.04.2024    947    tango    5    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Jokemas 193 05.03.19 13:30 Сейчас в теме
Забавно =). Оставлю в избранном, может когда пригодится.
2. EliasShy 48 05.03.19 14:00 Сейчас в теме
Тоже анализировал эту отладочную информацию, но по корректировке стоимости номенклатуры.

Простой граф из нескольких операций в чистой базе - как раз показал отсутствие одной вершины и привел к локализации ошибки в части корректировки стоимости с 10.11 счетом
Прикрепленные файлы:
Дмитрий74Чел; +1 Ответить
3. manlak 77 05.03.19 14:24 Сейчас в теме
4. Wolfis 7 05.03.19 16:00 Сейчас в теме
в ерп бы еще такую вещь
5. Дмитрий74Чел 239 05.03.19 18:00 Сейчас в теме
(4) есть обработка другого автора для УПП: Построение графа затрат РАУЗ
Из описания: данные для построения графа выбираются с помощью механизма СКД из регистра накопления УчетЗатратРегл.
Должна подойти и для ERP (ну может немного допилить). И отборы есть.
6. ILM 241 05.03.19 18:34 Сейчас в теме
Ну вот, теперь всё стало понятно! ))) Что там с 25м?
cdrw3; gigapevt; DivS; ZOMI; fancy; acanta; +6 Ответить
8. Дмитрий74Чел 239 05.03.19 18:58 Сейчас в теме
(6) я уж не копал. Коллега раскопал - доработки стороннего франча виноваты оказались.
7. acanta 05.03.19 18:41 Сейчас в теме
А зачем неудобочитаемый граф отъявленным программистам?
for_sale; +1 Ответить
9. PerlAmutor 155 05.03.19 20:40 Сейчас в теме
Раз уж графы не помогли найти причину. Дайте нам вашего коллегу, у нас регистр ПрочиеРасходы (услуги) не закрывается после перехода на партионный учет и 26 счет, так как расчет себестоимости не отражает некоторые документы распределения расходов на себестоимость. Уже третий месяц как мучаем.
10. gavks 9 06.03.19 14:01 Сейчас в теме
11. acanta 06.03.19 14:37 Сейчас в теме
мне тоже понравилось.
И еще вот это.
https://www.youtube.com/watch?v=n4tbdFD18vs
14. Дмитрий74Чел 239 06.03.19 15:36 Сейчас в теме
(11) точно, "я художник, я так вижу" :)
12. Glebis 13 06.03.19 14:49 Сейчас в теме
Я вижу статью так:

Квадратном трёхчлен? Хм, это что-то из какого-там курса института. Ну, там, стрелочки и круглешки. Для решения задач по квадратным трёхчленам можно считать дискриминант, но это для самых простых задач. А еще формулы вроде были... Эх, давно это было.

Спорим вы не знали? Я вычислил дискриминант в квадратном трёхчлене при помощи программы, он представлен как b^2-4ac.

Ну вот и всё!

Мне была интересна сама возможность вычислить дискриминант. К сожалению, он оказался неудобочитаемым. Но для отъявленных математиков это не беда. Передаю знамя им.


А как при помощи вычисления дискриминанта вычислять значение всего уравнения?
bendarik; eeeio; for_sale; +3 Ответить
13. Shmell 547 06.03.19 15:05 Сейчас в теме
Может пригодиться) спасибо за проделанную работу.
15. maksimov.andrey 1 07.03.19 12:29 Сейчас в теме
закрытие 25 по подразделениям с ручной базой доставило массу хлопот не так давно.....
никак не хотело закрываться одно подразделение, причем с аналогичными затратами и настройками другие подразделения закрывались без проблем.
граф не помог, помог проход по всей процедуре отладчиком. пользуясь случаем - передаю пламенный привет программистам агрософта....
16. PerlAmutor 155 07.03.19 15:28 Сейчас в теме
(15) Я уже в такой ситуации, когда хотелось бы, чтобы франч оказался виноват. Но мы перепробовали разные релизы, выкидывали доработки франча, а поведение системы не изменилось. Ну не нормально это, когда расчет себестоимости считает по разному две ситуации: один документ - куча строк в табличной части с разной аналитикой, и куча документов с одной строкой в табличной части, где все идентичное кроме аналитики (т.е. вместо строк табличной части создали по одному документу). В первом случае - регистр не закрывается, во втором - закрывается.
17. Brawler 458 08.03.19 11:23 Сейчас в теме
(16) это вы еще не видели как ERP в документе реализация задваивает проводки в бухне, когда реализация идет по нескольким заказам одновременно, а в одном из заказов в шапке документа не указано подразделение, и таких сюрпризов на ровном месте дочертища))
В релизе 2.4.7 так вообще на половину не работают Авансовые отчеты, так как 1С забыли права дать обычным юзерам, и только админы могут их провести, тупо кроме роли ПолныеПрава ни у одной другой роли нет права... там же в релизе 2.4.7 1С одним движением руки убрала документ кассовый чек коррекции и ничего в замен не дало для оптовой торговли, только для розницы... то есть от ПКО, РКО, эквайринговой операции не пробить чек коррекции по не применению ККТ вовремя... только от документа ЧекККМ, но он розничный этот документ...
for_sale; molodoi1sneg; +2 Ответить
18. Омский Домовой 408 09.03.19 23:19 Сейчас в теме
Чем больше Вам забили мозги в институте всяким дерьмом тем сложнее Вас понять.
По сути - просто нужно понимать то с чем Вы боретесь (или пытаетесь бороться), а не решать систему линейных уравнений которую написали такие же Умники.

Для решения проблемы для начала изучите азы бухгалтерии , а Графы и Графины тут ни причем
22. Polav62 340 29.10.20 11:17 Сейчас в теме
(18)Это какой-то классический пример «профессионального» юмора.
Граф является математической, т.е. чистой структурой, состоящей из узлов и ребер (или дуг). Эта структура может использоваться для теоретического описания любых явлений эмпирической реальности, в которых объекты взаимодействуют друг с другом. В системе бухгалтерского учета, основанной на методе двойной записи, узлами графа выступают счета учета, а их корреспонденции – дугами.
Поскольку граф является чистой структурой, то его, как и любую другую чистую структуру, нельзя наблюдать непосредственно в эмпирической реальности, его можно только мысленно представлять. Для того, чтобы эта структура стала практически полезной, ее нужно как-то представить в виде знаков, поэтому используются различные формы представления графов – табличная, геометрическая (как в статье) или с помощью множеств. Например, журнал хозяйственных операций, регистры учета затрат и т.п. – это классическое представление графа с помощью таблицы, но этот же граф можно представить и в виде рисунка, т.е. в геометрической форме, а также с помощью упорядоченных пар корреспондирующих счетов учета.
Сказать, что в системе бухгалтерского учета не используются графы – это, например, то же самое, что сказать – для отражения количества и стоимости не используются числа, поскольку любые числа также являются элементами соответствующей числовой (чистой) структуры – множества натуральных чисел, множества действительных чисел и т.п.
Система бухгалтерского учета не может обойтись без математических структур – чисел, графов и т.д., теория бухгалтерского учета «работает» именно с этими структурами, странно, что этого многие не понимают, наверное, действительно во время учебы в институте считали, что не стоит забивать голову знаниями – т.е. всяким де…мом.
И по поводу СЛАУ. Для каждого счета учета должно выполняться балансовое (линейное) уравнение. Поскольку счетов учета много, то и уравнений много, и они должны выполняться одновременно, «особенно» при расчете себестоимости. Обычно это и называется системой уравнений. Но, наверное, Вы правы, не всем надо этим голову «травмировать», а то голова может сломаться, пусть лучше этим Умники занимаются.
Vasas2007; +1 Ответить
19. acanta 09.03.19 23:38 Сейчас в теме
Разработчики 1с не читают инфостартов. И бороться с этим фактом бесполезно.
Но для того, чтобы смириться с какой-то проблемой, мы все проходим через три стадии:
Возмущение
Понимание
Принятие.
Инфостарт облегчает нам переход от возмущения к пониманию, а от понимания к принятию нас приведут заказчики( если конечно будут).
Потому что вы не сможете удовлетворить заказчика, если будете чувствовать возмущение по отношению к предлагаемому предмету (1с сырая и т.п.)
20. ILM 241 15.06.19 17:07 Сейчас в теме
Только сейчас увидел, платформа то "лицензионная"...
21. swimdog 773 17.06.19 19:03 Сейчас в теме
(20) Наверняка дома статью писал))
23. Polecat 2 17.05.24 17:39 Сейчас в теме
Тем у кого не закрываются счета затрат в типовой бухгалтерии 3.0. В общем модуле РасчетСебестоимости в процедуре ЗаполнитьГрафЗатрат иногда вылезает косяк. В первом запросе, где заполняются вершины, при агрегатном суммировании, полученные числа зачем-то округляются до 6 знаков после запятой. И это критично, если соотношения получаются с бОльшим значением символов после запятой, потому что из-за этого округления, значимые разряды срезаются и, как следствие, вес не складывается в единицу. А он должен складываться в единицу. На выходе процедуры граф получается не корректным и весь остальной расчет можно смело утилизировать. Как вариант решения данной проблемы - в запросе можно временно уменьшить количество разрядов после запятой умножением веса на 100 и последующим делением. Запрос в этом случае будет выглядеть так:

"ВЫБРАТЬ
	|	Вершины.Идентификатор КАК Идентификатор,
	|	Вершины.РазделУчета КАК РазделУчета,
	|	СУММА(Вершины.КоличествоМатериала) КАК КоличествоМатериала,
	|	(СУММА(Вершины.Вес)) / 100 КАК Вес,
	|	СУММА(Вершины.Сумма) КАК Сумма,
	|	СУММА(Вершины.СуммаНУ) КАК СуммаНУ,
	|	СУММА(Вершины.СуммаПР) КАК СуммаПР,
	|	СУММА(Вершины.СуммаВР) КАК СуммаВР
	|ИЗ
	|	(ВЫБРАТЬ
	|		Ключи.Идентификатор КАК Идентификатор,
	|		Ключи.РазделУчета КАК РазделУчета,
	|		0 КАК КоличествоМатериала,
	|		0 КАК Вес,
	|		0 КАК Сумма,
	|		0 КАК СуммаНУ,
	|		0 КАК СуммаПР,
	|		0 КАК СуммаВР
	|	ИЗ
	|		ИдентификаторыВершин КАК Ключи
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		Ключи.Идентификатор,
	|		Ключи.РазделУчета,
	|		0,
	|		Вершины.Количество * 100,
	|		Вершины.Сумма,
	|		Вершины.СуммаНУ,
	|		Вершины.СуммаПР,
	|		Вершины.СуммаВР
	|	ИЗ
	|		НачальноеСальдо КАК Вершины
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ КлючиВершин КАК Ключи
	|			ПО Вершины.Счет = Ключи.Счет
	|				И Вершины.Подразделение = Ключи.Подразделение
	|				И Вершины.Субконто1 = Ключи.Субконто1
	|				И Вершины.Субконто2 = Ключи.Субконто2
	|				И Вершины.Субконто3 = Ключи.Субконто3
	|				И Вершины.Номенклатура = Ключи.Номенклатура
	|				И Вершины.КорСчет = Ключи.КорСчет
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		Ключи.Идентификатор,
	|		Ключи.РазделУчета,
	|		Вершины.КоличествоМатериала,
	|		Вершины.Количество * 100,
	|		Вершины.Сумма,
	|		Вершины.СуммаНУ,
	|		Вершины.СуммаПР,
	|		Вершины.СуммаВР
	|	ИЗ
	|		Поступления КАК Вершины
	|			ВНУТРЕННЕЕ СОЕДИНЕНИЕ КлючиВершин КАК Ключи
	|			ПО Вершины.Счет = Ключи.Счет
	|				И Вершины.Подразделение = Ключи.Подразделение
	|				И Вершины.Субконто1 = Ключи.Субконто1
	|				И Вершины.Субконто2 = Ключи.Субконто2
	|				И Вершины.Субконто3 = Ключи.Субконто3
	|				И Вершины.Номенклатура = Ключи.Номенклатура
	|				И Вершины.КорСчет = Ключи.КорСчет
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		Вершины.Приемник,
	|		Вершины.РазделУчетаПриемник,
	|		0,
	|		0,
	|		-Вершины.Сумма,
	|		-Вершины.СуммаНУ,
	|		-Вершины.СуммаПР,
	|		-Вершины.СуммаВР
	|	ИЗ
	|		Выбытия КАК Вершины
	|	ГДЕ
	|		НЕ Вершины.Приемник ЕСТЬ NULL 
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		БазыРаспределения.Источник,
	|		""Расходы"",
	|		0,
	|		БазыРаспределения.База * 100,
	|		0,
	|		0,
	|		0,
	|		0
	|	ИЗ
	|		РаспределениеНаРасходы КАК БазыРаспределения
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		БазыРаспределения.Идентификатор,
	|		""Расходы"",
	|		0,
	|		БазыРаспределения.База * 100,
	|		0,
	|		0,
	|		0,
	|		0
	|	ИЗ
	|		РаспределениеНаСубконто КАК БазыРаспределения) КАК Вершины
	|
	|СГРУППИРОВАТЬ ПО
	|	Вершины.Идентификатор,
	|	Вершины.РазделУчета
	|
	|УПОРЯДОЧИТЬ ПО
	|	Идентификатор";
Показать
24. Дмитрий74Чел 239 17.05.24 23:00 Сейчас в теме
(23) А как понять что в базе именно такой случай?
25. Polecat 2 20.05.24 13:48 Сейчас в теме
Эта ситуация проявляется далеко не всегда. Если у Вас счета всегда нормально закрывались, и в один прекрасный месяц вдруг никак не могут закрыться без видимых на то причин, то можно попробовать сделать такую доработку и проверить результат. У меня причина ошибки была именно в этом запросе, но предполагаю, что она может выстрелить и в другом участке расчета графа. Еще добавлю, что у нас база файловая. Не известно, проявляется ли такая подлянка в работе запросов в клиент-серверном варианте.
Оставьте свое сообщение