Кулинарная книга кода 1С. 1C Code Cook Book
Тут собраны все известные мне рецепты по программированию для 1С8. Для общей пользы!

- Стиль кода и приемы разработки
- Платформа
- Управляемые формы
- Отладка
- Тестирование
- Прикладное. Движение товаров
- Прикладное. Движение денег
- Администрирование базы данных 1С
- Торговое оборудование
- Выгрузка загрузка в файлы
- Обмены данными между 1С базами
- Интеграция с другими системами
- Инструментарий
- Инструкции пользователям
Стиль кода и приемы разработки
Доработки парсингом
До появления расширений парсинг был единственным удобным автоматизированным способом доработки типовых конфигураций. Сейчас его в большей части заменили расширения. Но способ хороший.
Доработки в специальных локальных модулях
1С в некоторых местах вставляет вызовы пустых процедур из модулей, которые можно снять с поддержки и таким образом писать там свой код. Такие модули имели в названии Локальный. Но это реализовывается не универсально, а только для отдельных функций. Было полезно до появления расширений. Сейчас более универсально использовать расширения.
Платформа
Версии платформ и Downgrade
На некоторых релизах платформы происходят изменения формата данных, после которых базы данных, конфигурации, расширения не открываются в более младших релизах. С внешними обработками получше — они меньше подвержены изменениям.
Известные мне переходы:
- 8.5.1
- 8.3.27
- 8.3.24
- 8.2
- 8.1
База данных автоматически может перейти на новый формат, частично от этого можно защититься через режим совместимости, но он отрабатывает не всегда корректно. База формально может остаться в совместимости со старым форматом, открываться на старой платформе, но изменения в конфигурацию сделать уже будет нельзя. Поэтому полезно вести архивы конфигураций.
Downgrade — это выгрузка конфигурации в прошлый формат платформы. Я делал попытку downgrade через формат базы данных, но не вышло. Можно выгрузить файлы конфигурации в старой и новой платформе и найти различия между ними, таким образом, написав downgrade-конвертор. Но этим никто не занимался.
Для запуска базы 1с на любой версии платформы достаточно содержимого каталога bin из установленной программы, приложение портабельное. Запускать лучше файл 1cv8.exe из папки, можно создать на него ярлык на рабочем столе с подписью версии.
Можно создать каталог таких папок bin нужных версий 1С и запускать базу в нужном приложении. Название папки может быть, например 1s_8.5.1.1150_bin_64.
Для получения папки bin можно установить нужный релиз, скопировать папку bin, потом удалить установленный релиз. Копировать, а не перемещать, чтобы нормально отработало удаление.
Контекст выполнения
Типовой код 1С славится тем, что происходит потеря контекста выполнения, 1С передает внутрь процедур только то, что считает нужным.
Можно попытаться передать контекст с помощью сохранения контекста в служебном параметре сеанса пользователя, методом спуска параметра (еще пример). Однако нужно быть осторожным — если код будет использовать фоновое задание, то у фоновых заданий свои параметры сеанса, поэтому контекст будет не доступен.
Стек вызовов процедур
Программно стек вызовов процедур можно получить, вызвав ошибку и получив детальное ее описание.
Потеря стека. Однако стек не начинается всегда от момента вызова события. Если выполнение события завершается открытием формы и прекращением работы кода, то выполнение кода прекращается и стек создается уже начиная с событий формы, что логично для асинхронности, даже если форма открыта модально. Также стек стартует заново при вызове фоновых заданий, причем в режиме отладки задания не стартуют и вы можете думать, что у Вас все хорошо работает, но потом получить ошибку.
Защита модулей конфигурации
Управляемые формы
Использование обработчиков ожидания вместо прямых вызовов
Если при открытии формы сразу ее закрыть в ПриОткрытии, то не отработают обработчики закрытия формы. В таких случаях нужно подключать одноразовый обработчик ожидания, который и закроет форму сразу при ее открытии.
При активизации строки нельзя вызывать сервер, это чревато различными «глюками». Можно попробовать вызывать сервер без контекста, но лучше подключить одноразовый обработчик ожидания и выполнить нужный код, включая серверный, в нем.
Вызов серверных методов формы
Если передавать форму как параметр метода в общий клиентский модуль, то из клиентского модуля ее нельзя передавать на сервер. Хотя в самой форме в серверных процедурах можно передавать форму на сервер. Выход в создании у формы серверных методов, тогда их можно вызывать даже из общих клиентских модулей.
Отладка
В табло можно менять значения переменных, причем даже в виде переменных, вызывая функции.
Если в условной точке останова сделать функцию с выводом сообщения, она будет трассировать код, выводя его в окно сообщений, посмотреть можно будет потом в режиме Предприятия.
Есть особый параметр запуска РежимОтладки, при котором вместо фоновых заданий запускается не в фоне, для удобства отладки.
В серверных базах служба агента сервера 1С должен запускаться со специальным параметром -debug, чтобы работала отладка. Отлаживать можно и веб-сервисы 1С при должных настройках.
В случае, когда отладку подключить нельзя, можно использовать трассировку, можно для этого добавить временное расширение.
Тестирование
После обновления полезно простое тестирование, которое открывает формы всех прикладных объектов — справочников, документов, отчетов, обработок. При этом фиксируются ошибки и можно посмотреть в журнале регистрации ошибки применения расширений.
Дополнительные отчеты и обработки
Часто при открытии внешних отчетов или обработок из файла возникает ощущение, что работаешь со старой версией отчета — недоступны новые добавленные параметры. Дело в том, что дополнительные внешние обработки кэширутся в сеансе, если они добавлены в справочник внешних обработок и отчетов. Поэтому самый простой способ — изменить имя отчета, добавить например в конце подчеркивание. И 1С уже не будет путать его с закэшированной версией и будет считать отчет отдельным, другим.
Прикладное. Движение товара
Контроль остатков
Если не понятно, почему 1с пишет о нехватке остатков, можно временно отключить контроль остатков и посмотреть, какие движения сформируются. Иногда 1С ожидает соответствие заказу или комисионный товар.
1С контролирует остатки на момент текущей даты после проведения документов, поэтому иногда контроль срабатывает и при попытке распровести приходный документ, ведь тогда получится на текущий момент минус. В более ранних версиях остатки контролировались на момент до документа.
Прикладное. Движение денег
Администрирование базы данных 1С
Торговое оборудование
Выгрузка загрузка в файлы
Обмены данными между 1С базами
Интеграция с другими системами
Инструментарий
Мультитулы
- Универсальные инструменты 1С для управляемых форм — самый популярный набор с открытым кодом. Поставляется расширением и отдельными обработками.
- Инструменты разработчика — набор инструментов для обычных форм с открытым кодом. Интерфейс и логика авторские, Сергея Tormoz IT, не всякому зайдут.
Инструменты
Опишу инструменты, которые существенно облегчат жизнь программисту
Администрирование
- АРМ администратора рабочий стол — запуск от имени другого пользователя. УФ. Обработка.
Выгрузка-загрузка
- Выгрузка-загрузка данных XML — выгрузка данных между одинаковыми конфигурациями. Изначально была под ОФ в составе КД2, нужно использовать переделанную под УФ версию. Обработка.
- Загрузка табличных документов — загрузка данных из таблиц. Универсальная. УФ.
- Выгрузка-загрузка JSON между различными конфигурациями — позволяет обмениваться данными даже если реквизиты отличаются.
Инструкции пользователям
В разделе описаны готовые ссылки на инструкции пользователям.



Свежие комментарии