<<

стр. 5
(всего 11)

СОДЕРЖАНИЕ

>>

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

255
254
Использование основных объектов конфигурации План видов характеристик



Логическая связь объектов
<*" Узнай больше!
О структуре объектов встроенного языка, предназначенных для

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




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



256 257
Использование основных объектов конфигурации План видов характеристик

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

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


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

• Число, длина 15, точность 3,
• Строка, длина 25,
• Дата,
• Булево,
• СправочникСсылка.ДополнительныеСвойстваНоменкла
туры:




258 259
План видов характеристик
Использование основных объектов конфигурации


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


П
режде всего, в справочнике «Номенклатура» нам нужно
обеспечить возможность редактирования варианта
материала. Для этого укажем, что справочник
«Номенклатура» будет редактироваться теперь обоими
способами, в списке и в диалоге, и создадим основную форму
элемента при помощи конструктора. Немного раздвинем форму по
ширине и высоте и добавим в нее панель
(Форма | Вставить элемент управления | Панель):




В заключение создадим объект конфигурации Регистр сведений с
именем «ЗначенияСвойствНоменклатуры».
Измерения регистра:
тип
• «НаборСвойств», ведущее,
СправочникСсылка.ВариантыНоменклатуры,
• «ВидСвойства», тип
ПланВидовХарактеристикСсылка.СвойстваНоменклатуры.
Ресурс регистра:
• «Значение», тип Характеристика.СвойстваНоменклатурЫ-
Обратите внимание, что мы имеем возможность определить тип
значения ресурса регистра, как Характеристика.<имя>. По сути, это


261
260
т План видов характеристик


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




На зтот вопрос мы ответим утвердительно, и все элементы
Зададим имя и заголовок новой страницы - «Свойства», а первую
управления переместятся в добавленную панель:
страницу также переименуем в «Основные» и зададим ей такой же
заголовок (группа свойств «Текущая страница» в палитре свойств
формы):




263
262
Использование основных объектов конфигурации План видов характеристик


Под этой надписью расположим табличное поле с командной
После этого выделим все элементы управления, расположенные
панелью с именем «Варианты» и типом
панели, и выполним команду
СправочникСписок.ВариантыНоменклатуры. Из табличного поля
Форма | Центрирование | Центрировать по вертикали:
удалим колонку «Код». Для этого табличного поля установим
свойство «Связь по владельцу» - СправочникОбъект.Ссылка:




Теперь перейдем на страницу «Свойства» и добавим надпись
«НадписьВариантыНоменклатуры» с заголовком «Варианты
номенклатуры:». Укажем для нее начертание шрифта «Жирный».



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




264 265
План видов характеристик
Использование основных объектов конфигурации

Под ней расположим табличное поле с командной панелью с
Ниже разместим аналогичным образом еще одну надпись именем «Свойства» и типом
«НадписьЗначенияСвойств» с заголовком «Значения свойств:» и РегистрСведенийСписок.ЗначенияСвойствНоменклатуры. Для
начертанием шрифта «Жирный».: колонки «НаборСвойств» снимем флаг «Видимость», а для поля ввода
колонке «Значение» установим связь по типу -
в
ЭлементыФормы.Свойства.ТекущиеДанные.ВидСвойства:




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




267
266
Использование основных объектов конфигурации План видов характеристик


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



Т
значения в поле «Вид свойства» привести значение поля «Значение» к
еперь нам следует доработать
типу характеристики, выбранной в поле «Вид свойства». справочник
Поэтому для поля ввода в колонке «Вид свойства» создадим «ВариантыНоменклатуры» таким образом, чтобы
обработчик события «При изменении»: пользователь имел возможность создавать новые свойства
материалов не только при редактировании самого материала, но и в
процессе ввода документов, когда в табличную часть подбирается
Процедура СвойстваВидСвойстваПриИзмененииЭлемент) ДанныеВидСвойства
набор свойств.
= ЭлементыФормы.Свойства.ТекущиеДанные.ВидСвойства;
ЭлементыФормы.Свойства.ТекущиеДанные.Значение =
Поэтому для справочника «ВариантыНоменклатуры» укажем, что
ДанныеВидСвойства.ТипЗначения
он будет редактироваться обоими способами (как в списке, так и в
.ПривестиЗначение(ЭлементыФормы.Свойства.ТекущиеДанные.Значение);
диалоге) и создадим с помощью конструктора основную форму
КоиецПроцедуры _________________________________________________________
элемента.
Теперь нам нужно сделать так, чтобы в табличном поле «Свойства»
Доработка формы элемента справочника
отображались записи регистра сведений, относящиеся только к «ВариантыНоменклатуры» будет сводиться, по большому счету, к тем
выбранному в верхнем табличном поле элементу справочника же действиям, которые мы выполнили с формой справочника
«ВариантыНоменклатуры». «Номенклатура». В форме нам нужно будет расположить табличное
Поэтому для табличного поля «Варианты» создадим обработчик поле, которое должно отображать существующие в регистре сведений
события «При активизации строки»: записи о значениях свойств для этого элемента справочника.
Откроем основную форму элемента справочника
«ВариантыНоменклатуры» и раздвинем форму вниз. На
ПроцедураВариантыПриАктивизацииСтрокиСЭлемент)
ЭлементыФормы.Свойства.Значение.Отбор.НаборСвойств освободившемся пространстве поместим табличное поле с именем
.Установить(Элемент.ТекущиеДанные.Ссылка, Истина);
«Свойства», типом
КонедПроцедуры
РегистрСведенийСписок.ЗначенияСвойствНоменклатуры и
командной панелью. Для колонки «НаборСвойств» снимем флаг
Кроме этого, чтобы не отображать весь регистр при открытии видимости:
формы, создадим обработчик события формы «ПриОткрытии»,
содержащий следующий текст:

Процедура ПриОткрытии()
ЭлементыФормы.Свойства.Значение.Отбор.НаборСвойств.Установить(,Истина);
КонедПроцедуры




269
268
Использование основных объектов конфигурации План видов характеристик


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

