Учебник по 1С

         

Назначение подбора


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



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


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

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

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

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

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

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

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



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


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

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

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



Непосредственное удаление




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

СпрСотр.НайтиЭлемент(ВыбрСотрудник);

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



О названиях


Иерархический справочник - это также многоуровневый справочник, или справочник с группами.

Группа справочника в 1С часто называется "родитель".


Справочник-владелец, это также справочник-хозяин.

Справочник-владелец и подчиненный справочник также называются связанными справочниками.

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



Об этом Учебнике


Пpофессоpа спpашивают:

-Сколько вам надо вpемени, чтобы выучить китайский ?

-10 лет.

Спpосили доцента (Д)

Д: - 6 лет

Спpосили аспиpанта (А):

А:- 3 года

Студента(С):

С:- А методичка есть?

- Есть.

С:- Сейчас пиво допью и сдам.

Этот Учебник посвящен единственной цели - обеспечить мягкий и плавный старт для разработчиков в среде 1С:Предприятие. Учебник в доступной форме объясняет базовые принципы программирования на встроенном языке 1С. Описаны приемы работы со справочниками, документами, регистрами, отчетами. Все главы иллюстрированы наглядными примерами, что позволяет очень легко начать изучение языка 1С.

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

Идея написания учебника по 1С пришла мне в 1999 году. В тот момент я заканчивал разработку своей конфигурации для расчета зарплаты и кадрового учета в строительной организации. Тогда я решил не применять типовую конфигурацию "Зарплата и кадры", а написать собственную конфигурацию "с нуля". Такое решение было стратегически верным. С тех давних пор и до сегодняшнего дня моя программа успешно ведет ежедневный кадровый учет на предприятии и ежемесячно рассчитывает зарплату. Работать без моей программы пользователи уже не могут, разучились. ;-)

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

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

Если вы можете помочь в развитии или распространении этого Учебника или если у вас есть замечания и предложения, то напишите мне письмо по адресу stasmit@mail.ru (Станислав).



Объект "Периодический"


Для работы с историей периодического реквизита очень удобно использовать объект "Периодический".

Пример, вывести историю карьеры сотрудника за текущий год:

ИсторияКарьеры = СоздатьОбъект("Периодический");

ИсторияКарьеры.ИспользоватьОбъект("Должность",ВыбрСотрудник);

