Как удалить доработки в 1с
В информационной базе 1С:Предприятия 8 конфигурация, редактируемая разработчиком, сохраняется без выполнения реструктуризации. Ее сохранение не оказывает влияние на работающих пользователей. Для работы пользователей в режиме "1С:Предприятие" используется конфигурация базы данных, также хранящаяся в информационной базе. Чтобы привести конфигурацию базы данных в соответствие с редактируемой конфигурацией, нужно выполнить обновление конфигурации базы данных (меню " Конфигурация – Обновить конфигурацию базы данных "). При этом выполняются дополнительные проверки конфигурации, реструктуризация базы данных (если изменилась структура данных) и замена конфигурации базы данных на редактируемую конфигурацию.
В меню " Конфигурация – Конфигурация базы данных " можно выполнить сравнение редактируемой конфигурации с конфигурацией базы данных и при необходимости вернуться к конфигурации базы данных.
Использование команды " Конфигурация – Обновить конфигурацию базы данных " (клавиша F7) позволяет сохранять редактируемую конфигурацию сразу с обновлением конфигурации базы данных.
Использование команды " Отладка – Начать отладку" (клавиша F5) позволяет начинать отладку с сохранением редактируемой конфигурации и обновлением конфигурации базы данных.
Для сохранения редактируемой конфигурации без обновления конфигурации базы данных следует использовать команду " Сохранить конфигурацию " или " Сохранить " (клавиша Ctrl+S).
Как включить возможность редактирование объектов в 1С? Как именно происходит изменение конфигурации в 1С? Рассказываем подробнее и представляем вашему вниманию пошаговую инструкцию для большей наглядности!
Включение возможности редактирования объектов
Действительно, для типовых конфигураций 1С возможность редактирования объектов отключена.
Для того, чтобы включить данную возможность необходимо сделать несколько действий.
Запускаем 1С в режиме конфигуратор.
Выбираем пункт «Поддержка» вменю «Конфигурация». Подпункт «Настройки поддержки».
Если нужно отредактировать конкретный объект конфигурации, то нет необходимости менять правило для всей конфигурации. Найдите в списке интересующий объект, кликните по нему правой кнопкой мыши и выберите «Установить правило поддержки»
В открывшемся окне выбираем «Объект поставщика редактируется с сохранением поддержки». В случае если необходимо отредактировать подчинённые объекты, устанавливаем галочку для опции «Установить для подчинённых объектов»
Если необходимо включить возможность редактирования для всех объектов конфигурации, то в правом верхнем углу открывшегося окна нажимаем кнопку «Включить возможность изменения»
В появившемся диалоговом окне отвечаем «Да»
Все объекты конфигурации делятся на два вида: «Объекты с правилом «Изменения разрешены» и «Объекты с правилом «Изменения не рекомендуются». Для каждого вида необходимо выбрать настройку.
По умолчанию значения установлены «Объект поставщика не редактируется». Рекомендуется установить «Объект поставщика редактируется с сохранением поддержки» для объектов с правилом «Изменения разрешены» и «Объект поставщика не редактируется» для объектов с правилом «Изменения не рекомендуются».
Необходимо обновить конфигурацию базы данных. Это можно сделать с помощью кнопки на панели или нажав F7
Для редактирования конкретного объекта конфигурации нужно в «Настройка поддержки» установить значение «Редактируется с сохранением поддержки. Если необходимо запретить редактирование конкретного объекта конфигурации, то установите свойство «Не редактируется».
Возвращение конфигурации на поддержку
В первую очередь перед проведением каких-либо операций необходимо сделать резервную копию вашей базы.
В качестве демонстрации вернём поддержку базе из примера выше.
1С одновременно сохраняет три конфигурации:
- Типовая конфигурация, ещё её называют конфигурацией от поставщика
- Конфигурация нашей информационной базы
- Основная конфигурация
При запуске обновления конфигурации выполняется следующая последовательность действий:
- Обновление типовой конфигурации
- Типовая конфигурация заменяет конфигурацию вашей базы, но только в случае «Объекты поставщика не редактируются»
- Запуск «Режима сравнения и объединения», в случае если ваша база «Объекты поставщика редактируется с сохранением поддержки»
- Обновление конфигурации нашей информационной базы
В первую очередь необходимо узнать номер текущего релиза нашей конфигурации. Запускаем 1С, в меню «Справка» выбираем пункт «О программе».
На рисунке выделена строка, содержащая номер релиза
Запускам 1С в режиме конфигуратор. Выбираем пункт «Поддержка» вменю «Конфигурация». Подпункт «Настройки поддержки».
Смотрим номер текущего релиза конфигурации поставщика.
В нашем примере релизы совпадают. Нажимаем кнопку «Сохранить в файл».
Выбираем пункт «Загрузить конфигурацию из файлов» вменю «Конфигурация».
Будет произведено замещение нашей текущей конфигурации, конфигурацией содержащейся в файле.
Производим обновление конфигурации
Восстановлена «Полная поддержка».
Как можно оптимизировать работу с 1С?
В работе с 1С постоянно возникает множество вопросов — от решения проблем до обновления или потребности в доработке программы. Не у каждой компании есть соответствующие специалисты, способные помочь в перечисленных ситуациях, а если и есть, то не всегда бывает целесообразно отвлекать их на мелкие задачи.
Чтобы обновления происходили без проблем, а на все вопросы вы могли получать ответы, приглашаем обращаться за сопровождением 1С к профессионалам, в компанию «ПРОГРАММЫ 93».
Почему нас выбирают?
ООО «ПРОГРАММЫ 93» — это компания с большим штатом сотрудников, в который входят не только специалисты 1С, но и бухгалтеры, юристы и другие эксперты смежных областей.
В результате вы получаете услуги от опытных компетентных специалистов, не зависите от одного человека и не отвлекаете штатных специалистов от стратегических задач.
Мы можем предложить вам:
- доработку программы под ваши нужды;
- поддержку продуктов 1С;
- интеграцию программы с сайтом;
- внедрение других продуктов 1С;
- сопровождение бухгалтерского и налогового учета.
Позвоните по номеру телефона, указанному на сайте или заполните форму обратной связи, чтобы мы могли ответить на все возникающие вопросы и рассказать о том, как начать сотрудничество!
Для этого нужно внести изменения в Общий модуль ОбщегоНазначенияБП
Нужно внести изменение в функцию ПредлагатьОбновитьВерсиюПрограммы модуля Общий модуль ОбщегоНазначенияБП
Пример исправленного кода модуля:
Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
И ТекущаяДатаСеанса() > ДобавитьМесяц(ДатаТекущейВерсии, 2);
НадоПредлагать = Ложь; // Отключение уведомления "Рекомендуется обновить версию конфигурации"
В оригинальный код добавлена строка:
НадоПредлагать = Ложь; // Отключение уведомления "Рекомендуется обновить версию конфигурации"
Наиболее правильным вариантом будет создать расширение для объекта Общий модуль.ОбщегоНазначенияБП и создать в нём собственный вариант функции ПредлагатьОбновитьВерсиюПрограммы
Вот готовый код для модуля расширения:
// Отключение уведомления "Рекомендуется обновить версию конфигурации"
Если ОбщегоНазначенияПовтИсп.РазделениеВключено() Тогда
И ТекущаяДатаСеанса() > ДобавитьМесяц(ДатаТекущейВерсии, 2);
НадоПредлагать = Ложь; // Отключение уведомления "Рекомендуется обновить версию конфигурации"
После подключения расширения нужно отключить для него Безопасный режим и Защита от опасных действий
Возможно ли получение эталонного файла конфигурации *.cf из измененной стандартной, например (УТ 11.1, БП 3.0) или более глобальный вопрос о том как убрать лишние доработки и привести конфигурацию базы максимально к стандартной после варварских "доработок"?
К сожалению, по ряду причин это невозможно. Задача минимум проверить новую технологию. Задача максимум привести все в божеский вид и облегчить обслуживание. Работать в такой базе просто невозможно.
Есть сильно измененная типовая конфигурация. Вопрос КАК получить из нее эталонный cf того же релиза, когда есть доступ к сайту обновлений не прибегая к помощи франчей?
(5) Если обновлялась как положено - выгрузить конфигурацию поставщика. Правда, в 80% случаев обновляли рукожопы через сравнение/объединение, но шансы есть.
Вот я про то же: там может быть ЧТО угодно и можно ли "вытрясти" 100% эталонный cf. А то мне же перед людьми неудобно: могу собственное что угодно написать, в т.ч. сложные запросы, отчеты в СКД и.т.д. Здесь вопрос принципиальный.
Накатить сверху cf поставщика. Но не факт что все будет гуд. Либо хранилищем конфигурация надо было пользоваться. Я думаю большинству эти методы известны
Проблема то в том, что подобные какие-угодно базы появляются довольно часто и нет возможности обращаться во франч.
(9) как что угодно? Сравни версии. Если они одинаковые, то отличия в любом случае будут видны, какие бы там изменения не были
(9) как ты называешь "эталонный" .cf - он называется конфигурацией поставщика.
Так вот,
1. сравни релиз по "О программе" и в конфигурация-поддержка-настройка поддержки. Релизы там одинаковые высвечиваются?
>хитрыми манипуляциями ". Конфигурация-Поддержка-Настройка поддержки. " можно получить из своей "базы" эталонную сф.
Что называется век живи, век учись. Помню всей фирмой-франчайзи искали "франчевский" установочный диск, когда обратился важный клиент с подобной просьбой.
>Где хранилась история изменений или вернее первоначальное состояние каждого измененного объекта с желтым кубом?
нет истории если нет хранилища. есть текущая конфа и есть конфа поставщика - все относительно нее
(18) Или я не понял твою задачу, или ты через одно место ухо чешешь.
Задача про эталон решена, причем он полностью подзамочный.
4. В измененной базе делаешь обновление через поддержку на полученный в п 3 ЦФ и снимаешь галку с корня. У тебя обновляется только версия поставщика до актуальной.
Ну а дальше делаешь "конфигурация"->"Поддержка"->"Настройка поддержки", "сравнить, объединить" и смотришь на предмет лишних изменений кусочно возвращаясь на типовую или записывая изменение в книжечку как необходимое.
Система 1с предприятие изначально не предполагает прямое удаление каких-либо объектов из базы данных, например элементов справочников, документов, отчетов и т.д. Конечно все же можно настроить роль пользователя таким образом чтобы он сразу удалял из 1с какой-нибудь объект, без пометки на удаление , но делать этого крайне не рекомендуется. Также хотим отметить тот факт, что если даже у пользователя роль настроена на прямое удаление объектов (интерактивное удаление), все равно это не позволит удалять ему некоторые объекты в предприятии 1с, и сделать это можно будет только через пометку на удаление .
Для чего сделана пометка на удаление объектов в 1с
Давайте ответим с Вами на вопрос "Зачем сделана эта пометка для удаления?", ведь быстрее удалить объект из 1с сразу. Сделано это по нескольким причинам:
- Есть вероятность того, что пользователь впоследствии передумает и захочет вернуть удаленный объект, когда стоит пометка ее достаточно снять, при интерактивном удалении восстановить данные нельзя .
- В 1с один объект, например документ, может ссылаться на множество других объектов в системе (справочники, константы, другие документы и т.д.), и одновременно также на этот объект (в нашем случае документ), могут ссылаться множество других объектов. Если бы в системе 1с предприятие было разрешено прямое удаление объектов из базы данных, то это привело бы к ужасным последствиям, так как сразу же бы начали появляться объекты с "битыми ссылками", а это потеря данных, и не правильное функционирование базы данных, которое рано или поздно приведет к краху базы и практически полной потери Ваших данных!
Два вида удаления в 1с , понятие контроля ссылочной целостности в 1с
В программе объекты 1с можно удалить двумя способами:
- С помощью интерактивного удаления (прямое удаление без контроля ссылочной целостности)
- Через пометку на удаление (удаление с контролем ссылочной целостности)
Давайте рассмотри что такое ссылочная целостность в 1с. Но для того чтобы нам с вами ответить на этот вопрос мы должны знать что такое "битые" ссылки в 1с. Для тех кто не знает, битые ссылки в 1с это ссылки которые указывают на не используемую область памяти, то есть по сути указывают в никуда. Теперь давайте возьмем для примера любой документ в системе 1с предприятие. В нем находится множествои различных реквизитов. Эти реквизиты могут быть как простыми (примитивные типы такие как число, дата, булево), так могут быть и объектными (такие как ссылки на другие объекты системы, например различные справочники, перечисления и т.д.) Так вот контроль ссылочной целостности в 1с как раз и означает тот факт, что объект не будет удален из системы 1с до тех пор, пока на него ссылаются какие-либо другие объекты системы. Как раз пометка на удаление объектов 1с позволяет сохранить механизм ссылочной целостности в 1с, так как обработка удаления помеченных объектов не даст удалить объект пока на него ссылаются другие объекты.
Как восстановить удаленные объекты в 1с? Что происходит с объектами после их удаления из 1с?
Подобные вопросы нам задают многие люди, и ответ тут один, физическое удаления данных из 1с (с помощью способов описанных ниже) приводит к ПОЛНОМУ УНИЧТОЖЕНИЮ ФАЙЛА ИЗ БАЗЫ! Восстановление удаленных файлов из базы не возможно.
Мы всегда готовы оказать Вам своевременную помощь в обновлении системы 1С 8.3 .
Интерактивное удаление в 1с
Итак мы уже обсуждали с Вами то, что интерактивное удаление в 1с происходит без контроля ссылочной целостности, а это чревато очень плохими последствиями для системы, рекомендуется пользоваться таким удалением только с целью отладки. Чтобы включить интерактивное удаление 1с нам нужно для начала зайти в конфигуратор, распахнуть веточку Общие ---> Роли и выделить роль "Полные права".
Теперь нажмем клавишу F9 , у нас копируется роль "ПолныеПрава" и появится еще одна "ПолныеПрава1". Откроем ее двойным щелчком мыши. Появится окно свойств роли, нажмем кнопку "Действия" ---> "Установить все права". После этого нажмем ОК. Теперь сохраним конфигурацию базы данных, для этого нажмем на синенький бочонок в левом верхнем углу, или нажмем клавишу F7. Если бочонок стал неактивным значит конфигурация сохранилась. Мы создали роль с правами на интерактивное удаление объектов из 1с .
Теперь в конфигураторе откроем вкладку Администрирование ---> Пользователи.
Откроется список пользователей, выберите пользователя под которым Вы хотите включить интерактивное удаление 1с объектов и нажмите карандашик или F2. Откроется окно свойств пользователя, перейдите на вторую вкладку "Прочие". Там найдите ту роль которую мы с Вами копировали, в моем случае это "ПолныеПрава1", ставим галочку и жмем OK.
После этого запускайте 1с предприятие, выбирайте того пользователя которому установили новую роль. Теперь Вы можете удалять объекты напрямую, чтобы удалить объект выберите его и нажмите сочетание клавиш SHIFT + DEL, система спросит уверены ли вы в удалении, при положительном ответе объект будет удален из системы.
Удаление объектов 1с через пометку на удаление или как удалить объекты в 1с ?
Теперь давайте рассмотрим с Вами вопрос "Как удалить объекты в 1с ?". Итак, открываем нужную нам базу данных в 1с предприятии. На скриншоте показана "Бухгалтерия государственного учреждения", щелкаем в меню по вкладке "Операции" ---> " Удаление помеченных объектов ".
Если у Вас управляемый интерфейс, как например в "Бухгалтерии предприятия ред. 3.0", то там Вам нужно перейти на вкладку "Администрирование", там Вы увидите подгруппу "Сервис", и уже в ней нужно выбрать " Удаление помеченных объектов ".
Альтернативный способ открытия помощника удаления объектов в 1С 8.2 и 1С 8.3
А вообще если Вы не можете найти у себя в конфигурации кнопочку с помощью которой можно вызвать мастера удаления помеченных объектов 1с , то в 1С 8.2 открыть его можно следующим способом, данный способ подходит для любой конфигурации, ниже на скриншотах видно какие действия необходимо выполнить в 1С 8.2. Открываем дерево всех обработок которые находятся в системе и выбираем " Удаление помеченных объектов ".
Если же Вы работаете на платформе 1С 8.3 и у Вас конфигурация с управляемым интерфейсом, то Вам необходимо включить кнопку "Все функции", как это сделать смотрите здесь.
Начало поиска помеченных на удаление объектов в 1с
Перед нами появится окно которое изображено ниже, в нем будут отражены все объекты помеченные на удаление в системе . Отмечаем галочками те которые хотим удалить, вообще их желательно удалять все, ведь они помечены на удаление, а значит они больше не нужны в системе. После того как отметили все необходимое нажимаем "Контроль".
Системе потребуется какое то время чтобы выполнить данную задачу, чуть позже Вы увидите окно которое изображено ниже. Обратите внимание у Вас могут быть объекты как с зелеными галочками так и с красными.
Зеленые означают то, что объект можно удалить, красные соответственно что нет. Объект отмеченный красной галочкой нельзя удалить, так как на него ссылаются другие объекты системы, в окошке расположенном ниже Вы увидите те объекты которые ссылаются на него, и прежде чем удалить объект отмеченный красной галочкой, Вам нужно убрать ссылки на этот объект у других объектов. Что это означает на практике?
Необходимость своевременного удаления помеченных на удаление объектов в 1с . Как удалить объекты помеченные красными галочками ?
Рассмотрим пример на конфигурации "Бухгалтерии предприятия". У нас есть документ "Принятие к учету ОС", в нем соответственно указывается основное средство (например компьютер) и множество других параметров, но они нас в данный момент не интересуют. Если мы захотим удалить это ОС из нашей базы данных, то без дополнительных действий у нас ничего не выйдет. Наше ОС (компьютер) будет помечено красной галочкой при попытки его удаления. Почему? А ведь наш документ "Принятие к учету ОС" имеет ссылку на то ОС которое мы сейчас хотим удалить! Когда мы щелкнем на него в списке объектов , то увидим все объекты которые ссылаются на наше ОС, и прежде чем удалить это ОС, нам нужно сначала зайти во все эти объекты и удалить ссылки. В нашем случае это означает что нужно отменить проведение документа "Принятие к учету ОС", и удалить это ОС из документа, после чего записать документ. Теперь документ более не ссылается на наше ОС, и мы можем его удалить. Из всего этого следует одно правило, удалять объекты помеченные на удаление в 1с нужно своевременно ! Иначе потом избавиться от них может быть очень и очень проблематичным делом, ввиду того что между объектами будет большое количество ссылок. Кстати своевременное удаление объектов из 1с также имеет несколько очевидных плюсов:
- Увеличивается производительность системы
- Уменьшается вероятность ошибок пользователей
- Уменьшается размер вашей базы данных
- Не возникает "захламленности интерфейса", когда в системе имеется много помеченных на удаление объектов, проведенных документов, а также не проведенных.
В нашей компании Вы всегда получите первоклассное обслуживание программы 1С по очень приятным ценам!
Завершение удаления помеченных объектов в 1с
Теперь давайте удалим объекты до конца. Нажимаем кнопку "Удалить". Система удалит все объекты которые были отмечены зелеными галочками.
Останутся только те которые помечены красными галочками, нажимаем "Закрыть", на этом процесс удаления объектов из 1с завершен. Если у Вас что-то не получилось мы готовы подключиться к Вашей 1с удалённо и помочь решить Ваши задачи.
1с удаление помеченных объектов, подробная видео-инструкция про удаление объектов 1с
Кто-то любит читать, а кто предпочитает смотреть. Именно для тех кто предпочитает смотреть мы сняли очень интересное видео которое содержит даже больше интересной информации по сравнению со статьей:
- Рассказываем для чего нужна пометка на удаление в 1с
- Показываем на примере как удалить в 1с объекты
- Даются полезные практические советы
- Показываем как удалять в 1с объекты помеченные красными галочками
- Также приводится много другой полезной информации
Мы надеемся что наша статья про удаление в 1с объектов помеченных на удаление очень Вам помогла, и ответила на все Ваши вопросы.
Иногда случается так, что в вашей базе есть какие-то доработки (исключения составляют внешние отчеты и внешние печатные формы), и вы по каким-либо причинам хотите из вашей нетиповой базы сделать типовую (поставить базу на поддержку в 1с). Для чего такое может понадобиться? Рассмотрим банальный пример, клиент хочет обновляться в автоматическом режиме, но это можно делать только в типовой базе. Поскольку доработки в базе клиента были очень маленькие и несущественные, то клиент решил от них отказаться и сделать из своей базы типовую конфигурацию, ведь тогда можно будет обновляться в автоматическом режиме, а это в первую очередь экономия собственных денег, так как клиенту больше не нужно будет платить за услуги программиста 1с.
Теперь давайте разберемся, какие действия нам нужно будет выполнить, если мы захотели сделать базу типовой (поставить базу на поддержку в 1с).
Для начала заходим в конфигуратор, и смотрим текущую версию нашей базы, Конфигуратор ---> Справка ---> О программе
После этого Вы должны увидеть окно примерно следующего вида
Вы видите название и версию конфигурации, они выделены красным.
Чтобы поставить базу на поддержку 1с и сделать типовой нам необходима типовая конфигурация такой же версии. Создадим новую базу и загрузим туда типовую базу, или установим соответствующий релиз 1с. После того как мы установили типовую базу, нам необходимо будет открыть конфигуратор этой базы. Если зайдя в конфигуратор сама конфигурация не открыта, то откроем ее соответствующей кнопкой.
После нажатия данной кнопки откроется дерево объектов конфигурации, выглядит это примерно так
Теперь нам нужно сохранить конфигурацию в файл, для этого выполним следующие действия.
Щелкаем по вкладке конфигурация ---> сохранить конфигурацию в файл. Откроется окно в котором необходимо выбрать имя файла и путь где этот файл будет находиться. Нажимаем сохранить, в левом нижнем углу вы увидите процент выполнения сохранения конфигурации в файл.
Теперь когда файл сохранился, у нас есть файл с типовой конфигурацией. Далее мы должны открыть конфигуратор той базы, у которой мы хотим обновить конфигурацию поставщика, и загрузить туда наш *.cf файл (наша типовая конфигурация).
Для этого заходим Конфигуратор ---> Конфигурация ---> Загрузить конфигурацию из файла. После этих действий откроется диалоговое окно в котором нужно выбрать наш *.cf файл и нажать кнопку открыть. Теперь мы можем наблюдать процент загрузки нашей конфигурации, когда конфигурация загрузится не забываем обновить конфигурацию нашей базы данных, для этого нужно нажать клавишу F7 или нажать на синенький бочонок на панели конфигуратора.
ВЫПОЛНИТЕ ОБЯЗАТЕЛЬНО ЭТИ ДЕЙСТВИЯ:
- Перед любыми работами делайте архивную копию Вашей базы данных (Конфигуратор ---> Администрирование ---> Выгрузить информационную базу).
- Номера конфигураций (Вашей и типовой) должны быть ОДИНАКОВЫМИ! Посмотреть название и номер конфигурации (Конфигуратор ---> Справка ---> О программе)
ПОМНИТЕ ОБ ЭТОМ:
Все доработки в вашей базе будут удалены автоматически после того как вы сделаете базу типовой!
Как понять типовая база перед нами или нет?
Кто-то возможно скажет что в конфигураторе есть замочек, и если он включен то база типовая, это ошибочное мнение! Да, изначально на всех типовых базах стоит защита от внесения изменений в конфигурацию (видим замочек в дереве объектов, в конфигураторе), но после того как мы включили возможность изменения (сняли замочек) и допустим внесли какие-то изменения в конфигурацию, то конфигурация автоматически становится НЕТИПОВОЙ, потом мы можем опять закрыть конфигурацию от редактирования (поставить замочек), но это не будет означать что база ТИПОВАЯ.
Для того чтобы точно понять типовая база или нет перед нами, выполним следующие действия:
Теперь выберем в меню Конфигурация ---> Сравнить конфигурации, если база типовая то мы увидим следующий список сравнения баз.
А если база нетиповая к этому списку добавляется возможность сравнения с конфигурацией поставщика.
Доработки конфигурации - необходимое зло. Автор предлагает несколько простых подходов и приемов, позволяющих хотя бы немного, но оптимизировать объем доработок конфигурации, упростить их, и облегчить дальнейшие доработки и обновления конфигурации. Все примеры и подходы взяты автором из реальной жизни и основаны на собственных наблюдениях.
Доработки конфигурации – необходимое зло в 1С. В данной публикации автор предлагает несколько простых подходов и приемов, позволяющих хотя бы немного, но оптимизировать объем доработок конфигурации, упростить их, и облегчить дальнейшие доработки и обновления конфигурации. Все примеры и подходы взяты автором из реальной жизни и основаны на собственных наблюдениях. Примеры ниже будут даваться по конфигурациям семейства "Зарплата", хотя годятся для любых конфигураций. Версия конфигурации и платформы особой роли не играет.
Доработать это? А оно мне надо?
Аксиомой является факт, что стандартный функционал документов, обработок и отчетов, поставляемых 1С, часто не удовлетворяет конкретную организацию. Другая аксиома, что одной из наиболее сильных сторон 1С является возможность его настройки и доработки "под себя", в том числе - глубокой программной переработки (т.н. "доработки конфигурации").
Сегодня, как известно, доработать "под себя" функционал 1С можно четырьмя основными способами:
1. Доработать саму конфигурацию, т.е. изменить стандартные документы (регистры, отчеты, обработки и т.п.) системы под свои нужды.
2. Использовать вместо доработок конфигурации - механизм расширений, т.е. механизм своих "надстроек" над конфигурацией, не затрагивающих саму эту конфигурацию.
3. Использовать внешние обработки (в том числе, обработки табличной части), печатные формы и внешние отчеты.
4. Использовать тонкую настройку в режиме «1С: Предприятие» (т.е. провести настройки самой программы на уровне пользователя).
У всех способов есть свои преимущества и недостатки.
- После доработки стандартных документов 1С мы в будущем столкнемся с проблемами обновления. Опыт обновлений последних лет говорит, что 1С часто переделывает или модифицирует стандартные документы. Ясно, что при любом обновлении от 1С - провести «свое» обновление на уже измененный вами документ, есть удовольствие ниже среднего, мягко говоря.
- Внешние обработки лишены этого недостатка, но при всех своих преимуществах, однако, и они имеют недостатки - их работа не оставляет "следов" в виде документов.
- Тонкая настройка на уровне пользователя в режиме «1С: Предприятие», к сожалению, очень ограничена по возможностям.
- Почти идеальным кажется вариант с расширениями. Однако, несмотря на достижения расширений, не все доработки можно выполнить через них, или это трудоемко (неудобно).
Пока автор излагает то, что все знают и так, как «Отче наш». Ему, впрочем, видится вполне приемлемое решение в некоем компромиссе между озвученными способами - по сути, комбинации способов 1 и 2. Суть предложения сводится к следующему: производится доработка конфигурации (не расширения, не внешние обработки), но НИКАКИЕ стандартные документы (обработки, отчеты, регистры) НЕ дорабатываются. Вместо этого в систему вводятся НОВЫЕ объекты (документы, регистры и т.п.), которые осуществляют необходимые нам расчеты и действия.
На первый взгляд идея кажется абсурдной - нам что, предлагается копировать и подменить, например, документ "Премия" в ЗУП 3.1.? Ничего подобного! Более того, сама идея подобного копирования - глупая и ненужная. Новые, введенными нами объекты НЕ ЗАМЕНЯЮТ стандартные, а дополняют их! Они существуют отдельно в дереве метаданных конфигурации - как отдельные документы, отчеты, обработки.
Задача таких объектов - провести нужные нам расчеты, показать нужные данные, или преобразовать данные в системе нужным нам способом, а затем передать эти сведения (в нужном нам виде) на вход в обработку стандартных документов. Никаких движений в стандартные регистры эти документы НЕ делают при своем проведении, они максимально «автономны» от прочих объектов конфигурации.
Такие функциональные расчетные документы можно условно назвать "документы расчета верхнего уровня", или "интерфейсный документ". Смысл такого названия в том, что пользователь напрямую работает с этими документами в своем интерфейсе (они выводятся в интерфейс), проводит в них расчеты, а не в стандартных документах.
Приведем условный пример, чтобы было яснее:
В систему добавлен документ «Расчет премии за продажи». Этот документ в свою табличную часть собирает по определенным алгоритмам сотрудников, которым положена премия за продажи. Затем сумма премии рассчитывается на основе данных в системе 1С, согласно правилам расчета премии на этом предприятии. Сумма премии, данные по сотрудникам и любая прочая вспомогательная информация – все это прекрасно видно пользователю в документе «Расчет премии за продажи», который хранится в своем журнале документов и т.п. После расчета суммы премии, при проведении документа или нажатию на определенную кнопку, документ «Расчет премии за продажи» программно создает стандартный документ «Премии», запоминает его шапку, и помещает в него сотрудников с уже рассчитанной суммой премии за продажи (ссылка на этот документ «Премии» хранится в реквизите нашего документа). При дальнейшем изменении документа «Расчет премии за продажи» - меняется и документ «Премии».
Итог: у нас есть полностью готовый стандартный документ «Премии» с рассчитанной премией за продажи. Все исходные данные остались в документе «Расчет премии за продажи».
Если бы нашего документа «Расчет премии за продажи» не было бы, то рассчитать премию за продажи нам бы пришлось вручную, и вписать затем эти суммы сразу в документ «Премии». Да, в ряде случаев можно настроить формулу в виде расчета в 1С, но практика говорит, что схемы мотивации часто настолько «замудрены», что это крайне непростая, часто невыполнимая задача. Можно было бы использовать обработку, которая проводит эти расчеты и создает документы «Премии», однако обработка не оставляет «следов», а мы эти следы имеем (документы «Расчет премии за продажи»).
В виде картинки это можно представить так:
Используя предложенный механизм "интерфейсных" документов, разработчик достигает следующих выгод:
- Отсутствуют доработки стандартных документов 1С. При описанном выше способе, это исключено. Стандартные обновления 1С в дальнейшем без проблем обновляют стандартные документы (а вы попробуйте обновить документ с хорошо доработанным кодом – посмеемся вместе J ). На функционале наших доработок это может сказаться только, если в стандартных документах будут затронуты основные реквизиты, которые мы используем в «интерфейсном» заполнении.
- Новые документы и объекты хорошо видны в конфигурации, в том числе, при обновлениях, особенно, если не забыть выделить их имена, например, префиксами вроде «Д_МоеИмя». Разработчик, в том числе, пришедший позже, четко знает - где находится доработка, они не размазаны по множеству объектов системы в коде, а вынесены в отдельные, легко локализуемые сущности дерева метаданных. Такой подход существенно облегчает нам дальнейшую доработку наших разработок - нужно будет "ковырять" только наш же добавленный блок, и наши добавленные документы. Как живут и поживают стандартные документы – нам неинтересно, повторюсь, мы их не трогали, и не будем трогать.
Естественно, предложенный способ имеет и свои недостатки. Прежде всего, это ограничение по сфере применения – далеко не всегда и не везде этот способ применим, он выгоден только на больших и массовых доработках. Я бы сказал больше – его следует применять только в том случае, когда возможные издержки любых других вариантов (например, расширений) могут стоить больших денежных, временных, и «нервных» затрат. Кроме того, предложенный способ все равно является доработкой конфигурации, и лишает нас возможности проводить автоматические обновления.
Храните константы в сберегательном справочнике. Если конечно они у вас есть…
Вновь вернемся к известной аксиоме, что многие организации, использующие 1С, вынуждены вводить в конфигурацию свои доработки. Естественно, что при доработках адекватные программисты пытаются писать адекватный же код с использованием, в том числе, неких постоянных переменных, констант и т.п. И тут возникает проблема - если нам для наших доработок нужна новая константа, например, вид расчета "премия за красивые глаза", то логично что эту константу нужно где-то хранить?
Не писать же в коде, например, "ПланыВидовРасчета.Начисления.НайтиПоНаименованию("Премия за красивые глаза")" в стиле незабвенных "индийских программистов"? А завтра бухгалтер Иванесса Карповна переименует в базе наш вид премии, и вся наша доработка накроется медным тазом.
Чтобы не плодить в системе константы, значения по умолчанию, флаги активации для тех или иных наших доработок, есть предложение: держать все эти константы и флаги в одном месте (нет, не там, где вы подумали), а именно - в качестве отдельного элемента метаданных 1С. Автор публикации несколько раз прибегал к подобному методу в практической работе на проектах. По его мнению, наилучшим вариантом будет отдельный дополнительный справочник (с названием, например, "КонстантыДоработки"), добавленный в конфигурацию.
Весь справочник состоит из предопределенных элементов, является иерархическим, и не имеет никаких реквизитов, кроме стандартных (т.е. наименования и кода) и реквизита «Значение» (который имеет составной тип «Любая ссылка, Число, Булево, Строка, Дата»). В режиме Конфигуратора мы заполняем список предопределенных элементов (т.е. устанавливаем имя, код и наименование). Каждый такой предопределенный элемент справочника - одна отдельная константа. Значения констант мы всегда можем удобно посмотреть и выставить в базе, просто открыв в системе в режиме "1С: Предприятие" справочник "КонстантыДоработки".
Теперь в коде легко вызвать нужную константу простейшей конструкцией, например, "Справочники.КонстантыДоработки.ВидПремии.Значение" – даст нам значение константы «Вид премии». Нам, как программисту, не нужно беспокоится, какое конкретно значение заполнено в этом элементе. Разве что проверить на заполнение, и не забыть конечно в базе саму константу выставить.
Иерархический режим справочника нужен, чтобы, если констант много – в режиме Предприятия расфасовать их по папкам. Единственная сложность - пополнять справочник можно только в режиме Конфигуратора.
Стоит ли говорить, что использование подобного справочника констант также избавляет нас от необходимости увеличивать и без того громадный перечень стандартных констант в дереве метаданных и облегчает обновления нестандартных конфигураций?
Это еще не все. В том же справочнике констант можно держать в отдельных элементах, например, пути к каталогам загрузки-выгрузки для ваших доработок, строковые и численные значения, даты, значения для подстановки "по умолчанию" из других справочников, даже списки значений и картинки (например, для логотипов на печатные формы).
С помощью справочника констант можно также хранить и "флаги", и через это "включать" и "выключать" наши доработки. Например, в системе есть наша доработка расчета премии. В справочнике констант "КонстантыДоработки" вводим через конфигуратор элемент "АктивностьБлокаПремии" с типом "Булево". Далее программная конструкция:
позволит нам всегда проверить в коде - "включена" ли наша некая доработка в базе данных. Мы же в любой момент в режиме "1С: Предприятие", зайдя в форму нашего справочника констант - можем включить или выключить наш флаг.
Большая Советская Энциклопедия своих функций и процедур
Эта очень простая идея вытекает из предыдущей. Нам, то есть программистам, так удобно пользоваться в работе всякого рода стандартными функциями и процедурами 1С! Но бывает, что их нам не хватает!
"Так напиши свою!" – скажет мне кто-то, и этот совет будет правильным. Ну хорошо, я написал "свою" функцию для очередного отчета или обработки, и она замечательная. Но в другом месте мне нужна эта же функция! Снова ее писать? Копипастить? Нет, есть более разумное решение.
Добавим в конфигурацию новый общий модуль, и в него поместим все наши замечательные «самописные» функции, укажем, что они экспортные, а потом будем в коде просто вызывать их по имени через имя общего модуля.
Этот совет при всей своей чудовищной старости и очевидности, однако, используется куда как реже, чем стоило бы. Автор сам видел, как многие доработки пестрели "местными" самописными функциями, напиханными в десятке мест методом "копипасты". Есть, кстати, другой, почти равнозначный вариант этого совета – поместить разного рода процедуры в код обработки, а затем в коде вызвать эту обработку и далее вызывать эти процедуры из обработки.
Я также рекомендовал бы подобные процедуры, и особенно, функции, делать максимально «универсальными», т.е. такими, которые могли бы возвращать различные значения, в зависимости от поданных параметров. Т.е. не создавать 10 функций, каждая из которых возвращает какое-то одно, похожее на другое поле. Например, одна функция возвращает дату приема сотрудника, другая – дату увольнения, третья – должность. Вместо 10 функций сделаем одну универсальную.
Приведу упрощенный пример, чтобы была понятна суть. Пусть есть функция («самописная», вызывается из «самописного» общего модуля «МойМодуль»), с именем, ну например: «ВернутьДанныеПоСотруднику(ДатаПоиска,ПолеВозврата,Сотрудник)». Внутри функции имеется запрос, который возвращает по указанному сотруднику (параметр «Сотрудник») на заданную дату (параметр «ДатаПоиска») целый набор полей кадровых и зарплатных данных – должность, подразделение, оклад, количество ставок, дата приема и т.п. Однако функция возвращает не весь результат запроса, а только то поле, которое передано в параметре «ПолеВозврата». Например, мы пишем в коде:
И т.п. Внутри самой функции получается примерная программная конструкция вида:
В итоге мы имеем универсальную функцию-«черный ящик», подавая на вход имя нужного нам поля, мы получаем в результате только то, что нам нужно, и не плодим множества ненужных нам функций. Если мы ошибемся с именем поля – результат вернет нам сотрудника.
Доработка функции очень легкая – добавляем в запрос с выборкой полей новые поля, и потом просто можно вызывать «новые» поля в коде, не меняя самой конструкции вызова. Конечно, надо следить, чтобы запрос-выборка не был перегружен и усложнен без нужды, но поскольку мы изначально выбираем данные только для одного сотрудника – он никогда не будет слишком уж «тяжелым».
Читайте также: