Учебник по 1С

         

Редактор форм


У многих объектов конфигурации есть экранные формы. В частности экранные формы в версии 7.7 имеют справочники, документы, журналы документов, отчеты, обработки, журналы расчетов, журнал операций, журнал проводок, план счетов и счет. У некоторых объектов может быть несколько экранных форм, например, у справочников есть формы списков, форма элемента и форма группы.

Поясним значение кнопок панели редактора форм:

Запустить тестовое окно (проверить форму в режиме конфигуратора).

Вызвать окно редактирования слоев формы (попробуйте обязательно - это очень важно!).

Разберем кнопки на панели элементов управления:


Эти кнопки становятся доступными, когда выделено несколько элементов управления на форме. Они позволяют выравнивать их по левому, по правому, по верхнему и по нижнему краю.
Эти кнопки центрируют выделенные элементы управления относительно всей формы по вертикали или горизонтали .
Эти кнопки равномерно распределяют выделенные элементы управления по вертикали или горизонтали.
Эти кнопки делают выделенные элементы управления одной ширины, одной высоты или одного размера. Определяющим является элемент управления, выделенный последним. Два элемента управления можно выделить, удерживая кнопку Shift и щелкая поочередно на каждом из них.
Включить/выключить решетку.


Для удобства пользователей обязательно настройте последовательный порядок обхода элементов диалога! При интенсивном вводе информации желательно максимальное использование клавиатуры. Порядок обхода настраивается следующим образом. В меню Диалог снимаете флажок "Автоматический порядок обхода". Затем опять в меню Диалог щелкаете "Порядок обхода" и последовательно щелкаете на номерах элементах диалога в том порядке, в котором они должны быть. Порядок обхода можно также редактировать в меню Диалог => "Настройка порядка обхода".


Редактор печатных форм (макетов)


У отчетов есть печатные формы, это понятно. У документов также есть печатные формы, это тоже понятно. Но печатные формы могут быть и у других объектов: справочников, журналов документов, плана счетов и т.д. Фактически у любого объекта, у которого есть экранная форма, может быть одна или несколько печатных форм.

Печатные формы состоят из ячеек, в которых содержатся текст или формулы, что очень напоминает Microsoft Excel. Печатные формы формируются на встроенном языке 1С при помощи вывода секций. В печатной форме может не быть секций вообще, тогда можно вывести или все, или ничего. Но в большинстве случаев нужно выводить какую-то повторяющуюся часть много раз, например список сотрудников, список товаров и т.д. Секции могут горизонтальными и вертикальными.

Поясним значения кнопок панели редактора печатных форм:

Эта кнопка вызывает что-то типа мастера элементов диалога. Можно быстро разместить любой элемент управления, назначить ему тип, присвоить вызов процедуры и т.д.
Эта кнопка размещает на форме обычную кнопку. В свойствах кнопки в поле Формула пишется имя процедуры, которая будет запущена при нажатии на кнопку.
Эта кнопка размещает на форме флажок. В свойствах флажка в поле формула пишется имя процедуры, которая будет запущена при установке или снятии флажка.
Эта кнопка размещает на поле переключатель. Переключатели имеют смысл, когда их несколько, в этом случае пользователь производит выбор между несколькими вариантами. Чтобы переключатели заработали, нужно сделать следующее: для первого переключателя установить в свойствах флажок "Первый в группе". Далее проверить, чтобы порядок обхода элементов был точно в том порядке, в котором следуют переключатели (Действия => Настройка порядка обхода). Типичный камешек для новичков.
Эта кнопка размещает на форме список значений. При этом по имени списка можно обращаться к нему из модуля (объект СписокЗначений). Можно добавлять значения в список, удалять значения и делать все другие операции, возможные для объекта СписокЗначений.
Эта кнопка размещает на форме поле со списком значений. При этом также создается объект СписокЗначений. Обратите внимание что лучше задать БОЛЬШУЮ ВЫСОТУ этого элемента управления, чтобы список раскрывался. Типичный камешек для новичков.
Обычная рамка. Можно визуально объединить несколько элементов управления. Служит для удобства пользователя.
Текстовое поле. Если в поле Формула вписать имя функции, то при каждом обновлении формы 1С будет вызывать вашу функцию и ее результат будет отображаться в этом поле. Кстати, если щелкнуть на эту кнопку и затем щелкнуть на табличной части справочника, документа или журнала, тогда мы создадим текстовую колонку. Она не будет сохраняться в базе данных, но у нее есть поле Формула, куда можно написать любое выражение. Очень полезная вещь для всяких информационных колонок. Типичная непонятность для новичков.
Поле для ввода данных. Для поля можно назначить любой тип данных, допустимый в 1С:Предприятие. В поле Формула можно написать имя процедуры, которая будет вызываться при изменении значения данного поля. ВНИМАНИЕ: для размещения на форме реквизитов справочников и документов пользуйтесь кнопкой:
. Типичный камешек для новичков.
Эта кнопка размещает на форме таблицу значений. По имени таблицы значений к ней можно обращаться из модуля. Колонки и строки таблицы создаются программным способом (см. объект ТаблицаЗначений).
Для иерархических справочников на форме списка можно разместить дерево групп.
Эта кнопка размещает на форме картинку. Управление картинкой осуществляется программным способом (см. объект Картинка).
Эта кнопка размещает на форме поля для ввода данных, связанные с реквизитами справочников и документов. Только в этом случае, введенные данные будут сохраняться в базе данных.

Остальные кнопки попробуйте сами:

Список секций таблицы.

Включение / выключение сетки.

Включение / выключение заголовков столбцов и строк.

Включение / выключение границ секций.

Включение / выключение режима "Только просмотр".

Фиксация строк или столбцов. При прокрутке таблицы эти строки / столбцы будут оставаться на экране.

У каждой ячейки есть свойства, которые вызываются правой кнопкой мыши:

Предлагаю вам изучить его методом научного тыка, по справке или по книжке "Администрирование и конфигурирование". Обратите внимание на поле Расшифровка, поскольку это очень важно и часто используется при программировании на 1С.



Редактор программных модулей


У каждой экранной формы есть программный модуль. Кроме того, есть программные модули документов и глобальный модуль. В этих модулях располагается программа на встроенном языке 1С, который похож на Бейсик, но имеет свои особенности.

В программном модуле имеется синтаксическая подсветка. Разными цветами отображаются ключевые слова, переменные, комментарии и значения. Цветовая палитра настраивается в параметрах.

Поясним значения кнопок панели редактора программных модулей:

Рисование линий, прямоугольников, размещение на печатной форме текстовых надписей, картинок, диаграмм. Редко используемые кнопки на самом деле.
Кнопка перехода в режим выбора рисунков.
Кнопка объединения нескольких ячеек в одну.
Кнопки создания/уничтожения вертикальных и горизонтальных секций. Если выделить несколько строк, а затем щелкнуть на первую кнопку, то мы создадим горизонтальную секцию. Если выделить столбцы и щелкнуть на первую кнопку, то создадим вертикальную секцию. Для каждой секции нужно задать имя, по которому мы сможем обратиться к ней из модуля.

Открыть модуль в отладчике.

Проверить модуль на синтаксические ошибки.

Перейти к определенной строке модуля.

Открыть окно со списком процедур и функций модуля. (полезная вещь!)

При редактировании модуля также обратите свое внимание на верхние кнопочки. Там вы найдете кнопки поиска, вызова синтакс помощника и другие интересности, например, конструктуры. Чаще пользуйтесь синтакс-помощником - очень полезная вещь! Помните, что там можно искать слова! Более того, при редактировании модуля можно щелкнуть правой кнопкой на любом слове и выбрать там пункт "Найти в Синтакс-помощнике".



Регистрация изменений


Перенос измененных данных производится "пообъектно". То есть единицей переноса данных является так называемый ведущий объект. С точки зрения работы в распределенной информационной базе в 1С:Предприятии существуют следующие типы ведущих объектов:

константа,

элемент справочника,

документ,

календарь,

счет бухгалтерского учета,

типовая операция.

Вместе с документами переносятся все действия, выполняемые ими в процессе проведения: движения регистров, акты расчета, бухгалтерская операция, проводки. В случае, если при проведении документа производятся изменения периодических реквизитов элемента справочника, то производится перенос всего элемента справочника.

Регистрация изменений объектов производится автоматически при любом изменении объекта, независимо от того каким способом это изменение производилось (интерактивно или из встроенного языка). Кроме того в версии 7.7 системы 1С:Предприятие для таких объектов как элементы справочников и документы появилась возможность управления регистрацией изменений. Для этого у соответствующих объектов метаданных введен признак "Автоматическая регистрация изменений". Если этот признак установлен (значение по умолчанию), то автоматическая регистрация производится, а если признак сброшен, то регистрация не производится и изменения объектов в распределенной ИБ не распространяются. Но и в данном случае, при выполнении записи изменений объектов из встроенного языка можно управлять регистрацией изменений с помощью метода встроенного языка РегистрацияИзменений().

Регистрация изменений ведущих объектов производится в специальной служебной таблице. При этом фиксируются следующие данные об изменении объекта:

Сам ведущий объект;

Идентификатор той ИБ, в которую должно быть передано изменение;

Идентификатор ИБ, в которую должно быть передано изменение, служит для отслеживания переноса данных в каждую из ИБ, с которой данная ИБ обменивается данными. Таким образом, при изменении какого-либо объекта в центральной ИБ в таблицу будет помещено по одной записи для каждой из зарегистрированных периферийных информационных баз. Если же изменение объекта происходит в периферийной ИБ, то в таблицу будет занесена только одна запись, соответствующая центральной ИБ, так как каждая из периферийных ИБ непосредственно взаимодействует только с центральной.

Заметим, что удаление объекта является частным случаем изменения. Оно также помечается в таблице регистрации изменений и передается при выгрузке.



РЕГИСТРЫ


По тексту программы можно расставить закладки или пометки (marks), и перемещаться по ним. Полезная вещь для больших модулей в сотни и тысячи строк.
Кнопки сдвига блока текста вправо и влево. Становятся активными, когда выделено одна или несколько строчек.
Закомментировать / раскомментировать блок текста.
Кнопка автоформатирования текста программы. Нажимайте ее чаще и ваши программы будут красивыми! К сожалению, это не избавит их от всех ошибок, но их определенно станет меньше!

Обращение к итогам

Обращение к движениям

Фильтрация движений

Временный расчет

Запрос к регистру



Регистры, используемые в примерах:


Измерения: Клиент, Товар

Ресурсы: Доход

Реквизиты: нет

Периодичность: День

Измерения: Товар, Склад

Ресурсы: Количество, Стоимость

Реквизиты: нет



Регистры остатков


Рассмотрим в качестве примера отслеживание взаиморасчетов с покупателями товаров, которые производит или продает предприятие.

Для того чтобы оперативно получать информацию о взаимной задолженности предприятия и покупателя, потребуется регистр «Взаиморасчеты», в котором для каждого покупателя будет храниться сумма задолженности. При совершении хозяйственной операции состояние регистра будет соответствующим образом изменяться, каждый раз отражая текущее состояние взаиморасчетов. Регистр «Взаиморасчеты» — это регистр остатков.



Родитель


Перебор элементов внутри группы. Группа в терминах 1С -- это "родитель".

СпрСотр.НайтиПоНаименованию("Работающие");

Работающие = СпрСотр.ТекущийЭлемент();

СпрСотр.ИспользоватьРодителя(Работающие);

//дальше, например, цикл по сотрудникам (см. выше)

...



С чего начать?


Начните с этого Учебника! Здесь подробно, шаг за шагом, рассказывается про 1С:Предприятие. Мы начнем с самых простых понятий и дойдем до таких интересных вещей, как Мастер отчетов. Все главы проиллюстрированы наглядными примерами, что позволит Вам быстро и хорошо освоить эту систему.

Подробнее...

Запись движений
Народная примета: если программист в девять утра уже на работе, значит, он еще на работе.
Оборотный регистр Доходы
Регистр остатков Товары
Хранит доходы от продаж за день в разрезе клиентов и товаров.
Хранит остатки товаров на каждом складе в количественном и суммовом выражении.

 

pl="";sl="1.1";j = (navigator.javaEnabled()?"Y":"N");

sl="1.2";s=screen;px=(n==0)?s.colorDepth:s.pixelDepth; z+="&wh="+s.width+'x'+s.height+"&px="+px;

sl="1.3"

y="";y+=""; y+="

"; y+=""; d.write(y); if(!n) { d.write("



Счет и план счетов


Счет в 1С:Предприятие соответствует обычному бухгалтерскому счету. Совокупность счетов образует план счетов. На предприятии может применяться одновременно несколько планов счетов. Счет имеет код и наименование. Длина и структура кода счета задается при конфигурировании, например, ##.## Счета, заданные в режиме Конфигуратора нельзя редактировать в режиме пользователя.

Субсчет

У счета могут быть субсчета. Например, счет 10 "Материалы" может иметь субсчет 10.3 "Топливо". В системе 1С:Предприятие возможно ведение субсчетов с более сложной структурой: у субсчета может, в свою очередь, быть свой "субсубсчет" и так далее.

Тип счета: активный / пассивный / активно-пассивный

Для активного счета сумма по дебету увеличивает сальдо по счету (дебетовое сальдо). Для пассивного счета сумма по дебету уменьшает сальдо по счету (кредитовое сальдо). Для активно-пассивного счета сальдо может быть свернутым или развернутым. Развернутое сальдо означает наличие остатка по дебету и кредиту счета одновременно.

Аналитический учет (субконто и вид субконто).

Для получения информации о наличии и движении средств предприятия не только по счетам, но и в более детальных разрезах, предназначено ведение аналитического учета.

Субконто. Для обозначения объектов аналитического учета в 1С:Предприятии используется термин субконто. Наличие субконто позволяет более детально раскрыть информацию о средствах предприятия, накапливаемых на счетах бухгалтерского учета. В этом субконто похожи на субсчета - они позволяют получать более мелкую градацию итогов внутри одного счета по определенному признаку. Кроме того, субконто позволяет отследить движение средств по одному объекту аналитического учета по всем счетам, на которых ведется аналитический учет в данном разрезе. Например, движение конкретного основного средства.