ИсторияКарьеры.ВыбратьЗначения(НачГода(РабочаяДата(),КонГода(РабочаяДата()));

Пока ИсторияКарьеры.ПолучитьЗначение()=1 Цикл

....Сообщить(Строка(ИсторияКарьеры.ДатаЗнач) + " " + Строка(ИсторияКарьеры.Значение));

КонецЦикла;

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



Объекты, атрибуты и методы


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

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

Также объекты имеют определенные методы (процедуры и функции). Например, вы можете выбрать всех сотрудников с помощью метода справочника ВыбратьЭлементы(), или можно сохранить документ методом Записать().



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


В конфигурации потребуется создать следующие объекты:

Клиенты

Товары

Курьеры

Районы

ПриходТовара

Заказ

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

ПутевойЛист

ОтчетКурьера

Тип объектов
Объекты
Справочники
Документы
Регистры

Товар

Клиент

Заказ

Цена

ДатаДоставки

Количество

Сумма

(хранит доставляемые в данный момент товары)

Клиент

Заказ

Цена

ДатаДоставки

Сумма

Клиент

Товары

Сводная таблица


Игра реализована в виде внешнего отчета (ert-файл). Поэтому игру можно подключить к любой конфигурации и доставить радость вашим пользователям!




В конфигурации потребуется создать следующие объекты:

Регистр
Измерения Ресурсы
Остатки (регистр остатков)
Товар Количество
Заказы (регистр остатков)
Доставка (регистр остатков)
Товар Количество
Доходы (оборотный регистр)
Товар Доход
Отчеты

МаксКолвоПредупреждений

МаксКолвоКнигНаРуках

КолвоДнейБлокировки

КолвоДнейДляВыдачи

Произведения

Книги (подчинен спр. Произведения)

Читатели

ЖанрыКниг

Авторы

СтатусКниги (значения: Свободна, Выдана, Списана)

ДаНет (значения: Да, Нет)

ВыдачаКниги

ПродлениеКниги

ВозвратКниги

ПотеряКниги

Библиотека

БиблиотечнаяВыписка

ДолгиЧитателя




В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Константы
Справочники
Перечисления
Документы
Журналы документов
Отчеты

Пользователи

Черный список (подчинен спр. Пользователи)

Письмо

Сообщение

Письма

Чат

ЧисткаБазы




В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Справочники
Документы
Журналы
Обработки

Участники

Кошельки (доп. реквизит Участник)

Статьи доходов

Статьи расходов

Доход

(реквизиты шапки: Участник, Статья, Кошелек, Сумма)

Расход

(реквизиты шапки: Участник, Статья, Кошелек, Сумма)

Перевод

(реквизиты шапки: КошелекОткуда, КошелекКуда, Сумма)

ВводНачОстатков

(реквизиты табличной части: Кошелек, Сумма)

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

Создайте два общих реквизита Автор и Комментарий текстового типа.

ВсеДокументы

Кошельки (регистр остатков)

Доходы (оборотный регистр)

Расходы (оборотный регистр)

Остатки

ДоходыРасходы




Игра реализована в виде внешнего отчета (ert-файл). Поэтому игру можно подключить к любой конфигурации и доставить радость вашим пользователям!




В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Справочники
Документы
Журналы документов
Регистры
Отчеты

Материалы (количество уровней: 3)

Склады

Приход

(реквизиты шапки: Склад,

реквизиты табличной части: Материал, Количество)

Расход

(реквизиты шапки: Склад,

реквизиты табличной части: Материал, Количество)

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

Складские

ОстаткиМатериалов

ОстаткиМатериалов




В конфигурации потребуется создать следующие объекты:

Тип объектов
Объекты
Справочники
Документы
Журналы документов
Регистры
Отчеты

НазваниеОрганизации

СтавкаПН (периодич.)

Сотрудники

НалоговыеЛьготы (подчинен спр.Сотрудники)

Категории

Подразделения

Должности

Разряды

ТипНалоговойЛьготы

ОснованияУвольнения

нет

ПриемНаРаботу

Перемещение

Увольнение

НачалоМесяца

ВводНевыходов

ВводПремий

КадровыеДокументы

Премии

Отклонения

Системные

ВедомостьНаЗарплату

РасчетныеЛисточки

Свод

ЛицевыеСчета

ПоискВидаРасчета

Табель_8час

Табель_7час

Зарплата

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

ПоОкладу

ПоТарифу

Невыход

Премия

СтандВычетНаСебя

СтандВычетНаДетей

Премия

Подоходный налог

НаРуки

ВсеНачисления

ВсеУдержания

ОблагаетсяПН

ВсеВычеты



Оборотные регистры


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

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

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

Тип объектов
Объекты
Константы
Справочники
Перечисления
Документы
Журналы документов
Отчеты
Календари
Журналы расчетов
Обработки
Виды расчета
Группы расчетов



Обороты между счетами


ОБ(<СчетДеб>, <СчетКред>, <ТипСуммы>, <Валюта>)

Метод возвращает оборот с дебета счета <СчетДеб> в кредит счета <СчетКред>.

Пример

КассаБанк = БухИтоги.ОБ("50", "51");



Обработка "Чистка базы"


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



Обработка результатов запроса (обход группировок)


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

ВыбратьСчета

ПолучитьСчет

Синтаксис: ВыбратьСчета(<ФлагВсе>, <ФлагДК>, <Номер>, <РазвСальдо>)

Методы
Описание

0 — отбирать те счета, которые имели итоги на этом уровне обхода итогов запроса (по умолчанию);

1 — включить в выборку все счета, которые имели итоги в данном запросе;

-1, -2 ... — включить в выборку счета, которые имели итоги в группировке n-го вышестоящего уровня.

1 — включать в выборку счета только с дебетовы­ми оборотами;

2 — включать в выборку счета только с кредито­выми оборотами.

0 — включать в выборку счета вне зависимости от дебетовых/кредитовых оборотов (по умолчанию).

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

1 — рассчитывать развернутое сальдо.

0 — не рассчитывать развернутое сальдо (по умолчанию);

Синтаксис: ПолучитьСчет(<Номер>, <Счет>)

Параметр
Описание
<ФлагВсе>
Необязательный параметр.
<ФлагДК>
Необязательный параметр.
<Номер>
Необязательный параметр. Положительное целое число — номер выборки. Если параметр не ука­зан, выборке присваивается номер 0.
<РазвСальдо>
Необязательный параметр. Признак необходимости рассчитывать развернутое сальдо по субконто. Используется только если в запросе участвуют субконто.

Пример.

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

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

Деб = БухИтоги.ДО();


Кред = БухИтоги.КО();

КонецЦикла;

ПолучитьКорСчет

Синтаксис

ВыбратьКорСчета(<ФлагВсе>, <ФлагДК>, <Номер>)

ПолучитьКорСчет(<Номер>, <Счет>)

Пример:

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

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

БухИтоги.ВыбратьКорСчета();

Пока БухИтоги.ПолучитьКорСчет() = 1 Цикл

Деб = БухИтоги.ДО();

Кред = БухИтоги.КО();

КонецЦикла;

КонецЦикла;

ПолучитьВалюту

Синтаксис:

ВыбратьВалюты(<ФлагВсе>, <ФлагДК>, <Номер> , <РазвСальдо>, <Сортировка>)

ПолучитьВалюту(<Номер>, <Валюта>)

Пример:

БухИтоги.Запрос(Дата1, Дата2);

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

БухИтоги.ВыбратьВалюты();

Пока БухИтоги.ПолучитьВалюту() = 1 цикл

ДебВ = БухИтоги.ДО(2);

КредВ = БухИтоги.КО(2);

КонецЦикла;

КонецЦикла;

ПолучитьПериод

Синтаксис:

ВыбратьПериоды(<ФлагВсе>, <ФлагДК>, <Номер>, <РазвСальдо>)

ПолучитьПериод(<Номер>, <ДатаНачалаПериода>)

Пример:

БухИтоги.ВыполнитьЗапрос(Дата1, Дата2, , , , , "Месяц");

БухИтоги.ВыбратьСчета();

Пока БухИтоги.ПолучитьСчет() = 1 цикл

БухИтоги.ВыбратьПериоды();

Пока БухИтоги.ПолучитьПериод() = 1 цикл

Деб = БухИтоги.ДО();

Кред = БухИтоги.КО();

КонецЦикла;

КонецЦикла;

ПолучитьСубконто

Синтаксис:

ВыбратьСубконто(<Индекс>, <ФлагВсе>, <ФлагДК>, <Номер>, <РазвСальдо>, <Сортировка>, <ПорядокОбхода>)

ПолучитьСубконто(<Индекс>, <Номер>, <Субконто>)

Пример:

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Материалы, , 1);

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Склады, , 1);

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон, "10");

