Мне частенько приходится взаимодействовать с 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с каждый день, да еще и не по разу.
Самый простой способ сделать резервную копию базы данных 1С или всех ваших баз данных
это заархивировать или скопировать всю директорию, где находятся и сама база данных и служебные файлы.
Путь к каталогу с базой вы увидите внизу окна запуска 1С.
Всю эту директорию заархивируйте архиватором zip или другим. И скопируйте в укромное местечко.
Что бы сделать резервную копию базы 1С стандартными стредствами нужно:
1). Запустить «Конфигуратор».
2). В главном меню выбрать «Администрирование» - «Выгрузить информационную базу».
3). При сохранении базы – указать куда её сохранить (лучше на флэшку или сервер) и указать имя файла резервной копии (например «База 1С_2014_01_07»).
Резервную копию базы 1С в небольшой организации необходимо делать хотя бы 1 раз в неделю. В лучшем случае 1 раз в день;
Желательно резервную копию делать на флэшку или другой компьютер;
Лучше всего делать копии в одно и то же время (в начале или в конце рабочего дня). Это позволяет не забывать об этом;
Если есть возможность одновременно хранить несколько резервных копий базы 1С (например, 5 копий), то это ещё лучше.
Разработчики в управляемых приложениях применили новый механизм настройки прав доступа, о которых и пойдет речь.
Будут перечислены все те грабли, которые собрал автор, чтобы вы о них знали.
Наверняка, уже все знают, что из себя представляет новая система, поэтому предистория вкрадце:
Как было раньше( в обычном приложении):
Есть документ. Есть Роли - ПолныеПрава, ДокументНетДоступа, ДокументТолькоЧтение, ДокументЧтениеИРедактирование. В конфигураторе(аналогичный механизм в реж предприятия) вы выставляете пользователям эти роли и у них появляются соответствующие права доступа на документ. Все просто и скучно и даже зевать хочется.
С введением управляемого приложения разработчики решили усложнить(читается как расширить) настройки прав доступа.
Теперь:
Вводная та же. Чтобы дать пользователю какие-то права на документ - сначала вам необходимо создать элемент справочника Профили групп доступа. Это некий агрегирующий(суммирующий значения) объект, который объединяет роли в группы ролей. Теоритически таких профилей можно создать сколько угодно много с различным набором ролей( N*(n-1), где N - количество ролей), но на практике количество профилей определяется количеством должностных обязанностей пользователей в организации и их гораздо меньше, чем ролей.
Чтобы "привязать" эти профили к пользователям - нужно создать элементы справочника ГруппыДоступа. В типовых они создаются автоматически, когда вы отмечаете галочками профили для пользователя. Этот справочник соединяет профиль и пользователя(или нескольких пользователей).
При записи этого элемента справочника система автоматически добавляет роли (из профиля) в роли пользователя. Поэтому не стоит напрямую редактировать роли в конфигураторе, как раньше - при редактировании прав в Предприятии все роли в конфигураторе будут обновлены на роли из профилей пользователя. Кроме того, будет наблюдаться явное противоречение между набором профилей с ролями и ролями, установленными в конфигураторе.
Как хранятся роли в Профиле групп доступа, спросите вы. Ведь роли - это объекты МД, это не ссылочные типы. Отвечаю - для этого(и не только) разработчики создали служебный справочник ИдентификаторыОбъектовМетаданных, в котором хранится( в иерархии!) имена, синонимы, значения пустых ссылок всех объектов МД. Если вы хотите создать Профиль программно и добавить в него роль, то код примерно будет таким:
Но если мы добавили новую роль в конфигурации, то как она попадет в справочник? Хороший вопрос. У справочника ИдентификаторыОбъектовМетаданных есть метод, позволяющий обновлять его данные. это:
Процедуру следует запускать каждый раз, когда вы вносите изменения в метаданные, особенно когда изменяете роли, объекты, связанные с новыми ролями.
Отлично. Роль добавили, идентификаторы обновили.
Но обратная связь не работает - вы в режиме предприятия назначили пользователю профиль( с созданием группы доступа), а роль у пользователя в конфигураторе не добавилась! Что делать?
За синхронизацию ролей/профилей отвечает константа ПараметрыРаботыПользователей. Если роли не обновляются в конфигураторе, следует обновить её значение:
Хорошо, скажите вы. А как быть, если я хочу создать группы доступа программно? Да не вопрос. Единственное ограничение - не допускаются дубли связок Профиль-Пользоваль в группах доступа. Примерный код будет таким:
После выполнения этого кода, если все, что нужно обновлено - типовая конфигурация добавит пользователю роли.
Раз уж пошли по программному пути, вот код, который добавляет пользователя в справочник Пользователи и ПользователяИБ в ПользователиИнформационнойБазы:
Если вы добавляете не программно, то добавлять нужно из режима Предприятия - тогда пользовательИБ у вас сам создатся.
И если раньше, в обычном приложении, достаточно будет добавить польз в конфигураторе - и при заходе в Предприятие, этот польз сам создавался в спр Пользователи, то с управляемым приложением такой фокус не прокатит - система не даст зайти под пользователемИБ, которого нет в справочнике Пользователи.
Именно 13-го июня в первый рабочий день база и слетела. Прямо с утра. При запуске пишет: «Файл базы данных поврежден. 1cv8.1CD» и все тут. Ни в конфигуратор ни в предприятие не пускает.
Последний бэкап понятно как обычно старый, ибо при последнем обновлении 1С рабочую базу перенесли в другую папку, которая соответственно в архив не попадала.
В общем вот исходные данные:
1. 1С 8.2.14.540
2. убитый файл 1Сv8.1CD весом 900 МБ датой от 12.06.2012;
3. рабочий файл 1Сv8.1CD весом 900 МБ датой от 26.04.2012;
На уровне подсознания понятно что из этого что то можно получить но пока не ясно как.
СЛАВА ИНТЕРНЕТУ!!! ИНФОРМАЦИЯ - вот в чем его сила. И пока, но все меньше, свободная (лирическое отступление).
По сути вопроса в Сети достаточно много информации, но все в итоге сводится к махинациям с копированием части исправного файла в убитый. Главный инструмент в данном случае - программка tool_1CD. Огромное спасибо ее автору Валерию (awa)!. Так же очень полезна статья того же автора: Краткое описание формата файлов *.1CD (файловых баз 1Сv8) . Ее пожалуй нужно прочитать перед началом попытки восстановления, тогда понятнее станет что и как делать.
ИТАК:
Первым делом конечно нужно скопировать оба файла (убитый и целый) куда нибудь подальше чтобы не потерять их исходники. Там мы их не трогаем. Затем скопировать их еще раз в папку где будем проводить эксперименты. Вот тут пожалуйста - издеваемся над ними как хотим ).
Еще до поиска в Сети пришла в голову мысль воспользоваться стандартной утилитой 1С CHDBFL.EXE для проверки и исправления файла базы.
После исправления этой утилитой 1С при загрузке стала ругаться на отсутствие таблицы _SYSTEMSETTINGS и кроме того размер файла базы сократился в 2 раза до 450 МБ. Очень странные результаты - хотя по отзывам данная утиль довольно грубая и помогает далеко не всегда, а иногда и усугубляет ситуацию (.
Ладно, заменяем жертву эксперимента файлом из «резервного хранилища».
Теперь читаем статью по формату 1Cv8.1CD и проникаемся. Ага, теперь более-менее понятно для чего и как можно использовать программу tool_1CD. Запускаем 2 экземпляра:
1.с убитым файлом:
2. с целым файлом:
Блин, ну сразу видно что 4-х таблиц не хватает. Каких -легко определить ибо порядок размещения одинаков. Таким образом у меня порушились:
- _SYSTEMSETTINGS;
- _COMMONSETTINGS;
- _REPSETTINGS;
- _FRMDTSETTINGS.
Тут я понял что дело не так уж плохо - ведь пропали только системные таблицы, которые по логике вещей и не изменились с последнего бэкапа. Ура!!!!!. Но тут конечно кому как повезет(((.
Ну вот теперь мы знаем что файл 1Cv8.1CD структурирован и хранит в себе описание и содержимое всех таблиц, а в начале файла есть основная секция где указано размещение этих таблиц.
Тут нам без HEX-редактора не обойтись. А сейчас что-то мало бесплатных то ((((. А у меня еще с давних темных времен припасена коллекция редакторов и дебаггеров. Уж и не помню для чего)))).
Ну все - запускаем HEX-Assistant и снова открываем в нем оба наших подопытных файла:
Для тех, кто внимательно прочитал статью не секрет, что блок, где хранится размещение таблиц №2 и найти его можно по смещению 0х4000:
Вот она, вот она рыба моей мечты !!! . В tool_1CD таблицы расположены в том же порядке что и в файле пэтому мы легко находим смещения для недостающих у наc таблиц:
_SYSTEMSETTINGS = 0x0000E61C
_COMMONSETTINGS = 0x0000E65C
_REPSETTINGS = 0x0000E66F
_FRMDTSETTINGS = 0x0000E683
Так же видим что смещения одинаковы в обоих файлах. Это значит, что все вообще просто:
1. идем по указанному смещению в целом файле;
2. выделяем полностью фрагмент кода с начального смещения данной таблицы до начального смещения следующей;
3. копируем с заменой в убитый файл точно на те же адреса.
4. сохраняем изменения в бывшем убитом файле.
5. проверяем tool_1CD что таблицы появились. Прога ругаться может на индексы, но они после восстановятся.
6. (по своему усмотрению) прогоняем утилитой CHDBFL.EXE (она там поругается немного, можно не обращать внимания).
или
запускаем конфигуратор - тестирование и исправление
или
делаем выгрузку-загрузку.
Я на всякий случай сделал все .
Все. Время принимать поздравления и обещания расцеловать от бухгалтерии и наставления от начальства по поводу необходимости ежедневного архивирования. В который раз ))))).
В конфигураторе в свойства конфигурации, есть параметр «Режим использования модальности»
Если установить Не использовать, то - принципе весь код, который после ОткрытьФормуМодально() Вопрос(), Предупреждение(), Выборов и диалогов открытия-сохранения станет работать с ошибками!
Рассмотрим пример с Использовать:
В режиме Предприятие получаем
Если мы поставим Режим использования модальности = Не использовать то получим ошибку: Использование модальных окон в данном режиме запрещено
Теперь код нужно писать по новому:
в результате
Почему 1С решила отказаться от использования модальных окон ?
В наш век развития мобильных технологий все идет к тому - что скоро все будут работать на планшетах и телефонах. 1С сделала для этого «Web Клиент» и «Мобильное приложение». И чтобы успешно двигаться вперед нужно решать такие проблемы как, блокировка всплывающих окон. Ведь даже обычные браузеры по умолчанию блокируют модальные (всплывающие) окна!
В данной статье рассматривается способ программного формирования HTML документа, содержащего ссылки на объекты базы данных 1С, такие как справочники, документы и т.д. Показан пример построения обработчика события OnClick ПоляHTMLДокумента, для обработки клика на html-ссылке.
Предисловие
Однажды, дописывая обработку, создающую и модифицирующую, не суть важно какие документы, я подумал, что неплохо было бы вывести для пользователя некое резюме:
“Создан документ такой-то”
“Изменен документ такой-то” и т.д.
От обычного, в таких случаях, вывода информации в окно сообщений я сразу отказался, так как не удобно это, сначала читать в окне сообщений “Создан документ … ” а потом запоминать его номер, открывать соответствующий журнал (или форму списка) и искать там этот документ. А если документов много и пользователь хочет посмотреть все документы?(или выборочно) Насколько это неудобно я убедился при отладке обработки …
То, что в форме есть элемент управления именуемый ПолеHTMLДокумента я конечно знал, но вот представилась возможность познакомиться с ним поближе. Было решено реестр обработанных документов выводить в виде html документа содержащего ссылки на эти самые документы, а по клику на ссылке открывать форму соответствующего документа. Здесь мне многие могут возразить: “А почему бы для этих целей не использовать обычный макет, выводимый в табличный документ, а для открытия документов использовать расшифровку? И чем Ваш способ лучше?” Отвечаю: Конечно можно использовать, и мой способ ничем не лучше. Он просто другой. Ведь у хорошего программиста для решения одной задачи должно быть в арсенале несколько инструментов.
Итак, перейдем от слов к делу, в рамках данной статьи рассмотрим следующую задачу: Сформировать html-документ, содержащий ссылки на элементы справочника номенклатура, по клику требуется открывать форму соответствующего элемента. Создаем новый отчет, его форму, на форме размещаем элемент управления ПолеHTMLДокумента.
Текст модуля формы:
Ну вот html мы сформировали, теперь чтобы ссылки “ожили” надо написать обработчик события OnClick элемента управления ПолеHTMLДокумента.
Всё можно пробовать!
Заключение
Обратите внимание что ссылку я формировал следующим образом:
<ИмяОбъектаМетаданных>-<УникальныйИдентификатор> это сделано для того, чтобы в обработчике onclick можно было определить к какому объекту метаданных относится данный УникальныйИдентификатор, потому что имея ТОЛЬКО УникальныйИдентификатор невозможно определить к какому объекту метаданных он относиться. Точнее возможно, но уж слишком долго и неудобно – путем перебора всех метаданных в цикле, для каждого объекта метаданных выполнять попытку <ОбъектМетаданных>.ПолучитьСсылку(Новый УникальныйИдентификатор(НашУникальныйИдентификатор))
Хотя в нашем примере только один справочник, и указывать его вид было необязательно, и так понятно что это УникальныйИдентификатор элемента справочника Номенклатура, но вдруг Вам потребуется работать с несколькими справочниками, вот тут то мой способ задания ссылки Вам и пригодится. Скачивать файлы может только зарегистрированный пользователь!
P.S. Платформа 8.2 имеет встроенный механизм работы со ссылками на объекты БД и данная задача наверняка упростится, но это уже другая тема.
Источник: obrabotki.com
Работа программ на платформе 1С: Предприятие 8 подразумевает то, что многие операции необходимо выполнять с заданной периодичностью. Перечень таких задач (обмен данными, проверка текстовых сообщений и прочее) достаточно велик, поэтому их выполнение вручную будет занимать достаточно много времени.
Разработчики 1С позаботились о том, чтобы в процессе работы с программами 1С: Предприятие 8 пользователь тратил как можно меньше времени на однотипную рутинную работу, а поэтому выполнение Конфигураторе большинства этих заданий предопределено. Однако столь большое количество регулярно выполняемых операций может быть излишним. Например, операция «Обновление текстового индекса» выполняется через каждые 150 секунд, «Проверка почты» - тоже часто. В процессе выполнения каждой операции пользователь отмечает как бы «замирание» работы программы на несколько секунд. А ведь их много, а это значит, что выполнение ненужных процессов в значительной степени ухудшает быстродействие программы.
Но и в этом случае разработчики 1С все предусмотрели. Настроить расписание выполнения фоновых операций, исключив ненужные задания, можно с помощью внешней обработки «Консоль заданий»:
В открывшемся окне вы увидите две таблицы: одна - с фоновыми заданиями, другая – с регламентными. С помощью командной панели вы можете убрать лишние фоновые задачи, а также изменить расписание необходимых вплоть до дней, часов и минут. Такая оптимизация выполнения фоновых операций позволяет в значительной степени увеличить быстродействие программы. Причем особенно актуально это для тех пользователей, которые в работе используют компьютеры с невысокими вычислительными способностями. Следует отметить, что используя обработку «Консоль заданий» пользователь также может изменить аналогичным способом расписание выполнения регламентных операций.
Когда возникает необходимость покупки ПО 1C, как правило, большая часть покупателей оказываются перед множеством выбора среди различных способов их приобретения, представляемых фирмой "1С" своим клиентам.
Кроме того, что пользователям доступны десятки различных решений, специально разработанных для разных задач одинаковое решение может выпускаться в виде различных вариантов, например, базовая поставка и версия ПРОФ . Непосредственно, об отличиях и особенностях базовых и ПРОФ версий решений компании "1С" будем говорить дальше.
Базовая поставка программ 1С - это, обычно, бюджетное ПО для одного пользователя. Как известно, базовые поставки предыдущей версии программ 1С:Предприятие 7.7 компанией "1С" теперь не выпускаются (например, купить базовая 1с ЗиУП 8 маожно, а вот ее аналог для 1С:Предприятие 7.7 больше не производится), то мы сравним возможности и ограничения базовой и ПРОФ версии программ 1С Предприятие 8.
Итак, базовая версия программ 1С - это, во-первых, локальная версия программы. Может возникнуть вопрос, но ведь и в описании к версии ПРОФ, так же написано "в комплект поставки включена лицензия на одного пользователя"? Разница заключается в том что, если в дальнейшем возникнет потребность добавить по локальной сети второго пользователя, для совместной работы нескольких пользователей, то для версии ПРОФ, достаточно купить клиентскую лицензию 1с, цена которой, как правило, меньше стоимости основной поставки. В базовой же версии организовать совместную работу по локальной сети нескольких пользователей невозможно. Ни покупка клиентских лицензий, ни покупка нескольких базовых версий не позволит работать нескольким сотрудникам в одной компьютерной сети.
Кроме вышеуказанного, относительно версии ПРОФ, базовая версия имеет ряд дополнительных ограничений, в том числе:
* не поддерживается изменение конфигурации, можно использовать только типовую конфигурацию и устанавливать ее обновления;
* не поддерживается ведение учета по нескольким фирмам в одной информационной базе; при этом имеется возможность ведения учета нескольких компаний в разных информационных базах на одном компьютере;
* одновременно с одной информационной базой может работать только один пользователь;
* не возможна работа в варианте клиент-сервер;
* не возможна работа распределенных информационных баз;
* не возможны COM-соединение и Automation-сервер.
Не смотря ни на что, базовая версия имеет ряд своих преимуществ. Несомненно - это ее цена! Купить 1С Предприятие 8.1 базовую версию для небольшого предприятия, где с программой будет работать только один сотрудник, будет по-настоящему бюджетным решением. Зарегистрированные пользователи имеют возможность бесплатного получения обновлений программы на инетрнет-сайте пользователей.
Кроме того, если Вы уже приобрели базовую версию, но в последствии выяснилось, что теперь Вам нужна версия ПРОФ. Можно будет приобрести ПРОФ версию этой же программы путем upgrade, т.е. заменой базовой версии на ПРОФ с зачетом стоимости.
Программное формирование HTML-документа, содержащего ссылки на объекты базы данных 1С
В данной статье рассматривается способ программного формирования HTML документа, содержащего ссылки на объекты базы данных 1С, такие как справочники, документы и т.д. Показан пример построения обработчика события OnClick ПоляHTMLДокумента, для обработки клика на html-ссылке.
Предисловие
Однажды, дописывая обработку, создающую и модифицирующую, не суть важно какие документы, я подумал, что неплохо было бы вывести для пользователя некое резюме:
“Создан документ такой-то”
“Изменен документ такой-то” и т.д.
От обычного, в таких случаях, вывода информации в окно сообщений я сразу отказался, так как не удобно это, сначала читать в окне сообщений “Создан документ … ” а потом запоминать его номер, открывать соответствующий журнал (или форму списка) и искать там этот документ. А если документов много и пользователь хочет посмотреть все документы?(или выборочно) Насколько это неудобно я убедился при отладке обработки …
То, что в форме есть элемент управления именуемый ПолеHTMLДокумента я конечно знал, но вот представилась возможность познакомиться с ним поближе. Было решено реестр обработанных документов выводить в виде html документа содержащего ссылки на эти самые документы, а по клику на ссылке открывать форму соответствующего документа. Здесь мне многие могут возразить: “А почему бы для этих целей не использовать обычный макет, выводимый в табличный документ, а для открытия документов использовать расшифровку? И чем Ваш способ лучше?” Отвечаю: Конечно можно использовать, и мой способ ничем не лучше. Он просто другой. Ведь у хорошего программиста для решения одной задачи должно быть в арсенале несколько инструментов.
Итак, перейдем от слов к делу, в рамках данной статьи рассмотрим следующую задачу: Сформировать html-документ, содержащий ссылки на элементы справочника номенклатура, по клику требуется открывать форму соответствующего элемента. Создаем новый отчет, его форму, на форме размещаем элемент управления ПолеHTMLДокумента.
Ну вот html мы сформировали, теперь чтобы ссылки “ожили” надо написать обработчик события OnClick элемента управления ПолеHTMLДокумента.
Заключение
Обратите внимание что ссылку я формировал следующим образом:
<ИмяОбъектаМетаданных>-<УникальныйИдентификатор> это сделано для того, чтобы в обработчике onclick можно было определить к какому объекту метаданных относится данный УникальныйИдентификатор, потому что имея ТОЛЬКО УникальныйИдентификатор невозможно определить к какому объекту метаданных он относиться. Точнее возможно, но уж слишком долго и неудобно – путем перебора всех метаданных в цикле, для каждого объекта метаданных выполнять попытку <ОбъектМетаданных>.ПолучитьСсылку(Новый УникальныйИдентификатор(НашУникальныйИдентификатор))
Хотя в нашем примере только один справочник, и указывать его вид было необязательно, и так понятно что это УникальныйИдентификатор элемента справочника Номенклатура, но вдруг Вам потребуется работать с несколькими справочниками, вот тут то мой способ задания ссылки Вам и пригодится.
P.S. Платформа 8.2 имеет встроенный механизм работы со ссылками на объекты БД и данная задача наверняка упростится, но это уже другая тема. Источник
Введение
Многие из Вас, наверное, сталкивались с такой проблемой как, удаление элементов в справочниках, а значит, знают, какую кучу проблем это приносит. Я видал много способов восстановления порушенного справочника. Все их можно свести к следующему:
Заводится новый элемент справочника, аналогичный удаленному элементу, а потом он заносится во все документы, вместо удаленного элемента. Дальше все различается только способом занесения элемента в документы. Кто все исправляет в руки, кто пишет обработку - все зависит от опыта и квалификации исполнителя. После чего, необходимо перепровести все измененные документы. В общем, долгая и нудная работа, не всегда дающая 100% результат правильного восстановления. Есть, правда, один быстрый способ, основанный на формате DBF, точнее методах работы с ним.
Вот об этом мы и поговорим. Итак, что нам для этого надо. Иметь голову, наполненную мозгами, умелые ручки, знания основ перевода чисел из одной системы счисления в другую и любой редактор DBF файлов. Я, к примеру, использую winDBFview фирмы "Гэндальф".
Часть 1. Нам повезло.
С начала, собственно, о формате DBF и методах работы с ним. Думаю, рассказывать обо всем формате нет смысла, это тема отдельной статьи, поэтому расскажем о нем вкратце, для понимания тех действий, которые необходимо совершить.
Итак, что такое DBF формат и с чем его едят. Файл DBF можно разделить на две части: заголовок и, собственно, набор данных. В заголовке находится вся служебная информация, показывающая из каких полей состоит запись, типы этих полей, размер данных в полях, количество записей, размер записи, и откуда в файле начинаются записи, но это сейчас ни к чему. В наборе данных находятся, собственно, записи данных. В начале каждой записи стоит специальный байт - признак удаления. То есть когда вы говорите программе удалить запись, она ее фактический не удаляет, а ставит в первый байт записи метку о том, что данная запись удалена.
Отсюда следует, что если найти запись соответствующую удаленному элементу и сбросить признак удаления, переиндексировать базу, то можно обнаружить что, правильно удаленный
элемент будет восстановлен не только в справочнике, но всех документах.
Для тех, кто не знает что почем, показываю на примере:
Рабочая конфигурация ТиС, удалили элемент справочника товаров.
Запускаем winDBFview и выбираем Файл - Открыть. В появившемся окне диалога находим папку, в которую установлена база и открываем там файл. А какой? Вот ведь вопрос: как узнать? Да просто. Запускаем какую-нибудь оболочку, переходим в папку с базой и находим файл"1Cv7.DD". Открываем его для просмотра и находим там следующую строчку - "Справочник Номенклатура" - в нашем случае, у вас, вместо "Номенклатура" ставим название порушенного справочника (как он называется в конфигураторе) . И видим приблизительно следующее (см. рис. 1). То, что у меня выделено под надписью "Name" и есть искомое нами имя файла. Открываем его в редакторе DBF файлов, и смотрим. В поле CODE содержится код элемента справочника, а в поле DESCR наименование элемента. Как будете искать - уже дело техники и возможностей редактора. Найдя нужный элемент, сбрасываем байт пометки на удаления и сохраняем сделанные изменения.
Часть 2. Нам не повезло.
Но может быть, что вы не смогли быстро приехать к месту событий (всякое в жизни бывает). Приступили к восстановлению элемента. Запустили редактор. И начали искать и не нашли удаленный элемент. Куда он делся? Опять вернемся к формату DBF, и посмотрим, что происходит при добавлении новой записи. С начала программа ищет помеченные на удаление записи и если не находит, то добавляет новую запись. А если находит, вы правы, пишет вместо нее. И что делать, неужто опять все в руки?
Внимательно смотрим листинг файла "1Cv7.DD". Видите перед полем CODE поля ID и PARENTID. Для чего они нужны. Из описания поля (см. рис. 1), следует, что это какой-то идентификатор объекта. Оказывается 1С все равно, на тот код, что вы указали в справочнике элементов. Сама для себя она каждому объекту присваивает свой код. Значит, если мы узнаем этот код, то сможем создать запись полный аналог удаленной. Хм.... А как узнать этот код?
Есть много способов. Я, надеюсь, предлагаю вам самый простой. Итак, начнем.
Запускаем 1С. Лезем в Сервис - Монитор пользователей - Журнал регистрации. В появившемся диалоге делаем отбор: "во всем журнале, отбор по признаку удаление элемента справочника", жмем "ОК".
И смотрим журнал (см. рис. 2). Видите, там, где написано "Номенклатура 2258 04 ....", это и есть удаленный элемент справочника, его нам и надо восстановить. Сверху присутствует
строка: "<Объект не найден>(36201/)", 36201 - это и есть ID объекта. Создаем в справочнике новый элемент - полный аналог удаленному элементу. Выходим из 1С. Запускаем редактор, находим созданный нами элемент и поле ID ставим найденный. Внимательный читатель может сразу заметить существенное различие между соседними записями. Вот сейчас мы и переведем найденный идентификатор к нужному виду.
Перевод из одной системы счисления в другую, подробно изучается в школах и институтах, поэтому на этом останавливаться не будем. Изучив весь справочник, замечаем, что в идентификатор состоит из цифр и заглавных букв латинского алфавита. То есть может содержать все цифры от "0" до "9", и буквы от "A" до "Z". Значит, используется тридцати шестеричная система счисления 10 цифр плюс 26 букв. Приступим:
* 36201 делим на 36, получаем 1005 в остатке 21;
* 1005 делим на 36, получаем 27 в остатке 33;
В конце имеем три числа: 27, 33, 21. Заменяем их соответствующими значениями из приведенной ниже таблицы и получаем ID объекта RXL. Записываем его вместо ID созданного нами элемента. Номер можно получить средствами самой 1С использую функцию _IdToStr() и наоборот получит десятичное число из его тридцати шестеричного представления _StrToId().
Запускаем 1С, индексируем базу и смотрим, что имеем (см. рис. 3)
Что и требовалось получить. Пользуйтесь.
В процессе работы пользователей, зачастую возникает необходимость создать задачу другому пользователю ИБ и проконтролировать ее выполнение.
К примеру, существует следующая задача:
Автоматизируемая компания занимается торговлей оборудованием. Специфика отгрузки оборудования заключается в том, что в основном она сопровождается оказанием услуг по монтажу закупленного оборудования. Исходя из этого, при оформлении заказа покупателя необходимо кроме ответственного за данный заказ указывать ответственного сотрудника по монтажу (в случае если это услуга не предусмотрена, реквизит не виден).
Если услуга по монтажу оборудования предусмотрена, то автоматически должно сформироваться два напоминания (события):
- Для ответственного менеджера на дату и время напоминания
- Для сотрудника ответственного за монтаж за сутки до напоминания ответственному менеджеру.
Когда срабатывает напоминание у ответственного менеджера, он должен видеть отработано ли напоминание сотрудника по монтажу оборудования.
Сформировать отчет, показывающий состояние согласования (когда сотрудник, ответственный за монтаж отработал напоминание) по незакрытым заказам покупателей (в случае оказание услуги по монтажу).
Решим ее следующим способом:
Создаем три реквизита документа Заказ покупателя: М_Монтаж (булево), М_Монтажник (Справочник пользователи) и М_ДатаМонтажа. Размещаем их на форме. Для того что бы сами реквизиты и их надписи были не видимы добавим процедуру:
При открытии формы документа тоже надо проверять можно ли отображать на форме новые реквизиты. Процедура УстановитьВидимость() вызывается из процедуры ПриОткрытии(). Именно здесь продублируем код процедуры М_МонтажПриИзменении(Элемент). Существуют, конечно, варианты. Например, можно управление видимостью организовать только в процедуре УстановитьВидимость() а в МонтажПриИзменении() обращаться к ней, или в процедуре УстановитьВидимость() вызывать МонтажПриИзменении(), однако, в первом варианте при каждом изменении значения реквизита «М_Монтаж» будет происходить установка видимости всех реквизитов в форме, что негативно скажется на производительности. Второй вариант не совсем корректен с точки зрения логики расположения программного кода, по этому сделаем наш код слегка избыточным, но зато логичным и не замедляющим работу программы.
При проведении документа следует создавать Задачу пользователя с взведенным флагом «Напоминание» и установленной датой напоминания. Лучше всего располагать создание задач после проверки на корректность заполнения всех полей документов (ведь документ может не провестись, а задачи создадутся)
Создавать задачи лучше с помощью немного доработанной процедуры РаботаСДиалогами.ПроверитьЗадачиПоОбъекту(Ссылка);
Во-первых, она проверит, есть ли введенные на основании этого документа задачи, и если обнаружит их, выдаст диалоговое окно пользователю с предложением не создавать новые. Этим мы исключим вероятность создания большого числа напоминаний при перепроведении документа. В самой функции ПроверитьЗадачиПоОбъекту() напишем:
Обратите внимание на реквизит «Инициатор» двух создаваемых нами задач. В форме списка задач существует возможность переключаться в режим просмотра заданий выданных текущим пользователем. Именно с помощью такого определения инициатора выполняется условие задачи: «В окошке напоминания менеджера должно быть видно, отработано ли событие монтажником»
Отчет в задании совсем не сложный, правда, могут возникнуть сомнения какой заказ считать закрытым. Как известно, заказ покупателя делает два движения. Одно по регистру «Заказы покупателя» где в разрезе номенклатуры, ведется учет по отгруженным товарам, второе по регистру «Расчеты с контрагентами» и здесь контролируется оплата по заказу. Думаю, что закрытым можно считать заказ, которого нет в остатках ни по одному, ни по второму регистру. Соединив их полным соединением, а так же присоединив таблицу Задач пользователя, получим отчет по незакрытым заказам пользователя. Автор: Максим Нечистяк
В современном мире люди используют Интернет не только для поиска информации, но и для приобретения каких либо товаров и услуг. Поэтому организации, например имеющие статус среднего бизнеса, стараются разместить свои прайс-листы в интернете или даже создать Интернет-магазин. Создать его не так-то просто. Если вы имеете «реальный» бизнес и используете определенную систему учета товаров (или услуг), нужно учитывать несколько немаловажных факторов:
* Каждый уважающий себя Интернет-магазин должен показывать остаток товара на складе, а также не показывать тот товар, которого уже нет в наличии. (а может быть что товар есть на разных региональных складах)
* Цены не должны расходиться с ценами в реальном магазине. Не учитывая доставку, хотя и это уже давно стало бесплатным практически везде.
Я привел только 2 факта, в действительности их может быть гораздо больше, всё зависит от того, какую цель вы ставите перед своим Интернет-проектом.
Многие организации для ведения учета товаров или оказанных услуг используют ПО «1С» и как показывает практика, большая часть организаций работает с версией 7.7, и не торопятся перейти на 8.х. так как это влечет за собой накладные расходы.
Для Реализации работы с WEB в 1С7.7 есть прекрасное решение - WEB-расширение, но оно работает только с Microsoft Internet Information Server (IIS). IIS используют не все хостинг – провайдеры, да и те кто использует вряд ли разрешат подключить свой сервер к чужой БД.
А держать «у себя» IIS сервер достаточно накладно для организаций среднего бизнеса (оборудование + интернет канал + лицензии ОС и ПО = увеличение стоимости товара).
Другое дело «свободное» ПО и ОС: Linux, Apache, PHP, MySQL. Эти четыре продукта использует большинство хостинг – провадеров, поэтому их использование как платформы для создания Интернет-проектов наиболее оптимально.
Как связать 1С 7.7 с MySQL? Можно использовать внешнюю компоненту MySQL,dll, но её использование не всегда возможно, особенно если ваш Веб-сервер находиться удаленно или вы покупаете хостинг у сторонней организации, так как не безопасно открывать доступ к БД из Интернета.
Для решения этой задачи я использовал технологию передачи данных через URL.
Возможно, звучит это немного дико, и многие подумают, что это неправильное решение. Однако эта система работает и работает достаточно хорошо и корректно.
И сейчас я бы хотел поделиться с коллегами приобретенным опытом реализации это технологии.
Кратко о принципе:
Выглядит это так: из 1С вызывается url и через него же передаются данные PHP-скрипу, который в свою очередь делает с ними все, что необходимо.
Например, нам нужно передать остаток товара на складе: из 1С должен будет сформироваться url: http://www.server.com/script.php?good=201&count=302&date=2009-06-09, где:
* http://www.server.com – адрес сервера
* script.php – исполняющий скрипт
* good=201 – переменная и код товара
* count=302 – переменная и количество остатка
* date=2009-06-09 – дата на которую передается остаток
причем для работы данной схемы достаточно лишь иметь доступ в Интернет с того компьютера на котором выполняется операция по передачи данных. (сервер БД нет необходимости подключать к Интернету)
Встреча с возможными ошибками:
Для начала хотелось бы рассказать о тех проблемах, с которыми я столкнулся и о том, как можно их наиболее эффективно решить:
1. Проблема передачи дробных чисел, а именно трудности, возникающие при использовании символа «точка» (.)
Если необходимо передать любое дробное число, то в 1С оно будет храниться виде 1.1. При передаче числа через url точка, отделяющая целую часть от дробной, вызывает ошибку, так как символ «точка» служит для разделения доменов. Следовательно, необходимо преобразовать эту самую «точку» в другой символ наиболее подходящий для этого. И этот символ - «запятая» (,). Для того чтобы осуществить это преобразование, я написал функцию, листинг которой приведен ниже:
Эта функция возвращает строку в которой все символы «.» заменены на «,» в строковой переменной Стр. Применимо это не только к числам, но и к текстовым данным.
Теперь при передаче число 1.1 будет иметь формат 1,1. Далее при получении мы должны привести это число обратно в «привычный» вид, это можно сделать на стороне PHP-скрипта функцией strtr() . краткое её описание я привел ниже:
Описание функции string strtr ( string $str , string $from , string $to ):
Эта функция возвращает строку str , в которой каждое вхождение любого символа из перечисленных в from заменено на соответствующий символ из строки to . (www.php.net)
Т.е. в нашем случае функция будет иметь вид strtr("1,1", ",", ".") и результатом её работы будет: 1.1
2. Проблема передачи даты. В 1С дата имеет вид «ДД.ММ.ГГГГ» например, 01.01.2009. При передаче такого вида данных будет вызвана такая же ошибка, как и при передаче числовых данных. Конечно, для решения и этой проблемы можно использовать указанную выше функцию ЧислоURL, но я решил пойти другим путём и конвертировал дату в формат MySQL, то есть «ГГГГ-ММ-ДД». Для этого я написал функцию МуДата, вот ее листинг:
Функция работает следующим образом – опять же выделяет из переменной Стр, Год, Месяц, Число и выстраивает их в формате ГГГГ-ММ-ДД, наиболее привычным при работе с MySQL. Об ошибках все.
Подготовка 1С:
Теперь расскажу о том, как заставить 1С работать с WEB.
Для того, чтобы иметь возможность работать с протоколом HTTP в 1С, я использовал библиотеку V7+, которая поставляется фирмой 1С и служит для расширения возможностей 1С 7.7.
Для начала необходимо подключить внешнюю компоненту (подробнее здесь), используя функцию «ЗагрузитьВнешнююКомпоненту("v7plus.dll")». Далее необходимо создать объект addin.v7httpreader, для этого я использовал переменную НТТР. А для передачи и получения данных используется метод ПолучитьКакСтроку(адрес, СтрокаДляПриёма); который получает данные в переменную СтрокаДляПриёма с адреса указанного в переменной адрес. В целом все это будет выглядеть примерно так:
Выше указанная процедура выведет в окно сообщений HTML-код заглавной страницы сайта http://www.google.ru
Таким образом, теперь мы знаем, как, из 1С, обратиться к нужному сайту, и получить его HTML-код.
Немного о PHP:
Теперь напишем PHP-скрипт, который просто будет выводить данные полученные методом GET. (ознакомиться с тем, как PHP получает данные можно здесь) Листинг такого скрипта:
Назовем его test.php и поместим в корневую папку web-сервера. Далее для проверки работы скрипта введем в адресную строку браузера http://localhost/test.php?text=hello%20wolrd В том случае, если все сделано верно, на экране появиться страница с текстом hello world.
«Соединяем» 1С и PHP:
Далее создаем в 1С внешнюю обработку и вставим в её модуль следующий код:
Отличается она от алгоритма, который мы создавали выше лишь значением в переменной адрес.
И так в случае успешной работы 1С и РНР-скпипта в окне сообщений 1С мы увидим надпись hello world.
Теперь очевидно, что с помощью 1C можно передать данные PHP-скриптам, а они в свою очередь делают с ними все что необходимо, например, записывают их в БД.
Пример записи данных в БД MySQL:
Запись в БД MYSQL будет производиться средствами PHP, об этом сказано уже не мало. Поэтому чтобы не повторяться, опишу пример из собственной практики.
Для начала создадим обработку в 1С:
На форму положим поле ввода и присвоим ему идентификатор текст, далее немного переделаем процедуру описанную в разделом выше:
Теперь необходимо создать БД в MySQL (как это сделать описано здесь). Создадим БД и присвоим ей имя TESTDB. Далее создадим таблицу с именем TEST:
Как видно из запроса, в таблице всего 2 поля:
* id – уникальный номер сроки;
* text – текстовое поле, куда будут помещаться данные из 1С.
Теперь необходимо написать PHP-скрипт, который и будет записывать данные из 1С в MySQL. Листинг данного скрипта приведен ниже:
Все готово! Теперь открываем Внешнюю обработку в 1С и пишем в поле ввода слово Hello! Нажимаем кнопку «Сформировать». Если все сделано правильно, то в созданной нами таблице появится запись со словом Hello! В противном случае, в окне сообщений 1С появится текст ошибки.
Заключение:
Весь тот опыт, которым я поделился в этой статье, можно использовать не только в Интернет-торговли, но и в корпоративных целях, например для того, чтобы:
* Консолидировать данные в единую БД MySQL;
* Предоставлять отчеты компетентным лицам, где бы они не находились.
И это еще далеко не весь перечень, ведь WEB-технологии - очень гибкий инструмент с неограниченным спектром возможностей, при условии умелого их использования.
В общем-то, мной был не только реализован механизм отправки данных, но и приема через HTTP, но вот это уже совсем другая история!
Грамотно построить работу и распланировать рабочее время сотрудников – задача не из легких, особенно в «горячую» пору очередных отпусков, ведь нужно сделать все необходимое, чтобы отсутствие «ценных кадров» никоим образом не отразилось на деятельности вашей организации. В этой статье мы затронем вопрос планирования отпусков персонала в программе «1С:Зарплата и Управление Персоналом 8.1».
Для начала необходимо создать документ «Планирование отпусков». В документе осуществляется планирование ежегодных отпусков работников предприятия, т.е. указывается список работников и периоды их отпусков.
В графе «Состояние» есть два варианта: «Утвержден» или «Не утвержден».
Проведение документа
При проведении документа производится проверка непротиворечивости получающегося графика.
После проведения можно открыть меню «Персонал» - «Отпуска» - «График отпусков». Перед вами появится табличное поле со всеми введенными отпусками.
Здесь можно отследить по цвету ячеек, кто из сотрудников уже был в отпуске, кто еще только запланировал, но еще не утвержден.
В шапке таблицы есть кнопка «Остаток отпусков». Справочник хранит остатки неиспользованных дней управленческого ежегодного отпуска за прошлые года без учета фактических отпусков текущего рабочего года. Остатки хранятся в разрезе календарных лет, с 01.01. по 31.12. В год, когда принят сотрудник, остатки хранятся с даты приема на работу по 31.12.
Заполнять справочник необходимо в двух случаях:
- При начале работы с механизмом остатков отпусков;
- Для ускорения времени проведения документов и формирования отчетов.
Начало работы с механизмом остатков отпусков
Если в программе уже есть документы фактических отпусков, использовать механизм остатков можно с того года, с которого в программе введены фактические отпуска. Порядок ввода данных в этом случае будет следующий:
1. Ввести остатки за год, являющийся предыдущим по отношению к тому году, с которого в программе введены фактические отпуска. Если данных об остатках нет, можно считать, что остатки нулевые, и ввести в качестве остатков нулевые остатки;
2. Заполнить регламентированный производственный календарь за все года, начиная с того года, с которого в программе введены фактические отпуска;
3. Перепровести документы фактических отпусков, чтобы программа посчитала количество дней, использованных каждым фактическим отпуском.
Если в программе данных о фактических отпусках нет, тогда необходимо ввести остатки за предыдущий рабочий год. Если данных об остатках нет, рекомендуется ввести нулевые остатки по каждому сотруднику.
Ускорение времени проведения документов и формирования отчетов
Если в процессе эксплуатации механизма медленнее проводятся документы или формируются отчеты по отпускам, заполнение справочника поможет решить эту проблему. Программа будет рассчитывать остатки каждого сотрудника не с даты приема на работу, а только для тех рабочих лет, для которых нет записей в справочнике остатков. Заполнять справочник можно вручную, вызовом команды заполнения или автоматически, настроив регламентное задание. Функция заполнения остатков заполняет остатки для тех рабочих лет, для которых еще не введены остатки в справочнике. Функция «Рассчитать» в форме редактирования остатков по сотруднику рассчитает остатки автоматически с даты приема сотрудника на работу, используя данные о фактических отпусках, введенных в программу и проигнорировав все остатки, введенные вручную. Увидеть информацию об актуальных остатках по сотрудникам можно из карточки сотрудника.
Также из окна «График отпусков» можно ввести дополнительные дни отпуска, нажав кнопку «Дополнительные дни отпуска». Документ предназначен для ввода дополнительных дней управленческого отпуска, обычно называемых «отгулами». Документ позволяет ввести дополнительные дни управленческого отпуска списку сотрудников. Дни отпуска записываются на дату документа. По каждому отпуску можно ввести примечание. Это примечание будет выводиться в справке по отпуску, которую можно открыть из обработки «График отпусков».
И последнее меню, которое можно вызвать из таблицы - это «Отчет по отпускам».
Отчет предоставляет возможность сформировать разнообразные списки отпусков и графики отпусков сотрудников, как по регламентированному учету, так и по управленческому учету. Данные списки можно формировать в разрезе подразделений и должностей организации и предприятия (режим формирования отчета), а также выбрать отпуска только руководителей. В отчете содержатся варианты, которые позволяют получить различные сведения об отпусках, не прибегая к дополнительным настройкам отчета. Вариант отчета «График отпусков» предназначен для вывода графика отпусков по данным управленческого и регламентированного учетов. В отчет попадают также и неутвержденные графики отпусков. Вариант отчета «Отпуска» предназначен для контроля исполнения графика отпусков. Вариант отчета «Отпуска руководителей» предназначен для вывода графика отпусков руководителей организации или предприятия. Вариант отчета «Фактические отпуска» предназначен для вывода фактических отпусков работников по данным управленческого и регламентированного учетов. В отчет попадают утвержденные отпуска.
Установка 1С 7.7 под Windows 7 :
Установщик 1С 7.7 является 16-битным приложением, а в Windows 7 отключена поддержка таких программ. Поэтому я взял другой установщик 1С, 32-битный(Ищите в интернет или спросите у Франчайзи). Запустил его "от имени администратора". Так же, как в Vista, являясь самым что ни на есть администратором, мне приходится тем не менее ещё раз подтверждать, что я администратор либо можно отключить UAC (он же User Account Control, он же контролем учетных записей пользователей). И установил SQL версию.
Если вы используете Файловую версию баз, то пропустите этот абзац, так это для SQL баз:
Теперь 1С:Предприятие 7 установлено под Windows 7. Но при попытки подключиться к SQL-базе пишет, что "Для доступа к базе данных требуется ODBC-драйвер для MS SQL Server версии 3.50.0303 или старше.". Я нисколько не удивляюсь, увидев, что в системе используется драйвер версии 6.1.7100.0, что по моему мнению старше, чем 3.50.0303, ведь это хоть и 7, но всё ещё Windows.
Пробую скопировать нужные библиотеки (sqlsrv32.dll и sqlsrv32.rll) из Windows XP, но у Администратора нет прав на изменение папки System32.
Жму кнопку дополнительно, иду на закладку Владелец и назначаю себя владельцем этих файлов. После этого мне всё-таки разрешают выдать себе права на изменения.
И я, наконец, могу скопировать эти нечастные библиотеки.
Пробую подключиться, но меня опять не пускают, правда на этот раз сообщают о том, что "Порядок сортировки, установленный для базы данных, отличается от системного!"
Иду в папку BIN 1С-ки и создаю там файл OrdNoChk.prm.
И опять мне Windows7 рассказывает, что я не могу создать файл в этой папке, создаём этот файл где-нибудь у себя в "моих документах" и копирует его в BIN.
И... 1С работает под Windows 7, единственное "НО" отключена проверка порядка сортировки? Чем это грозит? Я ничего серьезного придумать не смог, кроме того, что отчеты могут выводиться не в алфовитном порядке, а при создании УРБД можно использовать только латиницу в кодах баз…
PS: Так же надо не забывать, чтобы загрузились внешние компоненты, первый запуск надо выполнить с отключенным Контролем учетных записей (User Account Control, UAC) или правой крысой - Запуск от имени Администратор.
Как отключить Контроль учетных записей (User Account Control, UAC)?
Перед тем как выполнить данные действия, войдите в систему с Администраторского аккаунта.
* Пуск »
* Наберите в строке поиска UAC »
* Откройте ссылку Изменение параметров контроля учетных записей (UAC) »
* Изменяя положение ползунка сделайте выбор необходимой степени защиты, руководствуясь описанием в правой части экрана (мы рекомендуем уровень «Уведомлять только при попытках программ внести изменения в компьютер»).
* Нажмите «OK» »
* Перезагрузите компьютер
Ошибки как таковой не пишется, только в диалоговом окне, где программа 1С Предприятие 8.1 редакция 10.3 и т.д перед вылетом появляется "не отвечает". Работаем локально. В конфигуратор захожу без проблем.
Решение:
1. Зайдите в рабочую папку вашей базы данных (путь к ней можно увидеть внизу окна выбора информационных баз при запуске 1С, выделив нужную базу). В этой папке должны лежать две служебные папки (1Cv8FTxt и 1Cv8Log), а также файл базы 1Cv8.1CD. Других файлов быть не должно (например, с типом .tmp или .lck). Если лишние файлы там есть – удаляйте (или переместите в какую-либо другую папку). Попробуйте зайти в программу.
2. Если не помог п.1, то запускаем файл C:\Programm Files\1Cv81\bin\chkdbfl.exe и в верхнем окне выбираем файл 1Cv8.1CD нужной базы (как его найти, рассказано выше), ставим галку «Исправлять обнаруженные ошибки» и жмем «Выполнить». Возможно будут найдены и исправлены какие-то ошибки в базе и она запустится.
3. Можно попробовать выгрузить данные из базы в файл (ведь в «Конфигуратор» Вы заходите), создать новую папку (базу) и загрузить информацию из файла в нее, прописав путь к ней в окне запуска. Бывало, что помогало.