Вид субконто. Под видом субконто понимается совокупность однотипных объектов аналитического учета. Для одного счета может быть задано ведение аналитического учета по нескольким видам субконто. Так, например, для счета 10 может быть определено ведение аналитического учета по двум видам субконто: "Материалы" и "Склады". Это является примером многомерного учета в 1С:Предприятие. Итоги можно получать как по материалам в разрезе складов, так и по складам в разрезе материалов, а также, разумеется, в целом по всем материалам и по всем складам.


Количественный учет

Для количественного счета в 1С:Предприятие накапливается итоговая информация в количественном (натуральном) выражении. Возможность ведения количественного учета обычно используется в совокупности с аналитическим учетом. В этом случае можно получать более полную отчетную информацию по объектам аналитического учета, например, наличие товаров на складе.

Валютный учет

Система 1С:Предприятие позволяет вести валютный учет по нескольким валютам. Все используемые валюты задаются в справочнике валют. Для всех валютных счетов итоговая информация накапливается на счете для каждой валюты отдельно, а также по счету в целом. По каждой валюте итоговая информация по счету накапливается как в валютном выражении, так и в ее эквиваленте базовой валюты. Если в справочнике валют имеется курс, то при вводе проводок будет автоматически вычисляться сумма проводки по валютной сумме и текущему курсу.

Забалансовые счета

В некоторых случаях на предприятиях требуется использование вспомогательных счетов, которые не должны попадать в баланс. Для забалансовых счетов не действует правило двойной записи.

Разделитель учета

Система 1С:Предприятие позволяет вести бухгалтерский учет нескольких предприятий в одной информационной базе. Для этого используется разделитель учета. Под разделителем учета понимается некоторое значение, например "Фирма", которое заносится в каждую проводку и позволяет получать все бухгалтерские итоги по каждому такому значению отдельно. Это позволяет, фактически, получить несколько независимых балансов.


Счета и субсчета


Счета могут объединяться в группы. Счет, который является группой, называется "синтетический счет". Счет, который входит в группу, называется "субсчет". Для работы с такими счетами применяются следующие методы:

u="u045.09.spylog.com";d=document;nv=navigator;na=nv.appName;p=0;j="N"; d.cookie="b=b";c=0;bv=Math.round(parseFloat(nv.appVersion)*100); if (d.cookie) c=1;n=(na.substring(0,2)=="Mi")?0:1;rn=Math.random(); z="p="+p+"&rn="+rn+"&c="+c;if (self!=top) {fr=1;} else {fr=0;} sl="1.0";
 

Определяет, является ли данный счет группой (может иметь субсчета) или нет.

Возвращает: 1 - счет является группой; 0 - счет не является группой.

Пример, вывести все синтетические счета:

Счета = СоздатьОбъект("Счет.ОснПлан");

Счета.ВыбратьСчета();

Пока Счета.ПолучитьСчет()=1 Цикл

....Если Счета.ЭтоГруппа()=1 Тогда

..........Сообщить(Счета.Код + " " + Счета.Наименование);

....КонецЕсли;

КонецЦикла;

Устанавливает / выдает значение родителя (счета вышестоящего уровня), используемого для выборки счетов. Возвращает: значение типа ''Счет'' - текущее значение используемого родителя на момент до исполнения метода.

Пример, вывести все субсчета счета "10 Материалы":

Счета = СоздатьОбъект("Счет.ОснПлан");

Сч10 = СчетПоКоду(10);

Счета.ИспользоватьРодителя(Сч10);

Счета.ВыбратьСчета();

Пока Счета.ПолучитьСчет()=1 Цикл

.....Сообщить(Счета.Код + " " + Счета.Наименование);

КонецЦикла;

Возвращает уровень вложенности текущего счета. (возвращает 1 - для счета верхнего уровня)

Пример, вывести все счета в виде дерева:

Счета = СоздатьОбъект("Счет.ОснПлан");

Счета.ВыбратьСчета();

Пока Счета.ПолучитьСчет()=1 Цикл

отступ = "";

Для ном = 1 По Счета.Уровень() Цикл

....отступ = отступ + " ";

КонецЦикла;

Сообщить(отступ + Счета.Код + " " + Счета.Наименование);

КонецЦикла;

Определяет, является ли текущий счет субсчетом для счета, указанного в качестве параметра метода. Проверка выполняется по всем вышестоящим уровням счета. Возвращает: 1 - текущий счет является субсчетом для счета, указанного в качестве параметра; 0 - не является.


Пример,

Сч10 = СчетПоКоду("10");

СубСч10 = СчетПоКоду("10.5.1");

Сообщить(СубСч10.ПринадлежитГруппе(Сч10)); //метод вернет 1

Возвращает счет вышестоящего уровня для данного счета. <НомерУровня> - число, которое определяет, какого уровня вышестоящий счет должен быть выдан. Если параметр не указан - выдается непосредственный родитель.

Например, для счета "10.5" этот метод вернет счет с кодом "10".

Выдает код счета без кодов счетов вышестоящих уровней.

Возвращает: строковое значение - код счета без кодов счетов вышестоящих уровней.

Например, для счета "10.5" этот метод вернет строковое значение "5".

Этот метод утанавливает режим выборки групп. Данный метод может применяться как для позиционируемых объектов, созданных функцией ''СоздатьОбъект'', так и для элементов диалога типа ''Счет''. По умолчанию выбор группы разрешен, за исключением счетов дебета и кредита в проводках операции.

ВыбрСчет.ВыборГруппы(1); //разрешить выбор группы

ВыбрСчет.ВыборГруппы(0); //запретить выбор группы


Секции


Фирма 1С предоставила мощный инструмент формирования отчетов -- Секции. Секция -- это область таблицы, предназначенная для многократного вывода. Например, в отчете по сотрудникам будет секция "Сотрудник", которую нужно будет выводить для каждого сотрудника. Секции могут быть горизонтальными или вертикальными. Можно также выводить пересечения горизонтальных и вертикальных секций.



Сеть партнеров фирмы "1С"


Фирма "1С" работает с пользователями через самую разветвленную на компьютерном рынке СНГ партнерскую сеть. У фирмы 1С мощная франчайзинговая сеть. Франчайзи -- это фирмы-партнеры 1С. Они занимаются продажей и внедрением продуктов 1С. Таких фирм насчитывается около 1600. В самой фирме 1С работает 200 человек. Оборот фирмы составляет 1-2 млн. долларов в месяц. В 1998 году оборот фирмы составил 17 млн долларов. Если рассматривать сеть партнеров 1С как единую компанию, то оказывается, что это -- мегафирма с оборотом свыше 200 млн. долларов в год, численностью персонала свыше 30 тыс. человек, представленная в более чем 400 городах России и СНГ !

