1С рус


21590000
1С:ПРЕДПРИЯТИЕ 8.2ПРАКТИЧЕСКОЕ ПОСОБИЕ РАЗРАБОТЧИКА
6680204251960♦CD
00♦CD
17106904134485ПРИМЕРЫ
И ТИПОВЫЕ ПРИЕМЫ
00ПРИМЕРЫ
И ТИПОВЫЕ ПРИЕМЫ
41916354399915ПАБЛИШИНГ
00ПАБЛИШИНГ
635000
УДК 658.012.011.56:004.42 ББК 65.29 Р15
Р15 Радченко М. Г. 1C предприятие 8.2. Практическое пособие разработчика. Примеры и типовые приемы / М. Г. Радченко, Е. Ю. Хрусталева. - М.: ООО «1С-Паблишинг», 2009. - 874 с.: ил.
ISBN 978-5-9677-1147-3
Книга представляет собой пособие, позволяющее быстро освоить приемы разработки и модификации прикладных решений на платформе 1С:Предприятие 8.2.
На примере создания реального прикладного решения показана структура различных объектов системы, их назначение и методика использования. Приведены процедуры на встроенном языке, в том числе с применением языка запросов, которые снабжены подробными комментариями.
Книга может быть использована и как практическое руководство, и как справочное пособие. Рассматриваемое в книге прикладное решение учитывает накопленный опыт разработки в системе 1C-.Предприятие 8 и демонстрирует многие новые возможности и механизмы, предоставляемые версией 8.2.
48260119824560
0060
2984501195070546
00546
6089651192530069627
00069627
1291590499745Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав
Полное или частичное копирование материалов книги без письменного разрешения фирмы «1С-Паблишинг» запрещается.
00Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав
Полное или частичное копирование материалов книги без письменного разрешения фирмы «1С-Паблишинг» запрещается.
Материал рассчитан на начинающих разработчиков, не знакомых с системой 1С:Предприятие 8.
876300ISBN 978-5-9677-1147-3
00ISBN 978-5-9677-1147-3
О ООО «1С-Паблишинг», 2009 О Оформление. ООО «1С-Паблишинг», 2009
Подписано в печать 29.09.2009. Формат 60x84 1/16. Печ. л. 54,75. Тираж 5000 экз. Заказ Е-2675
Налоговая льгота - общероссийский классификатор продукции ОК 005-93,том 2; 95 3005 - литература учебная.
Отпечатано с оригиналов ООО «1С-Паблишинг».
Фирма «1C». 123056, Москва, а/я 64, Селезневская ул., 21. Тел.: (495) 737-92-57, факс: (495) 681-44-07,e-mail: lc@lc.ru, URL: http://www.lc.ruИздательство ООО «1С-Паблишинг». 127473, Москва, ул. Достоевского, 21/1, строение 1Тел.: (495) 681-02-21. факс: (495) 681-44-07, e-mail: publishing@lc.ruКазанский производственный комбинат программных средств.
420044, Казань, ул. Ямашева, 36.
Краткое оглавление
TOC \o "1-5" \h \z Предисловие5
Занятие 1 (0:40). Знакомство, создание информационной базы13
Занятие 2 (0:45). Подсистемы35
Занятие 3 (2:10). Справочники51
Занятие 4 (1:30). Документы109
Занятие 5 (2:00). Теоретическое143
Занятие 6 (0:50). Регистры накопления195
Занятие 7 (0:25). Простой отчет219
Занятие 8 (1:10). Макеты. Редактирование макетов и форм233
Занятие 9 (0:50). Периодические регистры сведений249
Занятие 10 (0:30). Перечисления265
Занятие 11 (1:20). Проведение документа по нескольким регистрам275
Занятие 12 (0:40). Оборотные регистры накопления291
Занятие 13 (4:30). Отчеты303
Занятие 14 (3:20). Оптимизация проведения документа «Оказание услуги»389
Занятие 15 (2:50). План видов характеристик445
Занятие 16 (1:50). Бухгалтерский учет497
Занятие 17 (1:00). План видов расчета, регистр расчета529
Занятие 18 (3:40). Использование регистра расчета551
Занятие 19 (1:30). Поиск в базе данных591
Занятие 20 (1:00). Выполнение заданий по расписанию611
Занятие 21 (0:40). Редактирование движений в форме документа627
Занятие 22 (1:00). Список пользователей и их роли637
Занятие 23 (1:10). Рабочий стол и настройка командного интерфейса661
Занятие 24 (6:10). Обмен данными681
Занятие 25 (0:30). Функциональные опции741
Занятие 26 (1:00). Подборы и ввод на основании759
Занятие 27 (2:10). Приемы разработки форм775
Краткий справочник разработчика 813
Глоссарий857
1С:Предприятие 8.2. Практическое пособие разработчика
ЗАНЯТИЕ 6
Регистры накопленияПРОДОЛЖИТЕЛЬНОСТЬ
Ориентировочная продолжительность занятия - 50 минут.
TOC \o "1-5" \h \z Зачем нужен регистр накопления196Что такое регистр накопления197Добавление регистра накопления199Движения документа202Команда перехода к движениям в форме документа211Движения документа «Оказание услуги»213«Теория». Способы работы с коллекцией217Контрольные вопросы 218
На этом занятии мы познакомимся с объектом конфигурации Регистр накопления. Вы узнаете, для чего используется этот объект, какой структурой он обладает и каковы его отличительные особенности.
Затем мы создадим с вами один из регистров накопления, который будет использоваться в нашей конфигурации и отражать изменение данных в процессе работы ранее созданных нами документов.
Зачем нужен регистр накопленияИтак, мы с вами подошли к одному из главных моментов разработки любой конфигурации - созданию механизма учета накопления данных.
Казалось бы, все необходимое мы с вами уже создали: у нас есть что расходовать и приходовать (справочники), и у нас есть чем расходовать и приходовать (документы). Осталось только построить несколько отчетов, и автоматизация ООО «На все руки мастер» будет закончена.
Однако это не так.
Во-первых, путем анализа документов можно, конечно, получить требуемые нам выходные данные. Но представьте, что завтра ООО «На все руки мастер» решит немного изменить свои бизнес- процессы, и нам потребуется ввести в конфигурацию еще один документ (или несколько документов).
Например, сейчас мы полагаем, что товары поступают в ООО «На все руки мастер» и затем расходуются. Руководство захотело усилить материальный контроль и решило приходовать товары на основной склад организации и затем выдавать их материально ответственным лицам. В этом случае нам придется добавить в конфигурацию еще один документ, который будет фиксировать перемещение материалов между основным складом и материально ответственными лицами. И очевидно, нам придется переработать все отчеты, которые были нами созданы к этому моменту с тем, чтобы они учитывали изменения, вносимые новым документом. А представьте, если в нашей конфигурации не два, а двадцать документов?!
Во-вторых, отчеты, анализирующие документы, будут работать довольно медленно, что будет вызывать раздражение пользователей и недовольство руководителей.
\
Поэтому в системе 1С:Предприятие есть несколько объектов конфигурации, которые позволяют создавать в базе данных структуры, предназначенные для накопления информации в удобном для последующего анализа виде. Использование таких «хранилищ» данных позволяет нам, с одной стороны, накапливать в них данные, поставляемые различными документами (или другими объектами базы данных), а с другой стороны, легко создавать нужные нам отчеты или использовать эти данные в алгоритмах работы конфигурации (рис. 6.1).

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

Рис. 6.2. Регистр накопления «Остатки товаров» в конфигураторе и в базе данных
На основании таблицы движений регистра накопления система рассчитывает таблицу итогов регистра, которая хранит в базе данных итоги на момент времени последнего движения (актуальные итоги).
Отличительной особенностью регистра накопления является то, что он не предназначен для интерактивного редактирования пользователем.
Разработчик может при необходимости предоставить пользователю возможность редактировать регистр накопления. Но предназначение регистра накопления заключается в том, чтобы его модификация производилась на основе алгоритмов работы других объектов базы данных, а не в результате непосредственных действий пользователя.
Основным назначением регистра накопления является накопление числовой информации в разрезе нескольких измерений, которые описываются разработчиком в соответствующем объекте конфигурации Регистр накопления и являются подчиненными объектами конфигурации.
Виды числовой информации, накапливаемой регистром накопления, называются ресурсами, также являются подчиненными объектами и описываются в конфигураторе.
Например, регистр накопления может накапливать информацию о количестве и сумме товаров на складах. В этом случае он будет иметь измерения Товар и Склад и ресурсы Количество и Сумма (см. рис. 6.2).
Изменение состояния регистра накопления происходит, как правило, при проведении документа и заключается в том, что в регистр добавляется некоторое количество записей. Каждая запись содержит значения измерений, значения приращений ресурсов, ссылку на документ, который вызвал эти изменения (регистратор), и «направление» приращения (приход или расход). Такой набор записей называется движениями регистра накопления. Каждому движению регистра накопления всегда должен соответствовать регистратор - объект информационной базы (как правило, документ), который произвел эти движения.
Кроме этого, регистр накопления может хранить дополнительную информацию, описывающую каждое движение. Набор такой дополнительной информации задается разработчиком при помощи реквизитов объекта конфигурации Регистр накопления.
Узнай больше!
О структуре объектов встроенного языка, предназначенных для работы с регистрами накопления, можно прочитать в разделе «Краткий справочник разработчика. Регистры накопления» на странице 847.
Добавление регистра накопленияТеперь, когда мы знаем, для чего предназначены регистры накопления, посмотрим, как можно их использовать в нашем примере.
Прежде всего, нас интересует информация о том, сколько и каких материалов есть у нас на складах. Для накопления такой информации мы создадим регистр ОстаткиМатериалов.
В режиме КонфигураторОткроем в конфигураторе нашу учебную конфигурацию и добавим новый объект конфигурации Регистр накопления.
Для этого выделим в дереве объектов конфигурации ветвь Регистры накопления и нажмем кнопку Добавить в командной панели окна конфигурации.
В открывшемся окне редактирования объекта конфигурации на закладке Основные зададим имя регистра - ОстаткиМатериалов.
Также зададим и Расширенное представление списка как Движения по регистру Остатки материалов. Этот заголовок будет отображаться в окне списка записей регистра.
Нажмем Далее и перейдем на закладку Подсистемы.
По логике нашей конфигурации данный регистр должен быть доступен в разделах Учет материалов, Оказание услуг и Бухгалтерия.
763270193675
Рис. 6.3. Определение списка подсистем,
00
Рис. 6.3. Определение списка подсистем,
Поэтому отметим в списке подсистем эти подсистемы (рис. 6.3).
в которых будет отражаться регистр
Выделим закладку Данные и перейдем к созданию структуры регистра. Создадим измерения регистра:
Материал, тип СправочникСсылка.Номенклатура;
Склад, тип СправочникСсылка.Склады.
Для этого выделим ветвь Измерения и нажмем кнопку Добавить в командной панели окна (рис. 6.4).

