Учебник по 1С

         

Таблица значений как элемент диалога


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

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

ТабЗнач.ТекущаяКолонка(НоваяКолонка,ТекКолонка);

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

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

ТабЗнач.ВидимостьКолонки("Оклад",0); //скрыть колонку Оклад

ТабЗнач.ВидимостьКолонки("Должность, Сотрудник",1); //показать колонки Должность и Сотрудник

ТабЗнач.ВидимостьКолонки("Оклад",1,1); //показать колонку Оклад в 1-й позиции

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

ТабЗнач.Фиксировать(КолСтрок,КолКолонок);



Технические подробности


Игровое поле реализовано в виде множества кнопок на трех слоях формы. Текущая игровая ситуация хранится в массиве Поле[100]. Число 0 означает куст, 1 - скрытую лису, 2- пойманную лису, 3 - число. В процедуре ОбновитьПоле выводится игровое поле на форме в соответствии с этим массивом.

Кнопка Игра, вызывает процедуру Игра(), которая начинает новую игру: расставляет на поле лис с помощью функции СлучайноеЧисло(). Кстати, очень полезная функция, но 1С ее почему-то не реализовала. Наверное, думала, что в бухгалтерии "ничто не случайно".

При нажатии на кнопку с лисой вызывается процедура ЛисаПоле(), при нажатии на кнопку с кустом или скрытой лисой вызывается процедура КустПоле. Если на поле скрытой лисы не было, то отображается число лис же горизонтали, вертикали и диагоналях клетки. Это число подсчитывается процедурой КоличествоЗапеленгованныхЛис().

Если количество пойманных лис (переменная ПЛ) равняется количеству всех лис (переменная ВЛ), то игра заканчивается. Если ходов было сделано меньше, чем в рекорде, то победителю придлагается увековечить свое достижение (процедура Увековечить).


Игровое поле реализовано в виде множества кнопок (64х3). На каждом поле размещается по три кнопки: пустая, с белой фишкой и с черной фишкой. В процедуре ПоказатьДоску в соответствии с массивом Доска скрываются и показываются нужные кнопки. В массиве Доска хранится текущая игровая ситуация. Значение поля = 1 означает пустую клетку, 2 и 3 - белые и черные фишки.

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



Текст


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



Типы данных


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

