Мне частенько приходится взаимодействовать с 1С-разработчиками, и во время совместной работы над проектами замечаю, что далеко не все из них хорошо знают свой главный инструмент – «Конфигуратор». Причем это не относится к степени крутости девелопера. Как оказалось, даже синьоры пользуются далеко не всеми возможностями «Конфигуратора», а ведь они могут сэкономить кучу времени, а тем самым повысить продуктивность разработчика.
Под катом я решил собрать несколько полезных фишек стандартного конфигуратора, которыми пользуюсь регулярно. Многие из них появились в платформе «1С:Предприятие 8.3.х», поэтому перед тестированием обязательно проверьте номер версии установленной у вас платформы.
Закладки
Функция установки в коде закладок появилось еще с первых релизов 8-й версии платформы «1С:Предприятие». Штука чрезвычайно полезная и помогает разработчику быстрей передвигаться по коду. Например, у нас есть большой модуль, в который мы решили добавить ряд функций. Естественно, потом нам предстоит их отлаживать, а соответственно постоянно между ними переключаться.
Хорошо, если новые функции добавлены в самый конец модуля, а если потребовалось расположить в разных частях? Вот тут начинается самое интересное. Одни программисты начинают скролить текст (как правило, этим страдают новички). Более продвинутые применяют поиск по тексту (Ctrl + F).
Оба способа рабочие, но пользоваться ими долго. Куда правильней использовать функцию «закладки». Например, переходим к какой-нибудь строке. Нажимаем ALT + F2 и получаем закладку (слева от строки отобразиться квадратик).
Убирается закладка тем же сочетанием клавиш. Так вот, закладок может быть в модуле расставлено много. По ним легко передвигаться нажатием клавиши F2. Фича крутая, но она была изначально не доделана и не позволяла, например, передвигаться по закладкам в разных модулях. Это досадное ограничение создавало лишние тормоза для программистов, привыкших к хорошим IDE (например, Visual Studio, PHP Storm).
В версии 8.3 недочет исправили и сделали классную вещь – «Список закладок». Нажимаем клавиши «Ctrl + Shift + F2», и перед нами откроется окно с полным списком установленных закладок:
В нем перечислены все закладки в разрезе модулей. Для каждой закладки указан номер строк и доступен перечень действий: перейти к коду, удалить закладку, удалить все закладки.
Таким образом, работать с закладками стало на порядок проще. Еще бы добавили возможность установки горячих клавиш на закладки, и стало бы совсем хорошо. Помню еще со времен «Delphi 6» привык к установке закладок по горячим клавишам Alt + <Цифра>. Наставил закладок и быстро перемещайся по ним.
Группировка строк
В «1С:Предприятие» с самого начала была одна большая проблема – отсутствие возможности создавать дополнительные модули для определенных объектов. Например, есть у меня справочник «Контрагенты» и мне хочется разделить его функционал на модули. Допустим, функционала очеееень много. Так вот, в моем распоряжении все равно стандартный набор: Модуль объекта, Модуль менеджера и модуль формы. Понятное дело, что у каждого модуля своя роль, но что делать мне с моими 100500 функциями, которые относятся непосредственно к справочнику «Контрагенты»?
По мнению 1С я должен оформить их в виде общего модуля. С одной стороны, идея классная. Делаем модуль, его сразу видно и т.д., и т.п. Правда всегда есть один нюанс. Если следователь этой методике, то при наличии кучу объектов в конфигурации число общих модулей будет зашкаливать.
Вот взять хотя бы библиотеку БСП. Стоит ее внедрить и в количестве модулей начинает теряться. Я уже молчу про конфигурации, которые построены на базе БСП. Там и сто пятьсот модулей от БСП, и еще столько же специально для конфигурации.
В общем, неудобство налицо (особенно после опыта разработки в языках, где нет подобных ограничений). Увы, спастись от этой проблемы в настоящее время не получится. Зато, мы можем использовать возможности группировки функций/процедур в модулях.+
Например, есть у нас общий модуль «РаботаСКонтрагентами». В нем часть функций отвечают за поиск контрагента, другая часть за загрузку контрагентов из внешних источников и т.д. Чтобы не потеряться во всем этом многообразии возможностей, можно логически сгруппировать все функции/процедуру. Для этого в платформе 8.3 появилась функция под названием «Области». Рассмотрим пример:
После добавление областей (язык препроцессора) наш код будет сгруппирован. Если их свернуть (области), то в итоге мы увидим симпатичный комментарий (см. рисунок ниже):
Клик мышкой по плюсику развернет область, и мы увидим свернутые функции. Если хочется сразу развернуть все имеющиеся функции (в пределах области), то кликаем по плюсику удерживая Ctrl.
Вот такая мега удобная вещь и в модулях с большим количеством функций спасает очень даже. В предыдущих версиях платформы было модно использовать для подобных целей блоки комментариев, но управлять/добавлять областями явно удобней.
Форматирование кода
Собственно говоря, тут и рассказывать особо нечего – выделяем код, нажимаем «Alt + Shift + F» и редактор попытается привести его в божеский вид в соответствии с вшитым code-style. Функция работает вполне сносно и ей обязательно надо пользоваться. Пишу это потому, что неоднократно видел, как разработчики пытаются отбивать отступы самостоятельно. Это конечно круто, но зачем тратить время, если большую часть работы можно выполнить одной горячей клавишей?
Комментирование
Опять же, никаких секретных действий – выделили код, нажали “Ctrl + num /” (слеш на дополнительной области клавиатуры) и получили закомментированный участок. Захотели вернуть обратно? Не беда! Выделяем закомментированный участок кода, нажимаем «Ctrl + Shift + num /» и мгновенно приводим его в боевой режим. Фишка попсовая, но опять же, новички про нее не знают, и тратят кучу времени на расстановку слешей. Да еще и матерят компанию «1С», за отсутствие возможности многострочного комментирования, как в продвинутых язык программирования.
Быстрая вставка специальных символов
Иногда возникает необходимость быстро вставить в редактор специальный символ (которого нет на клавиатуре). В большинстве случаев разработчики используют для этого функции встроенного языка (например, символ). А ведь есть способ проще. Если удерживать клавишу Alt и набрать на доп. клавиатуре код нужного символа (из таблицы ASKII), то он тут же будет вставлен. Например, держим ALT и набираем 65. На выходе получаем букву «А». Или вводим 4 и получаем бубновую масть.
Вставка специальных символов
Хорошо, с этим понятно, но какой от этого еще можно получить профит? Лично я, таким образом вставляю символ амперсанда (&). Все знают, что этот символ используется для определения параметров в языке запросов. Неудобство состоит в том, что текст запроса мы пишем на русском языке, а для добавления этого символа перед параметром приходится переключить на английский, затем нажать Shift + 7, а потом вернуться обратно на русский.
Чтобы избавить себя от этой рутиной последовательности действий, я использую выше озвученную функцию. С ее помощью для установки амперсанда требуется лишь набрать с удержанной клавишей «alt» последовательность цифр 38. При этом надобность в двойном переключении языка отпадает.
Многие могут подумать, что я искусственно раздул проблему из ничего, но тут просто дело привычки. Кода приходится писать много и вот такие мелочи немного повышают производительность и избавляют от лишних нажатий клавиши backspace (для удаления случайно набранных символов). Не убедил? Тогда просто выделите время и попробуйте себя переучить
В конфигураторе в свойства конфигурации, есть параметр «Режим использования модальности»
Если установить Не использовать, то - принципе весь код, который после ОткрытьФормуМодально() Вопрос(), Предупреждение(), Выборов и диалогов открытия-сохранения станет работать с ошибками!
Рассмотрим пример с Использовать:
В режиме Предприятие получаем
Если мы поставим Режим использования модальности = Не использовать то получим ошибку: Использование модальных окон в данном режиме запрещено
Теперь код нужно писать по новому:
в результате
Почему 1С решила отказаться от использования модальных окон ?
В наш век развития мобильных технологий все идет к тому - что скоро все будут работать на планшетах и телефонах. 1С сделала для этого «Web Клиент» и «Мобильное приложение». И чтобы успешно двигаться вперед нужно решать такие проблемы как, блокировка всплывающих окон. Ведь даже обычные браузеры по умолчанию блокируют модальные (всплывающие) окна!
Что же такое последовательности документов и зачем необходимо их соблюдать?
Представим себе такую ситуацию, каждый из нас сталкивался с необходимостью вносить какую-либо информацию в программу задним числом. Что при этом происходит, если мы внесли расходную накладную задним числом (в неоперативном режиме), на это число товар спишется со склада, но этот же товар мог быть выписан в других документах, дата которых позднее даты, на которую производилась коррекция. Тогда в программе возникнут отрицательные остатки. Еще один важный фактор использования последовательностей документов это расчет себестоимости товаров, которая рассчитывается при партионном учете в момент списания товара со склада. Какой бы способ расчета себестоимости не был избран (ФИФО, ЛИФО, По среднему), себестоимость напрямую зависит от стоимости партии с которой (с которых) списывается товар. Следовательно, чем точней у нас отражены остатки в разрезе партий, тем точней мы сможем посчитать себестоимость. Таким образом, последовательность документов это точное отражение на временной оси факта случившихся операций и именной в хронологической последовательности их совершения. Если данная хронология нарушается, то это может повлечь наличие некорректных данных в программе (остатки товаров на складах, состояние взаиморасчетов и т.д.).
Для того чтобы восстановить хронологию случившихся событий в программных продуктах 1С имеется механизм последовательностей документов. Документы объединяются в последовательность, как правило, это те документы, которые делают противоположные движения (приход и расход) по одному и тому же регистру. Последовательность документов имеет границу, это та дата, на которую был корректно проведен последний документ, принадлежащий последовательности. Программа автоматически регистрирует и хранит эту дату, при последующих проведениях документов дата будет оперативно передвигаться. Если данные в программу были внесены задним числом, то граница последовательности будет смещена назад на дату проведения. Таким образом, дата границы будет меньше текущей даты. В этом случае нужно произвести восстановление последовательности документов.
В 1С «Управление торговлей» при запуске обработки проведения документов на закладке «Восстановление последовательностей»
будет показана информация по существующих в конфигурации последовательностях, а также информация об их границах. Чтобы выполнить восстановление необходимо ограничить по какую дату следует производить перепроведение, либо не ограничивать и тогда граница передвинется на текущую дату. Далее необходимо нажать кнопку «Выполнить», после выполнения обработки в программе все встанет на свои места в четкой хронологии восстановится хронология и все данные станут актуальными.
Для пользователя:
Последовательность документов есть в УПП, УТ (8), ТиС, ПУБ (7). Операции – Проведение документов, на закладке «Восстановление последовательностей» приведены все имеющиеся в программе последовательности и указана дата актуальности каждой из них. То есть если в июне 2010 года мы видим такое:
то это плохо. Партионный учет давно неактуален, значит – все значения себестоимости, которые появляются в отчетах, врут. (Учет кадров и налоговый учет УСН в данной базе не ведется).
Что значит последовательность? Строго говоря, одним из правил учета является его оперативность, т.е. отражение хозяйственных операций по мере их возникновения. 1 июня на склад поступило 10 штук товара А, потом 10 июня продано 8 штук. Если проводить эти документы (Поступление товаров и услуг, Реализация товаров и услуг) строго в хронологическом порядке, то последовательность установится сначала на 1 июня, потом на 10 июня. Т.е. ее граница будет сдвигаться вперед каждым документом, и итоги (количество, сумма, себестоимость) будут актуальными на каждый момент времени. Если же потом, задним числом, провести еще один документ (Реализация товаров и услуг) от 8 июня, которым будет оформлена реализация 7 штук товара А, программа дает это сделать беспрепятственно. Граница последовательности при этом установится на 8 июня, на этот документ. То есть информация ДО ввода этого документа верна, а ПОСЛЕ – уже нет. При восстановлении последовательности (перепроведении документов, входящих в последовательность), документ от 10 июня проведен не будет, потому что нет необходимого количества товара А. Далее пользователь должен искать причину этой ошибки, устранять и восстанавливать последовательность заново.
Как часто восстанавливать последовательность? Как минимум – перед выполнением регламентных операций, формированием значимых отчетов и т.п. Поскольку любое перепроведение документа (относящегося к последовательности) сдвигает ее границу, имеет смысл закрывать для редактирования прошлые периоды (Сервис – Установка даты запрета изменения данных).
В Бухгалтерии последовательности нет (за исключением кадровых приказов – в 8.1), но есть возможность автоматического перепроведения документов за период. Перед закрытием месяца это делать необходимо (Операции – Проведение документов). Для программиста: Последовательность – объект метаданных 1С – предназначена для упорядоченного хранения множества документов согласно дате и времени.
Граница последовательности (ГП) – позиция, последнего введённого документа в последовательность. Если после ГП есть другие документы в последовательности, то последовательность считается нарушенной и её необходимо восстановить.
Логически - последовательность можно условно представить как «Общий» журнал документов входящих в эту последовательность. Условно, потому, что на последовательностях строится логика учета.
У некоторых последовательностей, для дополнительного контроля автоматически при движении регистров, отслеживается связь: регистр – последовательность. Если изменился регистр, должна измениться и последовательность.
Физически – последовательность состоит из двух таблиц:
1. Таблица регистрации;
2. Таблица границ.
Таблица регистрации (ТР) – коллекция зарегистрированных в последовательности документов в разрезе измерений. В случае повторной записи документа сначала удаляется старая запись, затем записывается новая.
Таблица границ (ТГ) – хранит границу последовательности в разрезе измерений, одно измерение – одна запись если измерений нет, то у ТГ одна запись. Запись ТГ показывает, какой документ в ТР является последним правильно проведённым, т.е. не нарушившим правильное ведение учёта.
Обе таблицы идентичны по составу колонок: «Период», «Регистратор», «Измерение».
Восстановить последовательность возможно путём простого программного переноса ГП (если вы уверены, что итоги не нарушены) на последний документ в последовательности или повторным, последовательным проведением всех документов от ГП до последнего по времени документа в последовательности. Для исправления последовательности существует штатная обработка «Проведение документов».
Механизм «последовательность» имеет подчинённые объекты, свойство – измерения.
Измерения – это разрезы последовательности. Измерения, условно разбивают последовательность на несколько логически целых частей.
Измерение позволяет, в случае необходимости, перепроводить не все документы, входящие в последовательность, а только те которые содержат данное измерение, что ускоряет скорость работы при восстановлении последовательности.
Измерения повышают производительность системы в целом, так как при записи и проведении захватывается не вся таблица целиком, а только те её строки, которые соответствуют данному измерению.
Регистрация документа в последовательности, т.е. в ТР, производится в момент его записи.
Регистрация документа в последовательности может осуществляться автоматически, под руководством системы, если свойство «Заполнение последовательностей» документа будет установлено в «Заполнять автоматически» если иначе, то сам разработчик описывает правила регистрации.
Запись в ТГ происходит при проведении документа.
При проведении документа, его движения учитываются в:
· «Оперативном учёте» - записывает движения документа в регистрах;
· «Бухгалтерском учёте» - запись проводок.
ПоследовательностьМенеджер.< ИмяПоследовательности > - Данный менеджер предназначен для управления последовательностью:
Последовательность.«ИмяПоследовательности».Восстановить
Последовательность.«ИмяПоследовательности».ПолучитьГраницу
Последовательность.«ИмяПоследовательности».ПолучитьГраницы
Последовательность.«ИмяПоследовательности».Принадлежит
Последовательность.«ИмяПоследовательности».Проверить
Последовательность.«ИмяПоследовательности».СоздатьНаборЗаписей
Последовательность.«ИмяПоследовательности».УстановитьГраницу
Вся работа «ПоследовательностьМенеджер» складывается из анализа и работы с ТР и ТГ. Например, метод «Проверить» - если документ в ТГ, есть последний в ТР, значит, последовательность не нарушена и наоборот и т.д. Что такое Последовательности Документов