1с как посмотреть код обработки

Как создать или где посмотреть код модуля внешней обработки для создания счет-фактуры

1с как посмотреть код обработки

1с как посмотреть код обработки

Версия ПО: 1С:Предприятие 8.2 (8.2.13.205) Бухгалтерия предприятия, редакция 2.0 (2.0.18.1)

Дайте мне правильное направление где можно посмотреть код для создания счета. То, что можно поглядеть в конфигурации это понятно. Я имею ввиду в случае внешней обработки.

1с как посмотреть код обработки

1с как посмотреть код обработки

Нужно направление как создавать внешние обработки?

1с как посмотреть код обработки

1с как посмотреть код обработки

Иходные данные у меня представлены в виде текстового файла:
+——+
СЧЕТ-ФАКТУРА: 753
Лсчет: 26743
Покупатель: Название покупателя
Договор: Номер договора
Шапка: Наименование товара | Единица | Колво | Цена | Стоимость | НДС | СуммаНДС| Сумма
Шапка: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8
Метка:абонплата за основной телефон | июнь 2012 г.| 1| 198.00| 198.00| 18%| 35.64| 233.64
Метка:телефон оплата за базовый объем | июнь 2012 г.| 1| 144.00| 144.00| 18%| 25.92| 169.92
Метка:местные соединения жуковский | июнь 2012 г.| 1| 37.52| 37.52| 18%| 6.75| 44.27
Метка:Межгород | июнь 2012 г.| 1| 131.57| 131.57| 18%| 23.68| 155.25

Источник

Извлечение текстов модулей из внешней обработки 1С

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

1с как посмотреть код обработки

Для внешней обработки формируется следующая структура каталогов.

1с как посмотреть код обработки

Текст модуля обработки выгружается в файл «\Ext\ObjectModule.bsl«.

Тексты модулей управляемых форм — в файлы с расширением «.bsl«: «\Forms\НазваниеФормы\Ext\Form\Module.bsl«.

А вот обычные (не управляемые) формы выгружаются в следующие двоичные файлы: «\Forms\НазваниеФормы\Ext\Form.bin«.

Пришлось повозиться с парсингом этих бинарных файлов. Зато опробовал новую (для меня) возможность платформы работы с бинарными файлами

Файл с данными обычной формы представляет из себя бинарный файл с блоками данных.

Блоки разделены секциями, состоящими из 3-х 16-ричных чисел, оканчивающихся числом 7fffffff.

В процессе анализа некоторого количества обработок обнаружилось 2 варианта расположения блоков.

Вариант 1

1с как посмотреть код обработки

Вариант 2

1с как посмотреть код обработки

Первые 3 блока в моей выборке обработок всегда начинались с одних и тех же адресов : 00000012(hex) или 18(dec), 00000231(hex) или 561(dec), 00000270(hex) или 624(dec).

Я остановился на следующем алгоритме определения необходимой секции, содержащей код модуля формы.

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

Если Вы владеете информацией по данному формату, буду рад увидеть Ваш комментарий к данной публикации 🙂

Если последнее число 3-го блока = 7fffffff, считаю, что это первый вариант расположения блоков. В остальных случаях — второй вариант.

Для первого варианта

Начало блока с текстом модуля формы совпадает с началом 4-го блока (необходимо только пропустить секцию с 3-мя цифрами), т.е. это в 10-чной системе счисления: 691(начало 4-го блока) + 8*3(3 16-чных числа) + 2(пробелы между числами).

Т.е. считаю, что это всегда 717 (dec)

Адрес окончания текстового блока — второе число секции из 3-х чисел + смещение на константу 000002D2(hex) или 722(dec).

Для случая, приведенного на скриншоте (см. выше) получаем:

где 551(dec) это 00000227(hex)

Для второго варианта

Анализируем секцию из 3-х чисел блока 3.