Дилерами фирмы "1С" являются более 2300 постоянных партнеров в 430 городах России, стран СНГ и Балтии. 1С:Франчайзинг представляет собой сеть из более 1600 предприятий, сертифицированных фирмой "1С" на оказание комплексных услуг по автоматизации учетной и офисной работы на базе программных продуктов "1С". Авторизованные учебные центры фирмы "1С" (более 700) проводят обучение силами сертифицированных Финансовой Академией при Правительстве РФ специалистов на базе поставляемых "1С" типовых учебных курсов. Авторизованные центры сертификации в рамках новой программы "1С:Профессионал" проводят сертификацию пользователей "1С:Бухгалтерии" для официального подтверждения высокой квалификации, опыта и навыков работы с самой распространенной в России и СНГ программой бухгалтерского учета. Сервис-партнеры "1С" обеспечивают регулярное информационно-технологическое сопровождение программ системы "1С:Предприятия" на рабочих местах пользователей. Дистрибьюторы в регионах позволяют дилерам программных продуктов не тратить время и деньги на доставку программ из Москвы, а целиком посвятить себя основному делу - полноценному обслуживанию конечных пользователей. И, наконец, 1С:Мультимедиа - Ассоциация магазинов, работающих в сфере розничных продаж программ для домашних компьютеров, насчитывающая более 190 торговых точек в 70 городах бывшего СССР.



Шаблоны


Шаблоны предназначены для облегчения нелегкого труда программиста. Чтобы не писать длинные конструкции, а заменять их короткими словами. При этом при вводе такого сокращения оно автоматически заменяется на полную конструкцию.

Например, вам надоело постоянно писать "КонецЕсли;". Предлагаю придумать сокращение "ке". При вводе такого сокращения оно автоматически заменится на "КонецЕсли;" (даже с точкой запятой в конце!).

Можно сделать и более сложные вещи. Вы вводите слово "Пока". Понятно, что это начало цикла. При этом 1С запросит условие в диалоговом окне и далее сформирует всю конструкцию и даже поставит курсор, куда нужно, чтобы можно было продолжать писать программу.

Пока <ваше условие> Цикл

КонецЦикла;

Окно для редактирования шаблонов вызывается из Синтакс-помощника правой кнопкой или через Сервис => Настройка шаблонов.



Синтаксис языка 1С


Метод
Описание
ЭтоГруппа()
ИспользоватьРодителя(<Счет>)
Уровень()
ПринадлежитГруппе(<Счет>)
Родитель(<НомерУровня>)
КодСубсчета()
ВыборГруппы(<флаг>)

- Подскажите, пожалуйста, в чем у меня ошибка?

- В ДНК, - вздыхает хакер.

Язык 1С очень похож на Бейсик. В 1С все ключевые слова можно писать по-русски.

Подходит начинающий програмист к хакеру и показывает программу на Бейсике.

Примечание

Процедура РассчитатьНалог(Сотрудник, НекаяДата)

КонецПроцедуры

Простая процедура. После слова КонецПроцедуры точка с запятой не нужна, потому что это не оператор, а операторная скобка

Функция РассчитатьНалог(Сотрудник, НекаяДата)

Возврат Налог;

КонецФункции

Функция должна обязательно возвращать результат.

Если Оклад > 10000 Тогда

......Результат = "Нормально";

Иначе

......Результат = "Плохо";

КонецЕсли;

Простое условие. После слова КонецЕсли должна быть точка с запятой, потому что так заканчивается оператор Если

......Результат = "Нормально";

ИначеЕсли Оклад > 5000 Тогда

......Результат = "Средне";

Иначе

......Результат = "Плохо";

КонецЕсли;

Если (Оклад > 10000) И (КодКатегории = 2) Тогда

КонецЕсли;

В составном логическом выражении скобки обязательны!

КонецЦикла;

КонецЦикла;

Простой цикл Для (цикл с известным числом повторений).

Перейти ~метка;

<...>

~метка:

Пока <условие> Цикл

Если <условие> Тогда

........Продолжить;

КонецЕсли;



Системные процедуры и функции


Конструкция языка 1С
Результат = ?(Оклад > 10000, "Нормально","Плохо");
Сокращенное Если.
Если Оклад > 10000 Тогда
Множественное условие. Если первое условие не выполняется, то проверяется второе. Если второе условие не выполняется, то третье. Если ни одно из условий не выполняется то выполняется блок Иначе.
Пока Номер <= 50 Цикл
Простой цикл Пока (цикл с неизвестным числом повторений). После слова КонецЦикла должна быть точка с запятой, потому что так заканчивается оператор Пока
Для Номер = 1 По 50 Цикл
Так оформляются метки и оператор безусловного перехода (GOTO). Чем меньше в вашей программе будет меток, тем лучше.

- У тебя генератор случайных чисел есть?

- Четырнадцать.

Эти процедуры и функции часто применяются при программировании на 1С, поэтому знать их обязательно!

Один программист 1С другому:

Примечание

ОкончатЦена = Окр(Цена*0.5, 2);

Округление.

Рублей = Цел(Цена);

Получить целую часть числа.

ОблНал = Макс(ОблНал-Льготы,0);

МинЗнач = Мин(значение1,значение2,значение3);

Получить минимальное или максимальное из значений. Можно передавать несколько параметров (больше двух)

Длина = СтрДлина("Иванов Иван Иванович");

Получить длину строки.

ФИО = СокрЛ(ФИО); //убрать пробелы слева

ФИО = СокрП(ФИО); //убрать пробелы справа

ФИО = СокрЛП(ФИО); //убрать пробелы слева и справа

АБ = Лев("АБВГДЕ",2);

ГДЕ = Прав("АБВГДЕ",3);

БВГ = Сред("АБВГДЕ",2,3);

Вырезание подстроки слева, справа и из середины.

НомерСимвола = Найти(ФИО, " "); //найти позицию первого пробела

НоваяСтрока = СтрЗаменить(ПрежняяСтрока," ", "_");

ФИОЗаглавнымиБуквами = ВРЕГ(ФИО)

ФИОстрочнымиБуквами = нрег(ФИО)

СегодняВСистеме = ТекущаяДата(); //дата в операционной системе

СейчасВСистеме = ТекущееВремя();

КонецМесяца = КонМесяца(НекаяДата);

НачалоГода = НачГода(НекаяДата);

КонецГода = КонГода(НекаяДата);

Месяц = ДатаМесяц(ДатаРождения);

Число = ДатаЧисло(ДатаРождения);


Сообщение = "Месяц " + Строка(НомерМесяца);

НекоеЧисло = Число("5");

НачатьТранзакцию();

Если <условие ошибки> Тогда

............ОтменитьТранзакцию();

КонецЕсли;

ЗафиксироватьТранзакцию();

Обработка транзакций. Транзакция - это совокупность действий, которая выполняется или вся целиком, или не выполняется ни одно из действий. Т.е. это единый блок действий, который или выполнен целиком, или не выполнен совсем. Транзакции необходимы для сохранения целостности базы данных.

<


Слои и закладки на форме


Форма может состоять из нескольких слоев. Каждый слой может быть показан или скрыт в любой комбинации с другими слоями.

Синтаксис: Форма.ИспользоватьСлой(<ИмяСлоя>,[<Режим>])

//показать слой Основной

