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

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

Версия ПО: 1С:Предприятие 8.2 (8.2.13.205) Бухгалтерия предприятия, редакция 2.0 (2.0.18.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с «Выгрузить в файлы»).

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

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

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

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

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

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

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

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

Вариант 1

Вариант 2

Первые 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(пробелы между числами).

Читайте также:  nioh 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С

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

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

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

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

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

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

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

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

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

Вариант 1

Вариант 2

Первые 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С:Предприятие» через меню «Все функции» открываем Справочник «Дополнительные отчеты и обработки».

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

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

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

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

Читайте также:  как сделать нового администратора на виндовс 10

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

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

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

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Новое:

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

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

Источник

Компьютерный онлайн портал