Адрес начала блока с кодом 1С — второе число (к этому числу необходимо еще добавить смещение на константу 722(dec) и размер секции из 3-х чисел 26(dec)).

Для случая, приведенного на скриншоте (см. выше) получаем:

где 127773(dec) — это 0001F31D(hex)

Адрес окончания блока с кодом 1С — третье число.

Для случая, приведенного на скриншоте (см. выше) получаем:

где 471603(dec) — это 00073233(hex)

Для чтения из двоичного файла написал процедуру:

Ну в заключении, чтобы не «бегать» в конфигуратор для выгрузки обработки в файлы, добавил выгрузку с помощью пакетного запуска конфигуратора 1С с выводом на экран результата выполнения данной выгрузки:

Ссылка на обработку на infostart и на github

Источник

Извлечение текстов модулей из внешней обработки 1С

Лень в очередной раз сподвигла меня на доработку существующего инструментария.

1с как посмотреть код обработки

Для внешней обработки формируется следующая структура каталогов.

1с как посмотреть код обработки

Текст модуля обработки выгружается в файл «\Ext\ObjectModule.bsl«.

Тексты модулей управляемых форм — в файлы с расширением «.bsl«: «\Forms\ НазваниеФормы \Ext\Form\Module.bsl«.

А вот обычные (не управляемые) формы выгружаются в следующие двоичные файлы: «\Forms\ НазваниеФормы \Ext\Form.bin«.

Пришлось повозиться с парсингом этих бинарных файлов. Зато опробовал новую (для меня) возможность платформы работы с бинарными файлами

Файл с данными обычной формы представляет из себя бинарный файл с блоками данных.

Блоки разделены секциями, состоящими из 3-х 16-ричных чисел, оканчивающихся числом 7fffffff.

В процессе анализа некоторого количества обработок обнаружилось 2 варианта расположения блоков.

Вариант 1

1с как посмотреть код обработки

Вариант 2

1с как посмотреть код обработки

Первые 3 блока в моей выборке обработок всегда начинались с одних и тех же адресов : 00000012(hex) или 18(dec), 00000231(hex) или 561(dec), 00000270(hex) или 624(dec)

Я остановился на следующем алгоритме определения необходимой секции, содержащей код модуля формы.

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

Если Вы владеете информацией по данному формату, буду рад увидеть Ваш комментарий к данной публикации 🙂

Если последнее число 3-го блока = 7fffffff, считаю, что это первый вариант расположения блоков. В остальных случаях — второй вариант.

Для первого варианта

Начало блока с текстом модуля формы совпадает с началом 4-го блока (необходимо только пропустить секцию с 3-мя цифрами), т.е. это в 10-чной системе счисления: 691(начало 4-го блока) + 8*3(3 16-чных числа) + 2(пробелы между числами). Т.е. считаю, что это всегда 717 (dec)

Адрес окончания текстового блока — второе число секции из 3-х чисел + смещение на константу 000002D2(hex) или 722(dec).

Для случая, приведенного на скриншоте (см. выше) получаем:

где 551(dec) это 00000227(hex)

Для второго варианта

Анализируем секцию из 3-х чисел блока 3.

Адрес начала блока с кодом 1С — второе число (к этому числу необходимо еще добавить смещение на константу 722(dec) и размер секции из 3-х чисел 26(dec)).

Для случая, приведенного на скриншоте (см. выше) получаем:

где 127773(dec) — это 0001F31D(hex)

Адрес окончания блока с кодом 1С — третье число.

Для случая, приведенного на скриншоте (см. выше) получаем:

где 471603(dec) — это 00073233(hex)

Для чтения из двоичного файла написал процедуру:

Ну в заключении, чтобы не «бегать» в конфигуратор для выгрузки обработки в файлы, добавил выгрузку с помощью пакетного запуска конфигуратора 1С с выводом на экран результата выполнения данной выгрузки:

Ссылка на обработку на infostart и на github

Источник