Форма.ИспользоватьСлой("Основной",1);

//скрыть слой Основной

Форма.ИспользоватьСлой("Основной",0);

//показать слой Основной и скрыть все остальные

Форма.ИспользоватьСлой("Основной",2);

//показать слой Основной и Фон и скрыть все остальные

Форма.ИспользоватьСлой("Основной,Фон",2);

//закладки на форме реализуются с помощью слоев

Форма.ИспользоватьЗакладки(1);

Форма.Закладки.ДобавитьЗначение(1, "Закладка 1");

Форма.Закладки.ДобавитьЗначение(2, "Закладка 2");

Процедура ПриВыбореЗакладки(НомерЗакладки, ЗначениеЗакладки)

....Если НомерЗакладки = 1 Тогда

......Форма.ИспользоватьСлой("Фон,Шаг1");

...Иначе

......Форма.ИспользоватьСлой("Фон,Шаг2");

...КонецЕсли;

КонецПроцедуры



Снятие заказа


Документ предназначен для отмены ранее сделанных заказов. Можно уменьшить количество заказанного ранее товара. Экранная форма документа выглядит следующим образом:

Пользователь указывает клиента, при этом автоматически заполняется табличная часть документа текущими заказами по данному клиенту. Пользователь указывает нужное количество товара в колонке "Снять".

При проведении документа производятся движения в регистре Заказы:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

Если Количество > 0 Тогда

Регистр.Заказы.Товар = Товар;

Регистр.Заказы.Клиент = Клиент;

Регистр.Заказы.ДатаДоставки = ДатаДоставки;

Регистр.Заказы.Заказ = Заказ;

Регистр.Заказы.Цена = Цена;

Регистр.Заказы.Количество = Количество;

Регистр.Заказы.Сумма = Сумма;

Регистр.Заказы.ДвижениеРасходВыполнить();

КонецЕсли;

КонецЦикла;

КонецПроцедуры



Учебник по 1С


Процедура / Функция
Отсечение пробелов.
Поиск вхождения подстроки в строку.
Замена одной подстроки на другую.
Изменение регистра букв.
СегодняВ1С = РабочаяДата(); //дата в параметрах 1С
Получить текущую дату и время.
НачалоМесяца = НачМесяца(НекаяДата);
Получение начала/конца месяца/года по некой дате.
Год = ДатаГод(ДатаРождения);
Выделить из даты год, месяц и число.
ДатаЧерезДваМесяца = ДобавитьМесяц(НекаяДата,2);
Прибавление к дате нескольких месяцев. Если число отрицательное, то отсчет ведется назад.
ПериодСтрокой = ПериодСтр(Дата1, Дата2);
Строковое представление периода, например "Январь 2002".
НекаяДата = Дата("01.01.2002");
Преобразование типов.
СуммаСКопейками = Формат(Сумма,"Ч10.2-");
Форматирование чисел, сумм и дат. Очень много вариантов форматирования!
СуммаПрописью = Пропись(Сумма);
Сумма прописью. Часто применяется в денежных документах.
Если Вопрос("Вы уверены?","Да+Нет")="Да" Тогда
Вопрос пользователю. Можно спросить "Да+Нет", "Повтор+Отмена" и т.д.
Предупреждение("Случилась ошибка!");
Сообщениию пользователю в виде окошка. Программа приостанавливается, пока пользователь не нажмет ОК.
Сообщить("Документ проведен!");
Сообщение пользователю в окно сообщений. Программа работает дальше.
Состояние("Выполнено на " + Строка(Проценты) + "%");
Сообщение пользователю в строку статуса.
глТекущийПользователь = ИмяПользователя();
Получить имя текущего пользователя.
Права = НазваниеНабораПрав();
Получить название набора прав текущего пользователя.
ТекКаталогБазы = КаталогИБ();
Получить каталог, где находится информационная база.
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
Возвращает ссылку на объект.
Если ТипЗначенияСтр(Параметр)="Справочник" Тогда
Определяет тип значения.

Введение

Основы 1С

Простейший кадровый учет

Конфигуратор

Синтаксис языка 1С

Справочники

Документы

Отчеты

Регистры

Запросы

Таблица значений

Список значений

Текст

XBASE (файл DBF)

Файловая система

Диаграммы

Формы

Системные процедуры и функции

Предопределенные процедуры

Конструкторы



Сортировка


В форме списка справочника элементы могут быть отсортированы в различном порядке: по коду, по наименованию или по любому реквизиту, у которого в Конфигураторе установлен флажок Сортировка. Задать тип сортировки можно программно методом Сортировка (Способ, ФлагРазрешенияИзменения)

Процедура ПриОткрытии()

...... Сортировка("Код",0); //сортировка по коду, пользователь изменить не может

КонецПроцедуры



Сортировка списка значений


//сортировать по значению

СписокЗнач.Сортировать(); //по возрастанию

СписокЗнач.Сортировать(1); //по убыванию

//сортировать по представлению

СписокЗнач.СортироватьПоПредставлению(); //по возрастанию

СписокЗнач.СортироватьПоПредставлению(1); //по убыванию



Сортировка таблицы значений


//сортировать по должности по возрастанию

ТабЗнач.Сортировать("Должность+");

//сортировать по должности по возрастанию, а внутри должности по убыванию оклада

ТабЗнач.Сортировать("Должность+,Оклад-");



Состав документа


С точки зрения программиста, у документа есть экранная форма -- Диалог. Именно его видит пользователь на экране. Также у документа обычно есть одна или несколько бумажных форм -- Таблиц. С помощью Таблиц документ печатается на бумаге. Поведение документа определяется с помощью встроенного языка1С. На языке записывается, что документ делает в системе, как он формирует бумажный бланк и как он себя ведет на экране.

Документ обычно имеет печатную форму. Печатная форма полностью формируется средствами встроенного языка 1С, что придает большую гибкость программе. Это одна из причин ошеломляющего успеха системы 1С:Предприятие. Печатная форма документа - это фактически отчет, формируемый обычно из формы открытого документа и содержащий сведения из этого документа. Чтобы научиться формировать печатные формы, вам нужно изучить главу Отчеты (объект "Таблица").

У документа может быть несколько шаблонов печатных форм. Средствами встроенного языка (метод ИсходнаяТаблица) задается тот шаблон печатной формы, который будет использоваться.

Шаблоны печатных форм (таблицы) могут быть общие. Это дает возможность использовать один шаблон для печати нескольких видов документов. Т.е. общая таблица является глобальной для конфигурации и может быть использована в любом модуле. Примером из типовой конфигурации может являться шаблон печатной формы "Отчет о движении документа", который используется разными модулями конфигурации



Состав отчета


У любого отчета в системе 1С есть экранная форма -- Диалог, который пользователь видит на экране. В диалоге пользователь обычно задает параметры формирования отчета, например, период времени. Также у отчета обычно есть одна или несколько бумажных форм -- Таблиц. С помощью таблиц отчет печатается на бумаге. Алгоритм формирования отчета записывается в модуле отчета на встроенном языке 1С. Например, для кадрового отчета "Сотрудники, принятые за период" нужна экранная форма с двумя полями Содержание и Окончание. Оба поля будут иметь тип "дата". Модуль отчета должен выбрать из справочника Сотрудники нужных людей и вывести их в таблицу.