БухИтоги.ВыбратьСубконто(1);

Пока БухИтоги.ПолучитьСубконто(1) = 1 цикл

БухИтоги.ВыбратьСубконто(2);

Пока БухИтоги.ПолучитьСубконто(2) = 1 цикл

Деб = БухИтоги.ДО();



Кред = БухИтоги.КО();

КонецЦикла;

КонецЦикла;

ПолучитьКорСубконто

Синтаксис:

ВыбратьКорСубконто(<Индекс>, <ФлагВсе>, <ФлагДК>, <Номер>, <РазвСальдо>, <Сортировка>, <ПорядокОбхода>)

ПолучитьКорСубконто(<Индекс>, <Номер>, <Субконто>)

БухИтоги.ИспользоватьСубконто(ВидыСубконто.Товары, , 1);

БухИтоги.ИспользоватьКорСубконто(ВидыСубконто.Клиенты, , 1);

БухИтоги.ВыполнитьЗапрос(ДатаНач, ДатаКон);

БухИтоги.ВыбратьСубконто();

Пока БухИтоги.ПолучитьСубконто() = 1 цикл

БухИтоги.ВыбратьКорСубконто();

Пока БухИтоги.ПолучитьКорСубконто() =1 цикл

Деб = БухИтоги.КорДО();

Кред = БухИтоги.КорКО();

КонецЦикла;

КонецЦикла;


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


При работе с метаданными часто применяются следующие методы:

Параметр
Описание
<Номер>
Необязательный параметр. Положительное целое число — номер выборки. Если раньше было открыто несколько выборок по счету.
<Счет>
Необязательный параметр. Конкретное значение счета, которое нужно получить из выборки.
ВыбратьКорСчета
ВыбратьВалюты
ВыбратьПериоды
ВыбратьСубконто
ВыбратьКорСубконто

<ИмяРеквизита> - строковое выражение, содержащее имя реквизита, как оно задано в конфигураторе. <Значение> - выражение, содержащее устанавливаемое значение реквизита.



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


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

РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон);

Пока РегТовары.ПолучитьДвижение()=1 Цикл

........Сообщить("Дата движения " + Строка(РегТовары.ТекущийДокумент.ДатаДок));

........Сообщить("Клиент: " + РегТовары.Клиент);

........Сообщить("Товар: " + РегТовары.Товар);

........Сообщить("Сумма: " + РегТовары.Доход);

КонецЦикла;



Обращение к файловой системе


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

Пример:

ГдеМыНаходимся = ФС.ТекКаталог();

ФС.СоздатьКаталог("DOCS");

НовФС = СоздатьОбъект("ФС");

Объект "ФС" имеет следующие методы:

Метод
Описание
УстановитьАтрибут(ИмяРеквизита, Значение)
Установить значение реквизита по его имени.
ПолучитьАтрибут(ИмяРеквизита)
Получить значение реквизита по его имени. Возвращает значение реквизита.

Открывает окно диалога выбора/сохранения файла. Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена', 1 - если нажата кнопка 'ОК'.

Синтаксис: ВыбратьФайл (<ТипДиалога>, <ИмяФайла>, <ИмяНачКаталога>, <ЗаголовокОкна>, <Фильтр>, <Расширение>, <Таймаут>)

Параметры:

<ТипДиалога> -: 0 - диалог типа <открыть>, 1 - диалог типа <сохранить>;

<ИмяФайла> - переменная, содержащая на входе строку с именем файла, а на выходе - имя выбранного файла;

<ИмяНачКаталога> - переменная, содержащая на входе строку с начальным каталогом, а на выходе - имя выбранного каталога;

<ЗаголовокОкна> - строка с заголовком окна;

<Фильтр> - строка с фильтром отбора файлов (например: 'Все файлы (*.*) |*.*');

<Расширение> - строка с расширением файла по умолчанию;

<Таймаут> - время ожидания отклика пользователя в секундах (необязателен).

Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена', 1 - если нажата кнопка 'ОК'.