Затем создадим ресурс Количество с длиной 15 и точностью 3. Для этого выделим ветвь Ресурсы и нажмем кнопку Добавить в командной панели окна (рис. 6.5).

Рис. 6.5. Создание ресурсов регистра

62230344170
в L. Измерения L. Материал L Склад Э | Ресурсы
4 Количество «" Реквизиты Ш Формы Команды
00
в L. Измерения L. Материал L Склад Э | Ресурсы
4 Количество «" Реквизиты Ш Формы Команды
6223015881350015132051551305Рис. 6.6. Регистр «ОстаткиМатериалов»
00Рис. 6.6. Регистр «ОстаткиМатериалов»
В результате этих действий регистр ОстаткиМатериалов должен иметь следующий вид (рис. 6.6).
Если вы сейчас попытаетесь запустить 1 С:Предприятие в режиме отладки, то система выдаст сообщение об ошибке: «РегистрНа- копления.ОстаткиМатериалов: Ни один из документов не является регистратором для регистра». Это сообщение еще раз подтверждает тот факт, что назначение регистра накопления в том, чтобы аккумулировать данные, поставляемые различными документами.
Поэтому мы сформируем движения регистра накопления ОстаткиМатериалов в процессе проведения двух созданных нами документов ПриходнаяНакладная и ОказаниеУслуг.
Движения документаДвижения документа - это записи в регистрах, которые создаются в процессе проведения документа и отражают изменения, производимые документом.
Откроем окно редактирования объекта конфигурации Документ ПриходнаяНакладная. Перейдем на закладку Движения, раскроем список Регистры накопления и отметим регистр накопления ОстаткиМатериалов (рис. 6.7).
Обратите внимание, что сразу после отметки выбранного регистра становится доступной кнопка Конструктор движений. Нажмем ее и воспользуемся этим конструктором.
Конструктор устроен просто. В списке Регистры перечислены регистры, в которых документ может создавать движения. В нашем случае там пока один регистр ОстаткиМатериалов.
4413250
Рис. 6.7. Создание движений документа «ПриходнаяНакладная» в регистре «ОстаткиМатериалов»
00
Рис. 6.7. Создание движений документа «ПриходнаяНакладная» в регистре «ОстаткиМатериалов»

