Slider Image 1 Content

Slider Image 1 Content
Slider Image 2 Content
Posted onLeave a comment
При переходе с Бухгалтерии 2.0 на Бухгалтерию 3.0 на самом последнем этапе система выкидывает коленце "Ошибка выполнения файловой операции v8srv: ...". И напрочь отказывается обновляться.
Проблема и её решение оказались в настройке MS SQL 2005. В настройке Network packet size нужно было указать 16383. Вот и все дела.
Posted onLeave a comment
Проведем дальнейшую модернизацию справочника сотрудники.
Добавим сведения о половой принадлежности сотрудника.
Так как полов в основном два и добавление последующих пока не придвидится, будем хранить их значения в объекте 1С, который называется перечисление.
Из названия ясно, что перечисление это некий конечный список значений.
Найдем в дереве ветвь Перечисления, через контекстное меню добавим новое, назовем его Пол.(pic 6.1)
В свойствах на закладке данные добавим два значения Мужской , синоним Муж. и Женский, синоним Жен (pic 6.2)
Зайдем в справочник сотрудники и на закладке данные добавим реквизит Пол тип ПеречислениСсылка.
Пол и в табличную часть дети реквизит ПолРебенка, тип тот же.(pic 6.3)
У обоих реквизитов поставим свойство проверки заполнения – выдавать ошибку.(pic 6.4)
Зайдем в окно редактирования формы элемента, добавим еще одну группу с выравниванием горизонтальная.
Мы уже делали в 5 главе. (pic 6.5)
У нас нарисовалась папка Группа2, перетащим в нее реквизит наименование.
Раскроем справа ветвь Объект, найдем реквизит Пол и перетащим его мышкой в папку Группа2 (pic 6.6)
Справа раскроем ветку Дети и перетащим реквизит ПолРебенка влево в ветку с тем же названием Дети. (Pic 6.7)
В результате форма должна принять вид как на (pic 6.8)
Зайдем в 1С (F5)
В справочнике сотрудники установим значение пола сотрудника и его детей (pic 6.9)
Posted onLeave a comment
Кроме фамилии имени и отчества нам желательно знать еще некоторые сведения о сотруднике, например, его должность.
Штатное расписание компании мы будем хранить в отдельном справочнике, назовем его Должности. Заведем его.
Процедура добавления должна быть вам знакома из прошлой главы , повторятся не буду. (pic 5.1)
Для подсистемы Бухгалтерия включим видимость команды Должности:создать (pic 5.2)
Каждому сотруднику теперь нужно назначить должность.
Можно создать отдельный реквизит в справочнике сотрудники с типом ссылки на справочник Должности.
Но не исключено, что кто-то из сотрудников окажется карьеристом и будет расти по карьерной лестнице.
Или водитель вначале будет стажером, потом перейдет в статус водителя-экспедитора.
При расчете зарплаты это обстоятельство нужно учитывать.
Так или иначе нам необходимо где-то хранить изменения в статусе сотрудника.
Для этой цели идеально подходит такой объект 1С, который называется периодическим регистром сведений. Создадим его.
Находим в дереве ветвь Регистры сведений. Через контекстное меню добавляем новый регистр, называем его Должности, периодичность – в пределах дня, режим записи – независимый.
Независимый означает, что мы его можем редактировать вручную.(pic 5.3)
Заходим на вкладку Подсистемы, устанавливаем видимость для подсистемы Бухгалтерия.
Заходим на вкладку Данные и добавляем измерение Сотрудники тип СправочникСотрудники.
Ссылка (pic 5.4) Именно по этому измерению система будет определять какому сотруднику какая должность соответствует.
Добавляем ресурс должность, в нем будем хранить должность сотрудника на определенную дату.(pic 5.4a)
Должно получиться так (pic 5.5)
Отредактируем справочник сотрудники.
Зайдем в свойства справочника на вкладку формы.
Вызовем конструктор формы элемента, щелкнув напротив соответствующей записи на значок лупы.
Появится конструктор формы, нажмем готово. (pic 5.7)
Появится окно разделенное на три части.
В правом верхнем окне добавим два реквизита ДатаДолжности (pic 5.8а) с заголовком Актуальная дата
Обратите внимание, что Тип должен быть "Дата" и состав даты "Дата"
И ДолжностьСотрудника (pic 5.8)
Захватим мышкой и последовательно перетащим влево.
Внизу можно видеть, что добавленные реквизиты появились в форме элемента.
Давайте немного поправим размещение. Сейчас у нас наши реквизиты размещены друг под другом.
Лучше разместить их в одну линию.
Для этого нажмем на кнопку добавить (зеленый кружок с плюсом) и выберем Группа-обычная группа (pic 5.9)
В свойствах группы укажем группировка Горизонтальная (pic 5.10)
И мышкой перетащим наши вновь созданные реквизиты в новую группу (pic 5.11)
Теперь наши реквизиты выстроились в линию (pic 5.12)
Т.к. должность сотрудника храниться в регистре сведений, нам необходимо ее оттуда извлечь.
Регистр сведений Должности периодический, т.е. значение его зависит от даты на которую мы хотим его прочитать.
Дату мы будем брать из реквизита ДатаДолжности, которая при открытии справочника будет устанавливаться в текущую дату.
Внизу редактирования формы есть закладка, которая называется Модуль. (pic 5.13)
Перейдем на нее. Пока здесь нет ничего. Вернемся на вкладку Форма.
В верхнем окне станем на Форма и вызовем через контекстное меню палитру свойств. (pic 5.14)
Внизу в группе События напротив события ПриОткрытии щелкнув на значок лупы, мы окажемся в модуле формы и там будет сформирована заготовка процедуры ПриОткрытии.
Все, что мы напишем в этой процедуре будет выполнено при открытии формы. (pic 5.15)
Т.е мы написали, что при открытии формы ДатаДолжности при открытии формы устанавливается в текущую дату.
Если вы помните, ранее мы создали периодический регистр сведений, где договорились хранить должности сотрудника.
Чтобы выковырять из регистра сведений необходимую должность нужно знать первое, чью должность мы хотим получить и второе, на какую дату мы хотим увидеть её.
Для этого мы используем метод регистра сведений ПолучитьПоследнее(КонецПериода, Отбор), где КонецПериода
Определяет момент времени, по который необходимо получить значения ресурсов.
Может задаваться значениями типа Дата, МоментВремени или Граница.
Если параметр не указан, то будут возвращены значения ресурсов самой последней записи регистра.
Отбор
Тип: Структура. Структура, содержащая отбор по измерениям регистра.
Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры - задает отбираемое по данному измерению значение.
Если параметр не указан, то отбор не используется.
Возвращаемое значение:
Тип: Структура. Возвращает структуру, содержащую значения ресурсов.
Представляет собой коллекцию пар КлючИЗначение. При этом ключ может быть только строковым.
К значениям структуры можно обращаться как к свойствам объекта. При этом ключ используется как имя свойства.
Структура используется обычно для хранения небольшого количества значений, каждое из которым имеет некоторое имя.
Итак, чтобы сделать отбор нам необходимо создать структуру с ключем «Сотрудник» и значением: справочник.Сотрудники (строго говоря ссылки на элемент справочника сотрудники)
Т.к. читать из регистра сведений нам придется часто, разумнее поместить процедуру чтения в общий модуль из которого наша процедура будет видна для всех.
Назовем этот общий модуль ЧтениеРегистраСведений.
Для этого в контекстном меню на ветке общие модули нажимаем добавить и вводим в палитре свойств его название. (pic 5.16)
Обратите внимание, галочка в свойстве Глобальный должна быть снята, а в свойствах Сервер и Вызов сервера – установлена. (pic 5.17)
Пишем функцию чтения должности из регистра сведений и указываем, что она должна выполняться на сервере.(pic 5.18)
Теперь вернемся в модуль формы элемента справочника сотрудники и допишем процедуру ПриОткрытии (pic 5.19)
Здесь, чтобы присвоить реквизиту ДолжностьСотрудника значение должности мы обращаемся по имени к общему модулю ЧтениеРегистраСведений и через точку к функции этого модуля ПрочитатьЗначениеДолжности.
В качестве ссылки на элемент справочника сотрудники передаем Объект.Ссылка, а в качестве даты текущую дату.
ОК. Прочитать должность мы теперь можем, но только на текущую дату. Но, что, если мы захотим узнать, а какая должность у сотрудника была вчера?
Для этого вызываем свойства реквизита ДатаДолжности (pic 5.20)
В палитре свойств в События нажимаем на значок лупы напротив события ОбработкаВыбора (pic 5.21)
В открывшейся заготовке процедуры ДатаДолжностиОбработкаВыбора пишем (pic 5.22)
Т.е. практически тоже самое, что и в процедуре при открытии формы, только в качестве даты передаем ВыбранноеЗначение.
Теперь почти готово, осталось только создать механизм записи в регистр сведений, а то читать будет нечего.
Запись в регистр сведений сделаем с помощью менеджера записи регистра сведений.
У нас уже имеется общий модуль для работы с регистром сведений, там и будем продолжать. (pic 5.23)
Здесь должно быть все понятно.
Не забудьте в процедуре поставить ключевое слово Экспорт, иначе она будет не видна вне общего модуля.
В модуле формы становимся на Форма, вызываем свойства находим событие ПриЗаписиНаСервере, нажимаем на значок лупы.(pic 5.24)
В сформированной заготовке пишем (pic 5.25)
Перед записью проверяем изменилась ли значение должности и, если изменилось записываем новое значение в регистр сведений.
Осталось только проверить как это все работает. Жмем F5.
Заходим в подсистему Бухгалтерия и добавляем несколько должностей (pic 5.26)
Заходим в справочник сотрудников и выбираем сотрудника Рожков, выставим дату 10.03.2011, выберем должность стажер, запишем.
Выберем дату 14.03.2011 и установим должность водитель-экспедитор, запишем.
Закроем и снова откроем элемент справочника сотрудники Рожков, посмотрим на его должность (pic 5.27)
Попробуйте изменить дату на 10.03.2011 (pic 5.28)
Замечание: чтобы должности выбирались вот таким компактным списком (pic 5.29)
Нужно в свойствах справочник должности за закладке Формы установить галочку Быстрый выбор (pic 5.30)
Если присмотреться, то панели навигации, эта та которая в 1С у нас слева, видны два одинаковых пункта Должности, если нажать первый, то мы перейдем к списку справочника должности, второй выведет нас к записям регистра сведений должности (pic 5.31)
Что бы не было путаницы в конфигураторе зайдем в свойства регистра сведений Должности и в поле Представление списка запишем Записи должностей.(pic 5.32)
Перейдем в 1С, панель навигации у нас изменилась.(pic 5.33)
Творение наше работает.
Конечно, по уму перемещение на должность лучше делать приказами, возможно позже мы так и сделаем, а пока и так неплохо.
Posted onLeave a comment
Нам нужно создать несколько объектов для хранения списков сотрудников, складов, запчастей и.т.д. – такие объекты называются справочниками
Для начала создадим справочник, где будем хранить данные о сотрудниках.
В контекстном меню элемента дерева Справочники жмем добавить (pic 4.1)
В свойствах справочника на закладке основные пишем Сотрудники (pic 4.2)
На закладке Подсистемы, выбираем видимость нашего справочника во всех подсистемах (pic 4.3)
На вкладке Иерархия, указываем, что элементы справочник иерархический – это означает, что мы можем группировать элементы справочника в логические группы, например, работающие и уволенные. (pic 4.4)
На закладке Данные увеличим длину наименования до 55 символов (pic 4.5)
Бухгалтера очень любят создавать пустые элементы без названия, в 8.2
с этим покончено по умолчанию – система сама проверит заполнен элемент или нет.
Настраивается это так:
Щелкните на закладке Данные кнопку Стандартные реквизиты (pic 4.6)
Появиться окно с реквизитами, которые система сформировала сама. (pic 4.7)
Станем на реквизит Наименование и вызовем контекстное меню. В свойствах этого реквизита есть пункт Проверка заполнения, сейчас там выбрано Выдавать ошибку, т.е. если вы не заполните значение вас предупредят по хорошему, что заполнять значение таки надо. Если вы не хотите, чтобы вас предупреждали можете выбрать Не проверять, но я вам не советую (pic 4.8)
Теперь , в дереве на ветке подсистемы зайдем в контекстное меню и выберем Все подсистемы. Самое правое окно называется командный интерфейс. Если пощелкать по подсистемам, то можно увидеть, что напротив Сотрудники везде стоит галочка – это означает, что справочник сотрудники можно будет открыть из любой подсистемы, а вот команды создания группы и элемента будет не видно. (pic 4.9)
Давайте договоримся, что вводить новых сотрудников будет только бухгалтерия, поэтому, в командном интерфейсе подсистемы Бухгалтерия установим галочки напротив Сотрудники: создать. (pic 4.10)
Создадим 2 обязательные группы, которые по умолчанию должны присутствовать у нас в справочнике – это группа Работающие и группа Уволенные. Такие группы называются предопределенные и максимум, что пользователь может над ними сотворить это изменить их название, но это не страшно, т.к. из встроенного языка мы все-равео можем к ним обратиться по тому имени, которое сами задали. Зато пользователь не сможет даже случайно удалить эти группы. Итак, заходим в справочнике Сотрудники на закладку прочие и жмем кнопку предопределенные (pic 4.11)
Появляется окно с предопределенными элементами справочника (pic 4.12)
Нажимаем на значек желтой папки с зеленым плюсом и добавляем группу работающие, а затем уволенные (pic 4.13)
Теперь окно предопределенных элементов должно выглядеть так: (pic 4.14)
Пришла пора посмотреть что мы наделали. Жмем F5.
Переходим на вкладку бухгалтерия слева жмем на Сотрудники и справа внизу открывается справочник сотрудники с 2 готовыми папками. Обратите внимание, значок папки с точкой означает, что элемент предопределенный (pic 4.15)
Давайте создадим нового сотрудника. Жмем на плюсик напротив Работающие, далее жмем создать, откроется окно создание элемента справочника, внесем туда фамилию сотрудника и нажмем Записать и закрыть (pic 4.16)
Обратите внимание, что код присвоился элементу автоматически.(pic 4.17)
Займемся небольшим украшательством. В конфигураторе откроем справочник сотрудники.
И введем следующие данные:
Представление объекта: Сотрудник
Расширенное представление объекта: Колегга
Представление списка: Список сотрудников
Расширенное представление списка: Список коллег
Жмем F5. Эффект от произведенных изменений виден на (pic 4.19)
Есть идея к новогодним праздникам дарить подарки малолетним детям сотрудников. Для осуществления этой благой идеи нам необходимо знать сколько и каких детей нарожали коллеги. Проблема в том, что детей может быть от 0 до бесконечности и все разного возраста. Вопрос в какое место справочника их запихнуть? Ответ прост – в табличную часть справочника.
Открываем конфигуратор. Находим в дереве справочник сотрудники, Встаем на табличную часть, в контекстном меню жмем добавить. (pic 4.20)
Вводим имя табличной части Дети (pic 4.21)
Открываем свойства справочника сотрудники на закладке Данные, внизу видна созданная табличная часть Дети. (pic 4.22)
Добавим два реквизита (вторая пиктограмма)
Имя тип Строка длина 30
ДатаРождения тип дата (без времени см. Состав даты) (pic 4.23)
Должно получиться как на (pic 4.24)
Posted onLeave a comment
Итак, нам необходимо создать конфигурацию для автопарка предприятия.
Давайте подумаем, что может понадобиться небольшому предприятию для учета своего автотранспорта.
Первое, что приходит в голову это учет работы водителей и автомобилей– т.е. путевые листы, учет топлива, учет пробега.
Неплохо бы знать, когда необходимо пройти ТО, получить талон ГТО.
Далее водители склонны получать за свою работу зарплату – следовательно, необходимы некоторые данные для ее начисления.
Автомобили нуждаются в обслуживании и ремонте – поэтому неплохо бы учитывать материальные расходы на ремонт и обслуживание.
Ну для первой прикидки достаточно.
Совершенно очевидно, что у нас уже наметились три функционально разные виды деятельности:
Функции диспетчера (учет работы водителя, транспорта)
Функции механика (ремонт, движение запчастей,прохождение ТО, контактирование с дорожной полицией)
Функции бухгалтера (начисление зарплаты, оплата запчастей и услуг)
По этому принципу разобьем нашу конфигурацию на три логические части (подсистемы):
Подсистема Диспетчерская
Подсистема Механик
Подсистема Бухгалтерия
Для этого в конфигураторе развернем ветку Общие.
Чтобы не повторяться на протяжении всего примера поясняю один раз: разворачивание ветки означает, что вам нужно нажать слева от группы объектов на + (pic 3.1)
Найдем в ветке название «Подсистемы» (pic 3.2)
Через контекстное меню жмем на «Добавить» (pic 3.3)
Откроется окно свойств подсистемы (pic 3.4)
Заменим имя на Диспетчерская (pic 3.5)
И вставим картинку (pic 3.6 – 3.8), последовательно нажав: Картинка … - Добавить – Выбрать из файла – закрыть.
Добавим еще две подсистемы «Механик» и «Бухгалтерия».
В результате в ветке подсистемы у вас должно получится тоже, что и у меня. (pic 3.9)
Жмем F5, «Да» и удивляемся на дело рук своих шаловливых.(pic 3.10)
Наши подсистемы расположены по алфавиту, что логически неправильно.
По уму надо бы расположить так диспетчерская – механик-бухгалтерия.
Кстати это сделать можно.
Закрываем 1С, в конфигураторе заходим в контекстное меню АвтоБаза, выбираем «Открыть командный интерфейс конфигурации» (pic 3.11)
В открывшемся окне видим список наших подсистем (pic 3.12)
Выделяем подсистему Бухгалтерия и синей стрелкой перемещаем ее в низ.(pic 3.13)
Жмем F5 и видим, что подсистемы расположены с нашей точки зрения правильно (pic 3.14)
Posted onLeave a comment
Запустим нашу базу в режиме конфигуратора (pic 2.1)
Нажмем Конфигурация – Открыть конфигурацию (pic 2.2)
Откроется так называемое дерево объектов конфигурации (pic 2.3)
В этом дереве мы и будем работать. Добавлять к нему веточки и листики, удобрять и поливать его.
Прежде всего изменим скучное название дерева – Конфигуратор на наше веселое Автобаза.
Для этого зайдем в контекстное меню и нажмем свойства.
Чтобы не повторяться на протяжении всего примера поясняю один раз: для того чтобы зайти в контекстное меню нужно выделить тот объект, который нам нужен и нажать на нем правой кнопкой мыши.
Мы увидим, что открылась некая палитра свойств объекта конфигурация. Меняем имя на АвтоБаза. (pic 2.4)
Обратите внимание имя дерева тоже поменялось на нужное нам. (pic 2.5)
Запустим нашу АвтоБазу. Жмем F5.
Внимательно читаем сообщение о том, что наша конфигурация отличается от базы данных и жмем Да.(pic 2.6)
Полюбуемся на вновь созданную конфигурацию, с удовольствием прочитаем, что она называется автобаза и закроем её, пока ничего интересного в ней нет.(pic 2.7)
Поздравляю! Первый шаг сделан.
Posted onLeave a comment
Если вы обнаружите значок 1С смело щелкайте по нему. При определенном везении у вас должно открыться вот такое окно (pic 1.1)
У меня уже что-то стоит из инфобаз, у вас может быть девственно чисто. В любом случае нам нужно создать нечто новое.
Смело жмем кнопулю «ДОБАВИТЬ». Вываливается следующее окно- само собой выбираем «Создание новой информационной базы» (pic 1.2)
Жмем «Далее», выбираем «Создание информационной базы без конфигурации ….» (pic 1.3)
Здесь придется поработать. Во-первых заменим название с ИнформационнаяБаза на АвтоБаза, во-вторых, тип расположения информационной базы – укажем на сервере 1С Предприятия. (pic 1.4)
В следующем окошке заполним некоторые анкетные данные. А именно:
Уф, все! (pic 1.5)
В следующем окне оставляем все как есть, только установим вариант аутентификации «Запрашивать имя и пароль» и версия 1С Предприятия поставим 8.2 (pic 1.6)
Пустая база АвтоБаза готова.
Posted onLeave a comment
Совместно на одном компьютере две версии серверной части 1С:Предприятие работать не могут, т.к. по умолчанию обе будут использовать одни и те же порты: 1540 (агент сервера), 1541 (менеджер кластера), 1560-1591 (рабочие процессы).
1С:Предприятие 8.3 устанавливаем как сервис Windows с правами для запуска от имени существующего локального пользователя “Администратор”.
Теперь нам надо открыть окно командной строки cmd и перейти в каталог bin установленной серверной версии 1С:Предприятия 8.3 и попытаться удалить регистрацию сервиса “Агент сервера 1С:Предприятия 8.3” командой ragent.exe -rmsrvc:
C:\Users\администратор>cd C:\Program Files (x86)\1cv8\8.3.5.1517\bin
C:\Program Files (x86)\1cv8\8.3.5.1517\bin>ragent.exe -rmsrvc
Не смотря на ошибку Error! ControlService error!, сервис должен удалиться.
Теперь вам надо произвести повторную регистрацию данного сервера, но при этом указать порты отличные от тех, которые уже использует агент 1С:Предприятия 8.2.
C:\Program Files (x86)\1cv8\8.3.5.1517\bin>ragent.exe -instsrvc -port 2540 -regport 2541-range 2560:2591 -d "C:\Program Files (x86)\1cv8\srvinfo" -usr .\Администратор -pwd ********C:\Program Files (x86)\1cv8\8.3.5.1517\bin>ragent.exe –start
Примечание:
для изменения портов можно изменить их в regedit:
HKLM – system-CurrentControlSet-services-1C:Enterprise 8.3 Server Agent-ImagePath
“C:\Program Files (x86)\1cv8\88.3.5.1517\bin\ragent.exe” -srvc -agent -regport 2541 -port 2540 -range 2560:2591 -d “C:\Program Files (x86)\1cv8\srvinfo” – Меняем порты
(вам придется проделывать данную операцию каждый раз, когда возникнет необходимость обновить версию сервера 1С:Предприятия 8.3)
Базу версии 8.3 необходимо будет указывать в поле “Кластер серверов 1С:Предприятия” : bk-serv07:2541
Необходимо производить регистрацию утилиты для администрирование кластера как для 8.2, так и для 8.3
Откройте в проводнике папку по пути C:\Program Files (x86)\1cv8\common, и создайте на рабочем столе ярлык для консоли администрирование кластера версии 8.3
Для отображения нужного нам кластера сервера 1С:Предприятие версии 8.3 необходимо в данной оснастке создать новый центральный сервер 1С:Предприятия 8.3, где указать порт 2540
Posted onLeave a comment
Для примера рассмотрим справочник "Страны Мира".
У этого справочника есть несколько форм, в том числе ФормаСписка и Классификатор. Грубо говоря в форме классификатора содержаться сведения о всех странах.
Из формы классификатора мы можем выбрать интересующую нас страну
и поместить её в ФормуСписка.
Как же одна форма узнает о том, что происходит в другой?
Рассмотрим обе формы. В Классификаторе нас будет интересовать событие "Выбор". Обратите внимание - это событие относится не к форме, а к основному реквизиту формы - таблице значений Классификатор.
А в ФормеСписка событие так же основного реквизита Список (тип ДинамическийСписок) "ОбработкаВыбора"
Процедура которая срабатывает при выборе из Классификатора называется КлассификаторВыбор.
Сообственно здесь нас интересует событие
ОповеститьОВыборе
Именно это событие закроет форму Классификатора и "сообщит" ФормеСписка, что выбор произведен.
В ФормеСписка же отработает событие ОбработкаВыбора с процедурой СписокОбработкаВыбора. Которая просто обновит список.
Posted onLeave a comment
Обработка = ВнешниеОбработки.ПолучитьФорму("\\server06\obrabotka.epf", ИмяФормы, , Ключ); Обработка.Открыть();