Синтаксис: ВыбратьФайлКартинки (<ТипДиалога>, <ИмяФайла>, <ИмяНачКаталога>, <ЗаголовокОкна>, <Расширение>, <Таймаут>)

Открывает окно диалога выбора каталога.

Возвращает: 0 - если в окне диалога нажата кнопка 'Отмена'; 1 - если в окне диалога нажата кнопка 'ОК', при этом в переменную <ИмяНачКаталога> возвращается имя выбранного каталога; -1 (минус единица) - закончилось время <Таймаут> ожидания отклика пользователя.


/p>

Также часто применяются системные функции:

Метод
Описание
ВыбратьФайл(<ИмяФайла>)
ВыбратьФайлКартинки
Открывает окно диалога выбора/сохранения файла картинки.
ВыбратьКаталог
Удаляет каталог файлов.

Синтаксис: УдалитьКаталог(<ИмяФайла>)

Устанавливает текущий каталог файлов.

Синтаксис: УстТекКаталог(<ИмяФайла>)

Синтаксис: СвободноеМестоНаДиске(<ИмяДиска>)

<


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


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

//установить период выборки "30 ноября 2001 года"

РегДоходы.ИспользоватьПериод(2001,11,30);

1. Метод Итог

Синтаксис: Итог(,...,)

Пример:

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

Доход = РегДоходы.Итог(ТекКлиент, ТекТовар, "Доход");

2. Метод Итоги

Пример:

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

РегДоходы.Итоги(ТекКлиент, ТекТовар);

Доход = РегДоходы.Доход;

3. Метод СводныйИтог

Синтаксис: СводныйИтог(,...,)

Могут быть указаны не все измерения. Фиксируются только указанные измерения.

Пример:

//получить сводные итоги за день

ДоходПоКлиенту = РегДоходы.СводныйИтог(ТекКлиент,,"Доход");

ДоходПоТовару = РегДоходы.СводныйИтог(,ТекТовар,"Доход");

4. Метод СводныеИтоги

Синтаксис: СводныеИтоги(,...)

Могут быть указаны не все измерения. Фиксируются только указанные измерения.

Пример:

//получить сводные итоги за день по клиенту

РегДоходы.СводныеИтоги(ТекКлиент,); //указано только одно измерение

ДоходПоКлиенту = РегДоходы.Доход;

//получить сводные итоги за день по товару

РегДоходы.СводныеИтоги(,ТекТовар); //указано только одно измерение

ДоходПоТовару = РегДоходы.Доход;



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


1-й способ.

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

РегТовары.ВыбратьИтоги();

Пока РегТовары.ПолучитьИтог()=1 Цикл