Справочник Сотрудники
Справочник Должности

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("

")



Установка даты выборки периодических реквизитов


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

СпрСотр.ИспользоватьДату(НекаяДата);

//тогда ниже уже нельзя использовать методы Установить и Получить

//доступ к периодическим реквизитам становится такой же, как к обычным реквизитам

Катег = СпрСотр.Категория;

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



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


КонтФормыПодбора.УстановитьЗначениеВПодборе(<ИмяРеквизита>,<Значение>)

<ИмяРеквизита> - строка с именем реквизита формы подбора значения;

<Значение> - значение реквизита.

КонтФормыПодбора.ПолучитьЗначениеИзПодбора(<Выражение>)

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

Код
Наименование Должность Оклад
1
Иванов Иван Иванович Бухгалтер 7000
2
Петров Петр Петрович Кадровик 5000

Транзакции


При создании множества элементов справочника для ускорения работы можно заключить цикл в транзакцию. При этом реальное создание всех элементов произойдет только по команде ЗафиксироватьТранзакцию(). На время транзакции справочник блокируется.

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

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

Для Ном = 1 По 100 Цикл

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

.....СпрСотр.Наименование = "Новый " + Строка(Ном);

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

КонецЦикла;

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

Код Наименование
1
Бухгалтер
2
Кадровик


При удалении множества элементов справочника для ускорения работы можно заключить цикл в транзакцию. При этом реальное удаление (пометка на удаление) всех элементов произойдет только по команде ЗафиксироватьТранзакцию(). На время транзакции справочник блокируется.

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

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

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

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

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

КонецЦикла;

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



Удаление документа


ДокПрием.Удалить(0); //пометка на удаление

ДокПрием.Удалить(1); //непосредственное удаление

//можно проверить, помечен ли документ на удаление

//функция возвращает 1 - если помечен, 0 - если нет

Пометка = ДокПрием.ПометкаУдаления();



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


Удаление и пометка на удаление элемента справочника.

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

СпрСотр.Удалить(1); //непосредственное удаление

//можно проверить, помечен ли элемент на удаление

//функция возвращает 1 - если помечен, 0 - если нет

Пометка = СпрСотр.ПометкаУдаления();



Удаление операций и проводок


При отмене проведения документа автоматически удаляются операции и проводки, которые он сформировал (если у него стоит параметр Создавать операцию "только при проведении").

Опер = СоздатьОбъект("Операция");

Если Опер.НайтиОперацию(ВыбрДокумент)=1 Тогда

....Опер.Удалить(1); //непосредственное удаление (по умолч.)

....Опер.Удалить(0); //пометка операции (документа) на удаление

КонецЕсли;

Методы ПометкаУдаления и СнятьПометкуУдаления работают так же, как для документов.

Метод УдалитьПроводку удаляет текущую проводку из операции.

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

Опер.ВключитьПроводки(0); //выключить проводки

Опер.ВключитьПроводки(1); //включить проводки



Удаление строк и колонок из таблицы значений


ТабЗнач.Очистить(); //очистить таблицу значений и удалить колонки

ТабЗнач.УдалитьСтроки(); //удаляет все строки (колонки сохраняются)

ТабЗнач.УдалитьСтроку(); //удаляет текущую строку

ТабЗнач.УдалитьСтроку(3); //удаляет 3-ю строку

ТабЗнач.УдалитьКолонку("Оклад"); //удаляет колонку Оклад

ТабЗнач.УдалитьКолонку(2); //удаляет 2-ю колонку

ВНИМАНИЕ

Часто требуется удалить строки, удовлетворяющие определенному условию.

Так как при удалении строки из таблицы значений следующая строка становится текущей,

то указанная ниже программа может удалить НЕ ВСЕ необходимые строки.

//ЭТА ПРОГРАММА НЕПРАВИЛЬНАЯ !!!

ТабЗнач.ВыбратьСтроки();

Пока ТабЗнач.ПолучитьСтроку()=1 Цикл

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

......ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей,

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

КонецЦикла;

В этом случае я рекомендую использовать следующий прием:

ТабЗнач.ВыбратьСтроки();

Пока ТабЗнач.ПолучитьСтроку()=1 Цикл

~начало:

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

......ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей

......Если ТабЗнач.НомерСтроки<>0 Тогда

........ Перейти ~начало;

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

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

КонецЦикла;

А вот еще один правильный алгоритм, предложенный Wlad:

ТабЗнач.выбратьстроки();

Пока ТабЗнач.ПолучитьСтроку()=1 Цикл

.......Пока (<условие>) и (ТабЗнач.НомерСтроки<>0) Цикл

..............ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей

.......КонецЦикла;

КонецЦикла;



Удаление записей в журнале расчетов


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

Можно также явно удалять записи методом журнала расчетов УдалитьЗапись().



Удаление значений из списка


СписокЗнач.УдалитьВсе(); //очистить список значений

//удаляет значения из указанной позиции

СписокЗнач.УдалитьЗначение(откуда, [сколько]);



Условие отбора


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

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

ТекстЗапроса = "

|Сотр = Справочник.Сотрудники.ТекущийЭлемент;

|КодДолж = Справочник.Сотрудники.Должность.Код;

|Группировка Сотр упорядочить по Сотр.Наименование;

|Условие (КодДолж = 7);

|";

Запрос.Выполнить(ТекстЗапроса);

Пока Запрос.Группировка("Долж")=1 Цикл

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

КонецЦикла;



Установка периода итогов


Устанавливает произвольный период в качестве периода расчета итогов.

Синтаксис: ПериодД(<ДатаНачалаПериода>, <ДатаКонцаПериода>)

Устанавливает квартал в качестве периода расчета итогов.

Синтаксис: ПериодКВ(<Дата>|<НомерКвартала>, <Год>)

Устанавливает в качестве периода расчета итогов период с начала года до конца указанного квартала.

Синтаксис: ПериодКВН(<Дата>|<НомерКвартала>, <Год>)

Устанавливает в качестве периода расчета итогов месяц.

ПериодМ(<Дата>|<НомерМесяца>, <Год>)

ПериодМНК(<Дата>|<НомерМесяца>, <Год>)

ПериодМНГ(<Дата>|<НомерМесяца>, <Год>)



Установка текущего владельца


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

СпрДоговоры.ИспользоватьВладельца(ВыбрКонтрагент);

СпрДоговоры.ВыбратьЭлементы(); //открываем выборку по договорам выбранного контрагента

<...>



Установка текущей группы


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

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

СпрСотр.ВыбратьЭлементы(); //открыть выборку элементов группы Работающие

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

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

СпрСотр.Новый(); //создание нового элемента в группе Работающие



Вхождение вида расчета в группу


Посчитаем все начисления текущего сотрудника за январь:

1-й вариант:

ВсегоНачислено = 0;

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

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

....Если ЖЗ.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1 Тогда

..........ВсегоНачислено = ВсегоНачислено + ЖЗ.Результат;

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

КонецЦикла;

2-й вариант:

ВсегоНачислено = 0;

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

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

....Если ГруппаРасчетов.ВсеНачисления.СодержитВидРасчета(ЖЗ.ВидРасч)=1 Тогда

..........ВсегоНачислено = ВсегоНачислено + ЖЗ.Результат;

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

КонецЦикла;



ВИДЫ И ГРУППЫ РАСЧЕТОВ


<



Виды расчета


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

Алгоритм вида расчета описывается с помощью встроенного языка. Типичными примерами видов расчетов являются «начисление по окладу», «подоходный налог».

Приоритет.

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

Для организации последовательности выполнения расчетов служит понятие их приоритета. Этот параметр может принимать значение от 0 до 999 и действует следующим образом: чем меньше приоритет расчета, тем раньше он выполняется. Это отражается в последовательности расположения записей журнала расчетов — записи с видами расчетов меньшего приоритета располагаются перед записями с видами расчетов большего приоритета.

Вытесняющие расчеты.

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

Очевидно, что в этом случае выполняется условие взаимоисключения перечисленных видов расчета — нельзя, например, одновременно и болеть и работать, т. е. получать и оклад, и деньги по больничному листу. Такие расчеты взаимно исключают друг друга во времени и система должна гарантировать, что ввод одного из них приведет к исключению другого. (Как выяснилось из реальной жизни можно заболеть во время отпуска ;-)



Виды регистров


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

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



Виды субконто


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

В 1С у счета может быть до 5 прикрепленных видов субконто. Максимальное количество видов субконто задается в Конфигураторе, но не может превышать 5.

Пример, вывести все виды субконто, прикрепленные к заданному счету:

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

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

Для Ном = 1 По Счета.КоличествоСубконто() Цикл

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

КонецЦикла;



Вячеслав (г.Москва)


Давно искал что-либо по программированию 1с для забывчивых (после "курсов", и перерыва в полгода).

Большое спасибо за возможность обновить свои знания.



Владелец


Перебор элементов справочника принадлежащих элементу другого справочника.

Один справочник подчинен другому справочнику.

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

СпрНЛ.ИспользоватьВладельца(Сотрудник);

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

...



В Конфигураторе можно задать для


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


Если вы производите непосредственное удаление элемента, то следите, чтобы на него не было ссылок в других объектах. Например, удаляемый сотрудник может использоваться в документе Отпуск. При его удалении ссылочная целостность базы данных будет нарушена. В этом случае рекомендуется пользоваться пометкой на удаление.
Можно программно получить список объектов, содержащих ссылку на удаляемый объект методом НайтиСсылки(объект).


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


Эти методы можно применять, если ранее не применялся метод ИспользоватьДату

Возможность выбора группы в реквизите диалога


Часто бывает удобно для реквизитов на форме, имеющих тип Справочник, отключить возможность выбора группы. Тогда в данное поле может быть выбран только элемент и не может быть выбрана группа. В общем, проще один раз попробовать, чем несколько раз объяснять.

Форма.ВыбрСотрудник.ВыборГруппы(0); //отключить возможность выбора группы



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


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

Для получения временных итогов используются те же методы, что и для получения основных итогов (СНД, СНК , СКД , СКК, ДО, КО, ОБ и другие). Параметры метода Рассчитать определяют итоги, которые будут доступны для получения этими методами.



Временный расчет регистров


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

РегТовары = СоздатьОбъект("Регистр.Товары");

РегДоходы = СоздатьОбъект("Регистр.Доходы");

//установка флага временного расчета для регистров

РегТовары.ВременныйРасчет(1);

РегДоходы.ВременныйРасчет(1);

1. Метод РассчитатьРегистрыНа(,)

Рассчитать все регистры с установленным флагом временного расчета на начало события.

(на начало даты или на момент до проведения документа)

2. Метод РассчитатьРегистрыПо (,)

Рассчитать все регистры с установленным флагом временного расчета на конец события.

(на конец даты или на момент после проведения документа)



Встроенный язык


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



Ввод записей в журнал расчетов


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

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

ЖЗ.УстановитьРеквизит("Рассчитана",1);

ЖЗ.ВвестиРасчет(ВыбрСотрудник, ВидРасчета.Премия, НачалоМесяца, КонецМесяца, ПремияСотруднику);

или

ЖЗ.ЗаписатьРасчет(ВыбрСотрудник, ВидРасчета.Премия, НачалоМесяца, КонецМесяца, ПремияСотруднику);

Отличие метода ЗаписатьРасчет заключается в том, что ввод вытесняющих расчетов приводит к вытеснению только тех расчетов, которые имеют меньший приоритет, а не меньший либо равный, как в случае с методом ВвестиРасчет. Это приводит, в частности, к тому, что за счет применения этого метода расчет не вытесняет «сам себя».

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



Выгрузка и загрузка изменений


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

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

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

При загрузке файла переноса данных помимо загрузки измененных данных выполняется так называемый прием подтверждений.

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

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

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



Выгрузка и загрузка списка значений


//выгрузка в другой список значений или таблицу значений

Синтаксис: Выгрузить(<Знач>,<НачПоз>,<Колич>)

СписокЗнач.Выгрузить(НовыйСписок,1,10); //выгрузить первые 10 значений

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

стр = СписокЗнач.ВСтрокуСРазделителями(); //возвращает строку: 10,12,"Иванов","Петров"

//загрузка списка значений из строки с разделителями

//обратите внимание на двойные кавычки для строковых значений

СписокЗнач.ИзСтрокиСРазделителями("10,12,""Иванов"",""Петров""");

Метод
Описание
ПериодД
ПериодКВ
ПериодКВН
ПериодМ
ПериодМНК
Устанавливает в качестве периода расчета итогов период с начала квартала до конца указанного месяца.
ПериодМНГ
Устанавливает в качестве периода расчета итогов период с начала го­да до конца указанного месяца.
НачПериода
Возвращает начальную дату установленного в данный момент периода основных итогов.
КонПериода
Выдает конечную дату установленного в данный момент периода основных итогов.

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

Вхождение в группу

Перебор видов расчета в группе

Перебор всех видов расчета

Перебор всех групп расчета



Виды конструктуров


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

Конфигуратор включает конструкторы:

· справочника;

· документа;

· журнала документов;

· отчета;

· вида субконто;

· журнала расчетов.

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

Назначение Конструктора макета отчета — автоматическое создание шаблона печатной формы объекта метаданных.

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

Конструктор запросов облегчает разработку модулей, в которых используется механизм запросов системы 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("

")



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


Синтаксис: Выгрузить(<Знач>,<НачСтрока>,<КонСтрока>,<Колонки>)

//выгрузить 10 сотрудников с наибольшими окладами в новую таблицу значений

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

ТабЗнач.Выгрузить(НоваяТабЗнач,1,10,"Сотрудник,Оклад");

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("

")



Вывод секций


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

Таб.ВывестиСекцию("Шапка");

Пока ...

........Таб.ВывестиСекцию("Сотр");

КонецЦикла;

Таб.ВывестиСекцию("Подвал");



Зачем нужны документы?


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

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

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

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


Данные, вводимые в документ (реквизиты документа), обычно содержат информацию о происшедшем событии: например, в накладной — информацию о том, с какого склада, каких товаров и сколько отгружено; в приказе о приеме на работу — информацию о сотруднике, оклад, другие сведения. Кроме собственно записи, для документа весьма важным свойством является его проведение. При проведении документ может отразить зафиксированное им событие в механизмах, реализуемых компонентами. Например, если установлена компонента «Бухгалтерский учет», документ может записать бухгалтерскую операцию, отразив в виде проводок в бухгалтерском учете информацию, содержащуюся в документе.

Следует заранее уточнить, что в Конфигураторе создается, строго говоря, не сам документ, а средство ввода документа в компьютер — шаблон документа. Каждый создаваемый в конфигураторе документ является описанием множества документов одного вида. Например, созданный в Конфигураторе документ «Накладная» при работе с системой 1С:Предприятие позволит формировать накладные, которые будут иметь разное содержание, по одинаковый набор реквизитов, одинаковую логику поведения и так далее.


Зачем нужны отчеты?


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



Зачем нужны регистры?


Регистры - это таблицы для накопления оперативных данных и получения сводной информации.

Данные в регистры добавляются только при проведении документов. Сведения из регистров используются для формирования отчетов. Классическая схема использования регистров в 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("

")



Заказ


Экранная форма документа выглядит следующим образом:

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

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

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

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

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

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

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

Регистр.Заказы.Заказ = ТекущийДокумент();

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

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

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

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

КонецЦикла;

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



Запись движений в оборотный регистр


(только при проведении документа)

1. Метод Движение

Синтаксис: Движение(,...,,...)

Пример: Регистр.Товары.Движение (ПоступившийТовар, ТекСклад, КолвоПоНакладной, СуммаПоНакладной)

2. Метод ДвижениеВыполнить

Пример:

Регистр.Товары.Товар = ПоступившийТовар;

Регистр.Товары.Склад = ТекСклад;

Регистр.Товары.Количество = КолвоПоНакладной;

Регистр.Товары.Стоимость = СуммаПоНакладной;

Регистр.Товары.ДвижениеВыполнить();

Примечание: Если сумма или количество в движении будет отрицательным, то это движение будет расходом, иначе приходом.



Запись движений в регистр остатков


(только при проведении документа)

1. Метод ДвижениеПриход

Синтаксис: ДвижениеПриход(,...,,...)

Пример: Регистр.Доходы.ДвижениеПриход(Покупатель,КупленныйТовар,СуммаПокупки)

2. Метод ДвижениеПриходВыполнить

Пример:

Регистр.Доходы.Клиент = Покупатель;

Регистр.Доходы.Товар = КупленныйТовар;

Регистр.Доходы.Доход = СуммаПокупки;

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



Запись в файл DBF


Файл = создатьОбъект("XBASE"); //создаем ссылку на файл DBF

//определяем структуру файла

//Синтаксис: ДобавитьПоле(<Название>,<Тип>,<Длина>,<Точность>)

Файл.ДобавитьПоле("NAME","S",50,0);

Файл.ДобавитьПоле("PRICE","N",10,2);

Файл.СоздатьФайл("catalog.dbf"); //создаем файл физически

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

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

.......Файл.Добавить();

.......Файл.NAME = СпрТовары.Наименование;

.......Файл.УстановитьЗначениеПоля("PRICE",СпрТовары.Цена) //так тоже можно;

.......Файл.Записать();

КонецЦикла;

Файл.ЗакрытьФайл(); //не забывайте пожалуйста



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


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

ТекстЗапроса = "

|Период С ДатаНач По ДатаКон;

|Товар = Регистр.Доходы.Товар;

|Клиент = Регистр.Доходы.Клиент;

|Доход = Регистр.Доходы.Доход;

|Условие (Товар = ТекТовар);

|Группировка Клиент;

|Функция ПриходПоКлиенту = Приход(Доход);

|";

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("

")



Запрос к справочнику


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


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



ЗАПРОСЫ


Переменные в запросе

Группировка и сортировка

Двойная группировка

Функции в запросе

Условие отбора

- Чего тебе надобно, золотая рыбка?



Запросы к иерархическому справочнику


Запросы к иерархическому справочнику имеют некоторые особенности. Подробнее см. Запросы

Общая схема
Поймал новый русский золотую рыбку и спрашивает:



Зарплата


Компонента "Расчет"

Журналы расчетов

Виды и группы расчетов

Календари

Мини-зарплата (пример)


Компонента Расчет в системе 1С:Предприятие предназначена для реализации сложных периодических расчетов. Обычно она используется для расчета зарплаты.



Зарплата (пример)


Постановка задачи

Объекты конфигурации

Минимальный кадровый учет

Налоговые льготы сотрудника

Расчет зарплаты

Отчеты по зарплате

Что можно скачать

- Представляешь! Я своим сотрудникам уже полгода зарплату не плачу, а они всё ходят и ходят на работу.

- А ты сделай вход платным...



Журнал "Чат"


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

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



Журнал "Письма"


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



Журналы документов


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

Журналы документов предназначены для просмотра документов. Каждый вид документа может быть отнесен к определенному журналу. Сам журнал документов не добавляет новых данных в систему, а служит только как средство просмотра списка документов одного или нескольких видов. Для документов разных видов можно указывать один журнал, что позволяет произвольным образом группировать документы в журналах. Назначенный документам журнал можно менять. Например, может быть создан журнал «Складские документы», который будет содержать все приходные накладные и накладные на внутреннее перемещение. Назначенный документам журнал можно менять.

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

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

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

У журнала документов есть экранная форма, где можно настраивать отображаемые колонки. Можно создавать дополнительные колонки, которые будут отображать информацию из документов. Например, в журнале ПриказыКадровые удобно сразу видеть, к какому сотруднику относится каждый документ, для этого создается Графа журнала Сотрудник.

Разговаривают между собой два босса. Один другому говорит:



Журналы расчетов


Журнал расчетов предназначен для хранения данных сложных периодических расчетов, поддерживаемых компонентой «Расчет», и их предыстории. Основным свойством журнала расчетов является его принадлежность тому или иному справочнику системы. Такой справочник называется справочником объектов расчета. Фактически, справочник определяет вид объектов, по которым ведется расчет. Например, это может быть: журнал расчетов зарплаты, причем списком объектов расчета будет выступать справочник сотрудников; журнал расчетов дивидендов, тогда списком объектов расчета будет выступать справочник акционеров; журнал расчетов амортизации — списком объектов расчета будет выступать справочник основных средств. В процессе конфигурирования настраивается неограниченное число журналов расчета, каждый из которых будет решать ту или иную задачу предметной области.

Непременными атрибутами каждой записи журнала расчетов являются: объект, для которого данный расчет проведен (обычно сотрудник); вид расчета, по которому данный расчет проведен; дата начала и дата окончания действия данного расчета и результат расчета.

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


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

Ввод записей

Перебор записей

Удаление записей

Период журнала