Учебник по 1С

         

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


Например, организуем перебор записей с периодом действия в январе.

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

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

ДатаКон = '31.01.2002';

ЖЗ.ВыбратьЗаписи(ДатаНач, ДатаКон);

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

......<действия с тек. записью>

КонецЦикла;

А теперь организуем перебор записей, введенных в январе.

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

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

ЖЗ. ВыбратьПериод(ДатаНач);

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

.......<действия с тек. записью>

КонецЦикла;

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

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

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

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

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



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

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

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

КонецЦикла;

Теперь рассчитаем все записи текущего сотрудника, введеные в текущем месяце:

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

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

........ЖЗ.Рассчитать();

КонецЦикла;

Рассчитаем все записи по документу, независимо от того, в каком расчетном периоде записи порождались:

ЖЗ.ВыбратьЗаписиПоДокументу (ВыбрДокумент);

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

......ЖЗ.Рассчитать();

КонецЦикла;

Рассчитаем все записи по указанному подразделению. В журнале расчетов указана графа отбора "Подразделение".

ТекПер = ЖЗ.ТекущийПериод();

ЖЗ.ВыбратьПоЗначению ("Подразделение",ВыбрПодразделение, ТекПер, ТекПер);

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

......ЖЗ.Рассчитать();

КонецЦикла;



Передача значений точкам серий


Это самый важный метод диаграммы. Он устанавливает значение серии <НомерСерии> в точке <НомерТочки> равным <Значение> с возможностью последующей расшифровки. Все параметры, кроме параметра <Расшифровка> должны быть числовыми выражениями.

Синтаксис:

УстановитьЗначение(<НомерТочки>,<НомерСерии>,<Значение>,<Расшифровка>)

<Расшифровка> - параметр не обязательный, может иметь любой тип. Это значение, которое будет передано предопределенной процедуре ОбработкаЯчейкиТаблицы при двойном щелчке мышью на точке диаграммы. Так можно получать расшифровки точек диаграммы. Удобная штука!



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


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

|ФИО = Справочник.Сотрудники.Наименование;

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

|ДатаПриема = Справочник.Сотрудники.ДатаПриема;

|ДатаУвольнения = Справочник.Сотрудники.ДатаУвольнения;

|";



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


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

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

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

.......Для Месяц = 1 По 12 Цикл

..............Таб.ПрисоединитьСекцию("Сотр|Месяц");

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

КонецЦикла;

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

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С?


При приеме на работу:

- Языком владеете?

- Да, свободно.

- Хорошо. Будете наклеивать марки на конверты.

Любая учетная система имеет как минимум четыре компонента:

Систему хранения, поиска и редактирования условно-постоянной и нормативно-справочной информации, которая изменяется достаточно редко (справочники).

Систему ввода и фиксации событий внешнего мира (документов, хозяйственных операций и др.), влияющих на состояние системы

Систему работы с динамической информацией (остатки).

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

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

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

На сегодняшний день бесспорным лидером по продажам и количестве инсталляций являются программные продукты фирмы "1С". Более 2300 компаний в 430 городах России занимаются внедрением программ серии "1С". Не в последнею очередь такому успеху способствует особая политика фрайчазинга, когда сама фирма "1С" занимается только разработкой программного обеспечения, а внедрением и "подгонкой" под конкретные нужды потребителей заняты местные специалисты. К примеру, согласно, данным журнала "Эксперт" более 40 (если не 50) процентов пользователей делового программного обеспечения используют в повседневной работе продукты именно этой фирмы.




Вообще согласно этим же данным (а они получены за 2000 и 2001 год на российских компьютерных выставках - источник: журнал "Эксперт" №38 за 15 октября 2001 года) распределение рынка делового прикладного обеспечения выглядит примерно так. Первое место, как уже говорилось, занимают продукты "1С". Следующим по предпочтению отдаются продукты местных разработчиков (собственные отделы автоматизации на предприятиях и сторонние разработчики), которые объединяют в группу "Прочие". Потом идут продукты "БЭСТ", "Инфо-Бухгалтер", "Парус" занимающие примерно одинаковую нишу - 6-7 процентов опрошенных указывают, что используют их. Следом идут продукты "Турбо-Бухгалтер", "Инфин", "Инфософт" и "Галактика". Последнее, явно говорит на то, что рынок корпоративных систем различной сложности несомненно растет. Конечно не семимильными шагами, но все же. Об этом свидетельствует и то, что многие из производителей программного обеспечения, изначально определяя его в сфере автоматизации учета, начинают делать заявки и на более крупные проекты, позиционируя свои продукты все чаще как "корпоративные системы для среднего бизнеса".

Можно попробовать назвать и другие аргументы в пользу 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);

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

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

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

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

Справочник Сотрудники

Справочник НалоговыеЛьготы

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

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

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

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

(владелец Петров Петр Петрович)

Льгота ветеранам

Льгота на детей

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

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

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

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

(владелец Светлов Михаил Петрович)

Льгота афганцам



Подсчет дней и часов по календарю


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

Дни = Календари.Служащие.Дней (НачДата, КонДата);

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

Часы = Календари.Рабочие.Часов (НачДата, КонДата);

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