Инструкция: как открыть и запустить внешнюю обработку или отчет в 1С

Материал поможет вам разобраться, как запустить любую внешнюю обработку или отчет в информационной базе «1С:Предприятие» 8.2 и 8.3.

Внешняя обработка — это инструмент для создания модификаций прикладных решений 1С без изменения типовой структуры конфигурации. Весь код внешней обработки хранится в отдельных файлах с расширением *.epf.

Рассмотрим последовательность шагов для работы с готовым файлом обработки или отчета.

1. В режиме «1С:Предприятие» через меню «Все функции» открываем Справочник «Дополнительные отчеты и обработки».

1с как посмотреть код обработки

1с как посмотреть код обработки

2. В открывшемся окне Справочника, нажимаем кнопку «Создать».

1с как посмотреть код обработки

В результате открывается окно с предложением выбрать файл внешнего отчета или обработки. Указываем требуемую внешнюю обработку и нажимаем кнопку «Открыть».

1с как посмотреть код обработки

3. Далее, форма автоматически заполняется данными из внешней обработки. Необходимо обратить особое внимание на поле «Назначение» — в нем указывается имя Объекта из которого вызывается данная внешняя обработка.

1с как посмотреть код обработки

Если это поле не заполнено, то обработку просто не откуда будет вызывать.

И последнее, нажимаем кнопку «Записать и закрыть» и только после этого нужно открыть Объект и пользоваться внешней обработкой.

Что нового для вашей 1С?

Рассылка осуществляется в день выхода обновления. Никакой рекламы, только полезная информация. Посмотрите пример →

Источник

Анализ процедур и функций (структура кода)

Глубокая переработка своей консоли запросов подтолкнула меня к поиску, а затем и созданию, инструмента для анализа взаимосвязей процедур и функций модуля и различных форм обработки.

Я лучше воспринимаю графическое представление и для целей анализа структуры кода мне изначально подошла следующая обработка «Граф вызовов для модулей 1С…», которая парсит предложенный текст на процедуры и функции, строит дерево взаимосвязей и рисует по полученным данным связанный граф в виде картинки.
Все прекрасно, но при большом объеме кода граф получается перегружен и не всегда удачно формируется с точки зрения визуализации.
Затем указанную обработку доработал Павел Заяш (Pavl0), добавив возможность выгрузки в формате gml. Это значительно повысило возможности визуализации полученного графа.

Но хотелось еще большего удобства 🙂

Так, было бы не плохо анализировать выбранный список функций и процедур, анализировать асинхронные вызовы, выводить граф используемых и/или использующих процедуры и/или функции из списка.

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

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

Шаблон для процедур и функций получил следующий: « ^Процедура([^КонецПроцедуры].*\n+)+КонецПроцедуры » и « ^Функция([^КонецФункции].*\n+)+КонецФункции »
Шаблон для процедур и функций с параметрами такой: « ^Процедура([^\)])+\) » и « ^Функция([^\)])+\) »
Шаблон для имени процедур и функций: « ^Процедура([^\(])+\( » и « ^Функция([^\(])+\( »
Формат gml достаточно хорошо описан здесь у разработчика программы yEd, читающей этот формат.

Для моих целей на текущий момент оказалось достаточно следующих блоков gml:

В итоге получил следующий инструмент «АнализПроцедурИФункций»:

Это нельзя назвать законченным решение, но первичный анализ он проводить уже позволяет.

Вы можете поучаствовать в развитие разработки на github.

Разработка велась на платформе: 8.3.11.2954.

Ограничения и обнаруженные ошибки можно посмотреть здесь

Новое:

— добавлена загрузка модулей из файлов, выгруженных с помощью функционала платформы 1с «Выгрузить в файлы»
— добавлена выгрузка обработки в файлы (через пакетный вызов конфигуратора)

Подробнее добавленный функционал описан в статье «Извлечение текстов модулей из внешней обработки 1С»

Источник

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

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