-253682516510Регистр, для которого конструируем движения (приход или расход)
00Регистр, для которого конструируем движения (приход или расход)
-1043305156845Откуда берем данные
00Откуда берем данные
-22713952846705Что записываем в измерения и ресурсы регистра
00Что записываем в измерения и ресурсы регистра
-273177030924500Рис. 6.8. Конструктордвижений
29845000
В списке Реквизиты документа должны находиться исходные данные для создания движений - реквизиты документа Приход- наяНакпадная.
А в таблице Поле - Выражение должны быть заданы формулы, по которым будут вычисляться значения измерений и ресурсов регистра при записи движений (рис. 6.8).
Обратите внимание, что по умолчанию конструктор предлагает нам создавать движения прихода (Тип движения регистра - Приход, символ + рядом с названием регистра) по регистру ОстаткиМате- риалов. Это нас вполне устраивает, ведь документ ПриходнаяНак- ладная и должен приходовать материалы.
В поле выбора Табличная часть выберем табличную часть нашего документа - Материалы.
Список реквизитов документа, который уже заполнен реквизитами шапки документа, автоматически дополнится реквизитами нашей табличной части.
Теперь нажмем кнопку Заполнить выражения.
В нижнем окне сформируется соответствие полей (измерений и ресурсов) регистра и выражений для их расчета (рис. 6.9).
784860-635Констрдктор движения регистров
I К ♦ t
00Констрдктор движения регистров
I К ♦ t
858520913130Тип движения регистра: 0 Приход О Расход
00Тип движения регистра: 0 Приход О Расход
15532101403985Выражение
00Выражение
7912108699500D х
■ Номер 1— Склад
jекСтрокаМ зтериалы. Н омерСтроки^Ч
1583690706755Т екСтрокаМ агериалы. Материал Склад
Т екСтрокаМ агериалы. Количество
00Т екСтрокаМ агериалы. Материал Склад
Т екСтрокаМ агериалы. Количество
215646030480000I §3 Т екСтрокаМ зтериалы. Материал Щ ТекСтрокаМатериалы-Количество 5pj ТекСтрокаМатериалы.Цена 3 Т екСтрокаМ агериалы. Сумма
Рис. 6.9. Выбор табличной части документаи заполнение выражений для расчета движений регистра
Как видите, конструктор движений установил соответствия подходящим образом: в качестве материала в регистр будет записан материал из табличной части документа, в качестве склада - склад, указанный в шапке документа, а в качестве количества - количество из табличной части документа.
Нажмем кнопку ОК и посмотрим, какой текст сформировал конструктор в модуле документа ПриходнаяНакпадная (листинг 6.1).
Листинг 6.1. Процедура «ОбработкаПроведения()»
Процедура ОбработкаПроведения(Отказ, Режим}
/Л1_К0НСТРУКТ0Р_ДВИЖЕНИЙ^РЕГИСТР0В // Данный фрагмент построен конструктором.
// При повторном использовании конструктора // внесенные вручную изменения будут утеряны!!!
Движения.ОстаткиМатериаловЗаписывать = Истина;
Для Каждого ТекСтрокаМзтериалы Из Материалы Цикл // регистр ОстаткиМатериалов Приход Движение - Движения.ОстаткиМатериалов.ДобавитьО;
Движение.ВидДвижения = ВидДвиженияНаколления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Склад = Склад*
Движение.Количество ТекСтрокаМатериалы.Количество;
КонецЦикла;
//}}КОНСТРУКТОРЛВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
Конструктор создал обработчик события ОбработкаПроведения объекта конфигурации Документ ПриходнаяНакпадная, поместил его в модуль объекта и открыл текст модуля.
Событие ОбработкаПроведения является одним из важнейших событий, связанных с документом. Это событие возникает при проведении документа. Основное назначение обработчика данного события - генерация движений по документу. Выполнение различных операций с данными в процедуре обработчика влияет на состояние учета. Таким образом, именно в эту процедуру разработчик должен поместить собственные алгоритмы преобразования данных, выполняемые в момент проведения документа.
Поясним текст процедуры обработчика.
Объект встроенного языка ДокументОбъект имеет свойство Движения. Оно возвращает объект КоллекцияДвижений, содержащий коллекцию

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

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

