АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Пока ВыборкаРезультатаЗапроса.Следующий() Цикл

Читайте также:

    КонецЦикла;

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

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

    Пока ВыборкаРезультатаЗапроса.Следующий() Цикл

     

    // Проверить остаток при оперативном проведении.

    Если Режим = РежимПроведенияДокумента.Оперативный Тогда

    Если ВыборкаРезультатаЗапроса.ВидНоменклатуры =

    Перечисления.ВидыНоменклатуры.Материал Тогда

    Остаток =?(ВыборкаРезультатаЗапроса.КоличествоНаСкладе = Null, 0,

    ВыборкаРезультатаЗапроса.КоличествоНаСкладе);

    Если Остаток < ВыборкаРезультатаЗапроса.Количество Тогда

    Сообщить("Материала" + СокрЛП(ВыборкаРезультатаЗапроса.Номенклатура) + "имеется только" + Остаток);

    Отказ = Истина;

    Возврат;

    КонецЕсли;

    КонецЕсли;

    КонецЕсли;

    КонецЦикла;

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

    КонецЕсли;

    // Сформировать движения.

    Если ВыборкаРезультатаЗапроса.ВидНоменклатуры =

    Перечисления.ВидыНоменклатуры.Материал Тогда

    // Регистр ОстаткиМатериалов Расход

    Движение = Движения.ОстаткиМатериалов.Добавить();

    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

    Движение.Период = Дата;

    Движение.Материал = ВыборкаРезультатаЗапроса.Номенклатура;

    Движение.Склад = Склад;

    Движение.Количество = ВыборкаРезультатаЗапроса.Количество;

    // Регистр СтоимостьМатериалов Расход.

    Движение = Движения.СтоимостьМатериалов.Добавить();

    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;

    Движение.Период = Дата;

    Движение.Материал = ВыборкаРезультатаЗапроса.Номенклатура;

    // Рассчитать стоимость материала.

    СтоимостьМатериала =?(ВыборкаРезультатаЗапроса.КоличествоОстаток = Null, 0,

    ВыборкаРезультатаЗапроса.СтоимостьОстаток /

    ВыборкаРезультатаЗапроса.КоличествоОстаток);

    Движение.Стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество;

    КонецЕсли;

    // Регистр Продажи

    Движение = Движения.Продажи.Добавить();

    Движение.Период = Дата;

    Движение.Номенклатура = ВыборкаРезультатаЗапроса.Номенклатура;

    Движение.Клиент = Клиент;

    Движение.Мастер = Мастер;

    Движение.Количество = ВыборкаРезультатаЗапроса.Количество;

    Движение.Выручка = ВыборкаРезультатаЗапроса.Сумма;

    Если ВыборкаРезультатаЗапроса.ВидНоменклатуры =

    Перечисления.ВидыНоменклатуры.Материал Тогда

    Движение.Стоимость = СтоимостьМатериала * ВыборкаРезультатаЗапроса.Количество;

    Иначе

    Движение.Стоимость = 0;

    КонецЕсли;

    КонецЦикла;

    А сразу после цикла добавьте запись движений регистров:

    КонецЦикла;

    // Записать движения регистров

    Движения.ОстаткиМатериалов.Записать();

    Движения.СтоимостьМатериалов.Записать();

    Движения.Продажи.Записать();

     

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

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

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

     

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

    Предположим, в учебной информационной базе необходимо иметь механизм, позволяющий пользователю произвольным образом описывать материалы, а также вести учет в разрезе всех тех описаний, которые могут быть заданы пользователем. Описывать материалы пользователь сможет следующим образом: для каждого материала будет возможность создать некоторые (произвольные) характеристики этого материала (например, цвет, производитель и пр.). Затем, при поступлении материалов, можно будет задать конкретные значения интересующих характеристик (например, при поступлении электрических кабелей можно будет указать, что они белого цвета и их сечение равно 2,5 мм2, а при поступлении резиновых шлангов указать, что они черного цвета и произведены фирмой "Fagumit"). В дальнейшем пользователь всегда сможет получить информацию о том, сколько и каких материалов есть на складе, скажем, белого цвета, или сколько было израсходовано черных резиновых шлангов.

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

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

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

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

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

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

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

    Объект конфигурации План видов характеристик используется во взаимосвязи с другими объектами конфигурации. Например, элементы объекта конфигурации План видов характеристик будут хранить виды характеристик, которыми в принципе можно описывать материалы. Элементы объекта конфигурации Справочник, подчиненного справочнику Номенклатура, будут идентифицировать партии материалов с некоторым фиксированным набором значений характеристик. А объект конфигурации Регистр сведений будет хранить соответствие конкретных значений характеристик некоторому варианту материала (рис. 182).

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

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

     

    Рис. 182. Логическая связь объектов


    1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |

    Поиск по сайту:



    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)