КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Узнай больше! оследнее, что нам осталось - доработать документ «ПриходнаяНакладная»
О П оследнее, что нам осталось - доработать документ «ПриходнаяНакладная». Для того чтобы при приходовании товаров пользователь мог указывать набор свойств для каждого приходуемого материала, добавим в табличную
Использование основных объектов конфигурации План видов характеристик
элементов справочника «ВариантыНоменклатуры», подчиненных материалу, выбранному в колонке «Материал». В заключение откроем процедуру обработки проведения в модуле документа и добавим к формируемым движениям присвоение значения измерению «НаборСвойств»:
// регистр ОстаткиМатериалов Приход Движение = Движения.ОстаткиМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Материал = ТекСтрокаМатериалы.Материал; Движение.НаборСвойств = ТекСтрокаМатериалы.НаборСвойств; Движение.Склад = Склад; Движение.Количество = ТекСтрокаМатериалы.Количество; КонецЦикла; Для Каждого ТекСтрокаМатериалы Из Материалы Цикл // регистр СтоимостьМатериалов Приход Движение = Движения.СтоимостьМатериалов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Материал = ТекСтрокаМатериалы.Материал; Движение.Стоимость = ТекСтрокаМатериалы.Сумма; КонецЦикла; // записываем движения регистров Движения.ОстаткиМатериалов.Записать(); Движения.СтоимостьМатериалов.Записать(); Движения.Управленческий.Записать(); //}}_KOHCTPУКТР_ДВИЖЕНИЙ_PEГИCTPOB КонецПроцедуры
Создание наборов свойств
Для поля ввода, расположенного в колонке «НаборСвойств» снова воспользуемся свойством «Связь по владельцу» ЭлементыФормы.Материалы.ТекущиеДанные.Материал. Теперь при выборе в этом поле ввода будет всегда открываться список ткроем элемент справочника «Номенклатура» - «Кабель электрический». Перейдем на закладку «Свойства» и создадим набор свойств этого элемента под названием
План видов характеристик
• «Цвет» - «Белый», • «Сечение, мм2» - 2,5: Этот набор свойств будет называться «Польша» и состоять из следующих характеристик: • «Цвет» - «Черный», • «Производитель» - «Fagumit»:
Затем создадим набор свойств для элемента справочника «Номенклатура» - «Шланг резиновый». Теперь откроем документ ПриходнаяНакладная №2 и укажем, что был закуплен белый электрический кабель в количестве 2 шт. и польский резиновый шланг.
Использование основных объектов конфигурации План видов характеристик
Затем скопируем первую строку документа и укажем, что был закуплен еще и черный электрический кабель в количестве 3 шт. (в процессе ввода нам придется создать еще один набор свойств для электрического кабеля - «черный», у которого «Цвет» - «Черный» и «Сечение» - 2,5):
Проведем документ и посмотрим на движения документа по регистру «ОстаткиМатериалов»:
Отчет ОстаткиМатериаловПоСвойствам
ля полного завершения картины мы создадим отчет, который будет показывать нам наличие материалов с теми или иными свойствами. Создадим новый объект конфигурации Отчет и назовем его «ОстаткиМатериаловПоСвойствам». Запустим конструктор выходной формы, и займемся конструированием запроса. Исходными данными для нашего запроса будут являться материал, свойство и значение свойства. Причем нужно предусмотреть возможность того, что материал выбираться не будет, а будут указываться только свойство и его значение. Таким образом, алгоритм получения результирующих данных будет распадаться на две части: сначала, по указанным свойству и его значению, нам нужно будет выбрать все наборы свойств из регистра сведений «ЗначенияСвойствНоменклатуры», которым сопоставлены указанно свойство с указанным значением. Затем, для выбранных наборов свойств и их владельцев нам нужно будет получить остатки и обороты из регистра накопления «ОстаткиМатериалов». Для того чтобы обеспечить такую «двухуровневую» выборку данных, мы воспользуемся возможностью создания вложенных запросов. Сначала мы создадим вторую часть нашего алгоритма - запрос к регистру накопления «ОстаткиМатериалов».
План видов характеристик
Из виртуальной таблицы регистра накопления ;<ОстаткиМатериалов.ОстаткиИОбороты» выберем следующие поля: • «ОстаткиМатериаловОстаткиИОбороты.Материал», • «ОстаткиМатериаловОстаткиИОбороты.НаборСвойств, • «ОстаткиМатериаловОстаткиИОбороты.КоличествоНачальны • «ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход», • «ОстаткиМатериаловОстаткиИОбороты.КоличествоРасход», • «ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечный
После этого на закладке «Объединения/Псевдонимы» псевдонимы числовых полей без слова «Количество»: зададим
На закладке «Отчет» сбросим флаг «Использовать построитель отчета», а на закладке «ВыходнаяФорма» укажем, что не нужно редактировать в форме параметр «СписокСвойств». На этом создание первого запроса завершено. Нажмем «ОК». Откроем модуль формы и удалим элементы текста, которые нам не «ДействияФормыОстаткиМатериаловПоСвойствамСформировать»
План видов характеристик
вызове процедуры //Запрос.УстановитьПараметр("СписокСвойств",СписокСвойств); Результат = Запрос.Выполнить();
ТабДок = ЭлементыФормы.ПолеТабличногоДокумента; ОстаткиМатериаловПоСвойствам(ТабДок); //}}КОНСТРУКТОР_ВЫХОДНИЫХ ФОРМ_ПРОЦЕДУРА_ВЫЗОВА КонецПроцедуры
Макет = ОтчетОбъект.ПолучитьМакет("ОстаткиМатериаловПоСвойствам"); Запрос = Новый Запрос; Запрос.Текст * "ВЫБРАТЬ |ОстаткиМатериаловОстаткиИОбороты.Материал, |ОстаткиМатериаловОстаткиИОбороты.Материал.Представление, |ОстаткиМатериаловОстаткиИОбороты. НаборСвойств, |ОстаткиМатериаловОстаткиИОбороты.НаборСвойств.Представление, |ОстаткиМатериаловОстаткиИОбороты.КоличествоНачальныйОстаток |КАК НачальныйОстаток, |ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход |КАК Приход, |ОстаткиМатериаловОстаткиИОбороты.КоличествоРасход |КАК Расход, |ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечныйОстаток |КАК КонечныйОстаток |ИЗ |РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты(,,,, |НаборСвойств В (&СписокСвойств)) |КАК ОстаткиМатериаловОстаткиИОбороты"; ^______ Теперь мы можем перейти к созданию вложенного запроса, который будет передаваться в условие, заданное в параметре виртуальной таблицы. Обладая достаточными навыками написания запросов, мы могли бы вручную, вместо «&СписокСвойств» написать текст вложенного запроса. Но, поскольку мы только осваиваем язык запросов, воспользуемся более комфортным способом: создадим текст вложенного запроса при помощи конструктора, а затем просто скопируем его в нужное нам место модуля. Для этого выполним команду Текст | Конструктор запроса... В качестве исходных данных вложенного запроса выберем таблицу регистра сведений «ЗначенияСвойствНоменклатуры». Из нее выберем единственное поле - «ЗначенияСвойствМатериалов.НаборСвойств». Зададим условия выборки. Прежде всего, владелец набора свойств должен быть равен переданному в параметре «Материал» материалу:
Затем укажем, что вид свойства должен быть равен переданному в параметре «ВидСвойства» значению:
План видов характеристик
| из I РегистрСведений.ЗначенияСвойствНоменклатуры I КАК ЗначенияСвойствНоменклатуры I I ГДЕ I ЗначенияСвойствНоменклатуры.НаборСвойств.Владелец = &Материал И I ЗначенияСвойствНоменклатуры.ВидСвойства = &ВидСвойства И I ЗначенияСвойствНоменклатуры.Значение = &Значение)) | КАК ОстаткиМатериаловОстаткиИОбороты"; Результат = Запрос.Выполнить();
Макет = ОтчетОбъект.ПолучитьМакетС'ОстаткиМатериаловПоСвойствам"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОстаткиМатериаловОстаткиИОбороты.Материал, | ОстаткиМатериажовОстаткиИОбороты.Материал.Представление, | ОстаткиМатериаловОстаткиИОбороты.НаборСвойств, | ОстаткиМатериаловОстаткиИОбороты.НаборСвойств.Представление, | ОстаткиМатериаловОстаткиИОбороты.КоличествоНачальныйОстаток | КАК НачальныйОстаток, | ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход | КАК Приход, | ОстаткиМатериаловОстаткиИОбороты.КоличествоРасход | КАК Расход, | ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечныйОстаток | КАК КонечныйОстаток |ИЗ | РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты(,,,, | НаборСвойств В (ВЫБРАТЬ |ЗначенияСвойствНоменклатуры. НаборСвойств Маленькая доработка, которую нам останется сделать, будет заключаться в том, чтобы предусмотреть динамическое формирование текста запроса в зависимости от того, выбрано пользователем значение материала, или нет:
Макет = ОтчетОбъект.ПолучитьМакетС'ОстаткиМатериаловПоСвойствам"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОстаткиМатериаловОстаткиИОбороты.Материал, | ОстаткиМатериаловОстаткиИОбороты.Материал.Представление, | ОстаткиМатериаловОстаткиИОбороты.НаборСвойств, | ОстаткиМатериаловОстаткиИОбороты.НаборСвойств.Представление, | ОстаткиМатериаловОстаткиИОбороты, КоличествоНачальныйОстаток | КАК НачальныйОстаток, | ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход | КАК Приход, | ОстаткиМатериаловОстаткиИОбороты.КоличествоРасход | КАК Расход, | ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечныйОстаток | КАК КонечныйОстаток |И3 | РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты(,,,, | НаборСвойствВ (ВЫБРАТЬ | ЗначенияСвойствНоменклатуры.НаборСвойств | ИЗ | РегистрСведений.ЗначенияСвойствНоменклатуры | КАК ЗначенияСвойствНоменклатуры
План видов характеристик
l"; Если Не Материал.ПустаяО тогда Запрос.Текст = Запрос.Текст + "ЗначенияСвойствНоменклатуры.НаборСвойств.Владелец = Материал И |"; КонецЕсли; Запрос.Текст = Запрос.Текст + ЗначенияСвойствНоменклатуры.ВидСвойства = &ВидСвойства И I КАК ОстаткиМатериаловОстаткиИОбороты"; Результат = Запрос.Выполнить();
Если Не Материал.Пустая() тогда Запрос.Текст = Запрос.Текст + "ЗначенияСвойствНоменклатуры.НаборСвойств.Владелец = &Материал И КонецЕсли; Запрос.Текст = Запрос.Текст + " ЗначенияСвойствНоменклатуры.ВидСвойства = &ВидСвойства И | ЗначенияСвойствНоменклатуры.Значение = &Значение)) | КАК ОстаткиМатериаловОстаткийОбороты"; Если Не Материал.Пустая() тогда Запрос.УстановитьПараметр('' Материал", Материал); КонецЕсли; Запрос.УстановитьПараметр("ВидСвойства", ВидСвойства); Запрос.УстановитьПараметр('Значение", Значение); Результат = Запрос.Выполнить();
Макет = ОтчетОбъект.ПолучитьМакет("ОстаткиМатериаловПоСвойствам"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЪ |ОстаткиМатериаловОстаткиИОбороты.Материал, |ОстаткиМатериаловОстаткиИОбороты.Материал.Представление, |ОстаткиМатериаловОстаткиИОбороты.НаборСвойств, |ОстаткиМатериаловОстаткиИОбороты.НаборСвойств.Представление, |ОстаткиМатериаловОстаткиИОбороты.КоличествоНачальныйОстаток |КАК НачальныйОстаток, |ОстаткиМатериаловОстаткиИОбороты.КоличествоПриход |КАК Приход, |ОстаткиМатериаловОстаткиИОбороты.КояичествоРасход |КАК Расход, |ОстаткиМатериаловОстаткиИОбороты.КоличествоКонечныйОстаток |КАК КонечныйОстаток |ИЗ |РегистрНакопления.ОстаткиМатериалов.ОстаткиИОбороты(,,,, |НаборСвойств В (ВЫБРАТЬ |ЗначенияСвойствНоменклатуры.НаборСвойств |ИЗ |РегистрСведений.ЗначенияСвойствНоменклатуры |КАК ЗначенияСвойствНоменклатуры |ГДЕ
План видов характеристик
Откроем форму отчета и разместим на ней три поля ввода: • «Материал» с типом СправочникСсылка.Номенклатура, • «ВидСвойства» с типом • «Значение» с типом
Для поля ввода «Значение» установим связь по типу с реквизитом «ВидСвойства». А для поля ввода «ВидСвойства» создадим обработчик события «ПриИзменении»: На этом создание отчета завершено. Запустим 1С:Предприятие в режиме отладки и посмотрим, какие результаты можно получить с помощью нашего отчета. Сначала посмотрим, какие у нас есть материалы с сечением 2,5 мм2:
Значение = ВидСвойства.ТипЗначения.ПривестиЗначение(Значение); КонецПроцедуры
Что нового мы узнали План видов характеристик
Таким образом, вы убедились в том, что при использовании данной логической схемы мы имеем теперь возможность вести учет материалов в произвольном количестве разрезов свойств и их значений. Следует заметить, что пример, рассмотренный нами в этой главе, не является законченным решением для данной конфигурации. Мы лишь продемонстрировали возможность ведения такого учета. Для того чтобы наша конфигурация могла полноценно использовать свойства материалов, необходимо внести соответствующие изменения в остальные регистры, документы и некоторые отчеты. - для чего предназначен объект конфигурации План видов характеристик - в чем принципиальное отличие плана вида характеристик от справочника - что такое тип значения характеристик - зачем нужны дополнительные значения характеристик - как, используя план видов характеристик, организовать учет по переменному количеству характеристик - как создать план видов характеристик - как добавить новую панель в форму и добавить страницы - как перенести элементы управления в новую панель - что такое связь по типу - что такое связь по владельцу - как обработать конфликтные ситуации при работе со связью по типу - как назначить обработчик события изменения данных - как ограничить выборку виртуальной таблицы результатом вложенного запроса
Бухгалтерский учет
В этой главе мы займемся тем, что проиллюстрируем возможность ведения бухгалтерского учета средствами 1С:Предприятия. Для этого мы используем уже знакомый нам план видов характеристик и два новых объекта конфигурации - план счетов и регистр бухгалтерии. Регистр бухгалтерии будет использоваться нами для накопления данных о совершенных хозяйственных операциях. С помощью плана счетов мы будем описывать счета, в разрезе которых ведется учет, а план видов характеристик будет служить для описания объектов аналитического учета, в разрезе которых должен вестись учет на счетах. Сразу оговоримся, что план счетов, который мы будем использовать в нашей учебной конфигурации, очень сильно упрощен. Он содержит всего несколько условных счетов, которые, однако, позволят нам познакомиться с основными методами организации бухгалтерского учета средствами 1С:Предприятия. Объект конфигурации План видов характеристик
бъект конфигурации План видов характеристик был подробно рассмотрен нами в предыдущей главе (см. «Объект конфигурации План видов характеристик» на странице 254), поэтому сейчас мы проиллюстрируем только то, как используется этот объект в контексте бухгалтерского учета. Бухгалтерский учет, как правило, подразумевает ведение аналитического учета на большинстве из счетов. Для обозначения объектов аналитического учета мы будем использовать термин субконто. Так вот, частным случаем использования плана видов характеристик является использование его для описания субконто, т.е. все объекты аналитического учета, в разрезе которых должен вестись учет на тех или иных счетах, описываются в соответствующем плане видов характеристик и там же задаются типы значений, которые могут принимать те или иные субконто. Создание объекта конфигурации План видов характеристик ВидыСубконто
риступим к созданию плана видов характеристик, который будет содержать описания объектов аналитического учета -субконто. Откроем конфигуратор и создадим новый объект конфигурации План видов характеристик. Зададим его имя -«ВидыСубконто». Поскольку нам понадобится некий вспомогательный справочник, в котором пользователи будут осуществлять «свободное творчество» по созданию значений новых объектов аналитического учета - создадим объект конфигурации Справочник и назовем его «Субконто».
Бухгалтерский учет
Закроем окно редактирования справочника и вернемся к нашему плану видов характеристик. Зададим тип значения характеристик. Для этого нажмем на кнопку с многоточием и создадим составной тип данных, в который будут входить типы: • СправочникСсылка.Клиенты, • СправочникСсылка.Номенклатура, • СправочникСсылка.Субконто:
Бухгалтерия нашего OOO «На все руки мастер» ведет учет движения денежных средств только в разрезе материалов и клиентов, но не исключено, что в дальнейшем понадобится дополнительная аналитика (поэтому мы используем и справочник «Субконто»). Обратите внимание, что тот справочник, который будет использован в качестве дополнительных значений характеристик, тоже должен входить в составной тип данных типа значений характеристик, иначе конфигуратор выдаст сообщение об ошибке. Затем укажем, что дополнительные значения характеристик будут находиться в справочнике «Субконто». После этого перейдем на закладку «Прочее» и начнем ввод предопределенных значений плана видов характеристик. Создадим предопределенный вид субконто: «Материалы», с кодом «00001» и типом СправочникСсылка.Номенклатура, и затем
Бухгалтерский учет
На этом создание видов субконто завершено, и мы можем перейти к знакомству со следующим объектом конфигурации, который будет использован нами, - планом счетов. Объект конфигурации План счетов
бъект конфигурации План счетов является прикладным объектом и предназначен для описания структуры хранения информации о совокупности синтетических счетов предприятия, которые предназначены для группировки данных о его хозяйственной деятельности. На основе объекта конфигурации План счетов платформа создает в базе данных структуры, в которых может храниться информация о том, какие счета и каким образом будет использовать предприятие. Это может быть система бухгалтерских счетов, установленная государством, план управленческих счетов или произвольный набор счетов, используемых для анализа тех или иных видов деятельности предприятия. План счетов в системе 1С:Предприятие поддерживает иерархию субсчетов: к каждому счету первого уровня может быть открыто несколько субсчетов, которые в свою очередь могут иметь свои субсчета - и так далее. По любому счету или субсчету может вестись аналитический учет в разрезе субконто, описанных в плане видов характеристик. Связь между планом счетов и планов видов характеристик задается разработчиком на этапе конфигурирования. Для описания используемых субконто система создает в плане счетов специальную табличную часть ВидыСубконто, которая не видна в конфигураторе (но доступна средствами встроенного языка). Для каждого счета есть возможность задать несколько видов учета (например, количественный и валютный). Виды учета задаются при помощи подчиненных объектов конфигурации «Признак учета». Также существует возможность определить несколько видов учета субконто (например, суммовой, валютный или количественный). Виды учета субконто задаются при помощи подчиненных объектов конфигурации «Признак учета субконто». Помимо всего вышеперечисленного, каждый счет может иметь набор свойств, которые задаются в качестве реквизитов объекта конфигурации План счетов. Они позволяют определять уникальные свойства элементов плана счетов (например, реквизит «ЗапретитьИспользоватьВПроводках»).
Бухгалтерский учет
О структуре объектов встроенного языка, предназначенных для Создание объекта конфигурации План счетов Основной
риступим к созданию плана счетов OOO «На все руки мастер». Как мы говорили в начале этой главы, бухгалтерский учет в нашем OOO сильно упрощен и план счетов, по которому работает бухгалтерия, содержит всего три счета: «Товары», «Капитал» и «Дебиторская задолженность». Откроем конфигуратор и создадим новый объект конфигурации План счетов. Присвоим ему имя - «Основной». На закладке «Данные» создадим признак учета «Количественный». Перейдем на закладку «Субконто» и укажем, что субконто для этого плана счетов будут находиться в плане видов характеристик «ВидыСубконто». Максимальное количество субконто на счете установим равным двум. Также создадим признак учета субконто «Количественный» и сразу откроем закладку «Прочее». Нажмем кнопку «Предопределенные» и создадим четыре предопределенных счета: • «Товары», код 41, активный, с количественным учетом в разрезе материалов:
Бухгалтерский учет
• «Капитал», с кодом 90, активно/пассивный:
«Дебиторская задолженность», код 62, активно/пассивный, с учетом в разрезе клиентов: В результате план счетов нашего OOO «На все руки мастер» будет выглядеть следующим образом:
Для плана счетов можно установить свойство «Автопорядок no коду». Это свойство используется для того, чтобы указать системе, что упорядочивание no полю Порядок должно всегда подставляться в
---------------- ■------------------------------------------------------------------------------------------------------------------------------------------ " ' ^ ~^ тех случаях, когда пользователь или разработчик выбирает упорядочивание no коду. Его нужно использовать, прежде всего, тогда, когда с точки зрения пользователя нужноупорядочивать план счетов no коду с учетом разделителей кода счета. Например, если счета «10.11» и «10.2» упорядочивать no коду счета, то счета будут располагаться так: «10.11» «10.2» Это правильно с точки зрения сортировки строк, но не соответствует логическому смыслу кодов. Но если заданы значения поля Порядок «10.11» и «10. 2» и установлено свойство «Автопорядок no коду», то при выборе упорядочивания no коду пользователь будет, фактически, получать порядок, учитывающий разделители: «10.2»
Дата добавления: 2014-11-16; Просмотров: 832; Нарушение авторских прав?; Мы поможем в написании вашей работы! |