Создание диаграммы


Диаграмма вставляется в таблицу печатной формы с помощью пункта Вставить рисунок меню Таблица. Далее необходимо сделать следующие действия: определить тип диаграммы (гистограмма, график, круговая и т.п.), настроить внешний вид составных частей диаграммы, а затем описать процедуру "наполнения" данными при выводе печатной формы. Пройдемся поподробнее по каждому из этих действий.

Задание типа диаграммы

Для отображения разных наборов данных имеются более или менее удачные типы диаграмм. Задача программиста при конфигурировании определить тип будущей диаграммы, и задать его при форматировании области построения (контекстное меню области - закладка Тип диаграммы). Задав тип и закрыв окно форматирования, можно увидеть пример построенной диаграммы.

Настройка внешнего вида диаграммы

Для того чтобы включить режим форматирования областей диаграммы, необходимо выбрать пункт Изменить подменю Объект: 1С. V7. Диаграмма меню Действия (тое же пункт есть в контекстном меню диаграммы). Каждая из составных частей диаграммы в режиме редактирования имеет пункт контекстного меню Формат области … Настройка внешнего вида состоит из выбора заливки, рамки, цвета и шрифта текста и т.п. Там же можно определить, например, сетку для области построения. После завершения форматирования достаточно щелкнуть по любой ячейке таблицы, чтобы выключить режим форматирования.



Создание и запись нового элемента


Добавление в справочник новых элементов (записей).

СпрСотр.Новый();

СпрСотр.Наименование = "Иванов Иван Иванович";

СпрСотр.Оклад = 5000;

СпрСотр.Записать();



Создание объекта СписокЗначений


Список значений - это аналог одномерного массива в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Объект "Список значений" имеет множество полезных возможностей и работает очень быстро. Следует учитывать, что в языке 1С есть и одномерные массивы в том смысле, как это принято в других языках программирования (Перем мас[10]). Список значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.

СписокЗнач = СоздатьОбъект("СписокЗначений");



Создание операции и проводок


При проведении документа, имеющего отношение к бухгалтерскому учету, процедура проведения должна заполнить атрибуты операции данного документа и сформировать проводки.

Процедура ОбработкаПроведения()

//заполнение атрибутов операции

Операция.СуммаОперации = Итог("Сумма");

Операция.Содержание = "Поступление материалов";

Операция.Журнал = "МТ"; //доп. реквизит операции

//для каждой строки документа сделаем проводку

ВыбратьСтроки();

Пока ПолучитьСтроку()=1 Цикл

ПривязыватьСтроку(1); //проводки будут содержать номер строки документа

//создание проводки и заполнение атрибутов проводки

Операция.НоваяПроводка();

Операция.Дебет.Счет = СчетПоКоду("10.1");

Операция.Дебет.Склады = Склад; //1-й вариант обращения к субконто

Операция.Дебет.Субконто(ВидыСубконто.Материалы,Материал); //2-й вариант

Операция.Количество = Количество;

Операция.Кредит.Счет = СчетПоКоду("51");

Операция.Кредит.Субконто(1,РасчетныйСчет); //3-й вариант

Операция.Сумма = Сумма;

//у нас счет 10.1 валютный, поэтому

Операция.ВалСумма = Сумма*Курс;

Операция.Валюта = Валюта;

Операция.Филиал = Филиал; //разделитель учета (доп. реквизит проводки)

КонецЦикла;

Операция.Записать();

КонецПроцедуры

Итак, у операции есть следующие атрибуты:


Атрибут Документ предназначен только для доступа к атрибутам и рекви­зитам документа, которому принадлежит операция. Для получения значения типа «Документ» используется метод ТекущийДокумент.

Перед обращением к атрибуту конкретной проводки эта проводка должна быть выбрана с помощью методов ВыбратьПроводки, ПолучитьПроводку или создана при помощи метода НоваяПроводка. В модулях форм «Опера­ции» и «Журнал проводок» текущая проводка определяется положением кур­сора.

Дебет.Счет

Дебет.Субконто

Атрибут Дебет служит для обращения к дебетовой части текущей проводки (корреспонденции) операции. Данный атрибут возвращает агрегатный объект специального типа «Дебет», который используется только для доступа к данным дебетовой части конкретной проводки (корреспонденции) операции и не используется отдельно.

Атрибут Дебет.Счет служит для доступа к счету дебета/кредита проводки или корреспонденции операции.



Атрибут Дебет.Субконто служит для доступа к значению субконто дебета проводки (корреспонденции) операции. В конкретном случае обращение к субконто для дебета определяется счетом дебета, то есть заданными для него видами субконто по которым ведется аналитический учет по этому счету.

Разные варианты обращения к субконто см. выше в примере.

Кредит.Счет

Кредит.Субконто

hotlog_js="1.0";hotlog_d=document; hotlog_n=navigator;hotlog_rn=Math.random(); hotlog_n_n=(hotlog_n.appName.substring(0,3)=="Mic")?0:1 hotlog_r=""+hotlog_rn+"&s=2871&r="+escape(hotlog_d.referrer)+"&pg="+ escape(window.location.href) hotlog_d.cookie="hotlog=1"; hotlog_r+="&c="+(hotlog_d.cookie?"Y":"N"); hotlog_d.cookie="hotlog=1; expires=Thu, 01-Jan-70 00:00:01 GMT"

hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N")

hotlog_js="1.2";hotlog_s=screen; hotlog_r+="&wh="+hotlog_s.width+'x'+hotlog_s.height+"&px="+((hotlog_n_n==0)? hotlog_s.colorDepth:hotlog_s.pixelDepth)

hotlog_js="1.3"