Поиск документа


ДокПрием.НайтиДокумент(Док);

ДокПрием.НайтиПоНомеру(123)



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


//например, в приказе об увольнении

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

СпрСотр.НайтиПоКоду(123);

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

СпрСотр.НайтиПоРеквизиту("Оклад", 5000);



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


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

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

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

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

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

Если СпрСотр.Должность = длжПлотник Тогда

....Прервать; //нашли работающего плотника! выйти из цикла

КонецЕсли;

КонецЦикла;

<действия с найденным элементом>



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


Синтаксис: НайтиОперацию([<Документ>])

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

Пример,

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

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

...<операция стала текущей>

КонецЕсли;



Поиск по коду


Если СпрСотр.НайтиПоКоду(1) = 1 Тогда

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

КонецЕсли;



Поиск по наименованию


Если СпрСотр.НайтиПоНаименованию("Работающие")=1 Тогда

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

КонецЕсли;

Режим = 1; // 1 - поиск внутри установленного подчинения (родителя) (по умолч.); 0 - поиск во всем справочнике

ФлагПоиска = 0; //1 - найти точное соответствие; 0 - найти наименование по первым символам (по умолч)

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

Если СпрСотр.НайтиПоНаименованию("Ив",Режим,ФлагПоиска)=1 Тогда

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

КонецЕсли;



Поиск по реквизиту


ИмяРекв = "Год"; //у реквизита должен быть установлен флажок Сортировка в Конфигураторе

ФлагГлобПоиска = 1; // 1- искать во всем справочнике, 0 - искать в пределах подчинения

Если СпрСотр.НайтиПоРеквизиту(ИмяРекв,1980,ФлагГлобПоиска)=1 Тогда

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

КонецЕсли;



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


Синтаксис: НайтиЗначение(<Знач>,<Строка>,<Колонка>)

Возвращает число: 0 - значение не найдено; 1 - значение найдено

Если указан параметр <Строка>, то поиск производится только по заданной строке

Если указан параметр <Колонка>, то поиск производится только по заданной колонке

номстр = 0;

Если ТабЗнач.НайтиЗначение (10000, номстр, "Оклад") = 1 Тогда

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

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

КонецЕсли;



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


//поиск по значению

Синтаксис: НайтиЗначение(<Знач>)

Возвращает номер позиции списка, в которой найдено значение или 0, если не найдено

номстр = СписокЗнач.НайтиЗначение (Сотрудник);

//проверка вхождения значения в список

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

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

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

Если СписокЗнач.Принадлежит(Сотрудник)=1 Тогда

....<действия>

КонецЕсли;



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


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

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

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

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

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

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

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

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

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

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



Порядок сортировки


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

ПорядокКодов()

ПорядокНаименований()

ПорядокРеквизита(ИмяРекв) //у реквизита должен быть установлен флажок Сортировка в Конфигураторе

ОбратныйПорядок()

Например, ниже открывается выборка сотрудников, отсортированных по номерам по убыванию:

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

СпрСотр.ПорядокКодов();

СпрСотр.ОбратныйПорядок();

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



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


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


Требуется создать средствами 1С игру "Охота на лис". Правила игры следующие.

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

Игровое поле состоит из информационого и игрового полей.

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

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




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

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

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

В программе должны фиксироваться следующие события:

Выдача книг читателю из библиотеки на определенный срок

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

Возврат книги читателем в библиотеку

Потеря книги читателем

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

Правила работы библиотеки следующие:

Читатель может взять в библиотеке только определенное количество книг (задается директором библиотеки).

Читатель берет книги обычно на месяц, но может сразу взять книгу на больший срок, если явно скажет об этом.

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

При просрочке возврата книги, читатель получает предупреждение.

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

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

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

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




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




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




Требуется создать средствами 1С игру "Реверси". Правила игры следующие.

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




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




Требуется создать простейшую систему расчета зарплаты, удовлетворяющую следующим минимальным требованиям:

Минимальный кадровый учет (справочник Сотрудники, документы Прием, Перемещение, Увольнение, журнал Кадровые документы)

Две категории сотрудников: "Руководители и специалисты" (сидят на окладе), "Рабочие" (работают по тарифу)

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

Ввод премий сотрудникам.

Расчет подоходного налога с учетом налоговых льгот (стандартных вычетов).

Отчетность по зарплате (ведомость на выплату зарплаты, свод, расчетные листочки, лицевые счета)



Поведение сформированного отчета


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

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



Правила перерасчета


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

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

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



ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ


Пример использования диаграммы в 1С: Бухгалтерия


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

// Блокируем обновление, пока обрабатываются данные

Диаграмма1.Обновление(0);

Диаграмма1.Заголовок = "Поступления от покупателей";

Диаграмма1.УстановитьИмяСерии(1, "Рубли");

Диаграмма1.АвтоУстановкаИменТочек(1);

// Заполним диаграмму значениями

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

Бухит.ВыполнитьЗапрос(НачКвартала(РабочаяДата()),

КонКвартала(РабочаяДата()),"60.1",,,1,"Неделя","С");

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

А = 1;

// дебетовые обороты по счету 60.1 покажут поступления