Процедура СвойстваВидСвойстваПриИзменении(Элемент) Процедура СвойстваЛередНачаломДобавления(Элемент, Отказ, Копирование)
Если ЭтоНовый() Тогда
ДанныеВидСвойства = ЭлементыФормы.Свойства.ТекущиеДанные.ВидСвойства;
Записать();
ЭлементыФормы.Свойства.ТекущиеДанные.Значение =
КонецЕсли;
ДанныеВидСвойства.ТипЗначения
.ПривестиЗначение(ЭлементыФормы.Свойства.ТекущиеДанные.Значение); КонецПроцедуры
КоиедПроцедуры

Доработка регистра ОстаткиМатериалов
Теперь необходимо сделать так, чтобы при открытии формы


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

Узнай больше!
О событиях, связанных с формой, можно прочитать в главе
«События, связанные с формой» на странице 547.

Прежде всего, создадим обработчик события
«ПриИзмененииСсылки», в котором установим требуемый нам отбор:

Процедура ПриИзмененииСсылки(ПутьКДанным)
Cвойства.Отбор.Ha6opCвойств.Установить(Cсылка,"Истина");
КонецПроцедуры

Доработка документа ПриходнаяНакладная
Затем в тело модуля формы добавим вызов этого обработчика:


П оследнее, что нам осталось - доработать документ
«ПриходнаяНакладная». Для того чтобы при приходовании
ПодключитьОбработчикИзмененияДанныхССправочникОбъект.Ссылка",
товаров пользователь мог указывать набор свойств для
"ПриИзмененииСсылкн");
каждого приходуемого материала, добавим в табличную




271
270
Использование основных объектов конфигурации План видов характеристик


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

Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный
фрагмент построен конструктором. // При повторном
использовании конструктора, // внесенные вручную изменения
будут утеряны!!! Для Каждого ТекСтрокаМатериалы Из
Материалы Цикл
// регистр ОстаткиМатериалов Приход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.НаборСвойств = ТекСтрокаМатериалы.НаборСвойств;
Движение.Склад = Склад;
После этого расположим этот реквизит в табличном поле формы
Движение.Количество = ТекСтрокаМатериалы.Количество;
документа (правая кнопка мыши - Размещение данных): КонецЦикла; Для Каждого ТекСтрокаМатериалы Из Материалы
Цикл
// регистр СтоимостьМатериалов Приход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Стоимость = ТекСтрокаМатериалы.Сумма;
КонецЦикла;
// записываем движения регистров
Движения.ОстаткиМатериалов.Записать();
Движения.СтоимостьМатериалов.Записать();
Движения.Управленческий.Записать();
//}}_KOHCTPУКТР_ДВИЖЕНИЙ_PEГИCTPOB
КонецПроцедуры


Теперь запустим 1С:Предприятие в режиме отладки и создадим
несколько наборов свойств для наших материалов.

Создание наборов свойств


О
Для поля ввода, расположенного в колонке «НаборСвойств» снова ткроем элемент справочника «Номенклатура» - «Кабель
воспользуемся свойством «Связь по владельцу» электрический». Перейдем на закладку «Свойства» и
создадим набор свойств этого элемента под названием
ЭлементыФормы.Материалы.ТекущиеДанные.Материал. Теперь
«Белый».
при выборе в этом поле ввода будет всегда открываться список


272 273
Использование основных объектов конфигурации План видов характеристик

Этот набор свойств будет называться «Польша» и состоять из
Он будет состоять их следующих характеристик:
следующих характеристик:
• «Цвет» - «Белый»,
• «Цвет» - «Черный»,
«Сечение, мм2» - 2,5:

• «Производитель» - «Fagumit»:




Затем создадим набор свойств для элемента справочника Теперь откроем документ ПриходнаяНакладная №2 и укажем, что
«Номенклатура» - «Шланг резиновый». был закуплен белый электрический кабель в количестве 2 шт. и
польский резиновый шланг.




275
274
Использование основных объектов конфигурации План видов характеристик


Кроме этого посмотрим на записи, которые содержатся в регистре
Затем скопируем первую строку документа и укажем, что был
сведений «ЗначенияСвойствНоменклатуры»:
закуплен еще и черный электрический кабель в количестве 3 шт. (в
процессе ввода нам придется создать еще один набор свойств для
электрического кабеля - «черный», у которого «Цвет» - «Черный» и
«Сечение» - 2,5):




Отчет ОстаткиМатериаловПоСвойствам

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




277
276
Использование основных объектов конфигурации План видов характеристик


Выберем виртуальную таблицу регистра накопления Из виртуальной таблицы регистра накопления
«ОстаткиМатериалов.ОстаткиИОбороты». В параметрах виртуальной ;<ОстаткиМатериалов.ОстаткиИОбороты» выберем следующие поля:
таблицы зададим условие отбора таким, что значение измерения
• «ОстаткиМатериаловОстаткиИОбороты.Материал»,
регистра «НаборСвойств» должно находиться в списке, передаваемом
• «ОстаткиМатериаловОстаткиИОбороты.НаборСвойств,
в качестве параметра «СписокСвойств»:
• «ОстаткиМатериаловОстаткиИОбороты.КоличествоНачальны
йОстаток»,
• «ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход»,
• «ОстаткиМатериаловОстаткиИОбороты.КоличествоРасход»,
• «ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечный
Остаток»:




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




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


278 279
Использование основных объектов конфигурации План видов характеристик

