Здорово! Правда здорово и очень полезно. К тому же сделано с умом и заботой о пользователях. Особенно порадовала возможность скачки учебников одним файлом. Этой возможностью часто пренебрегают создатели сайтов, что приводит к большому геморою ;) Спасибо, мастер. Спасибо от всей души.
|
|
В окне конфигурации можно раскрывать списки объектов (константы, справочники, документы и т.д.). Объекты можно добавлять, удалять, редактировать, изменять их порядок, сортировать, писать для них описание.
Каждый объект имеет свойства и контекстное меню (вызывается правой кнопкой мыши).
Также к конфигурации относятся Интерфейсы и Права. Для их вызова нужно щелкнуть вкладки, расположенные внизу дерева конфигурации.
Кроме того, когда окно дерева конфигурации активно в меню Действия становятся доступными пункты "Глобальный модуль", "Общие таблицы" и "Библиотека картинок".
Диаграммы в 1С
Диаграмма предоставляет удобное графическое представление некоторого набора данных, чаще всего результатов каких-либо изменений. 1С предоставляет собственный (надо сказать, приятный) инструмент такого графического представления - объект "Диаграмма". Область диаграммы состоит из нескольких частей: область построения (там создается рисунок), заголовка (надписи над рисунком), легенды (расшифровки меток серий). В диаграмме имеются серии (т.е. наборы значений) и точки, из которых состоят серии (см. рис.1).
Добавление строк в таблицу значений
ТабЗнач.НоваяСтрока();
ТабЗнач.Номер = 1;
ТабЗнач.Сотрудник = "Иванов Иван Иванович"; //следите за типом колонки!
ТабЗнач.Должность = "Программист";
ТабЗнач.Оклад = 20000;
ТабЗнач.НоваяСтрока();
ТабЗнач.Номер = 2;
ТабЗнач.Сотрудник = "Петров Петр Петрович";
ТабЗнач.Должность = "Бухгалтер";
ТабЗнач.Оклад = 10000;
//обычно строки добавляются в цикле
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
.....ТабЗнач.НоваяСтрока();
.....ТабЗнач.Номер = СпрСотр.Код;
.....ТабЗнач.Сотрудник = СпрСотр.ТекущийЭлемент(); //следите за типом колонки!
.....ТабЗнач.Должность = СпрСотр.Должность;
.....ТабЗнач.Оклад = СпрСотр.Оклад;
КонецЦикла;
Добавление значений в список
Синтаксис: ДобавитьЗначение(<значение>,[<представление>]);
//у каждого значения в СпискеЗначений есть экранное представление
//если оно не указано, то используется стандартное строковое представление объекта
СписокЗнач.ДобавитьЗначение("Иванов Иван Иванович");
СписокЗнач.ДобавитьЗначение(Сотрудник);
СписокЗнач.ДобавитьЗначение(1,"Значение №1");
СписокЗнач.УстановитьЗначение(3,3,"Значение №3"); //установить новое значение и представление 3-й позиции
Доходы
Определять доходы магазина можно по регистру Доходы с помощью отчетов СводнаяТаблица и ОтчетПоРегистру, разработанных фирмой КИНТ.
Документ "Доход"
Экранная форма документа выглядит следующим образом:
Модуль проведения:
Процедура ОбработкаПроведения()
Регистр.Доходы.Участник = Участник;
Регистр.Доходы.Статья = Статья;
Регистр.Доходы.Сумма = Сумма;
Регистр.Доходы.ДвижениеВыполнить();
Регистр.Кошельки.Кошелек = Кошелек;
Регистр.Кошельки.Сумма = Сумма;
Регистр.Кошельки.ДвижениеПриходВыполнить();
КонецПроцедуры
Документ "Перевод"
Данный документ переводит средства из одного кошелька в другой.
Модуль проведения:
Процедура ОбработкаПроведения()
Регистр.Кошельки.Кошелек = КошелекОткуда;
Регистр.Кошельки.Сумма = Сумма;
Регистр.Кошельки.ДвижениеРасходВыполнить();
Регистр.Кошельки.Кошелек = КошелекКуда;
Регистр.Кошельки.Сумма = Сумма;
Регистр.Кошельки.ДвижениеПриходВыполнить();
КонецПроцедуры
Документ "Письмо"
Данный документ имеет шапку и табличную часть. В шапке отражается, кто написал письмо, кому оно адресуется (адресат), тема письма, текст письма и флажок важности. Табличная часть содержит приложения к письму. Приложением может быть элемент любого справочника или любой документ с небольшим сопроводительным текстом. Данная почта отличается от Outlook тем, что позволяет прицеплять к письму конкретные объекты базы 1С, в которой работают пользователи. Т.е. пользователь может отправить такое письмо: "Света, посмотри, что творится с этой накладной!" и прицепить к письму саму накладную.
А на вкладке Приложения прицеплены сами товары с комментариями!
При сохранении письма производится следующее. У адресата устанавливается в единицу флажок ЕстьПисьмо в спр. Пользователи. Каждые несколько секунд (интервал настраивается в константах) производится проверка новой почты, если флажок взведен и есть новые непрочитанные письма, о которых еще не было оповещения, тогда пользователю выдается сообщение "Пришла почта! Прочитать?". Флажок ЕстьПисьмо снимается и утех писем, о которых пользователь был оповещен, устанавливается флажок БылоОповещение. Если пользователь ответит Да, тогда откроется его почтовый ящик (журнал Письма).
Документ "Потеря книги"
Экранная форма документа выглядит следующим образом:
Модуль формы см. в конфигурации "Мини-библиотека".
Модуль проведения:
Процедура ОбработкаПроведения()
СпрКниги = создатьОбъект("Справочник.Книги");
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
СпрКниги.НайтиЭлемент(Книга);
СпрКниги.Статус = Перечисление.СтатусКниги.Списана;
СпрКниги.Читатель = 0;
СпрКниги.ДатаВыдачи = 0;
СпрКниги.СрокВозврата = 0;
СпрКниги.Записать();
КонецЦикла;
УстановитьРеквизитСправочника(Читатель, "Блокирован", Перечисление.ДаНет.Да, ДатаДок);
УстановитьРеквизитСправочника(Читатель, "Блокирован", Перечисление.ДаНет.Нет, ДатаДок + Константа.КолвоДнейБлокировки);
КонецПроцедуры
Документ "Приход"
Экранная форма документа Приход выглядит следующим образом:
Модуль проведения:
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Регистр.ОстаткиМатериалов.Материал = Материал;
Регистр.ОстаткиМатериалов.Склад = Склад;
Регистр.ОстаткиМатериалов.Количество = Количество;
Регистр.ОстаткиМатериалов.ДвижениеПриходВыполнить();
КонецЦикла;
КонецПроцедуры
Документ "Продление книги"
Экранная форма документа выглядит следующим образом:
Модуль формы см. в конфигурации "Мини-библиотека".
Модуль проведения:
Процедура ОбработкаПроведения()
СпрКниги = создатьОбъект("Справочник.Книги");
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Если Число(НовыйСрокВозврата)<>0 Тогда
СпрКниги.НайтиЭлемент(Книга);
СпрКниги.СрокВозврата = НовыйСрокВозврата;
СпрКниги.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Документ "Расход"
Экранная форма документа выглядит следующим образом:
Модуль проведения:
Процедура ОбработкаПроведения()
Регистр.Расходы.Участник = Участник;
Регистр.Расходы.Статья = Статья;
Регистр.Расходы.Сумма = -Сумма;
Регистр.Расходы.ДвижениеВыполнить();
Регистр.Кошельки.Кошелек = Кошелек;
Регистр.Кошельки.Сумма = Сумма;
Регистр.Кошельки.ДвижениеРасходВыполнить();
КонецПроцедуры
Экранная форма документа Расход выглядит следующим образом (отличается только названием):
Модуль проведения:
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Регистр.ОстаткиМатериалов.Материал = Материал;
Регистр.ОстаткиМатериалов.Склад = Склад;
Регистр.ОстаткиМатериалов.Количество = Количество;
Регистр.ОстаткиМатериалов.ДвижениеРасходВыполнить();
КонецЦикла;
КонецПроцедуры
Документ "Сообщение"
Данный документ является коротким сообщением в общий чат. При сохранении документа он отражается в журнале Чат.
Документ "Возврат книги"
Экранная форма документа выглядит следующим образом:
Модуль формы см. в конфигурации "Мини-библиотека".
Модуль проведения:
Процедура ОбработкаПроведения()
СпрКниги = создатьОбъект("Справочник.Книги");
СпрЧитатели = СоздатьОбъект("Справочник.Читатели");
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
СпрКниги.НайтиЭлемент(Книга);
Если СпрКниги.СрокВозврата < ДатаДок Тогда
СпрЧитатели.НайтиЭлемент(Читатель);
СпрЧитатели.КоличествоПредупреждений = СпрЧитатели.КоличествоПредупреждений + 1;
СпрЧитатели.Записать();
Если СпрЧитатели.КоличествоПредупреждений > Константа.МаксКолвоПредупреждений Тогда
УстановитьРеквизитСправочника(Читатель, "Блокирован",Перечисление.ДаНет.Да, ДатаДок);
УстановитьРеквизитСправочника(Читатель, "Блокирован",Перечисление.ДаНет.Нет, ДатаДок + Константа.КолвоДнейБлокировки);
КонецЕсли;
КонецЕсли;
СпрКниги.Статус = Перечисление.СтатусКниги.Свободна;
СпрКниги.Читатель = 0;
СпрКниги.ДатаВыдачи = 0;
СпрКниги.СрокВозврата = 0;
СпрКниги.Записать();
КонецЦикла;
КонецПроцедуры
Документ "Ввод начальных остатков"
Экранная форма документа выглядит следующим образом:
Модуль проведения:
Процедура ОбработкаПроведения()
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
Регистр.Кошельки.Кошелек = Кошелек;
Регистр.Кошельки.Сумма = Сумма;
Регистр.Кошельки.ДвижениеПриходВыполнить();
КонецЦикла;
КонецПроцедуры
Документ "Выдача книги"
Экранная форма документа выглядит следующим образом:
Модуль формы см. в конфигурации "Мини-библиотека".
Модуль проведения:
Процедура ОбработкаПроведения()
СпрКниги = создатьОбъект("Справочник.Книги");
ВыбратьСтроки();
Пока ПолучитьСтроку()=1 Цикл
СпрКниги.НайтиЭлемент(Книга);
СпрКниги.Статус = Перечисление.СтатусКниги.Выдана;
СпрКниги.Читатель = Читатель;
СпрКниги.ДатаВыдачи = ДатаДок;
СпрКниги.СрокВозврата = СрокВозврата;
СпрКниги.Записать();
КонецЦикла;
КонецПроцедуры
ДОКУМЕНТЫ
Ссылка на документ |
Создание документа
Поиск документа
Удаление документа
Перебор документов
Табличная часть
Сегодня Ельцин весь день проработал с документами: |
он еще раз просмотрел свой паспорт и свидетельство о рождении.
Домашнее задание
Заставьте компьютер играть в эту игру. Придумайте алгоритм для поиска всех лис за минимальное число ходов.
Заставьте компьютер играть с самим собой. Но обязательно сделайте паузы между ходами, чтобы и человеку было интересно.
Дополнительные функции
Вам предлагается самостоятельно реализовать следующие дополнительные функции:
Поиск нужной книги по названию, автору, жанру и другим известным признакам.
Технология штрих-кодирования. Каждому читателю и каждой книге присваивается уникальный штрих-код. В экранных формах выбор читателя производится путем считывания штрих-кода, программа должна найти читателя или книгу в справочнике по штрих-коду.
Денежные расчеты. Допустим каждая книга имеет определенную ценность и библиотека является коммерческой. Каждый день взятия книги должен быть оплачен читателем исходя из задаваемых директором тарифов. При потере книги читатель должен заплатить штраф.
Отмена документов. При отмене проведения документов все изменения, которые он сделал в системе должны быть также отменены. Для сохранения непротиворечивости базы данных отмена документов должна проводиться в обратном порядке для каждого читателя и книги.
Может быть вам захочется реализовать учет на регистрах, а не только на справочниках и документах.
Добавьте другие функции, которые вы считаете просто необходимыми для работы нормальной библиотеки.
Вам предлагается самостоятельно реализовать следующие дополнительные функции:
Единицы измерения для каждого материала. У материала есть основная единица измерения (выбирается из справочника ЕдиницыИзмерения), в которых хранятся остатки в регистре. При приходовании и расходовании материала пользователь может указать любую единицу измерения, допустимую для данного материала (выбирается из подчиненного справочника ЕдИзмМатериалов). Программа пересчитывает указанное количество в основную единицу измерения с использованием коэффициента пересчета из справочника ЕдИзмМатериалов. В отчет добавляется новая колонка "Ед. изм."
Учет денежного выражения. В регистр Материалы добавляется новый ресурс СуммаРуб. (название Сумма не рекомендуется, так как есть встроенная функция Сумма в языке запросов). В отчете выводятся две колонки: Количество и Сумма. Должна быть возможность выводить только одну колонку по требованию пользователя. По колонке Сумма должны выводиться итоги по каждой группе материалов и по всему отчету.
Отчет о движении материалов за период. Пользователь в диалоге указывает период. В отчете выводятся колонки: Материал, Остаток на начало период, Приход за период, Расход за период, Остаток на конец периода. Для ускорения работы отчета на больших базах можно создать оборотный регистр ДвижениеМатериалов, тогда каждый документ должен делать движения по двум регистрам.
Партионный учет. Списание материалов по средней себестоимости / по методу FIFO / LIFO. В регистр добавляется новое измерение Партия (типа Документ). При расходовании материала подсчитывается сумма списания по заданному методу. Метод задается пользователем в константе МетодСписанияМатериалов (выбирается из перечисления МетодыСписанияМатериалов).
Доставочка (пример)
|
Постановка задачи
Объекты конфигурации
Справочники
Документ "Приход товара"
Документ "Заказ"
Документ "Снятие заказа"
Документ "Путевой лист"
Документ "Отчет курьера"
Отчет "Товары"
Отчеты о доходах
Что можно скачать
|
- Драку на 50 человек заказывали?
- Нет, что вы!
- Оплачено!
Другие методы
Метод ОсновныеИтоги переводит объект в режим работы с основными итогами. Вызов этого метода имеет смысл тогда, когда был выполнен расчет временных итогов или запрос, и нужно вернуть объект к работе с основными итогами. При этом результаты запроса или расчета временных итогов теряются.
|
Другие полезные методы
Метод |
Описание |
ПолучитьВремя() |
УстановитьВремя()
Возвращает / устанавливает время текущей операции. |
ПроверитьПроводку |
Проверить проводку на соответствие корректным проводкам. Список корректных проводок задает пользователь. |
Выбрана() |
ПроводкаВыбрана()
Проверяет выбранность операции и проводки. |
ПланСчетов() |
Возвращает план счетов текущей проводки. |
ПолучитьДокумент() |
Возвращает документ, которому принадлежит операция. |
ПредставлениеПроводки() |
ПредставлениеСубконто()
Возвращает строковое представление проводки и субконто, например для вывода в отчет. |
ЗаписатьПроводки() |
Метод ЗаписатьПроводки выполняет запись в информационную базу уже добавленных и заполненных проводок операции. Метод может использоваться только для атрибута «Операция» документа в момент проведения (в процедуре ОбработкаПроведения). При этом происходит обновление бухгалтерских итогов. Это позволяет при проведении документа обращаться к бухгалтерским итогам уже измененным проводками, записанными этим документом. После выполнения метода ЗаписатьПроводки и до окончания процедуры ОбработкаПроведение уже невозможно изменять или удалять проводки, добавленные до вызова этого метода. |
Данный метод имеет смысл использовать, только в том случае, если существует необходимость обращения к итогам, измененным проводками записываемой операции.
Процедура ОбработкаПроведения()
Сч20 = СчетПоКоду("20");
Cч40 = CчeтПoKoдy("40");
СписаниеСчетаНаСч20(СчетПоКоду("25"));
СписаниеСчетаНаСч20(СчетПоКоду("26"));
Операция.ЗаписатьПроводки();
СписаниеСчета20На40();
Операция.Содержание = "Закрытие фин. результатов за " + Формат(ДатаДок, "Д ММММГГГГ");
Операция.Записать();
КонецПроцедуры
|
<
Некоторые методы уже применялись в примерах, а теперь сведем их в таблицу:
Метод |
Описание |
НайтиПоКоду(код) |
Этот метод выполняет поиск счета в плане счетов по коду счета, который передается методу в качестве параметра. Если счет найден, метод возвращает 1 и позиционирует объект на выбранном счете. |
НайтиСчет(<счет>) |
Этот метод выполняет поиск счета по значению, заданному параметром <Счет>, и позиционирует объект на выбранном счете. |
Выбран() |
Этот метод возвращает число со значением 1 — если счет выбран (спозиционирован) или значение не пустое, 0 — если не выбран или значение пустое. |
Выбрать() |
Этот метод вызывает на экран диалог, содержащий план счетов. Пользователь должен интерактивно выбрать требуемый счет. Если счет выбран, метод возвращает 1 и позиционирует объект на выбранном счете. Данный метод может использоваться только для объектов, созданных функцией СоздатьОбъект. |
СчетПоКоду(код[,плансчетов]) |
Глобальная системная функция. Возвращает счет по коду. Если план счетов не указан, тогда поиск осуществляется в основном плане счетов, заданном в Конфигураторе. |
ОсновнойПланСчетов() |
Глобальная системная функция. Возвращает план счетов, заданный в Конфигураторе в качестве основного. |
u="u045.09.spylog.com";d=document;nv=navigator;na=nv.appName;p=0;j="N"; d.cookie="b=b";c=0;bv=Math.round(parseFloat(nv.appVersion)*100); if (d.cookie) c=1;n=(na.substring(0,2)=="Mi")?0:1;rn=Math.random(); z="p="+p+"&rn="+rn+"&c="+c;if (self!=top) {fr=1;} else {fr=0;} sl="1.0"; |
pl="";sl="1.1";j = (navigator.javaEnabled()?"Y":"N");
sl="1.2";s=screen;px=(n==0)?s.colorDepth:s.pixelDepth; z+="&wh="+s.width+'x'+s.height+"&px="+px;
sl="1.3"
y="";y+=""; y+=" "; y+=""; d.write(y); if(!n) { d.write("
|
|
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 - если элемент справочника выбран, 0 - если не выбран. Часто применяется для проверки на ошибки, чтобы все необходимые данные были указаны.
Выбрать(...) |
Вызов диалога для выбора элемента справочника. |
Возвращает: 1 - если элемент выбран; 0 - если не выбран. Выбранный элемент становится текущим.
|
Два вспомогательных метода диаграммы
Запрет перерисовки может ускорить работу системы во время наполнения таблицы данными.
Диаграмма1.Обновление(0);
//то же выражение, но с флагом 1 разрешит перерисовку
Очистка всех установленных значений имен и количеств точек, серий, диаграммы делается так:
Диаграмма1.Очистить();
Движения в регистрах
В табличном виде регистр ОстаткиТоваров представляется следующим образом:
|
Товар |
Склад |
Кол-во |
Стоимость |
приход |
Товар4 |
Склад1 |
15 |
200 |
расход |
Товар4 |
Склад1 |
10 |
100 |
приход |
Товар4 |
Склад1 |
5 |
50 |
... |
... |
... |
... |
... |
Одна строка из этой таблицы называется "движение". Движения в регистрах создаются только при проведении документов. В регистре, кроме измерений и ресурсов, можно задать реквизиты. Реквизиты - это дополнительные сведения, сопровождающие движение. Методами встроенного языка можно отбирать движения с заданным значением реквизита.
Двойная группировка
Этот запрос совершает очень полезную работу: он группирует всех сотрудников по должностям. Заметьте, что сначала идет группировка по должности, а затем по сотруднику, это очень важно. Обратите внимание на переменную запроса Сотр. Она ссылается на строку справочника Сотрудники. Чтобы вывести ФИО сотрудника используется обращение к атрибуту объекта: Сотр.Наименование.
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса = "
|Сотр = Справочник.Сотрудники.ТекущийЭлемент;
|Долж = Справочник.Сотрудники.Должность;
|Группировка Долж упорядочить по Долж.Наименование;
|Группировка Сотр упорядочить по Сотр.Наименование;
|";
Запрос.Выполнить(ТекстЗапроса);
Пока Запрос.Группировка("Долж")=1 Цикл
............Сообщить(Запрос.Долж);
............Пока Запрос.Группировка("Сотр")=1 Цикл
................Сообщить("......" + Запрос.Сотр.Наименование);
............КонецЦикла;
КонецЦикла;
Файловая система
|
Для работы с файлами и каталогами в 1С:Предприятие используется специальный объект "ФС" (файловая система). Средства языка 1С имеют возможности поиска, копирования, переименования, удаления и совершения других операций с файлами и каталогами.
Фильтрация движений и итогов
РегТовары = СоздатьОбъект("Регистр.Товары");
1. Метод УстановитьФильтр
Синтаксис: УстановитьФильтр(,...,,)
Пример:
//выбрать все движения по данному складу за период
РегТовары.УстановитьФильтр(,ТекСклад);
РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон);
Пока РегТовары.ПолучитьДвижение()=1 Цикл
...
КонецЦикла;
//выбрать все товары на данном складе
РегТовары.УстановитьФильтр(,ТекСклад);
РегТовары.ВыбратьИтоги();
Пока РегТовары.ПолучитьИтог()=1 Цикл
...
КонецЦикла;
2. Метод УстановитьЗначениеФильтра
Синтаксис: УстановитьЗначениеФильтра(,,)
Пример:
//выбрать все движения по данному складу за период
РегТовары.УстановитьЗначениеФильтра("Склад", ТекСклад);
//далее идет выборка движений или итогов
3. Метод ВыбратьДвиженияДокумента (<Документ>)
4. Метод ВыбратьДвиженияСОстатками (,)
Применяется только для регистра остатков.
Фильтрация (отбор)
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
РежимИерархии = 1; //1- выбирать с учетом иерархии, 0 - без учета
РежимГрупп = 0; //0 - не включать в выборку группы, 1 - включать
ИмяРеквизита = "Год"; //в Конфигураторе у реквизита должен быть установлен флажок Отбор
Значение = 1980;
СпрСотр.ВыбратьЭлементыПоРеквизиту(ИмяРеквизита,Значение,РежимИерархии, РежимГрупп);
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
.....<действия с очередным элементом>
КонецЦикла;
Фильтрация по графе отбора
синтаксис: ВыбратьПоЗначению (<НачалоПериода>, <КонецПериода> , <ВидОтбора>, <3начениеОтбора>)
Параметр <ВидОтбора> для отбора операций может принимать следующие значения:
"СуммаОперации" |
Отбор по сумме операции. Доступно если в метаданных включен отбор по сумме операции. |
"Содержание" |
Отбор по содержанию операции. Доступно если в метаданных включен отбор по содержанию операции. |
<РеквизитОперации> |
Отбор по дополнительному реквизиту операции. Идентификатор реквизита должен быть указан так, как это задано в метаданных. Доступно если в метаданных включен отбор по реквизиту операции. |
Параметр <ВидОтбора> для отбора проводок может принимать следующие значения:
"Счет" |
Отбор по счету дебета или счету кредита проводки. Доступно если в метаданных включен отбор по счетам проводок. |
"СчетДт" |
Отбор по счету дебета проводки. Доступно если в метаданных включен отбор по дебету/кредиту счетов проводок. |
"СчетКт" |
Отбор по счету кредита проводки. Доступно если в метаданных включен отбор по дебету/кредиту счетов проводок. |
"Валюта" |
Отбор по валюте проводки. Доступно если в метаданных включен отбор по валюте проводок. |
|
ВидСубконто>
Отбор по виду субконто. Идентификатор вида субконто должен быть указан так, как он задан в метаданных. Доступно если в метаданных включен отбор по этому виду субконто. |
|
<РеквизитПроводки>
Отбор по дополнительному реквизиту проводки. Идентификатор реквизита должен быть указан так, как он задан в метаданных. Доступно если в метаданных включен отбор по этому реквизиту проводки |
После выполнения данного метода обход операций (проводок) осуществляется методами ПолучитьОперацию и ПолучитьПроводку.
Фильтрация по субконто
Пример, выбрать все проводки по счету 60 для заданной организации
Опер = СоздатьОбъект("Операция");
Опер.ИспользоватьСубконто(ВидыСубконто.Организации, ВыбОрг);
Опер.ВыбратьОперацииСПроводками(ДатаНач, ДатаКон, "60");
Пока Опер.ПолучитьПроводку() = 1 Цикл
.....Сообщить("Сумма " + Опер.Сумма);
КонецЦикла;
Пример, выбрать все проводки по счету 10 для заданного материала и заданного склада
Опер = СоздатьОбъект("Операция");
Опер.ИспользоватьСубконто(ВидыСубконто.Материалы, ВыбрМатериал);
Опер.ИспользоватьСубконто(ВидыСубконто.Склады, ВыбрСклад);
Опер.ВыбратьОперацииСПроводками(ДатаНач, ДатаКон, "10");
Пока Опер.ПолучитьПроводку() = 1 Цикл
.....Сообщить("Сумма " + Опер.Сумма);
КонецЦикла;
Метод ИспользоватьКорСубконто аналогичен методу ИспользоватьСубконто, но задает фильтр по корреспондирующим субконто.
В качестве значения субконто в этим методы можно передавать «Список значений».
Фильтрация в цикле
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.ИспользоватьДату(РабочаяДата());
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
Если СпрСотр.Должность <> длжПлотник Тогда
....Продолжить; //этого сотрудника пропускаем, перейти в начало цикла
КонецЕсли;
<действия с очередным элементом>
КонецЦикла;
Форма элемента и форма группы
Если справочник имеет сложную структуру, тогда его элементы удобнее редактировать в отдельном окне, а не в списке. Ниже приведена форма элемента справочника Сотрудники.
В форме элемента справочника также есть предопределенные процедуры:
Предопределенная процедура |
Описание |
ПриОткрытии() |
Вызывается при открытии формы элемента справочника. Можно задать начальные значения для переменных, проверить права пользователя на открытие данного элемента справочника и т.д. |
ПриЗакрытии() |
Вызывается при закрытии формы элемента справочника. |
ПриЗаписи() |
|
Вызывается при записи элемента справочника. В этой процедуре можно проверить вводимые данные на наличие ошибок.
Пример, справочник Сотрудники
Процедура ПриЗаписи
....Если Категория.Выбран()=0 Тогда
.........Предупреждение("Не указана категория сотрудника!");
.........СтатусВозврата(0);
.....КонецЕсли;
КонецПроцедуры
ВводНового() |
Вызывается при интерактивном вводе нового элемента справочника. В этой процедуре можно проверить права пользователя на создание новых элементов справочника, а также задать начальные значения реквизитов. |
| | |