// денег от покупателей

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

Диаграмма1.УстановитьЗначение(А, 1, БухИт.ДО());

А = А +1;

КонецЦикла;

// после наполнения данными перерисовываем

Диаграмма1.Обновление(1);

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

Результат работы процедуры на рис.2:

Виды процедур

Параметры

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

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


вызываются системой 1С при наступлении определенных событий.

Назначение
Нострадамус: будущее предопределено, но не окончательно!

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

Пример, справочник Должности

Процедура ПриЗаписи

.....Если СокрЛП(Наименование)="" Тогда

..........Предупреждение("Не указано название должности!");

..........СтатусВозврата(0);

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

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



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


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

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

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

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

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

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

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

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

КонецЦикла;

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



ТекстДок = СоздатьОбъект("Текст");


ТекстДок = СоздатьОбъект("Текст");

ТекстДок.Открыть("catalog.txt");

ТекстДок.ЗаменитьСтроку(52, "Установка оборудования......" + Стоимость);

ТекстДок.ВставитьСтроку(53, "Замена оборудования... ");

ТекстДок.УдалитьСтроку(10);

ТекстДок.ДобавитьСтроку("Конец файла");

ТекстДок2 = СоздатьОбъект("Текст");

ТекстДок2.Шаблон(1);

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

..........стр = ТекстДок.ПолучитьСтроку(н);

..........стр2 = "[н]" + стр;

.........ТекстДок2.ДобавитьСтроку(стр2);

КонецЦикла;

ТекстДок2.Записать("catalog2.txt");

ТекстДок2.ТолькоПросмотр(1);

ТекстДок2.Показать();
Предопределенная процедура
Описание
ПриОткрытии()
Вызывается при открытии формы списка справочника. Можно задать начальные значения для переменных, проверить права пользователя на открытие данного справочника и т.д.
ПриЗакрытии()
Вызывается при закрытии формы списка справочника.
ПриЗаписи()
ПриВыбореРодителя(НовРодитель)
Вызывается при выборе родителя (группы). В этой процедуре можно проверить права пользователя на просмотр элементов данной группы.
ПриВыбореВладельца(НовВладелец)
Вызывается при выборе владельца справочника-хозяина. Имеет смысл, если данный справочник подчинен другому.
ПриУстановкеОтбора(Реквизит,Значение)
Предопределенная процедура при интерактивной установке отбора любым способом (отбор, быстрый отбор, отбор по значению, история отбора) и при отключении отбора.
ПриВыбореСтроки()
Режим обработки выбора строки (двойной щелчок мыши или клавиша Enter) включается в форме списка справочника, журнала документов, счетов, журнала операций, журнала проводок при помощи метода Форма.ОбработкаВыбораСтроки(1). Тогда при выборе строки будет вызываться эта предопределенная процедура.



Почтальон Печкин


Мини-склад

Работёнка

Почтальон Печкин

Игра "Реверси"

Игра "Охота на лис"

Денежки

Мини-библиотека

Доставочка
Простой склад
Кадровый учет в строительстве

Конкурент-магазин 3.18


Пример

// переместить все текстовые файлы (*.txt) из каталога информационной базы в каталог TXT.
ФС.УстТекКаталог(КаталогИБ());

ИмяФайла = "";

ИмяФайла = ФС.НайтиПервыйФайл("*.txt");

Если ИмяФайла <> "" Тогда

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

.....ФС.КопироватьФайл(ИмяФайла,ФС.ТекКаталог() + "TXT" + ИмяФайла);

.....ФС.УдалитьФайл(ИмяФайла);

Пока 1=1 Цикл
ИмяФайла = " ";

.....ИмяФайла = ФС.НайтиСледующийФайл()

Если ИмяФайла <> "" Тогда

.....ФС.КопироватьФайл(ИмяФайла,ФС.ТекКаталог() + "TXT" + ИмяФайла);

.....ФС.УдалитьФайл(ИмяФайла);

Иначе

..... Прервать;

КонецЕсли;
КонецЦикла;

Пример

//выбрать файл с фотографией сотрудника

ИмяФайла = "";

ИмяКаталога = КаталогИБ();
Если ФС.ВыбратьФайлКартинки(0,ИмяФайла,ИмяКаталога,"Укажите файл с фотографией:",,20)=1 Тогда
ВремКартинка = СоздатьОбъект("Картинка");

ВремКартинка.Загрузить(ИмяКаталога + ИмяФайла);

КартинкаНаФорме.УстановитьКартинку(ВремКартинка);
КонецЕсли;


//1- й вариант: выборка по объекту

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

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

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

История.ОбратныйПорядок(1);

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

ОчерДата = История.Значение;

Док = История.ТекущийДокумент();
КонецЦикла;

//2-й вариант: выборка по документу

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

История.ВыбратьПоДокументу(ДокКадровоеПеремещениеСписком);

Пока История.ПолучитьЗначение()=1 Цикл
ТекОбъект = История.ТекущийОбъект();

Если ТипЗначенияСтр(ТекОбъект) = "Справочник" Тогда
Если ТекОбъект.Вид()= "Сотрудники" Тогда
ТекСотр = ТекОбъект;