вызове процедуры
удалим второй параметр при
//Запрос.УстановитьПараметр("СписокСвойств",СписокСвойств);
«ОстаткиМатериаловПоСвойствам»:
Результат = Запрос.Выполнить();
ПроцедураДействияФормыОстаткиМатериаловПоСвойствамСформировать(Кнопка)
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ_ПРОЦЕДУРА_ВЫЗОВА(
//ОстаткиМатериаловПоСвойствам) // Данный фрагмент построен конструктором. //
Теперь мы можем перейти к созданию вложенного запроса,
При повторном использовании конструктора, // внесенные вручную изменения
который будет передаваться в условие, заданное в параметре
будут утеряны!!!
виртуальной таблицы.
ТабДок = ЭлементыФормы.ПолеТабличногоДокумента;
Обладая достаточными навыками написания запросов, мы могли
ОстаткиМатериаловПоСвойствам(ТабДок);
бы вручную, вместо «&СписокСвойств» написать текст вложенного
//}}КОНСТРУКТОР_ВЫХОДНИЫХ ФОРМ_ПРОЦЕДУРА_ВЫЗОВА запроса. Но, поскольку мы только осваиваем язык запросов,
КонецПроцедуры
воспользуемся более комфортным способом: создадим текст
вложенного запроса при помощи конструктора, а затем просто
После этого в процедуре «ОстаткиМатериаловПоСвойствам» скопируем его в нужное нам место модуля. Для этого выполним
соответствующим образом изменим строку объявления процедуры и команду Текст | Конструктор запроса...
затем удалим строку, устанавливающую параметр запроса:
В качестве исходных данных вложенного запроса выберем таблицу
регистра сведений «ЗначенияСвойствНоменклатуры». Из нее выберем
Процедура ОстаткиМатериаловПоСвойствам(ТабДок) Экспорт
единственное поле - «ЗначенияСвойствМатериалов.НаборСвойств».
//{{КОНСТРУКТОР_ВЫХОДНЫХ_ФОРМ(ОстаткиМатериаловПоСвойствам)
Зададим условия выборки. Прежде всего, владелец набора свойств
//Данный фрагмент построен конструктором. // При повторном использовании
конструктора, // внесенные вручную изменения будут утеряны!!! должен быть равен переданному в параметре «Материал» материалу:
Макет = ОтчетОбъект.ПолучитьМакет("ОстаткиМатериаловПоСвойствам"); Запрос
ЗначенияСвойствНоменклатуры.НаборСвойств.Владелед = &Материал
= Новый Запрос; Запрос.Текст * "ВЫБРАТЬ
|ОстаткиМатериаловОстаткиИОбороты.Материал,
|ОстаткиМатериаловОстаткиИОбороты.Материал.Представление,
|ОстаткиМатериаловОстаткиИОбороты. НаборСвойств,
Затем укажем, что вид свойства должен быть равен переданному в
|ОстаткиМатериаловОстаткиИОбороты.НаборСвойств.Представление,
|ОстаткиМатериаловОстаткиИОбороты.КоличествоНачальныйОстаток параметре «ВидСвойства» значению:
|КАК НачальныйОстаток,
|ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход
|КАК Приход, ЗначенияСвойствНоменклатуры.ВидСвойства = &ВидСвойства
|ОстаткиМатериаловОстаткиИОбороты.КоличествоРасход
|КАК Расход,
|ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечныйОстаток
|КАК КонечныйОстаток |ИЗ
|РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты(,,,,
|НаборСвойств В (&СписокСвойств))
|КАК ОстаткиМатериаловОстаткиИОбороты"; ^ _______



280 281
Использование основных объектов конфигурации План видов характеристик


И в заключение отметим, что значение свойства также будет | из
I РегистрСведений.ЗначенияСвойствНоменклатуры
задаваться параметром «Значение»:
I КАК ЗначенияСвойствНоменклатуры
I
I ГДЕ
ЗначенияСвойствНоменклатуры.Значение = &Значение
I ЗначенияСвойствНоменклатуры.НаборСвойств.Владелец = &Материал И
I ЗначенияСвойствНоменклатуры.ВидСвойства = &ВидСвойства И
I ЗначенияСвойствНоменклатуры.Значение = &Значение))
| КАК ОстаткиМатериаловОстаткиИОбороты";

Результат = Запрос.Выполнить();