Рис. 6.11. Настройка командного интерфейса подсистем
Действительно, команды открытия регистров накопления не так часто используются, и поэтому лучше их перенести в группу См.также панели навигации разделов интерфейса.
Аналогично, выделив подсистемы ОказаниеУслуг и Бухгалтерия, в панели навигации в группе Обычное включим видимость у команды Остатки материалов и перенесем ее в группу См.также.
В режиме ЮПредприятиеЗапустим 1С:Предприятие в режиме отладки и протестируем внесенные нами изменения.
263525655320
Клиенты Номенклатура Оказание услуг Приходные накладные
00
Клиенты Номенклатура Оказание услуг Приходные накладные
3302001798955См. также гёегагки материалов
00См. также гёегагки материалов
3549652331720История.
00История.
10128252270760■ Приходная накладная 80000000,. .от 09.07... Лржодная
00■ Приходная накладная 80000000,. .от 09.07... Лржодная
2756535213677500В открывшемся окне 1С:Предприятия мы видим, что в панели навигации в группе См.также разделов Бухгалтерия, Оказание услуг и Учет материалов появилась команда для открытия списка регистра Остатки материалов (рис. 6.12).

Рис. 6.12. Список регистра накопления «ОстаткиМатериалов»
Чтобы проследить связь между проведением документа и накоплением информации в регистре, откроем список приходных накладных, выполнив команду Приходные накладные разделе Бухгалтерия.
Откроем Приходную накладную № 1 и нажмем Провести и закрыть, то есть перепроведем ее. То же самое сделаем для Приходной накладной № 2.
Перепровести документы можно и не открывая документов. Для этого нужно выделить нужный документ в списке (или выделить мышью группу документов, удерживая клавишу Ctrl), нажать кнопку Все действия в командной панели формы списка и выбрать пункт Провести (рис. 6.13).
197485-2811780
Рис. 6.13. Проведение документа
00
Рис. 6.13. Проведение документа
254037020500330201118870Приходные наклавнь*
00Приходные наклавнь*
25401296670(tint
00(tint
681990989330М <3^ Найти... Щ, Все действия*
j Периоа А {Регистратор j Ном , Материал Склад Количеств.. *
; + 09 07.2009 21:54:28 Приходная наклмнм ОООООООСИ от 0907 2009 21:54:28 \ + 09.07.200921:54:28 Прижмная накладная 000000001 от 09.07.2009 21:54:28 ! + 09.07.200921:54:28 Приждная накладная (Ю0000001 от 09.07.2009 21:54:20 j + 0907.200921:57:1? Приходнаянакладная000000002от0907200921 57:12 ШПЯВВ Приходная чах ладная ОООООООТ? от 09.07 2009 2V5712 Строчный трансформатор GoldStar
Строчный трансформатор Samsung
Транзистор Ph#ps2N2369
Кабель з лектрический
Шланг резиновый Основной 10.0001 Основной 10,000 j Основной 10,000 j Основной 5,000: Основной 5Л0С
I ' ' ~~
00М <3^ Найти... Щ, Все действия*
j Периоа А {Регистратор j Ном , Материал Склад Количеств.. *
; + 09 07.2009 21:54:28 Приходная наклмнм ОООООООСИ от 0907 2009 21:54:28 \ + 09.07.200921:54:28 Прижмная накладная 000000001 от 09.07.2009 21:54:28 ! + 09.07.200921:54:28 Приждная накладная (Ю0000001 от 09.07.2009 21:54:20 j + 0907.200921:57:1? Приходнаянакладная000000002от0907200921 57:12 ШПЯВВ Приходная чах ладная ОООООООТ? от 09.07 2009 2V5712 Строчный трансформатор GoldStar
Строчный трансформатор Samsung
Транзистор Ph#ps2N2369
Кабель з лектрический
Шланг резиновый Основной 10.0001 Основной 10,000 j Основной 10,000 j Основной 5,000: Основной 5Л0С
I ' ' ~~
2946401983740Рис. 6.14. Список регистра накопления «ОстаткиМатериалов»
00Рис. 6.14. Список регистра накопления «ОстаткиМатериалов»
8255149225000Теперь выполним команду Остатки материалов и откроем список нашего регистра накопления (рис. 6.14).

Мы видим, что при проведении приходных накладных появляются соответствующие записи в регистре накопления Остатки материалов. Обратите внимание, что добавилось пять записей - первые три после проведения первого документа, что соответствует количеству строк в его табличной части, и последние две после проведения второго документа.
Все поля регистра заполнились данными документов так, как мы задали в обработчике проведения документа ПриходнаяНакладная. Пиктограмма со знаком + слева от каждой записи указывает на тип движения - Приход.
Как мы видим, заголовок формы списка записей регистра соответствует заданному нами в свойстве Расширенное представление списка для этого регистра.
Команда перехода к движениям в форме документаВ режиме КонфигураторПри реальной работе записей в регистре ОстаткиМатериалов будет много, и будет трудно понять, какие записи относятся к определенному документу.
Поэтому наряду с общим списком регистра хотелось бы иметь возможность вызывать из формы документа список регистра, в котором показаны движения, произведенные только этим документом.
Чтобы реализовать такую возможность, вернемся в конфигуратор и откроем форму документа ПриходнаяНакладная.
В левом верхнем окне перейдем на закладку Командный интерфейс.
26765251716405Рис. 6.15. Настройка командного интерфейса формы документа
00Рис. 6.15. Настройка командного интерфейса формы документа
22606080645000В разделе Панель навигации раскроем группу Перейти и увидим команду для открытия списка регистра накопления Остатки материалов. Эта команда была автоматически помещена в панель навигации формы документа, так как он является регистратором, то есть создает движения в нашем регистре.
В режиме 1С:ПредприятиеЗапустим 1С:Предприятие в режиме отладки и откроем Приходную накладную № 2 (рис. 6.16).

Рис. 6.16. Панель навигации документа «Приходная накладная»
В форме документа появилась панель навигации, в которой мы можем переходить к списку записей регистра Остатки Материалов, связанному с документом (рис. 6.17), и обратно к содержимому документа.

Рис. 6.17. Переход к регистру накопления из формы документа
Обратите внимание, что до этого панель навигации в форме приходной накладной была не видна, так как в ней не было отображено ни одной команды.
Движения документа «Оказание услуги»Теперь мы аналогичным образом создадим движения документа ОказаниеУслуги. Для этого потребуется выполнить уже знакомые нам действия.
В режиме КонфигураторОткроем окно редактирования объекта конфигурации Документ ОказаниеУслуги.
Перейдем на закладку Движения и в списке регистров конфигурации отметим регистр накопления ОстаткиМатериалов.
Нажмем кнопку Конструктор движений.
В открывшемся окне конструктора изменим тип движения регистра на Расход, так как документ ОказаниеУслуги должен расходовать материалы. Пиктограмма слева от названия регистра изменится на знак -.
В поле выбора Табличная часть выберем табличную часть нашего документа - ПереченьНоменклатуры.
Список реквизитов документа, который уже заполнен реквизитами шапки документа, автоматически дополнится реквизитами нашей табличной части.
Теперь нажмем кнопку Заполнить выражения.
В нижнем окне сформируется соответствие полей (измерений и ресурсов) регистра и выражений для их расчета. Однако при автоматическом заполнении поле Материал не заполнится.
Так происходит потому, что имя поля табличной части - Номенклатура не совпадает с именем измерения регистра - Материал. Если мы оставим это так, как есть, то в регистре накопления в строках с типом Движение регистра - расход номенклатура фиксироваться не будет.
Чтобы избежать этого, нужно выделить поле регистра Материал и в окне Реквизиты документа дважды щелкнуть по строке ТекСтро- каПереченьНомеклатуры.Номенклатура.
Таким образом, номенклатура для движений регистра накопления будет выбираться из табличной части документа (рис. 6.18).
29845000834390386715Квнстррстф движения регистров
: Ф ф к ♦ ♦
00Квнстррстф движения регистров
: Ф ф к ♦ ♦
3461385381000D>*
00D>*
8401052077085! 1 L Склад ! J Количество
00! 1 L Склад ! J Количество
16084552093595Склад
ТекСтрокаПереченьНоменклагуры.Количество
00Склад
ТекСтрокаПереченьНоменклагуры.Количество
31997652181225ОК
Отмена
Справка
00ОК
Отмена
Справка
84645562166500
Рис. 6.18. Выбор табличной части документаи заполнение выражений для расчета движений регистра
Нажмем кнопку ОК.
Конструктор создал обработчик события ОбработкаПроведения объекта конфигурации Документ ОказаниеУслуги и поместил его в модуль объекта (листинг 6.2).
Листинг 6.2. Процедура «ОбработкаПроведения()»
Процедура Обра6откаЛроведения(Отказ, Режим)
// {1_К0НарукТ0Р_ДВИЖЕНИЙ_РЕГИСТР0В Ц Данный фрагмент построен конструктором.
// При повторном использовании конструктора // внесенные вручную изменения будут утеряныШ Движения.ОстаткиМатериалов.Записывзть = Истина;
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл // регистр ОстаткиМатериалов Расход Движение = Движения.0статкиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата;
Движение. Материал = ТекСтрокаПереченьНоменклатуры.Номенклатура; Движение.Склад = Склад;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество; КонецЦикла;
//})_К0НСТРУКТ0Р^ВИЖЕНИЙ_РЕГИСТР08
Обратите внимание, что строка Движение.ВидДвижения = ВидДви- женияНакопления.Расход определяет вид движения регистра накопления, производимый этим документом как Расход, а в остальном процедура обработчика документа ОказаниеУслуги идентична обработчику документа ПриходнаяНакладная (см. листинг 6.1), подробно разобранному нами ранее.
В заключение отредактируем командный интерфейс формы документа, чтобы в панели навигации формы иметь возможность переходить к списку записей регистра Остатки Материалов, связанному с документом.
Для этого откроем форму документа ОказаниеУслуги.
В левом верхнем окне перейдем на закладку Командный интерфейс.
В разделе Панель навигации раскроем группу Перейти и установим видимость для команды открытия регистра накопления Остатки материалов.
В режиме ЮПредприятиеЗапустим 1С:Предприятие в режиме отладки и в разделе Оказание услуг откроем документ Оказание услуги № 1 и нажмем Провести и закрыть, то есть перепроведем его.
857251031240Номенклатура Оказание услуг Склады Согруаннки
00Номенклатура Оказание услуг Склады Согруаннки
548640756285Расчет
материаловуслугзарплаты
00Расчет
материаловуслугзарплаты
817245913130Клиент Номенклатура Оказание услуги |
00Клиент Номенклатура Оказание услуги |
4889534163000Теперь выполним команду Остатки материалов и откроем список нашего регистра накопления (рис. 6.19).
Период Jk. • Регистратор ; Но... ! Материал ; Склад Количество *
+ 09.07.2009... Приходная наклодная000000001... 1 Строчный трансформатор GoldStai Основной 10.000;
+ 09.07.2009... Приходная накладная 000000001... 2 Строчный трансформатор Samsung Основной 10.000
+ 09.07.2009. Приходная накладная 000000001... 3 Транзистор Philips 2N2369 Основной 10.000
+ 09,07.2009... Приходная накладная 000000002 ... 1 Кабель э лектрический Основной 5.000
+ 09.07.2009 Приходная машинная 000000002... 2 Шланг резиновый Основной 5Л00
■ШЯ Оказаниеуолуй000000001 от 10 1 Транзистор РЩя 2N2389 Основной 1000
Движения по регистру Остатки материалов Н €4 Найго... ^
Все действия » Щ
Рис. 6.19. Список регистра накопления «ОстаткиМатериалов»
Мы видим, что в регистре накопления Остатки материалов появилась еще одна запись, что соответствует количеству строк в табличной части проведенного документа.
Все поля регистра заполнились данными документа так, как мы задали в обработчике проведения документа Оказание услуги.
Пиктограмма со знаком «минус» слева от записи указывает на тип движения - Расход (см. рис. 6.19).
Сейчас мы видим весь список движений регистра. Открыв этот список из формы документа, мы можем отфильтровать движения по документу-регистратору.
Для этого откроем еще раз документ Оказание услуги № 1.
33020715010
Рис. 6.20. Переход к регистру накопления из формы документа
00
Рис. 6.20. Переход к регистру накопления из формы документа
3498851661795щщт
00щщт
3873500148907500В форме документа появилась панель навигации, в которой мы можем переходить к списку записей регистра Остатки материалов, связанному с документом, и обратно к содержимому документа (рис. 6.20).
Сформированные таким образом движения этого документа будут не совсем правильны.
Дело в том, что в документе Оказание услуги, в отличие от документа Приходная накладная, могут содержаться не только расходуемые материалы, но и услуги. Поэтому в регистр Остатки материалов будут попадать записи и о расходуемых услугах, что неправильно.
Пока мы ничего не будем делать с движениями, которые сформировал конструктор, но как только познакомимся с перечислениями, мы внесем в обработчик проведения необходимые изменения.
«Теория». Способы работы с коллекциейВ процессе формирования движений документов, когда в цикле обходили табличные части документов ПриходнаяНакпадная и Ока- заниеУслуги, мы столкнулись с одним из объектов встроенного языка, который является коллекцией.
Многие объекты встроенного языка являются коллекциями. Коллекция представляет собой совокупность объектов. Существуют общие принципы работы с любой коллекцией.
Во-первых, доступ к каждому объекту коллекции возможен путем перебора элементов коллекции в цикле. Для этого используется конструкция языка Для Каждого Из ... Цикл ... (листинг 6.3).
Листинг 6.3. Перебор элементов коллекции в цикле
Для Каждого СтрокаТабличнойЧасти из ТабличнаяЧасть Цикл Соо6щить(СтрокаТабличнойЧасти.Услуга);
КонецЦикла;
Шт. ЯСД1 sew •. -*Г'
В этом примере ТабличнаяЧасть - это коллекция строк табличной части объекта конфигурации. При каждом проходе цикла в переменной СтрокаТабличнойЧасти будет содержаться очередная строка из этой коллекции.
Во-вторых, существует доступ напрямую к элементу коллекции, без перебора коллекции в цикле. Здесь возможны различные комбинации двух обращений.
1. Во встроенном языке бывают именованные коллекции. То есть коллекции, в которых каждый элемент имеет некоторое уникальное имя. В этом случае обращение к элементу коллекции возможно по этому имени (листинг 6.4).
Листинг 6.4. Обращение к элементу коллекции
Справочники.Сотрудники;
Справочники ["Сотрудники!;
В этом примере Справочники - это коллекция менеджеров всех справочников, содержащихся в конфигурации. Так как каждый справочник конфигурации имеет свое уникальное имя, то к конкретному элементу этой коллекции (к менеджеру конкретного справочника) можно обратиться, указав имя этого справочника: Справочники["Сотрудники"].
Если нет смысла в «персонификации» элементов коллекции (коллекция неименованная), тогда обращение к элементу коллекции возможно по индексу (индекс первого элемента коллекции - ноль), листинг 6.5.
Листинг 6.5. Обращение к элементу коллекции по индексу Та6личнаяЧасть[0];
В этом примере ТабличнаяЧасть - это коллекция строк табличной части объекта конфигурации. И мы обращаемся к первому элементу этой коллекции, указывая его индекс - 0.
Следует отметить, что существуют коллекции, сочетающие оба вида обращений. Например, к коллекции колонок таблицы значений можно обращаться как по именам колонок, так и по индексу.
г
Контрольные вопросы4129405-231140Л
00Л
0 Для чего предназначен объект конфигурации Регистр накопления.
0 Почему следует использовать регистры, хотя необходимая информация содержится в других объектах.
0 Для чего нужны измерения регистра, ресурсы и реквизиты.
0 Что такое движения регистра и что такое регистратор.
0 Как создать новый регистр накопления и описать его структуру.
0 Как создать движения документа с помощью конструктора движений.
0 Как средствами встроенного языка обойти табличную часть документа и обратиться к ее данным.
0 Как показать команды открытия списка регистра в интерфейсе конфигурации и в интерфейсе формы.
Ч.)

Приложенные файлы

  • docx 11029508
    Размер файла: 622 kB Загрузок: 0

Добавить комментарий