ТекРеквизит = История.ТекущийРеквизит();

ОчерДата = История.ДатаЗнач;

ОчерЗначение = История.Значение;
КонецЕсли;
КонецЕсли;
КонецЦикла;
//поиск

ЗначениеНаДату

НайтиЗначение
//корректировка

НазначитьТип

Записать

Удалить

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


Присоединить секцию -- означает прицепить ее к таблице справа.

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

Для Месяц = 1 По 12 Цикл

.......Таб.ПрисоединитьСекцию("Месяц");

КонецЦикла;

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



Проблемы конфигурирования и администрирования


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

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

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


Заметим, что возможные варианты ввода двух объектов и затем автоматической замены на центральной ИБ всех ссылок на один из объектов, достаточно сложны в реализации и весьма ненадежны.

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

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

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

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


Прочее


Скачать Учебник по 1С - 800K

Версия без картинок (130К)

Приложения к Учебнику

Ваши отзывы!

Статьи по 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("

")



Программное создание групп


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

СпрСотр.НоваяГруппа();

СпрСотр.Наименование = "Работающие";

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

СпрСотр.НоваяГруппа();

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

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



Программное создание группы


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

СпрСотр.НоваяГруппа();

СпрСотр.Наименование = "Работающие";

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

СпрСотр.НоваяГруппа();

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

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



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


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


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

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

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

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

СпрСотр.ДатаПриема = '01.01.2002';

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

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

СпрСотр.Категория.Установить (СпрСотр.ДатаПриема, ктгСовместители);

СпрСотр.Должность.Установить (СпрСотр.ДатаПриема, длжПлотник);

а можно сделать красивее:

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

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

СпрСотр.ИспользоватьДату(ДатаПриема); //внимание!

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

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

СпрСотр.ДатаПриема = '01.01.2002';

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

СпрСотр.Категория = ктгСовместители;

СпрСотр.Должность = длжПлотник;

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



"Произведения" (форма элемента)


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




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


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

Каждая конфигурация должна храниться в отдельном каталоге (папке).

1. Создайте новую папку на любом диске, например, "C:\Учебная"

2. Запустите 1С:Предприятие. Откроется список информационных баз.


1С:Предприятие может работать с несколькими базами данных на одном компьютере. Например, в одной базе ведется кадровый учет, в другой базе - учет товаров, в третьей - бухгалтерский учет для Фирмы А, в четвертой - бухгалтерский учет для фирмы Б.

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

4. В следующем поле укажите путь к папке, которую вы создали на 1 шаге. Нажмите кнопку "…", войдите в папку и нажмите Выбрать.

Папка может располагаться на локальном жестком диске компьютера, например "C:\Учебная" или на другом компьютере в сети, например, "\\SERVER\KADR". При этом должны быть предоставлены полные права доступа к этой папке (чтение, запись и т.д.).

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

<Картинка, обведены кнопки Изменить, Удалить>

6. Укажите режим запуска Конфигуратор.

1С может запускаться в четырех режимах:

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

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


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

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

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

8. Так как в созданной папке пока ничего нет, то 1С спросит в каком формате будет храниться база данных: В файлах DBF или на SQL-Server Укажите формат "Файлы DBF" и нажмите ОК.



9. Запустится конфигуратор. Откройте дерево конфигурации, в котором мы будем работать очень часто. Для этого щелкните меню Конфигурация => Открыть конфигурацию или кнопочку
. Появится окно дерева конфигурации. Задайте ему нормальные размеры.



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

Создание объектов конфигурации

10. Установите курсор на строку Справочники и щелкните кнопку
(или щелкните правой кнопкой мыши и выберите Новый справочник). При этом откроется окно Конструктора справочников.



Конструктуры предназначены для помощи программисту в выполнении определенных действий. Только что мы увидели конструктор справочников. В 1С есть еще конструктур документов, конструктор отчетов, конструктор запросов и т.д. Все действия, которые делает конструктор, можно выполнить вручную, но возможно, что с конструктором будет быстрее. Если вам конструктор не нужен (или не нравится), тогда снимите флажок "Использовать конструкторы при создании новых объектов". В данном Учебнике мы все будем делать вручную, поскольку только так можно стать настоящим программистом и выжать из 1С все, на что она способна (или он? кстати, какого рода слово "1С". Это он, она или оно?).



11. Снимите флажок " Использовать конструкторы при создании новых объектов" и нажмите кнопку Отмена для закрытия конструктора. Он будет сопротивляться, но вы будьте настойчивы!

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

12. Опять установите курсор на строку Справочники и щелкните кнопку
(или щелкните правой кнопкой мыши и выберите Новый справочник). При этом откроется окно Конструктора справочников уже не откроется, а появится обычное окно для редактирования структуры справочника.



13. Задайте идентификатор справочника (имя), например сейчас мы создадим справочник "Должности".

Идентификатор справочника очень важен, поскольку он будет использоваться при программировании. Его нельзя будет исправить просто так, поскольку придется также исправить все места в программе, где используется этот справочник. Относитесь к идентификатору справочника очень серьезно. Идентификатор должен быть лаконичным, понятным, отражающим содержимое справочника, например: "Страны", "Сотрудники", "Товары" и т.д.

Заметьте, что общепринятым правилом является множественное число в имени справочника, но это не обязательно. Например, вы можете создать справочник "АдреснаяКнига". В идентификаторах объектов, а также в названиях переменных не может быть пробелов, но могут быть цифры и знак подчеркивания. Идентификатор не может начинаться с цифры. Правильное название объектов, переменных - признак хорошего стиля программирования и залог успеха. Будьте профессионалами в этом деле!

14. Задайте длину наименования 30 символов.

У каждого справочника есть уже заранее заданные два поля "Код" и "Наименование". Вы можете редактировать длину наименования, длину кода, а тажке тип кода: Числовой/Текстовый.

15. Закройте окно структуры справочника Должности.

14. На всякий случай сохраните конфигурацию, чтобы ваш труд не пропал даром, если вдруг отключится электричество или прямо сейчас наступит конец света.



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



Нажмите Да.

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



Нажимаем Да.

1С проанализирует структуру базы и покажет окно со списком изменений.



Нажмите кнопку "Принять".

После реорганизации базы появится сообщение "Реорганизация информациии закончена ".

15. Создадим справочник Сотрудники. (Установите курсор на Справочники и щелкните кнопку Новый). Задайте имя справочника (идентификатор) "Сотрудники".

16. Задайте длину наименования 100 символов.

В наименовании у нас будет храниться ФИО сотрудника. Иногда бывают довольно длинные имена, например "Александровский-Петровский Александр Александрович".



17. В этом справочнике у нас будет еще одно поле (реквизит, атрибут) Должность. Список реквизитов сейчас пустой. Нажмите кнопку Добавить, откроется окно редактирования свойств реквизита. Кстати, реквизит, атрибут и поле - это в принципе одно и то же. Просто нужно привыкнуть к слову "реквизит".



18. Задайте имя реквизита "Должность". Укажите тип реквизита "Справочник.Должности", который мы создали раньше. Это говорит о том, что значения данного реквизита будут выбираться из справочника Должности. Нажмите ОК.

19. Создайте реквизит Оклад (тип Число, Точность 2 знака после запятой)



20. Создайте реквизиты ДатаПриема и ДатаУвольнения (тип Дата)

21. Сохраните конфигурацию (на всякий случай).

Теперь у нас есть два справочника и можно ввести некоторые данные.

22. Запустите 1С:Предприятие в режиме Предприятие. Это можно сделать прямо из Конфигуратора, нажав кнопку
. Появится окно 1С:Предприятие.



23. Откройте справочник Должности. Для этого щеклните меню Операции => Справочники => Должности. Откроется окно справочника.





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

24. Введите несколько должностей, используя кнопку
или клавишу INS. Например, Директор, Бухгалтер, Программист.

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

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

25. Закройте справочник Должности и откройте справочник Сотрудники. (Щеклните меню Операции => Справочники => Сотрудники).



26. Заведите нескольких сотрудников. Например, Иванов - директор, Петров - Бухгалтер, Сидоров - Программист.

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



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

27. Закройте 1С:Предприятие и запустите базу в режиме Конфигуратор.

28. Теперь создайте новый документ "ПриемНаРаботу". (установите курсор на Документы и щелкните Новый). Задайте имя документа ПриемНаРаботу.



29. Добавьте реквизит шапки "Сотрудник", укажите ему тип значения Строка и длина 100 символов. Нажмите ОК.

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



Кстати, у любого документа уже есть два заранее заданных реквизита шапки "НомерДок" и "ДатаДок".

30. У документа должна быть удобная форма для ввода данных. Нажмите кнопку "Форма" в нижней части окна.

31. Так как мы сюда зашли в первый раз, то 1С предлагает автоматически создать форму документа.



Мы договорились все делать вручную, поэтому нажимаем Отмена.

32. Нам нужно создать форму следующего вида:



· Установите подходящие размеры формы.

· Разместите на форме текстовую надпись "Прием на работу". Для этого щелкните на кнопку
внизу и затем на форме.

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

· Укажите размер шрифта побольше, это же все-таки заголовок. Для этого щелкните правой кнопкой на надписи, выберите Свойства, щелкните вкладку Шрифт, снимите флажок "Шрифт по умолчанию" и укажите размер шрифта 12, Можете еще что-нибудь указать, например Цвет, жирность и т.д. Не бойтесь экспериментировать, мы же пока только учимся. нажмите ОК.



· Добавьте поле НомерДок на форму. Для этого щелкните кнопку
появится окно. В нем установите флажок у реквизита шапки НомерДок, нажмите ОК и щелкните в каком-нибудь месте формы. Там появится поле НомерДок. Задайте ему размеры и перетащите в нужное место формы.

· Добавьте рядом текстовое поле с надписью "№".

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

· Кнопки ОК и Закрыть разместите по центру формы (по горизонтали). Для этого выделите их мышкой (обе одновременно) и щелкните кнопку
. Попробуйте там и другие кнопки ради интереса.

Теперь в этот документ можно будет вводить данные о новом сотруднике. Затем пользователь нажмет кнопку ОК и ваша программа должна добавить в справочник Сотрудники новый элемент (новую строку). При нажатии ОК документ сначала будет записан, а потом будет проведен.



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

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

Для открытия модуля документа закройте экранную форму документа. На экране останется окно структуры документа. Внизу есть кнопка "Модуль документа", вот на нее и нажмите. Откроется окно для редактирования текста программы.

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

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

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

СпрСотр.Наименование = Сотрудник;

СпрСотр.Должность = Должность;

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

СпрСотр.ДатаПриема = ДатаПриема;

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



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

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

Обратите внимание, что каждый оператор в языке 1С заканчивается символом ";" (точка с запятой). После слова КонецПроцедуры точки с запятой не, потому что это не оператор, а операторная скобка (есть такое понятие в 1С). Точки с запятой нет также после слов Цикл и Тогда, но после слов КонецЦикла и КонецЕсли обязательно ставьте точку с запятой. В данной программе мы не использовали ни циклы, ни условия.



Также обратите внимание как оформляются комментарии.

// это комментарий

Комментарии не учитываются компилятором и предназначены для человека, которому нужно разобраться в программе. Комментариев не должно быть слишком много и слишком мало. Программа сама по себе должна быть понятна, без комментариев. Но в сложных местах в комментариях можно пояснить логику работы программы. Написание комментариев и понятных программ - тоже признак хорошего тона. Будьте в этом деле профессионалами!

· Закройте окно модуля и окно структуры документа. Сохраните конфигурацию.

Теперь можно попробовать принять нового сотрудника по всей форме.

· Запустите 1С в режиме Предприятие.

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

· Для открытия журнала документов Прочие щелкните Операции => Журналы документов => Прочие. Откроется журнал документов.



· Щелкните кнопку
или нажмите клавишу INS. Откроется форма документа "Прием на работу" для ввода данных. Номер документа присвоится автоматически, дата документа - сегодняшнее число.



· Введите все данные: ФИО сотрудника, укажите ему должность и оклад.

· Нажмите кнопку ОК. Сначала документ будет записан, а потом проведен. При проведении сработает процедура ОбработкаПроведения и в справочник Сотрудники добавится новая строка. Проверьте это.

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

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

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



Теперь организуем правильное увольнение сотрудников с помощью кадрового приказа.

· Создайте в Конфигураторе новый документ "Увольнение".

· Укажите, что он содержит реквизиты шапки "Сотрудник" тип "Справочник.Сотрудники и "Дата увольнения" тип Дата.

· Создайте для него удобную форму для ввода данных.



· Напишите следующий текст в модуле документа в процедуре ОбработкаПроведения():

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

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

СпрСотр.ДатаУвольнения = ДатаУвольнения;

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

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

Создадим журнал "КадровыеДокументы". Для этого установите курсор на "Журналы документов" в дереве конфигурации и щелкните Новый. Задайте имя журнала. Здесь больше ничего не трубуется.



Теперь откройте окно для редактирования структуры документа "ПриемНаРаботу". В верхней части окна измените журнал "Прочие" на журнал "КадровыеДокументы"

То же самое проделайте для документа Увольнение.

Сохраните конфигурацию на всякий случай.

Теперь создадим пользовательское меню. В окне конфигурации внизу есть вкладка Интерфейсы.



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

Создайте новый Интерфейс и назовите его Администратор. Интерфейс появится в списке интерфейсов.

Щелкните дважды на интерфейсе и выберите "Редактировать меню". Откроется окно редактора меню.



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



· Нажмите кнопку
и затем "Построить". Конструктур автоматически создаст все пункты меню.



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

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



· Закройте редактор меню.

Сохраните конфигурацию и запустите ее. Проверьте работу документа Увольнение и пощелкайте меню.

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

Для сравнения скажу, что написание такой же системы на другом языке программирования Visual Basic или Delphi займет в два-три раза больше времени и сил. Что бы там ни говорили недоброжелатели, но на 1С программы пишутся в несколько раз быстрее.

<



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


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

Режим = 0; //выбирать без учета иерархии, 1 - с учетом (по умолч.)

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

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

.....<действия с очередным элементом/группой>

КонецЦикла;



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


Пример, выбрать все операции за период:

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

Опер.ВыбратьОперации(НачДата, КонДата); //заданный период

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

Сообщить(Опер.СуммаОперации);

Сообщить(Опер.Содержание);

//организуем перебор проводок текущей операции

//1-й вариант

Опер.ВыбратьПроводки();

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

Сообщить(Опер.Дебет.Счет);

Сообщить(Опер.Кредит.Счет);

Сообщить(Опер.Сумма);

КонецЦикла;

//2-й вариант перебора проводок текущей операции

Для Ном = 1 По Опер.КоличествоПроводок() Цикл

Опер.ПолучитьПроводкуПоНомеру(Ном); //проводка стала текущей

Сообщить(Опер.Дебет.Счет);

Сообщить(Опер.Кредит.Счет);

Сообщить(Опер.Сумма);

КонецЦикла;

КонецЦикла;



Проведение документа


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



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


При проведении документа часто требуется установить новое значение периодического реквизита на определенную дату. Это называется движение документа. В этом случае следует применять метод УстановитьРеквизитСправочника:

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

УстановитьРеквизитСправочника(Сотрудник, "Должность", НоваяДолжность, ДатаПеремещения);

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

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

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

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

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

ПривязыватьСтроку(НомерСтроки);

УстановитьРеквизитСправочника(Сотрудник, "Должность", НоваяДолжность, ДатаПеремещения);

КонецЦикла;

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



Путевой лист


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

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

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

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

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

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

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

//доставляемые товары

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

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

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

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

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

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

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

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

//уменьшаются остатки по данному товару

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

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

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

КонецЦикла;

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



Работа с файлами DBF


Чтение файла DBF

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

Работа со структурой файла DBF

Работа с удаленными записями

Работа с индексами



Работа с индексами


Для организации упорядочивания содержимого файла БД и поиска в ней по значению одного или нескольких полей применяется механизм индексов. Его применение можно сравнить с сортировкой картотеки по определенному признаку (совокупности признаков). Однако, в отличие от картотеки, файл БД может иметь сразу несколько индексов, и, соответственно, являться упорядоченным одновременно по нескольким признакам. Индексы хранятся в индексном файле. Индексный файл может содержать информацию более чем об одном индексе. Рекомендуется для одного файла DBF иметь один индексный файл, в котором хранятся все индексы для этого файла.

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

Основное правило: индекс нужен, чтобы быстро искать нужную запись.

DBF-ФАЙЛ
Индекс по фамилии

Работа с программой


Порядок работы с программой.

//-------------------------------------------------------------------

1. Товар поступает на склад по документам ПриходнаяНакладная (см. описание документа ПН)

При внесении ПН можно проконтролировать и исправит розничную цену.

2. Отпуск товара по точкам выполняется только через ДокументРеализатора (см. описание документа ДР)

Направление движения товара задается СтатусомДокумента.

3. По документам ПКО вносится выручка торговых точек.

4. Периодически выполняется инвентаризация реализатора.

Для этого нужно распечатать остатки реализатора. (Меню\Отчеты\Остатки реализатора)

Отдать на торговую точку для заполнения.

Затем следует создать документ ИнвентаризацияРеализатора,

заполнить его согласно ведомости инвентаризации.

При этом конфигурация рассчитывает количество проданного товара,

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

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

(к-во проданного товара, сумма выручки, сумма недостачи, остаток товара)



Работа с сериями диаграммы


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

Диаграмма1.КоличествоСерий(3); // так у нас будет три серии

//однако если в другом методе будет передана серия с большим номером,

//количество серий будет автоматически увеличено.

КолСерий = Диаграмма1.КоличествоСерий();

// а так переменной КолСерий будет передано текущее количество серий

// так мы зададим имя "Рубли" серии № 1

Диаграмма1.УстановитьИмяСерии(1, "Рубли");

// установим цвет серии № 2

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

Диаграмма1.ЦветСерии(2, 35, 67, 90);

// установили: 35 единиц красной компоненты, 67 - зеленой, 90 - синей

//можно установить имена серий автоматически: Серия1, Серия2, и т.д.

Диаграмма1.АвтоУстановкаИменСерий(1);

//если поставить вместо флага 1 флаг 0, автоустановка имен будет запрещена.



Работа с точками диаграммы


//установим количество точек, скажем, 8 штук

Диаграмма1.КоличествоТочек(8);

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

//количество точек будет автоматически увеличено.

// метод может возвратить текущее количество точек

КолТочек = Диаграмма1.КоличествоТочек();

// можно установить имя любой точки

Диаграмма1.УстановитьИмяТочки(7, "7 точка");

//можно установить имена точек автоматически: 1, 2, 3, и т.д.

Диаграмма1. АвтоУстановкаИменТочек(1);

//если поставить вместо флага 1 флаг 0, автоустановка имен будет запрещена.



Работа с удаленными записями


Файлы DBF устроены таким образом, что удаление записи не приводит к физическому удалению записи из файла. Запись просто помечается на удаление и пропускается при переборе. Таким образом размер файла остается прежним. Чтобы физически удалить все помеченные на удаление записи нужно применить метод Сжать. Средства встроенного языка позволяют работать с такими записями, перебирать их и даже отменять пометку на удаление.

Файл.ПоказыватьУдаленные(1);

Файл.Первая();

Пока Файл.ВКонце()=0 Цикл

......Если Файл.ЗаписьУдалена()=1 Тогда

............Файл.Восстановить();

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

......Файл.Следующая();

КонецЦикла;

Файл.Первая();

Пока Файл.ВКонце()=0 Цикл

......Если Файл.PRICE < 1000 Тогда

............Файл.Удалить();

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

......Файл.Следующая();

КонецЦикла;

Файл.Сжать(); //удалить записи физически

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

Файл.ОчиститьВсе();

Стоит еще отметить про метод Очистить(), что он очищает все поля текущей записи. Атрибуты, соответствующие полям типа "строковый" приобретают значение «пустая строка», числовой — 0, логический — 0, дата — «пустая дата».



Работа со структурой файла DBF


Например, создадим файл, идентичный по структуре исходному.

//При этом применяется метод ОписаниеПоля, который возвращает характеристики поля с указанным номером

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

Файл1 = СоздатьОбъект("XBASE");

Файл2 = СоздатьОбъект("XBASE");

Файл1 = ОткрытьФайл("file1.dbf");

Для н = 1 По Файл1.КоличествоПолей() Цикл

........НазвПоля = "";

........Тип = "";

........Длина = 0;

........Точность = 0;

........Файл1.ОписаниеПоля(н,назвПоля,Тип,Длина,Точность);

........Файл2.ДобавитьПоле(назвПоля,Тип,Длина,Точность);

КонецЦикла;

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

ПолучитьЗначениеПоля(<ИмяПоля>);

УстановитьЗначениеПоля(<ИмяПоля>,<значение>);



Работёнка (пример)


Физ. номер записи
Фамилия
1
Иванов
2
Абдулов
3
Барабанов
4
Мирнов
5
Раскольников
6
Комаров

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


После создания структуры базы данных можно добавить индексы следующим образом:

//Синтаксис: ДобавитьИндекс(<Название>, <Выражение>, <Уникальность>, <Убывание>, <Фильтр>)

Файл = СоздатьОбъект("XBase");

Файл.ДобавитьПоле("NAME", 1, 19, 3);

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

Файл.ДобавитьИндекс("IDXCODE", "CODE", 1, 0, "");

Файл.ДобавитьИндекс("IDXNAME", "NAME", 0, 0, "");

Файл.ДобавитьИндекс("IDXNAMECODE", "NAME+CODE", 0, 0, "");

Файл.СоздатьФайл("mydb.dbf", "mydb.cdx");

//1-й вариант

Файл.ТекущийИндекс("IDXNAME");

Файл.Найти("Иванов",0); //передается значение и режим поиска

//2-й вариант

Файл.ТекущийИндекс("IDXNAMECODE");

Файл.Ключ.NAME = "Иванов";

Файл.Ключ.CODE = 123;

Файл.НайтиПоКлючу(0);

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

Файл.Переиндексировать();

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

Фамилия Физ. номер записи
Абдулов
2
Барабанов
3
Иванов
1
Мирнов
4
Комаров
6
Раскольников
5

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

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

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

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

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

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

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

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



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


Все промежуточные и окончательные результаты расчета зарплаты хранятся в журнале расчетов Зарплата. В журнале Зарплата можно включить закладки отбора сотрудников по категориям, по подразделениям или по группам справочника Сотрудники (Работающие и Уволенные).

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

Затем необходимо ввести периоды невыходов (прогулов) документом "Ввод невыходов". Этот документ вводит вид расчета "Невыход", который вытесняет виды расчета ПоОкладу и ПоТарифу.

Если некоторым сотрудникам полагаются премии, то нужно провести документ "Ввод премий".

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

После окончательного расчета можно сформировать отчеты по зарплате.

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



Распределенные базы в 1С


Работа не волк - в лес не убежит.

Основные принципы

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

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

Изменения конфигурации

Коллизии

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

Проблемы администрования

Использование компоненты "Управление распределенными ИБ"

Статья с сайта www.klerk.ru

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

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



Развернутое сальдо по субконто


Функции СНДРС, СНКРС, СКДРС, СККРС предназначены для расчета остатков по счетам, у которых ведется аналитический учет по субконто. Каждая функция из этой группы возвращает остаток как сумму соответствующих остатков (дебетовых или кредитовых) по всем объектам аналитического учета.

Если аналитический учет по счету ведется по двум и более субконто, то для развернутого сальдо параметр <ТипФильтра> устанавливает участие данног вида субконто в получении развернутого сальдо. В зависимости от значения этого параметра данное субконто может участвовать в «развороте» остатка, или накладывать дополнительное ограничение (отбирать) на анализируемые остат­ки, или никак не влиять на результат функции.

Синтаксис (у всех одинаковый):

СНДРС(<Счет>, <ТипСуммы>, <Валюта>, <Субконто1>, <ТипФильтра1>, <Субконто2>, <ТипФильтра2>...)

<ТипФильтра>. Необязательный параметр. Тип использования субконто. (Строка или число).

"*" (1) — Разворачивать по данному субконто.

"!" (2) — Отбирать по данному субконто.

" " (3) — Не учитывать данное субконто.

Значения по умолчанию: "*" (1) — для первого субконто, " " (3) — для остальных субконто.

Пример

//Получим развернутое сальдо дебетовое на начало периода по счету 60,

// учет ведется по субконто Организации.

СР60 = БухИтоги.СНДРС("60");

//Получим развернутое сальдо дебетовое на начало периода по счету 10

//конкретному складу в разрезе материалов, учет ведется по субконто «Материалы» и «Склады».

СР10 = БухИтоги.СНДРС("10", 1, , , "*", ВыбСклад, "!");



Развернутое сальдо по субсчетам


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

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

Пример

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

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

ДебСальдоНаНач = БухИтоги.СНДР("68");

ДебСальдоНаКон = БухИтоги.СКДР("68");

КрСальдоНаНач = БухИтоги.СНКР("68");

КрСальдоНаКон = БухИтоги.СККР("68");









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