Маленькая доработка, которую нам останется сделать, будет
Вложенный запрос готов. Теперь нажмем кнопку «Запрос»,
заключаться в том, чтобы предусмотреть динамическое формирование
расположенную в нижней части окна конструктора запроса, выделим и
текста запроса в зависимости от того, выбрано пользователем значение
скопируем текст запроса в буфер обмена Windows. Закроем окно с
материала, или нет:
текстом запроса и нажмем «Отмена» в конструкторе запроса. Теперь
вставим текст из буфера обмена вместо параметра в созданный нами
ранее запрос: Процедура ОетаткиМатериаловПоСвойствамСТабДок) Экспорт
//{{КОНСТРУКТОР_ВЬКОДНЫХ_ФОРМ(ОстаткиМатериаяовПоСвойствам) //
Данный фрагмент построен конструктором. // При повторном использовании
Процедура ОстаткиМатериаловПоСвойствам(ТабДок) Экспорт конструктора, // внесенные вручную изменения будут утеряны!!!
//{{КОНСТРУКТОРЗЬПГОДНЬГХ^ЮРМСОстаткиМатериаловПоСвойствам) //
Данный фрагмент построен конструктором. // При повторном использовании Макет = ОтчетОбъект.ПолучитьМакетС'ОстаткиМатериаловПоСвойствам");
конструктора, // внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос;
Запрос.Текст =
Макет = ОтчетОбъект.ПолучитьМакетС'ОстаткиМатериаловПоСвойствам"); "ВЫБРАТЬ
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОстаткиМатериаловОстаткиИОбороты.Материал,
| ОстаткиМатериаловОстаткиИОбороты.Материал, | | ОстаткиМатериаловОстаткиИОбороты.Материал.Представление,
ОстаткиМатериажовОстаткиИОбороты.Материал.Представление, | | ОстаткиМатериаловОстаткиИОбороты.НаборСвойств,
ОстаткиМатериаловОстаткиИОбороты.НаборСвойств, | | ОстаткиМатериаловОстаткиИОбороты.НаборСвойств.Представление,
ОстаткиМатериаловОстаткиИОбороты.НаборСвойств.Представление, | | ОстаткиМатериаловОстаткиИОбороты, КоличествоНачальныйОстаток
ОстаткиМатериаловОстаткиИОбороты.КоличествоНачальныйОстаток | | КАК НачальныйОстаток,
КАК НачальныйОстаток, | ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход
| ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход | | КАК Приход,
КАК Приход, | ОстаткиМатериаловОстаткиИОбороты.КоличествоРасход
| КАК Расход,
| ОстаткиМатериаловОстаткиИОбороты.КоличествоРасход |
| ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечныйОстаток
КАК Расход,
| КАК КонечныйОстаток
| ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечныйОстаток
|И3
| КАК КонечныйОстаток |ИЗ
| РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты(,,,,
| РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты(,,,, |
| НаборСвойствВ (ВЫБРАТЬ
НаборСвойств В (ВЫБРАТЬ
| ЗначенияСвойствНоменклатуры.НаборСвойств
|ЗначенияСвойствНоменклатуры.НаборСвойств
| ИЗ
| РегистрСведений.ЗначенияСвойствНоменклатуры
| КАК ЗначенияСвойствНоменклатуры


282 283
Использование основных объектов конфигурации План видов характеристик


I ГДЕ
Если Не Материал.Пустая() тогда
l";
Запрос.Текст = Запрос.Текст +
Если Не Материал.ПустаяО тогда "ЗначенияСвойствНоменклатуры.НаборСвойств.Владелец = &Материал И
Запрос.Текст = Запрос.Текст +
КонецЕсли;
"ЗначенияСвойствНоменклатуры.НаборСвойств.Владелец = Материал И
|";
Запрос.Текст = Запрос.Текст +
КонецЕсли;
" ЗначенияСвойствНоменклатуры.ВидСвойства = &ВидСвойства И
| ЗначенияСвойствНоменклатуры.Значение = &Значение))
Запрос.Текст = Запрос.Текст +
| КАК ОстаткиМатериаловОстаткийОбороты";
ЗначенияСвойствНоменклатуры.ВидСвойства = &ВидСвойства И
I ЗначенияСвойствНоменклатуры.Значение = &Значение))
Если Не Материал.Пустая() тогда
I КАК ОстаткиМатериаловОстаткиИОбороты";
Запрос.УстановитьПараметр('' Материал", Материал);
Результат = Запрос.Выполнить();
КонецЕсли;
Запрос.УстановитьПараметр("ВидСвойства", ВидСвойства);
После этого добавим в текст модуля установку параметров запроса: Запрос.УстановитьПараметр('Значение", Значение);

Результат = Запрос.Выполнить();
Процедура ОстаткиМатериаловПоСвойетвам(ТабДок) Экспорт
//{{КОНСТРУКТОР_ВЫХОДНИЫХ ФОРМ) // Данный фрагмент построен
конструктором. // При повторном использовании конструктора, // внесенные
Теперь последнее, что нам осталось сделать - это разместить в
вручную изменения будут утеряны!!!
форме поля для ввода параметров запроса.
Макет = ОтчетОбъект.ПолучитьМакет("ОстаткиМатериаловПоСвойствам");
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЪ
|ОстаткиМатериаловОстаткиИОбороты.Материал,
|ОстаткиМатериаловОстаткиИОбороты.Материал.Представление,
|ОстаткиМатериаловОстаткиИОбороты.НаборСвойств,
|ОстаткиМатериаловОстаткиИОбороты.НаборСвойств.Представление,
|ОстаткиМатериаловОстаткиИОбороты.КоличествоНачальныйОстаток
|КАК НачальныйОстаток,
|ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход
|КАК Приход,
|ОстаткиМатериаловОстаткиИОбороты.КояичествоРасход
|КАК Расход,
|ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечныйОстаток
|КАК КонечныйОстаток
|ИЗ
|РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты(,,,,
|НаборСвойств В (ВЫБРАТЬ
|ЗначенияСвойствНоменклатуры.НаборСвойств |ИЗ
|РегистрСведений.ЗначенияСвойствНоменклатуры
|КАК ЗначенияСвойствНоменклатуры
|ГДЕ




284
285
План видов характеристик
Использование основных объектов конфигурации


На этом создание отчета завершено. Запустим 1С:Предприятие в
Откроем форму отчета и разместим на ней три поля ввода:
режиме отладки и посмотрим, какие результаты можно получить с
помощью нашего отчета.
• «Материал» с типом СправочникСсылка.Номенклатура,
• «ВидСвойства» с типом Сначала посмотрим, какие у нас есть материалы с сечением 2,5
ПланВидовХарактеристикСсылка.СвойстваНоменклатур 2
мм :
ы,
• «Значение» с типом
Характеристика.СвойстваНоменклатуры:




Затем посмотрим, какие у нас есть материалы черного цвета:




Для поля ввода «Материал» установим свойство «Выбор групп и
элементов» как «Элементы».
Для поля ввода «Значение» установим связь по типу с реквизитом
«ВидСвойства». А для поля ввода «ВидСвойства» создадим
обработчик события «ПриИзменении»:

Процедура ВидСвойстваПриИзменении(Элемеит)
Значение = ВидСвойства.ТипЗначения.ПривестиЗначение(Значение);
КонецПроцедуры




287
286
Использование основных объектов конфигурации План видов характеристик

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




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




288 289
Бухгалтерский учет



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


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

Создание объекта конфигурации План видов
характеристик ВидыСубконто


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




291
290
Использование основных объектов конфигурации Бухгалтерский учет


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

• СправочникСсылка.Клиенты,
• СправочникСсылка.Номенклатура,
• СправочникСсылка.Субконто:




Закроем окно редактирования справочника и вернемся к нашему
плану видов характеристик.

Бухгалтерия нашего OOO «На все руки мастер» ведет учет
движения денежных средств только в разрезе материалов и клиентов,
но не исключено, что в дальнейшем понадобится дополнительная
аналитика (поэтому мы используем и справочник «Субконто»).
Обратите внимание, что тот справочник, который будет использован в
качестве дополнительных значений характеристик, тоже должен
входить в составной тип данных типа значений характеристик, иначе
конфигуратор выдаст сообщение об ошибке.
Затем укажем, что дополнительные значения характеристик будут
находиться в справочнике «Субконто».
После этого перейдем на закладку «Прочее» и начнем ввод
предопределенных значений плана видов характеристик.
Создадим предопределенный вид субконто: «Материалы», с кодом
«00001» и типом СправочникСсылка.Номенклатура, и затем



293
292
Бухгалтерский учет
Использование основных объектов конфигурации


создадим вид субконто: «Клиенты», с кодом «00002» и типом
Объект конфигурации План счетов
СправочникСсылка.Клиенты:


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




295
294
Использование основных объектов конфигурации
Бухгалтерский учет


Нажмем кнопку «Предопределенные» и создадим четыре
Узнай больше! предопределенных счета:
О структуре объектов встроенного языка, предназначенных для
работы с планами счетов можно прочитать в главе «Планы счетов • «Товары», код 41, активный, с количественным учетом в
на странице» 588. разрезе материалов:

Создание объекта конфигурации План счетов
Основной


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




296
297
Бухгалтерский учет
Использование основных объектов конфигурации

• «Капитал», с кодом 90, активно/пассивный:
• «Расчеты с поставщиками», код 60, активно/пассивный:




В результате план счетов нашего OOO «На все руки мастер» будет
«Дебиторская задолженность», код 62, активно/пассивный, с выглядеть следующим образом:
учетом в разрезе клиентов:




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

' Узнай больше!
Для плана счетов можно установить свойство «Автопорядок no
коду». Это свойство используется для того, чтобы указать системе,
что упорядочивание no полю Порядок должно всегда подставляться в



299
298
Бухгалтерский учет
Использование основных объектов конфигурации ____________________
------------- ¦ ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------" ' ^
----------------------------------------------------------------------------------˜ ^




тех случаях, когда пользователь или разработчик выбирает
Объект конфигурации Регистр бухгалтерии
упорядочивание no коду. Его нужно использовать, прежде всего,


О
тогда, когда с точки зрения пользователя нужноупорядочивать план бъект конфигурации Регистр бухгалтерии является
счетов no коду с учетом разделителей кода счета. Например, если прикладным объектом и предназначен для описания
счета «10.11» и «10.2» упорядочивать no коду счета, то счета будут структуры накопления данных, учет которых ведется исходя из
располагаться так: некоторого плана счетов. На основе объекта конфигурации Регистр
«10.11» бухгалтерии платформа создает в базе данных
«10.2» информационную структуру, в которой будут накапливаться данные о
Это правильно с точки зрения сортировки строк, но не хозяйственных операциях, отображаемых в бухгалтерском учете.
соответствует логическому смыслу кодов. По своему виду регистр бухгалтерии напоминает регистр
Но если заданы значения поля Порядок «10.11» и «10. 2» и накопления - он также имеет ресурсы, может иметь измерения и
установлено свойство «Автопорядок no коду», то при выборе реквизиты. Измерения позволяют разделять ведение учета (например,
упорядочивания no коду пользователь будет, фактически, получать используя измерение «Организация», можно вести учет в разрезе
порядок, учитывающий разделители: нескольких юридических лиц). Реквизиты служат признаком, по
«10.2» которому одни записи регистра можно отделить от других (например,
«10.11». в качестве реквизита может использоваться номер журнала, что
Если свойство не устанавливать, то нужно будет в явном виде позволит отбирать проводки, имеющие одинаковый смысл).
выбирать упорядочивание no полю Порядок. ________________^___ Значительное отличие от регистра накопления заключается в том,
что регистр бухгалтерии имеет жесткую связь с используемым планом
счетов. Поэтому каждая запись регистра бухгалтерии содержит
дополнительные поля, определяемые настройкой используемого плана
счетов. Например, запись регистра может содержать дополнительные
поля для указания корреспондирующих счетов, сумм, объектов
аналитического учета (субконто), количества, вида валюты и т.д.
Кроме этого, отличительной чертой регистра бухгалтерии является
возможность поддержки механизма двойной записи, при которой
каждая запись регистра содержит обязательные поля для указания
счета дебета и счета кредита.

Узнай больше!
О структуре объектов встроенного языка, предназначенных для
работы с регистрами бухгалтерии можно прочитать в главе
«Регистры бухгалтерии» на странице 603.




301
300
Использование основных объектов конфигурации Бухгалтерский учет


Создание регистра бухгалтерии Управленческий
Использование регистра бухгалтерии

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


Н
контролировать баланс хозяйственных средств и их источников.
ачнем с простого: доработаем движения документа
Теперь перейдем на закладку «Данные» и создадим два ресурса:
«ПриходнаяНакладная». Для этого нам достаточно будет
воспользоваться конструктором движений документа и
• «Сумма», длина 15, точность 2, балансовый,
заменить старые движения документа на новые, по трем
• «Количество», длина 15, точность 3, небалансовый, признак
регистрам.
учета - количественный, признак учета субконто -
Откроем конфигуратор. В окне редактирования объекта
количественный.
конфигурации Документ «ПриходнаяНакладная», на закладке
На этом создание нашего регистра бухгалтерии завершено. Теперь «Движения» запустим конструктор движений документа.
откроем окна редактирования документов «ПриходнаяНакладная» и
В список регистров добавим регистр
«ОказаниеУслуги» и отметим, что эти документы будут создавать
«РегистрБухгалтерии.Управленческий». В качестве источника данных
движения и по регистру бухгалтерии «Управленческий» (закладка
выберем табличную часть документа «ПриходнаяНакладная» -
«Движения»).
«Материалы». Счет дебета установим равным
Запустим 1С:Предприятие в режиме отладки и откроем регистр «ПланыСчетов.Основной.Товары» (41), а счет кредита -
бухгалтерии «Управленческий». Как видите, платформа (при создании «ПланыСчетов.Основной.РасчетыСПоставщиками» (60).
структуры хранения данных) добавила к созданным нами реквизитам
регистра еще ряд полей, которые явились следствием использования
плана счетов «Основной». Прежде всего, это поля «СчетДт»,
«СубконтоДт1», «СчетКт» и «СубконтоКт1>. Кроме этого, если
прокрутить окно вправо до конца, то вы обнаружите две колонки
«Количество». Это «КоличествоДт» и «КоличествоКт». Для измерений
и ресурсов регистра, связанных с признаками учета, платформа
создает пару полей для хранения значения ресурса отдельно по дебету
и отдельно по кредиту проводки.




302 303
Использование основных объектов конфигурации Бухгалтерский учет


Нажмем кнопку «Заполнить выражения». У вас должен получиться Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
следующий результат:
Движение.Стоимость = ТекСтрокаМатериалы.Сумма;
КонецЦикла; Для Каждого ТекСтрокаМатериалы Из
Материалы Цикл
// регистр Управленческий
Движение = Движения.Управленческий.Добавить();
Двюкение.СчетДт = ПланыСчетов.Основной.Товары;
Движение.СчетКт = ПланыСчетов.Основной.РасчетыСПоставшиками;
Движение.Период = Дата;
Движение.Сумма = ТекСтрокаМатериалы.Сумма;
Движение.Количество = ТекСтрокаМатериалы.Количество;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] =
ТекСтрокаМатериалы.Материал;
КонецЦикла;
// записываем движения регистров
Движения.ОстаткиМатериалов.Записать();
Движения.СтоимостьМатериалов.Записать();
Движения.Управленческий.Записать();
//}}_КОНСТРУКТОРЛВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры


Платформа сформировала уже знакомые нам три цикла обхода
табличной части документа (для каждого регистра свой цикл). В
первых двух циклах для нас нет ничего нового. В последнем, по
большому счету, тоже - движения формируются таким же образом,
Нажмем «ОК» и посмотрим, какой текст платформа добавила в как и для регистра накопления. Интерес для нас представляет только
обработчик проведения документа «ПриходнаяНакладная»: последняя строчка цикла, в которой присваивается значение субконто
дебета.
Дело в том, что количество субконто как по дебету, так и по
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР ДВИЖЕНИЙ_РЕГИСТРОВ //
кредиту у каждой записи движения регистра будет различное, в
Данный фрагмент построен конструктором. // При
зависимости от того, как определены счета в используемом плане
повторном использовании конструктора, // внесенные
счетов. Поэтому для каждой записи движения регистра бухгалтерии
вручную изменения будут утеряны!!! Для Каждого
ТекСтрокаМатериалы Из Материалы Цикл платформа хранит две коллекции значений: коллекцию субконто
// регистр ОстаткиМатериалов Приход
дебета и коллекцию субконто кредита. Каждая из этих коллекций
Движение = Движения.ОстаткиМатериалов.Добавить();
содержит ровно столько элементов, сколько указано использовать
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
видов субконто для соответствующего счета (дебета или кредита) в
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал; плане счетов. Обратиться к элементу коллекции можно, указав в
Движение.Склад = Склад;
квадратных скобках ссылку на соответствующий вид характеристик,
Движение.Количество = ТекСтрокаМатериалы.Количество;
либо указав через точку имя предопределенного вида характеристик.
КонецЦикла; Для Каждого ТекСтрокаМатериалы Из
Материалы Цикл
// регистр СтоимостьМатериалов Приход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;



304 305
Использование основных объектов конфигурации Бухгалтерский учет


Добавление движений по регистру бухгалтерии
Другими словами, запись:
Управленческий в документ ОказаниеУслуги

Д ля того чтобы добавить движения по регистру Управленческий в
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Материалы]
документ «ОказаниеУслуги», нам уже не удастся
воспользоваться конструктором движений. Если вы помните,
движения этого документа мы создавали самостоятельно, без
равносильна записи:
использования конструктора.
В отличие от документа «ПриходнаяНакладная», который создавал
всего одну бухгалтерскую проводку, документ «ОказаниеУслуги»
Движение.СубконтоДт.Материалы .
будет создавать уже две проводки:

Запустим 1С:Предприятие в режиме отладки, откроем документ
ПриходнаяНакладная №1 и перепроведем его.
Посмотрим, какие движения сформировал документ в регистре
бухгалтерии Управленческий:




Напомним, что бухгалтерия нашего OOO «На все руки мастер» не
совсем похожа на «настоящую» бухгалтерию, потому что для
облегчения своей работы она учитывает только движения материалов.
Услуги, которые оказывает 000, для нее как бы не существуют.
Поэтому документ «ОказаниеУслуги» должен формировать движения
по регистру бухгалтерии только в той части, которая касается
Обратите внимание, что, поскольку, на счете 60
расходования материалов.
(«РасчетыСПоставщиками») отсутствует аналитика и ведется только
суммовой учет, в записях движений регистра «СубконтоКт1», Откроем в конфигураторе модуль объекта конфигурации Документ
«СубконтоКт2» и «КоличествоКт» не указаны. «ОказаниеУслуги» и найдем в нем процедуру обработки проведения.
После этого перепроведем документ ПриходнаяНакладная №2 и Она должна иметь следующий вид:
посмотрим, какие движения сформирует он.
Теперь перейдем к более сложной задаче - добавлению движений Процедура ОбработкаПроведения(Отказ, Режим) Запрос = Новый
по регистру «Управленческий» в документ «ОказаниеУслуги». Запрос; Если Режим = РежимПроведенияДокумента.Оперативный
Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
| ОказаниеУслугиПереченьНоменклатуры.Количество,
| ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры
| КАК ВидНоменклатуры,
| ОказаниеУслугиПереченьНоменклатуры.Сумма,


306 307
Использование основных объектов конфигурации Бухгалтерский учет


| ОстаткиМатериаловОстатки.КоличествоОстаток, | КАК СтоимостьМатериаловОстатки
| СтоимостьМатериаловОстатки.СтоимостьОстаток, | ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура =
| ОстаткиМатериаловОстаткиНаСкладе.КоличествоОстаток | СтоимостьМатериаловОстатки.Материал
| КАК КоличествоОстатокНаСкладе | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
|ИЗ | &МоментВремени,
| Документ.ОказаниеУслуги.ПереченьНоменклатуры | Материал В (&СписокНоменклатурыДокумента))
| КАК ОказаниеУслугиПереченьНоменклатуры | КАК ОстаткиМатериаловОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки( | ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура =
| &МоментВремени, | ОстаткиМатериаловОстатки.Материал
| Материал В (&СписокНоменклатурыДокумента))
| КАК СтоимостьМатериаловОстатки |ГДЕ
| ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура = | ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
| СтоимостьМатериаловОстатки.Материал
|ДЛЯ ИЗМЕНЕНИЯ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
| &МоментВремени, | РегистрНакопления.ОстаткиМатериалов.Остатки, |
РегистрНакопления.СтоимостьМатериалов.Остатки";
| Материал В (&СписокНоменклатурыДокумента))
КонецЕсли;
|КАК ОстаткиМатериаловОстатки
| Запрос.УстановитьПараметрС'МоментВремени", МоментВремени());
ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура =
Запрос.УстановитьПараметрС'СписокНоменклатурыДокумента",
| ОстаткиМатериаповОстатки.Материал
ПереченьНоменклатуры.ВыгрузитьКолонкуС'Номенклатура"));
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
Запрос.УстановитьПараметр{"Ссылка",Ссылка);
| &МоментВремени,
| Материал В (&СписокНоменклатурыДокумента) И
ВыборкаРезультатаЗапроса = Запрос.Выполнить().Выбрать();
| Склад = &СкладВДокументе)
| КАК ОстаткиМатериаловОстаткиНаСкладе
Пока ВыборкаРезультатаЗапроса.Следующий() Цикл
| ПО ОказаниеУслугиПереченьНоменклатуры.Номенклатура =
| ОстаткиМатериаловОстаткиНаСкладе.Материал
/ЯТроверить остаток при оперативном проведении Если Режим =
РежимПроведенияДокумента.Оперативный Тогда Если
|ГДЕ
ВыборкаРезультатаЗапроса.ВидНоменклатуры =
| ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
Перечисления.ВидыНоменклатуры.МатериалТогда
Остаток = ?(ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе = Null,
|ДЛЯ ИЗМЕНЕНИЯ
0,ВыборкаРезультатаЗапроса.КоличествоОстатокНаСкладе);
| РегистрНакопления.ОстаткиМатериалов.Остатки, |
Если Остаток < ВыборкаРезультатаЗапроса.Количество Тогда
РегистрНакопления.СтоимостьМатериалов.Остатки"; Иначе
Сообщить("Материала" +
Запрос.Текст =
"ВЫБРАТЬ СокрЛП(ВыборкаРезультатаЗапроса.Номенклатура) + " имеется
| ОказаниеУслугиПереченьНоменклатуры.Номенклатура, | только " + Остаток); Отказ = Истина; Возврат; КонецЕсли;
ОказаниеУслугиПереченьНоменклатуры.Количество, | КонецЕсли; КонецЕсли;
ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры |
КАК ВидНоменклатуры, | ОказаниеУслугиПереченьНоменклатуры.Сумма, | //Сформировать движения
ОстаткиМатериаловОстатки.КоличествоОстаток, | Если ВыборкаРезулыатаЗапроса.ВидНоменклатуры =
СтоимостьМатериаловОстатки.СтоимостьОстаток |ИЗ Перечисления.ВидыНоменклатуры.МатериалТогда
| Документ.ОказаниеУслуги.ПереченьНоменклатуры | // регистр ОстаткиМатериалов Расход Движение =
КАК ОказаниеУслугиПереченьНоменклатуры Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения =
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки( ВидДвиженияНакопления.Расход; Движение.Период = Дата;
| &МоментВремени,
| _______________________________ Материал В
(&СпиеокНоменклатурыДокумента)



308 309
Использование основных объектов конфигурации Бухгалтерский учет


Движение.Материал = ВыборкаРезультатаЗапроса.Номенклатура; Добавим движения по регистру бухгалтерии Управленческий:
Движение.Склад = Склад;
Движение.Количество = ВыборкаРезультатаЗапроса.Количество;

// регистр СтоимостьМатериалов Расход Движение = //Сформировать движения
Движения.СтоимостьМатериалов.Добавить(); Если ВыборкаРезультатаЗапроса.ВидНоменклатуры =
Движение.ВидДвижения = ВидЦвиженияНакопления.Расход; Перечисления.ВидыНоменклатуры.Материал Тогда
Движение.Период = Дата; // регистр ОстаткиМатериалов Расход
Движение.Материал = ВыборкаРезультатаЗапроса.Номенклатура; Движение = Движения.ОстаткиМатериалов.Добавить();
//расчитать стоимость материала
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
СтоимостьМатериала = ?(ВыборкаРезультатаЗапроса.КоличествоОстаток = Null. 0,
Движение.Период = Дата;
ВыборкаРезультатаЗапроса.СтоимостьОстаток /
Движение.Материал = ВыборкаРезультатаЗапроса.Номенклатура;
ВыборкаРезультатаЗапроса.КоличествоОстаток); Движение.Стоимость =
Движение.Склад = Склад;
СтоимостьМатериала *
Движение.Количество = ВыборкаРезультатаЗапроса.Количество;
ВыборкаРезультатаЗапроса.Количество;
КонецЕсли; // регистр СтоимостьМатериалов Расход Движение =
Движения.СтоимостьМатериалов.Добавить();
// регистр Продажи Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение = Движения.Продажи.Добавить(); Движение.Период = Дата;
Движение.Период = Дата; Движение.Материал = ВыборкаРезультатаЗапроса.Номенклатура;
Движение.Номенклатура = ВыборкаРезультатаЗапроса.Номенклатура; //расчитать стоимость материала
Движение.Клиент = Клиент; СтоимостьМатериала = ?(ВыборкаРезультатаЗапроса.КоличествоОстаток = Null, 0,
Движение.Мастер = Мастер; ВыборкаРезультатаЗапроса.СтоимостьОстаток /
Движение.Количество = ВыборкаРезультатаЗапроса.Количество; ВыборкаРезультатаЗапроса.КоличествоОстаток); Движение.Стоимость =
Движение.Выручка = ВыборкаРезультатаЗапроса.Сумма; СтоимостьМатериала *
Если ВыборкаРезультатаЗапроса.ВидНоменклатуры = ВыборкаРезультатаЗапроса.Количество;
Перечисления.ВидыНоменклатуры.Материал Тогда
Движение.Стоимость = СтоимостьМатериала * //no регистру Управленческий
ВыборкаРезультатаЗапроса.Количество;
//первая проводка:
Иначе
//Д 62(ДебиторскаяЗадолженность) - К 90 (Капитал)
Движение.Стоимость = 0;
//розничная сумма
КонецЕсли; КонецЦикла;
Движение = Движения.Управленческий.Добавить();
Движенне.СчетДт = ПланыСчетов.Основной.ДебиторскаяЗадолженность;
// записать движения регистров
Движение.СчетКт = ПланыСчетов.Основной.Капитал; Движение.Период =
Движения.ОстаткиМатериалов.Записать();
Дата;
Движения.СтоимостьМатериалов.Записать();
Движение.Сумма = ВыборкаРезультатаЗапроса.Сумма; Движение
Движения.Продажи.Записать();
.СубконтоДтГПланыВидовХарактеристик,ВидыСубконто.Материалы] =
КонецПроцедуры ______________________________________________________ .
ВыборкаРезультатаЗапроса.Номенклатура;
//вторая проводка:
//Д90 (Капитал) - К 41 (Товары) - себестоимость
Поскольку нас интересует только движение материалов, для
Движение = Движения.Управленческий.Добавить(),*
внесения дополнений подойдет тело условия Если ..., в котором мы Движение.СчетДт = ПланыСчетов.Основной.Капитал;
формировали движения по регистрам «ОстаткиМатериалов» и Движение.СчетКт = ПланыСчетов.Основной.Товары;
Движение.Период = Дата;
«СтоимостьМатериалов».
Движение.Сумма = СтоимостьМатериала *
___________________ _________



310 311
Бухгалтерский учет
Использование основных объектов конфигурации


имеющиеся в плане счетов счета, а в колонках - начальное сальдо,
Движение.КоличествоКт = ВыборкаРезультатаЗапроса.Количество;
оборот и конечное сальдо по дебету и кредиту каждого счета.
Движение
.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] = Поэтому нам, для построения такого отчета, понадобятся две
ВыборкаРезультатаЗалроса.Номенклатура-
исходные таблицы: объектная (ссылочная) таблица плана счетов
КонецЕсли;
«Основной» и виртуальная таблица регистра бухгалтерии
«Управленческий.ОстаткиИОбороты»:
В первой проводке мы указываем розничную сумму материала из
документа и субконто дебета, поскольку на счете «Дебиторская
задолженность» ведется учет в разрезе материалов.
Во второй проводке мы указываем стоимость материала,
количество и субконто кредита, поскольку на счете «Товары» ведется
количественный учет в разрезе материалов. Из таблицы «Основной» мы выберем поля «Код» и
«Наименование», а из таблицы «УправленческийОстаткиИОбороты»,
Запустим 1С:Предприятие в режиме отладки, перепроведем
мы выберем следующие поля:
документ ОказаниеУслуги №1 и посмотрим, какие движения он
сформировал по регистру бухгалтерии «Управленческий»:
• «СуммаНачальныйРазвернутыйОстатокДт»,
• «СуммаНачальныйРазвернутыйОстатокКт»,
• «СуммаОборотДт»,
• «СуммаОборотКт»,
• «СуммаКонечныйРазвернутыйОстатокДт»,
• «СуммаКонечныйРазвернутыйОстатокКт»:


После этого перепроведем остальные документы Оказание услуги.

Создание отчета ОборотноСальдоваяВедомость


Т еперь нам осталось только создать отчет для бухгалтерии
OOO «На все руки мастер» и наше знакомство с
использованием регистра бухгалтерии будет закончено.
Единственный отчет, которым пользуется бухгалтерия
нашего OOO - это отчет «Оборотно-сальдовая ведомость».
Для того чтобы сформировать этот отчет, откроем конфигуратор и
создадим новый объект конфигурации Отчет с именем
«ОборотноСальдоваяВедомость». На закладке «Макеты» откроем
конструктор выходной формы, и посмотрим, что нам предлагает
платформа для выбора.
Бухгалтерский отчет «Оборотно-сальдовая ведомость»
представляет собой таблицу, в строках которой перечислены все


313
312
т
Использование основных объектов конфигурации
Бухгалтерский учет

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




Затем на закладке «ОбъединенияЯ1севдонимы» зададим
псевдонимы полей регистра: «СальдоНачДт», «СальдоНачКт»,
«ОборотДт», «ОборотКт», «СальдоКонДт» и СальдоКонКт»:




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




314
315
Использование основных объектов конфигурации



Что нового мы узнали Глава 9. План видов расчета, регистр
расчета
В этой главе мы познакомимся с объектами конфигурации План
видов расчета и Регистр расчета и узнаем об основных понятиях,
] как использовать план видов характеристик дЛя
используемых при создании сложных периодических расчетов.
организации ведения бухгалтерского учета
В конце главы мы создадим план видов расчета и регистр расчета,
____] что такое субконто на основе которых в следующих главах продемонстрируем работу
механизмов периодических расчетов.
] для чего предназначен объект конфигурации План счетов
____] как создать план счетов ____] для чего предназначен
Регистр бухгалтерии ____] как создать регистр бухгалтерии и
настроить параметры
учета ] как создать движения документа по регистру
бухгалтерии
при помощи конструктора движений ] как создать
движения документа по регистру бухгалтерии
средствами встроенного языка ] как получить данные из
регистра бухгалтерии запросом