......Сообщить("Товар " + Строка(РегТовары.Товар) +

...................... " на складе " + Строка(РегТовары.Склад) +

...................... " кол-во: " + Строка(РегТовары.Количество) +

...................... " стоимость: " + Строка(РегТовары.Стоимость) +

КонецЦикла;

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

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

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

РегДоходы.ВыгрузитьИтоги(ТабЗнач);

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

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

......Сообщить("Товар " + Строка(ТабЗнач.Товар) +

...................... " на складе " + Строка(ТабЗнач.Склад) +

...................... " кол-во: " + Строка(ТабЗнач.Количество) +

...................... " стоимость: " + Строка(ТабЗнач.Стоимость) +

КонецЦикла;



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


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

1. Метод Остаток

Синтаксис: Остаток(,...,

Пример:

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

Колво = РегТовары.Остаток (ТекТовар, ТекСклад, "Количество");

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

Стоимость = РегТовары.Остаток (ТекТовар, ТекСклад, "Стоимость");

2. Метод Остатки

Синтаксис: Остатки(,...)

Пример:

//получить остаток данного товара на данном складе по кол-ву и по сумме

РегТовары.Остатки (ТекТовар, ТекСклад);

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

Стоимость = РегТовары.Стоимость;

3. Метод СводныйОстаток

Синтаксис: СводныйОстаток(,...,)

Могут быть указаны не все измерения. Фиксируются только указанные измерения.

Пример:

//получить остаток данного товара на всех складах

КолвоТовара = РегТовары.СводныйОстаток (ТекТовар,,"Количество");

СтоимостьТовара = РегТовары.СводныйОстаток (ТекТовар,,"Стоимость");

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

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

4. Метод СводныеОстатки

Пример:

//получить сводные остатки по товару

РегТовары.СводныеОстатки(ТекТовар,); //указано только одно измерение

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

СтоимостьТовара = РегТовары.Стоимость;

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

РегТовары.СводныеИтоги(,ТекСклад); //указано только одно измерение

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



Общая схема выполнения запроса


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

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

ТекстЗапроса = "<текст запроса на особом языке запросов>"

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

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



Общие свойства


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

ИспользоватьПланСчетов(<ПланСчетов>)

Метод ИспользоватьПланСчетов задает план счетов для метода получе­ния итогов и ВыполнитьЗапрос для тех случаев, когда конкретный счет не указан или задается строкой символов.

Если план счетов не установлен функцией ИспользоватьПланСчетов, будет использоваться основной план счетов, заданный в метаданных.

Пример.

БухИтоги.ИспользоватьПланСчетов(ПланыСчетов.Рабочий);

ИспользоватьРазделительУчета(<РазделительУчета>)

Метод ИспользоватьРазделительУчета задает значения разделителя учета для методов получения итогов и ВыполнитьЗапрос. Применение данного метода имеет смысл только если используется разделителель учета.

Пример.

БухИтоги.ИспользоватьРазделительУчета (Константа.ОснФирма);

Метод
Описание
КаталогИБ
Возвращает имя каталога базы данных.
КаталогПользователя
Возвращает имя каталога пользователя.
КаталогПрограммы
Возвращает имя каталога с исполняемыми файлами системы 1С:Предприятие.
КаталогВременныхФайлов
Возвращает имя каталога временных файлов.
ИмяКомпьютера
Возвращает сетевое имя компьютера, работающего в данный момент с программой.
УдалитьКаталог
УстТекКаталог
ТекКаталог
Возвращает строку с именем текущего каталога файлов.
WindowsКаталог
Возвращает строку с именем Windows директории.
СвободноеМестоНаДиске
Возвращает размер свободного дискового пространства в байтах.



Ограничения


Учет товара идет по беспартионной схеме, но есть динамический расчет партионности.

При больших объемах баз данных этот расчет может занять несколько минут.

Например в "Карточке оплаты" закрытие оплаты документов вычисляется динамически.

В справочнике Номенклатуры 2 уровня

Первый - для групп товара, второй для товара.

Это ограничение связано с построением некоторых отчетов.



Олег (г.Самара)


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

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

PS. Возможно, выразился коряво, но от всего сердца.



Операции и проводки


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

")



Отбор


В форме списка справочника элементы могут быть отфильтрованы, т.е. пользователю будут показаны только нужные элементы. Программно установить отбор можно методом УстановитьОтбор (Реквизит, Значение). Для этого у реквизита должен быть установлен флажок "Отбор по реквизиту" в Конфигураторе .

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

...... УстановитьОтбор("Год",1980);

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



Отчет "Библиотечная выписка"


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

Пример работы отчета:

Модуль отчета см. в конфигурации "Мини-библиотека".



Отчет "Доходы и расходы"


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

Сначала указывается тип отчета: доходы или расходы. Затем выбирается период, за которые формируется отчет. В отчете можно указать 1 или 2 группировки Участник и Статья в произвольном порядке. Также можно указать отбор по одному участнику или статье.

Модуль отчета см. в конфигурации "Денежки".

Пример работы отчета (отчет о доходах, включены две группировки):

Пример работы отчета (отчет о расходах, включена только одна группировка Статьи):



Отчет "Долги читателя"


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

Пример работы отчета:

Модуль отчета см. в конфигурации "Мини-библиотека".



Отчет курьера


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

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

При проведении документа совершаются движения в регистрах:

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

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

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

Если Доставлено > 0 Тогда

Регистр.Доставка.Товар = Товар;

Регистр.Доставка.Клиент = Клиент;

Регистр.Доставка.Цена = Цена;

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

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

Регистр.Доставка.Количество = Доставлено;

Регистр.Доставка.Сумма = Сумма;

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

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

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

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

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

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

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

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

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

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

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

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

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

КонецЕсли;

Если Фл_ВозвратОстатков=1 Тогда

Если Доставлено < Заказано Тогда

Регистр.Доставка.Товар = Товар;

Регистр.Доставка.Клиент = Клиент;

Регистр.Доставка.Цена = Цена;

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

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

Регистр.Доставка.Количество = Доставлено;

Регистр.Доставка.Сумма = Сумма;

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

Регистр.Остатки.Товар = Товар;

Регистр.Остатки.Количество = Заказано - Доставлено;

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

КонецЕсли;

КонецЕсли;

КонецЦикла;

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



Отчет "Остатки"


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

Модуль отчета:

Процедура Сформировать()

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

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

|Кошелек = Регистр.Кошельки.Кошелек;

|Участник = Регистр.Кошельки.Кошелек.Участник;

|Сумма = Регистр.Кошельки.Сумма;

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

|Функция СуммаВКошельке = КонОст(Сумма);

|Условие(Кошелек в ВыбрКошелек);

|Условие(Участник в ВыбрУчастник);

|";

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

.......Возврат;

КонецЕсли;


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

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

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

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

КонецЦикла;

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

Таб.Показать();

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

Пример работы отчета:



Отчет "Остатки материалов"


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

Шаблон печатной формы (в Конфигураторе):

Модуль отчета:

Процедура Сформировать()

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

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

|Материал = Регистр.ОстаткиМатериалов.Материал;

|Склад = Регистр.ОстаткиМатериалов.Склад;

|Количество = Регистр.ОстаткиМатериалов.Количество;

|Функция КоличествоКонОст = КонОст(Количество);

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

|Группировка Склад;

|Условие (Материал в ВыбрМатериалГруппа);

|Условие (Склад в ВыбрСклад);

|";

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

...Возврат;

КонецЕсли;

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

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

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

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

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

Иначе

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

Если Фл_НеВыводитьСклады = 0 Тогда

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

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

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

КонецЕсли;

КонецЕсли;

КонецЦикла;

Таб.Опции(0);

Таб.Показать("ОстаткиМатериалов", "");

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

Примеры работы отчета:

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



Отчет "Товары"


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

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

Пример работы отчета представлен ниже:

Дефицит определяется по формуле:

Дефицит = (Заказано - Доставляется) - Остаток;



ОТЧЕТЫ (объект "Таблица")


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

")



Параметры миграции


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

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

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

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


В случае выбора такого варианта области распространения, объекты данного вида помимо места их создания попадают еще и на центральную ИБ. То есть, в случае, если для некоторого вида объектов установлена область распространения "Место создания и центр", то для объектов этого вида, созданных на периферийной ИБ, их изменения будут передаваться между местом их создания и центральной ИБ. Для объектов того же вида, созданных на центральной ИБ, изменения не будут передаваться никуда. С помощью такого варианта области распространения можно добиться такого эффекта, что все объекты того или иного вида будут "собираться" на центральной ИБ, а на любой из периферийных ИБ будут находиться только те объекты, для которых она является местом создания.
В случае выбора области распространения "Место создания и центр", для вида объекта можно задать перечень периферийных узлов распределенной ИБ, которые дополнительно включаются в область распространения всех объектов данного вида. Этот перечень задается как список кодов периферийных ИБ, разделенный запятыми. При задании кодов ИБ допускается использование символов-заменителей '*'. Символ-заменитель должен завершать последовательность символов, образующих код одной или нескольких периферийных ИБ. Таким образом, "A*" представляет собой обозначение всех периферийных ИБ, коды которых начинаются символом 'А'. Последовательность "A*B" является ошибочной, так как символ '*' не завершает последовательность символов, представляющих код периферийной ИБ.
Кроме того, как отмечалось выше, дополнительной возможностью управлять распространением изменений объектов в версии 7.7 системы 1С:Предприятие является особый вид периферийных ИБ, которые получают изменения из центральной ИБ, а сами информацию о сделанных в них изменениях не передают. Для создания периферийной ИБ такого рода, надо при ее инициализации указать признак "Только получатель".
Отдельно стоит рассмотреть случай, когда параметры миграции объектов изменяются в процессе изменения конфигурации уже работающей системы. Изменения параметров миграции для каждого из объектов производится независимо от других. То есть, Конфигуратор не отслеживает ссылки между объектами при настройке параметров миграции. Таким образом, при определенных вариантах настройки параметров миграции у некоторых объектов могут появиться ссылки, указывающие "никуда". Ответственность за сохранение ссылочной целостности в распределенных ИБ возлагается на лицо, занимающееся конфигурированием системы. Общим правилом настройки параметров миграции является определение области миграции для конкретного вида объектов равной более широкой, чем область миграции ссылающихся на него объектов. Например, для справочника область миграции должна быть определена не уже, чем области миграции документов и справочников, в которых есть реквизиты типа "справочник" данного вида. Если, например, измерение регистра имеет тип "справочник" данного вида, то область миграции справочника должна покрывать области миграции всех документов, которые могут записать движения данного регистра.

Параметры предопределенных процедур


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



Перебор документов


ДокПрием.ВыбратьДокументы(дата1, дата2); //можно задать период выборки

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

......<действия с текущим документом>

КонецЦикла;



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


Для Ном=1 По Метаданные.ГруппаРасчета() Цикл

....кфгГруппаРасч = Метаданные.ГруппаРасчета(Ном);

....//недоработка фирмы 1С. По имени группы расчета нельзя получить саму группу расчета как объект.

....//если помечтать, то можно было бы сделать вот так:

....// ГруппаРасч = ГруппаРасчета.ПолучитьАтрибут(кфгГруппаРасч.Идентификатор);

КонецЦикла;

Еще я совсем не понимаю, почему группа расчетов не является типообразующим объектом в 1С. Т.е. нельзя, например, завести реквизит справочника и указать его тип "ГруппаРасчетов.ВсеНачисления". Нельзя в диалоге поместить поле типа "ГруппаРасчета", чтобы пользователь мог самостоятельно выбрать группу расчетов так же, как он выбирает вид расчета. Будем надеяться, что в версии 8.0 фирма 1С исправит эти упущения.

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

Простой перебор

Перебор с фильтром

Перебор с корр. счетом

Фильтр по субконто

Графа отбора

Поиск операции

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

Другие полезности

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

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


Операции, проводки, корреспонденции

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

Свойства операции и проводки

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

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

Журнал операций и журнал проводок

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

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

Режимы ввода операций

При ручном вводе операции все данные заносятся непосредственно пользователем.

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

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



Описание конфигурации


Быстрая и простая конфигурация для сети магазинов.

Идеальна для модели "Склад - сеть магазинов".

Мощные аналитические отчеты.

Анализ расхода товара по складу, реализатору (по прибыли, по количеству)

Анализ поступления выручки торговых точек

Анализ остатков по складу и реализаторам

Анализ розничных цен

Импорт-экспорт единичных документов. Удобно перебрасывать документы из

одной программы в другую, если учет ведется в разных программах.

Учет товара по торговым точкам идет в розничных ценах.

Весь товарооборот идет через склад. Например переброс товара из

одной торговой точки в другую проходить в два этапа.

1 Возврат товара на склад (ДокументРеализатора-Возврат)

2 Отпуск товара реализатору (ДокументРеализатора-Расход)

Списать товар с торговой точки можно несколькими способами.

1. Списание суммой (СписаниеРеализатора)

2. Списание товаром (ДокументРеализатора-Списание)

3. Возврат на склад, потом списать со склада (ДокументРеализатора-Возврат)

Большинство отчетов вынесено во внешние отчеты. Исправлять и дорабатывать

отчеты можно без выбрасывания пользователей из программы 1с-Торговля.

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

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



Организация подбора


Синтаксик: ОткрытьПодбор(<Объект>,<ИмяФормы>,<КонтекстФормы>,<ФлагМножВыбора>,<ТекЗнач>)

ОткрытьПодбор("Справочник.Номенклатура","ФормаДляПодбора",Конт,1);

Процедура ОбработкаПодбора(Элемент,КонтФормы)

...НоваяСтрока();

...Товар = Элемент;

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

Можно воспользоваться контекстом формы и сразу перейти в нужную группу, например:

ОткрытьПодбор("Справочник.Номенклатура","ФормаДляПодбора",Конт,1);

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

Процедура ОбработкаПодбора(Элемент,КонтФормы)

...НоваяСтрока();

...Товар = Элемент;

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



Основное окно конфигуратора


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

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



Основные бухгалтерские итоги


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

В пункте меню «Управление бухгалтерскими итогами» устанавливается последний рассчитанный период. В режиме работы с основными итогами обращение может выполняться только к итогам по рассчитанный период включительно. В этом режиме работают два вида методов — получение остатков и оборотов, а также установка периода за который выдаются итоги. По умолчанию используется период, выбранный пользователем интерактивно через меню Сервис => Параметры => Бухгалтерские итоги.



Остатки и обороты по счетам


Синтаксис (у всех одинаковый): СНД (<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>...)

Метод
Описание
СНД
дебетовое сальдо по счету на начало периода
СНК
кредитовое сальдо по счету на начало периода
СКД
дебетовое сальдо по счету на конец периода
СКК
кредитовое сальдо по счету на конец периода
ДО
дебетовый оборот по счету за период
КО
кредитовый оборот по счету за период

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

1 ("С") — сумма;

2 ("В") — валютная сумма;

3 ("К") — количество.

Если параметр не указан, метод возвращает сумму.

<Субконто2>

...…

Пример

БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги);

ОстатокНаСчетеНаНачалоПериода = БухИтоги.СНД("51");

ОстатокНаСчетеНаКонецПериода = БухИтоги.СКД("51");

ПриходГвоздейНаСкладЗаПериод = БухИтоги.ДО("10.1",3,,МатериалГвозди,ЦентрСклад);



Оставьте и Вы свой отзыв в Гостевой книге!


Параметр
Описание
<Счет>
Значение типа «Счет» — счет расчета итогов. Может использоваться строка — код счета.
<ТипСуммы>
<Валюта>
Необязательный параметр. Значение типа «Справочник.Валюты». Если параметр не указан итоги выдаются без учета валюты. Если указана валюта, то данные выдаются по конкретной валюте. Валютная сумма может выдаваться только по конкретной валюте.
<Субконто1>
Необязательный параметр. Значения субконто. Их количество зависит от настройки субконто для данного счета. Если параметры не указаны, итоги выдаются без учета аналитики.

Вывод секций

Присоединить секцию

Пересечение секций

- Мы тут у вас монитор приобрели, а он ничего не печатает.



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


В конфигурации есть следующие отчеты по зарплате:

Ссылка на таблицу
Звонок в компьютерный магазин:



Открытие формы


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

Конт = 0; //контекст формы (ссылка на форму)

ОткрытьФорму("Справочник.Сотрудники.Основная",Конт); //открыть форму списка справочника

ОткрытьФорму(ВыбрСотрудник); //открыть форму элемента справочника

ОткрытьФорму("Отчет.ГлавнаяКнига");

ОткрытьФорму("Документ.ПриемНаРаботу",Конт); //новый документ

//можно открыть форму модально и еще можно передать в форму параметр

//в модуле формы переданный параметр доступен через конструкцию Форма.Параметр

ОткрытьФормуМодально("Обработка.УсловияПоиска",10);



Отсчет даты


Получим дату, отстоящую по календарю от указанной даты на заданное количество дней. Календарь пропускает дни с нулевыми значениями (выходные и праздники).

КонецОтпуска = Календари.Служащие.ПолучитьДату (НачалоОтпуска, 28);

Отчет
Описание
Ведомость на зарплату
Предназначен для кассира и показывает сумму "на руки" по каждому сотруднику.
Лицевые счета
Показывает промежуточные и конечные результаты расчета зарплаты по всем сотрудникам. Можно задать фильтр по категории и/или подразделению.
Расчетные листочки
Показывает промежуточные и конечные результаты расчета зарплаты по конкретному сотруднику. Расчетный листочек выдается сотруднику перед выдачей зарплаты для ознакомления. Можно распечатать листочек только для указанного сотрудника или по всем сотрудникам сразу. Можно задать фильтр и/или группировку по категории и подразделению.
Свод
Показывает сводные результаты расчета с различной группировкой. Строка отчета соответствует виду расчета или группе расчетов. Колонка отчета соответствует категории или подразделению. По строке подводится итог. Можно задать фильтр по категории и/или подразделению.
Поиск вида расчета
Позволяет выбрать всех сотрудников с определенным видом расчета или группой расчетов. Пользователь может задать фильтр по категории и/или подразделению. Можно задать любой период и при необходимости разбить его по месяцам. Есть возможность вывести дополнительные графы по сотруднику.

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 Цикл

... //действия с очередным элементом

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

КонецЦикла;



Перебор операций и проводок с фильтром


Синтаксис: ВыбратьОперацииСПроводками (<НачалоПериода>, <КонецПериода>, <Фильтр>, <Валюта>, <ПланСчетов>, <РазделительУчета>)

Пример, выбрать проводки по счету "10.1" по филиалу "Северный".

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

Опер.ВыбратьОперацииСПроводками(НачДата, КонДата,"10.1",,ПланыСчетов.Основной,филСеверный);

Пока Опер.ПолучитьПроводку()=1 Цикл

....<действия с текущей проводкой>

КонецЦикла;

Примеры фильтра:

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



Перебор операций и проводок с указанием счета и корр. счета


Синтаксис: ВыбратьОперацииСПроводками (<НачалоПериода>, <КонецПериода>, <Счет>, <КорСчет>, <Флаг>, <Валюта>, <ПланСчетов>, <РазделительУчета>)

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

<КорСчет>. Необязательный параметр. Счет — корреспондирующий счет, по которому будут отбираться проводки. Параметр имеет смысл, если указан параметр <Счет>.

<Флаг>. Необязательный параметр. Число — признак вида оборота. Параметр может принимать значения: 1 — отбирать проводки только по дебету счета; 2 — отбирать проводки только по кредиту счета; 3 — отбирать проводки и по дебету, и по кредиту. По умолчанию 3.

Пример, выбрать проводки Д10.1 К51 или Д51 К10.1

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

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

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

Опер.ВыбратьОперацииСПроводками (НачДата, КонДата, Сч10_1, Сч51,,,ПланыСчетов.Основной);

Пока Опер.ПолучитьПроводку()=1 Цикл

....<действия с текущей проводкой>

КонецЦикла;



Перебор счетов


1-й вариант:

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

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

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

....ТекСчет = Счета.ТекущийСчет();

....<действия с тек. счетом>

КонецЦикла;

2-й вариант:

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

Счета.ИспользоватьПланСчетов(ПланыСчетов.ОснПлан); //а вот теперь указан

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

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

....ТекСчет = Счета.ТекущийСчет();

....<действия с тек. счетом>

КонецЦикла;



Перебор списка значений


стр = "";

Для Номер = 1 По СписокЗнач.РазмерСписка() Цикл

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

...Сообщить(значение + ", " + стр);

КонецЦикла;



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


1-й способ.

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

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

...Сообщить(ТабЗнач.Сотрудник);

КонецЦикла;


2-й способ.

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

...ТабЗнач.ПолучитьСтрокуПоНомеру(НомерСтроки);

...Сообщить(ТабЗнач.Сотрудник);

КонецЦикла;



Перебор видов расчета, входящих в группу


Для Ном=1 По ГруппаРасчетов.ВсеНачисления.Количество() Цикл

....ВР = ГруппаРасчетов.ВсеНачисления.ПолучитьРасчет(Ном);

....Сообщить(ВР.Код);

КонецЦикла;



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


Для Ном=1 По Метаданные.ВидРасчета() Цикл

....кфгВР = Метаданные.ВидРасчета(Ном);

....ВР = ВидРасчета.ПолучитьАтрибут(кфгВР.Идентификатор);

КонецЦикла;









Строка фильтра
Описание
50
все проводки со счетом 50
50, *
все проводки в дебет 50 счета
* , 51
все проводки с кредита 51 счета
50, 51
все проводки в дебет 50 счета с кредита 51
51; 52
все проводки со счетом 51 или счетом 52
46, 68.2
все проводки в дебет 46 счета с кредита 68.2
"бумага"
все проводки, содержащие в содержании операции или в суб­конто или в реквизитах слово «бумага»
"бумага"; "картон"
все проводки, содержащие в содержании операции или в субконто или в реквизитах слово «бумага» или слово «картон»
*, 46; "бумага"
все проводки по кредиту 46 счета, содержащие в содер­жании операции или в субконто или в реквизитах слово «бумага»