hotlog_r+="&js="+hotlog_js; hotlog_d.write("

")



ТАБЛИЦА ЗНАЧЕНИЙ


Атрибут операции
Описание
ДатаОперации
Атрибут ДатаОперации содержит дату бухгалтерской операции. Так как каждая бухгалтерская операция принадлежит документу (причем только одному, а операция введенная вручную также принадлежит специальному документу «Операция»), значение атрибута совпадает со значением атрибута ДатаДок документа, которому принедлежит операция.
Содержание
Атрибут Содержание служит для обращения к содержанию операции. Содержание операции представляет собой произвольную символьную строку. Например, "Поступление материалов".
СуммаОперации
Атрибут СуммаОперации служит для обращения к сумме операции. Сумма операции является положительным или отрицательным числом. Сумма операции предназначена лишь для иллюстрирования денежного выра­жения операции и не влияет на бухгалтерские итоги.
Документ
Атрибут Документ является атрибутом «только для чтения», то есть ему нельзя присваивать никакого значения. Он служит для обращения к документу, котрому принадлежит операция. Так, как любая операция принадлежит доку­менту (операция введенная «вручную» принадлежит документу специального вида «Операция») доступ к некоторым свойствам операции, например, номеру возможен только посредством обращения к атрибуту Документ.
Сумма
Атрибут Сумма служит для обращения к сумме выбранной проводки (кор­респонденции) операции.
Валюта
Атрибут Валюта служит для обращения к валюте выбранной проводки или корреспонденции операции. Применяется только для счетов, на которых ведется валютный учет.
ВалСумма
Атрибут ВалСумма служит для обращения к сумме в валюте выбранной проводки или корреспонденции операции. Применяется только для счетов, на которых ведется валютный учет.
Количество
Атрибут Количество служит для обращению к количеству выбранной проводки или корреспонденции операции. Применяется только для счетов, на которых ведется количественный учет.
Дебет
Кредит
Доступ к кредитовой части текущей проводки. Работает аналогично атрибуту Дебет.
<реквизит_операции>
Помимо реквизитов операции, задаваемых на системном уровне (СуммаОперации, Содержание), в процессе конфигурирования для операции можно создать дополнительные реквизиты для хранения любой необходимой информации. Для обращения к дополнительному реквизиту операции должен быть указан его идентификатор, заданный в конфигураторе.
<реквизит_проводки>
Помимо реквизитов проводки, задаваемых на системном уровне (Сумма, Валюта и других), в процессе конфигурирования для проводки можно создать практически неограниченное число дополнительных реквизитов для хранения любой необходимой информации.

Создание, сохранение и проведение документа


ДокПрием.Новый();

ДокПрием.ФИО = "Иванов Иван Иванович";

ДокПрием.Оклад = 5000;

ДокПрием.Записать();

//программное проведение документа

ДокПрием.Провести();



Создание таблицы значений


Таблица значений - это двумерный массив в 1С, который предназначен для хранения и обработки промежуточных данных, возникающих в процессе работы программы. Таблица значений часто применяется при программировании на 1С, потому что имеет множество полезных возможностей и работает очень быстро. Таблица значений создается в памяти и не сохраняется в базе данных, т.е. это временный набор данных.

ТабЗнач = СоздатьОбъект("ТаблицаЗначений");

ТабЗнач.НоваяКолонка("Номер");

ТабЗнач.НоваяКолонка("Сотрудник");

ТабЗнач.НоваяКолонка("Должность");

ТабЗнач.НоваяКолонка("Оклад");

//можно указать тип данных каждой колонки

//если тип данных колонки не указан, то можно хранить данные любого типа

Синтаксис: НоваяКолонка(<Идентификатор>, <Тип>, <Длина>, <Точность>, <Заголовок>, <Ширина>, <Формат>, <Положение>)

ТабЗнач.НоваяКолонка("Номер","Число",10,0);

ТабЗнач.НоваяКолонка("Сотрудник","Справочник.Сотрудники");

ТабЗнач.НоваяКолонка("Должность","Справочник.Должности");

ТабЗнач.НоваяКолонка("Оклад","Число",10,2);



Создание, удаление и корректировка счетов


Обычно счета создаются вручную в режиме Конфигуратор или Предприятие. Но иногда может потребоваться программная корректировка списка счетов.

Счета = СоздатьОбъект("Счет.Основной");

Счета.Новый(1); //у счета будут субсчета

Счета.Код = "10";

Счета.Наименование = "Материалы";

Счета.Активный = 1; //активный

Счета.Записать();

Счета.Новый();

Счета.Код = "10.1";

Счета.Наименование = "Основные материалы";

Счета.ВидСубконто(1,ВидыСубконто.Материалы);

Счета.ВидСубконто(2,ВидыСубконто.Склады);

Счета.Записать();

Пример, изменить наименование счета:

Счета = СоздатьОбъект("Счет.Основной");

Счета.НайтиПоКоду("10");

Счета.Наименование = "Все материалы";

Счета.Записать();

Пример, пометить на удаление все счета, введенные пользователем в режиме "Предприятие". Оставить только счета, заданные разработчиком в Конфигураторе.

Счета = СоздатьОбъект("Счет.Основной");

Счета.ВыбратьСчета();

Пока Счета.ПолучитьСчет()=1 Цикл

.....Если Счета.ЗаданВКонфигурации()=0 Тогда

.........Счета.Удалить(0); //пометить на удаление

.....КонецЕсли;

КонецЦикла;

Пример, отменить все пометки на удаление:

Счета = СоздатьОбъект("Счет.Основной");

Счета.ВыбратьСчета();

Пока Счета.ПолучитьСчет()=1 Цикл

.....Если Счета.ПометкаУдаления()=1 Тогда

.........Счета.СнятьПометкуУдаления();

.....КонецЕсли;

КонецЦикла;



СПИСОК ЗНАЧЕНИЙ


Добавление значений

Перебор

Сортировка

Поиск значения

Удаление значений

Список значений в диалоге

Выгрузка и загрузка



Список значений как элемент диалога


Список значений может использоваться в экранных формах как элемент диалога с пользователем.

//установить курсор на указанную строку или можно узнать, где находится курсор.

ТекСтрока = СписокЗнач.ТекущаяСтрока(НовСтрока);

//список значений в диалоге может иметь пометки (флажки)

пометка = СписокЗнач.Пометка(Позиция); //прочитать пометку у значения списка

СписокЗнач.Пометка(Позиция,1); //установить пометку у значения списка

СписокЗнач.Пометка(Позиция,0); //снять пометку у значения списка



Справочник "Черный список"


Данный справочник будет хранить список недругов каждого пользователя, от которых он не желает получать письма. При открытии справочника отражается список недругов текущего пользователя, работающего с программой.

Справочник имеет единственное дополнительное поле Недруг, значения которого выбирается из спр.Пользователи



Справочник Контрагенты


Работающие

Иванов Иванов Иванов

Петров Петр Петрович

Уволенные

Светлов Михаил Петрович

Цветков Антон Васильевич

Партнеры

Партнер 1

Партнер 2

Поставщики

Поставщик 1

Поставщик 2



Справочник "Кошельки"


Данный справочник будет содержать названия мест хранения денежных средств семьи.



Справочник "Пользователи"


Данный справочник будет содержать сведения о пользователях конфигурации. Фактически - это будет список почтовых ящиков. При входе в систему производится поиск логина в этом справочнике и если он не находится, то в справочник автоматически добавляется новый пользователь. Глобальная переменная ТекПользователь при начале работы системы получает значение из этого справочника, т.е. по этой переменной в любом модуле программы всегда можно узнать, какой пользователь работает с конфигурацией.

Данный справочник содержит следующие поля:

Код

Наименование (краткое имя, логин)

ПолноеИмя

Подпись (для подстановки в новые письма)

ЕстьПисьмо (флажок, который показывает, что пришла новая почта)



Справочник "Работодатели"


Данный справочник будет содержать сведения о фирмах и индвидуальных предпринимателях, которые предлагают свои вакансии. При нажатии на кнопку Вакансии показывается список вакансий данного работодателя.



Справочник "Резюме"


Данный справочник будет содержать резюме соискателей. У каждого соискателя может быть несколько резюме. При нажатии на кнопку "Поиск подходящих вакансий" программа просматривает список вакансий и выбирает из них те, которые подходят для данного резюме.



Справочник "Соискатели"


Данный справочник будет хранить сведения о соискателях, которые предлагают свои резюме. При нажатии на кнопку Вакансии показывается список резюме данного соискателя. У каждого соискателя может быть несколько резюме. Например, соискатель знает 1С и знает Photoshop, но указывать их в одном резюме - признак плохого тона. Себя надо позиционировать очень четко, потому что работодателей раздражают люди, которые знают все.



Справочник "Статьи доходов"


Данный справочник будет содержать названия источников дохода семейных средств.



Справочник "Статьи расходов"


Данный справочник будет содержать названия направлений расходования семейных средств. Это многоуровневый справочник.



Справочник "Участники"


Данный справочник будет содержать имена членов семьи и названия сторон, от имени которых производятся доходы и расходы, и кому принадлежат кошельки.



Справочник "Вакансии"


Данный справочник будет содержать сведения о вакансиях работодателей. У каждого работодателя может быть несколько различных вакансий. Некоторые поля можно не заполнять, например График работы, Образование, Пол. Это означает, что работодателя не интересует данная характеристика. При нажатии на кнопку "Поиск подходящих резюме" программа просматривает список резюме и выбирает из них те, которые подходят для данной вакансии.



Справочники


Обслуживаемая магазиномом территория делится на районы. При регистрации клиента указывается его название / ФИО, адрес, телефон и район, в котором он находится. В справочнике Курьеры перечислены фамилии курьеров или названия мобильных отрядов, осуществляющих доставку товаров покупателю. Справочник товары является иерархическим и содержит 3 уровня, т.е. товары могут быть объединены в группы. Для товара указывается цена, по которой он продается клиентам.


Создание списка значений
"Программирование" - как и "любовь" - одно слово, за которым скрывается бесконечное множество занятий.

Назначение справочников

Основы программирования

Экранные формы

Создание и запись элемента

Перебор элементов

Поиск элемента

Удаление элементов

Иерархические справочники

Подчиненные справочники

Периодические реквизиты

Подбор из справочника

Другие полезные методы

Чтение структуры справочников

-Тебе понравился мой рассказ, который я тебе вчера дал почитать?

-Да, но как-то всё размыто и много действующих лиц.

Входит врач:

-Так, придурки, кто спёр мою телефонную книгу?...

Психушка. Один придурок другому:



Сравнение справочников с другими объектами


Объект
Сходства Различия
Константы
хранит значение, сохраняется в базе данных Справочник хранит не одно значение, а целый список однородных объектов.
Документы
сохраняется в базе данных, имеет реквизиты, документы могут быть подчиненными друг другу Справочник хранит нормативно-справочную информацию, а документы отражают события реального мира. Обычно значения реквизитов документов выбираются из справочников. Документ обычно проводится, документ обязательно имеет дату и время, документ может содержать табличную часть, чего нет в справочниках. Справочники могут быть многоуровневыми, в справочнике могут быть периодические реквизиты, чего нет в документах.
Перечисления
хранится в БД, хранит список значений Множество значений в справочник вводит пользователь в режиме Предприятие, а для перечислений список значений задается разработчиком в режиме Конфигуратор. Перечисления обычно используются в операторах Если.
ТаблицаЗначений
имеет строки и колонки (не хранится в БД) ТаблицаЗначений предназначена для хранения промежуточных данных в памяти компьютера, возникающих во время работы программы. Таблица значений может хранить разнородные объекты, а в справочнике все элементы одного типа. Таблицы значений не могут быть многоуровневыми или подчиненными друг другу.
СписокЗначений
хранит список значений (не сохраняется в БД) Список значений может хранить разнородные объекты, а в справочнике все элементы одного типа



Ссылка на документ


Для работы с документом из какого-нибудь модуля требуется сначала создать ссылку на этот документ.

ДокПрием = СоздатьОбъект("Документ.ПриемНаРаботу");

ДокУвольн = СоздатьОбъект("Документ.ПриказОбУвольнении");



Ссылка на календарь


1-й вариант:

Календ = СоздатьОбъект("Календарь.Служащие");

2-й вариант:

Календ = Календари.Служащие;



Ссылка на объект Таблица


Для работы с таблицей требуется сначала создать ссылку на объект Таблица. Если таблица не одна, то следует указать нужную таблицу.

Таб = СоздатьОбъект("Таблица");

или

Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("НужныйОтчет");

<вывод секций таблицы>

Таб.Показать(); //показать таблицу на экране



Ссылка на справочник


Для работы со справочником из какого-нибудь модуля требуется сначала создать ссылку на этот справочник.

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");

СпрДолж = СоздатьОбъект("Справочник.Должности");



Ссылка на вид расчета


1-й вариант:

ВР = ВидРасчета.НаРуки;

ВР = ВидРасчета.Премия;

2-й вариант:

ВР = ВидРасчета.ПолучитьАтрибут("НаРуки");

Пример, определим сумму "по окладу" текущего сотрудника:

ПоОкладу = 0;

ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");

ДатаНач = '01.01.2002';

ЖЗ. ВыбратьПериодПоОбъекту(ТекСотр, ДатаНач);

Пока ЖЗ.ПолучитьЗапись()=1 Цикл

....Если ЖЗ.ВидРасч = ВидРасчета.ПоОкладу Тогда

.........ПоОкладу = ПоОкладу + ЖЗ.Результат;

....КонецЕсли;

КонецЦикла;



Ссылка на журнал расчетов


ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");



Статический фильтр


В 1С нельзя установить отбор по периодическому реквизиту или по нескольким реквизитам одновременно (сложный фильтр). В этом случае выходом из положения может быть метод ИспользоватьСписокЭлементов. Этому методу нужно передать список элементов, которые должны быть показаны. Предварительно этот список нужно сформировать.

Процедура ПоказатьРаботающихПлотников()

СписокЭлементов = создатьОбъект("СписокЗначений");

СпрСотр = СоздатьОбъект("Справочник.Сотрудники");

СпрСотр.ИспользоватьДату(РабочаяДата());

СпрСотр.ВыбратьЭлементы();

Пока СпрСотр.ПолучитьЭлемент()=1 Цикл

.....Если (СпрСотр.Родитель = группаРаботающие) И (СпрСотр.Должность=длжПлотник) Тогда

...........СписокЭлементов.ДобавитьЗначение(СпрСотр.ТекущийЭлемент());

.....КонецЕсли;

КонецЦикла;

ИспользоватьСписокЭлементов(СписокЭлементов);

КонецПроцедуры



СтатусВозврата


Если в предопределенной процедуре вызвать команду СтатусВозврата(0), то действие не будет выполнено, например, документ не будет записан или форма не откроется. Следует помнить, что после вызова СтатусВозврата(0), предопределенная процедура продолжает свое выполнение. Чтобы выйти из процедуры, используйте команду Возврат.

Добавление строк

Перебор строк

Сортировка

Поиск значения

Итоги и группировка

Удаление строк и колонок

Таблица значений в диалоге

Специальные методы

Выгрузка таблицы значений









Создание таблицы значений
Работа программиста и шамана имеет очень много общего: каждый бормочет непонятные слова и не может объяснить почему это все работает.