316 317
План видов расчета, регистр расчета
Использование основных объектов конфигурации


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


В
этой главе мы рассмотрим возможности системы В качестве примера рассмотрим начисление премии за апрель.
1С:Предприятие, которые она предоставляет д Ля автоматизации Премия должна начисляться в размере 10% от суммы, начисленной в
сложных периодических расчетов. качестве оплаты по окладу. Следовательно, необходимо
Такие расчеты используются, прежде всего, при расчете проанализировать все записи о начислениях оплаты по окладу,
заработной платы. Поэтому дальнейшее рассмотрение этих которые попадают в интересующий нас базовый период, а именно
возможностей мы будем строить на примере расчета заработной платы апрель. Допустим, общая сумма таких начислений составила 8000
сотрудников, которые работают в нашем OOO «На все руки мастер». рублей - в этом случае премия должна быть начислена в размере 800
рублей:
В общем случае, сумма заработной платы сотрудника складывается
из множества частей (например, оплата по окладу, премии, штрафы,
оплаты по больничному листу, разовые выплаты и т.д.). Каждая из
этих частей рассчитывается по некоторому алгоритму, присущему Зависимость премии от оклада по базовому периоду
только этой части. Например, сумма штрафа может определяться
Базовый период
просто фиксированной суммой, сумма премии может рассчитываться
как процент от оклада, а сумма оплаты по окладу рассчитывается
исходя из количества рабочих дней в месяце и количества дней,

<<

стр. 5
(всего 11)

СОДЕРЖАНИЕ

>>