Здравствуйте. Отчитываюсь по 8ДЗ.
Для осуществления привязки менеджеров к клиентам сделала независимый РС с периодичностью день. Измерение Контрагент, Ресурс Менеджер.
Для того чтобы при создании нового документа КонтактСКлиентом в реквизит подставлялся текущий пользователь в модуле формы написала такой код:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Объект.Ссылка.Пустая()
Тогда
Объект.Менеджер = ОМСервер.НайтиМенеджера()
КонецЕсли;
КонецПроцедуры
В общем модуле:
&НаСервере
Функция НайтиМенеджера() Экспорт
ИмяПользователя = ИмяПользователя();
Пользователь = Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя);
Возврат Пользователь;
КонецФункции
При проведении документа необходимо выполнять анализ, если происходит первый контакт с контрагентом, то необходимо в качестве менеджера для контрагента установить значение, указанное в документе. Реализация:
В модуле объекта КонтактСКлиентом
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| МенеджерКлиентСрезПоследних.Менеджер,
| МенеджерКлиентСрезПоследних.Контрагент
|ИЗ
| РегистрСведений.МенеджерКлиент.СрезПоследних(&Дата, Контрагент = &Контрагент) КАК МенеджерКлиентСрезПоследних”;
Запрос.УстановитьПараметр(“Дата”, Дата);
Запрос.УстановитьПараметр(“Контрагент”, Контрагент);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Если НЕ ВыборкаДетальныеЗаписи.Следующий()
Тогда
Набор = РегистрыСведений.МенеджерКлиент.СоздатьНаборЗаписей();
Набор.Отбор.Контрагент.Установить(Контрагент);
Запись = Набор.Добавить();
Запись.Менеджер = Менеджер;
Запись.Контрагент = Контрагент;
Запись.Период = Дата;
Набор.Записать();
КонецЕсли;
КонецПроцедуры
Обеспечьте хранение цен на товары. При этом необходимо предусмотреть ведение различных прайс-листов. Создала РС независимый, периодичность в течении дня. Измерения – Номенклатура, ТипЦен, Ресурс – Цена.
Работа над удобством пользователя.
Создала реквизит ТипЦен.
Для автоматической подстановки цен при выборе номенклатуры в модуле документа Поступление товаров и услуг
Процедура ТоварыНоменклатураПриИзменении(Элемент)
Элементы.Товары.ТекущиеДанные.Цена = ОМСервер.ПолучитьЦену(Элементы.Товары.ТекущиеДанные.Номенклатура, Объект.ТипЦен)
КонецПроцедуры
Функция ПолучитьЦену(Номенклатура, ТипЦен) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.ТипЦен,
| ЦеныНоменклатуры.Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|ГДЕ
| ЦеныНоменклатуры.Номенклатура = &Номенклатура
| И ЦеныНоменклатуры.ТипЦен = &ТипЦен”;
Если ВыборкаДетальныеЗаписи.Следующий()
Тогда
Возврат ВыборкаДетальныеЗаписи.Цена;
КонецЕсли;
КонецФункции
Пересчет суммы по цене и количеству.
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
Элементы.Товары.ТекущиеДанные.Сумма = Элементы.Товары.ТекущиеДанные.Цена*Элементы.Товары.ТекущиеДанные.Количество
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
Элементы.Товары.ТекущиеДанные.Сумма = Элементы.Товары.ТекущиеДанные.Цена*Элементы.Товары.ТекущиеДанные.Количество
КонецПроцедуры
При изменении суммы пересчет или цены или количества.
Процедура ТоварыСуммаПриИзменении(Элемент)
Если Строка(ОМСервер.ПолучитьКонстанту()) = “Цена”
Тогда Элементы.Товары.ТекущиеДанные.Цена = Элементы.Товары.ТекущиеДанные.Сумма/Элементы.Товары.ТекущиеДанные.Количество
Иначе Элементы.Товары.ТекущиеДанные.Количество = Элементы.Товары.ТекущиеДанные.Сумма/Элементы.Товары.ТекущиеДанные.Цена
КонецЕсли;
КонецПроцедуры
Функция ПолучитьКонстанту() Экспорт
Возврат Константы.ВариантПересчета.Получить();
КонецФункции
Тоже самое сделала для документа реализация товаров и услуг.
Создайте регистр для хранения остатков товаров, номенклатура хранится в разрезе качества. Количество в регистре хранится в базовых единицах измерения.
Создала РН с видом Остатки. Измерения –Номенклатура, Степень Брака, ресурсы – Количество.
Создайте объект для хранения данных о закупках от поставщиков.
Создала РН с видом обороты. Измерения – поставщик, номенклатура, реквизиты – количество, сумма. Обеспечьте заполнение данных объекта при проведении документов.
В модуле объекта поступление товаров и услуг
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиТоваров.Записывать = Истина;
Движения.Закупки.Записывать = Истина;
ЗАПРОС = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| ПоступлениеТоваровИУслугТовары.СтепеньБрака,
| ПоступлениеТоваровИУслугТовары.Номенклатура,
| ПоступлениеТоваровИУслугТовары.Количество * ПоступлениеТоваровИУслугТовары.ЕдиницаИзмерения.Коэффициент КАК Количество,
| ПоступлениеТоваровИУслугТовары.Сумма,
| ПоступлениеТоваровИУслугТовары.Ссылка.Дата КАК Период,
| ПоступлениеТоваровИУслугТовары.Ссылка.Контрагент КАК Поставщик
|ИЗ
| Документ.ПоступлениеТоваровИУслуг.Товары КАК ПоступлениеТоваровИУслугТовары
|ГДЕ
| ПоступлениеТоваровИУслугТовары.Ссылка = &Ссылка”;
Запрос.УстановитьПараметр(“Ссылка”, Ссылка);
Таблица = Запрос.Выполнить().Выгрузить();
Движения.ОстаткиТоваров.Загрузить(Таблица);
Движения.Закупки.Загрузить(Таблица);
КонецПроцедуры
Необходимо реализовать проверку, которая будет запрещать изменять базовую единицу измерения для номенклатуры, если по ней есть движения в регистрах.
В справочнике Номенклатура, в модуле объекта
Процедура ПередЗаписью(Отказ)
Если ВыборкаДетальныеЗаписи.Следующий()
Тогда
Сообщить (“По этой номенклатуре уже есть движения”);
Отказ = Истина
КонецЕсли;
КонецПроцедуры
Создала журнал документов.
В модуле формы Поступление товаров и услуг
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаДокумента = Товары.Итог(“Сумма”);
КонецПроцедуры
Все материалы этого сайта являются составной частью Базового / Продвинутого курсов по программированию - и являются объектами авторского и имущественного права.
Любое их распространение без письменного согласования с авторами запрещено.
Здравствуйте. Отчитываюсь по 8ДЗ.
Для осуществления привязки менеджеров к клиентам сделала независимый РС с периодичностью день. Измерение Контрагент, Ресурс Менеджер.
Для того чтобы при создании нового документа КонтактСКлиентом в реквизит подставлялся текущий пользователь в модуле формы написала такой код:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Объект.Ссылка.Пустая()
Тогда
Объект.Менеджер = ОМСервер.НайтиМенеджера()
КонецЕсли;
КонецПроцедуры
В общем модуле:
&НаСервере
Функция НайтиМенеджера() Экспорт
ИмяПользователя = ИмяПользователя();
Пользователь = Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя);
Возврат Пользователь;
КонецФункции
При проведении документа необходимо выполнять анализ, если происходит первый контакт с контрагентом, то необходимо в качестве менеджера для контрагента установить значение, указанное в документе. Реализация:
В модуле объекта КонтактСКлиентом
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| МенеджерКлиентСрезПоследних.Менеджер,
| МенеджерКлиентСрезПоследних.Контрагент
|ИЗ
| РегистрСведений.МенеджерКлиент.СрезПоследних(&Дата, Контрагент = &Контрагент) КАК МенеджерКлиентСрезПоследних”;
Запрос.УстановитьПараметр(“Дата”, Дата);
Запрос.УстановитьПараметр(“Контрагент”, Контрагент);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Если НЕ ВыборкаДетальныеЗаписи.Следующий()
Тогда
Набор = РегистрыСведений.МенеджерКлиент.СоздатьНаборЗаписей();
Набор.Отбор.Контрагент.Установить(Контрагент);
Запись = Набор.Добавить();
Запись.Менеджер = Менеджер;
Запись.Контрагент = Контрагент;
Запись.Период = Дата;
Набор.Записать();
КонецЕсли;
КонецПроцедуры
Обеспечьте хранение цен на товары. При этом необходимо предусмотреть ведение различных прайс-листов. Создала РС независимый, периодичность в течении дня. Измерения – Номенклатура, ТипЦен, Ресурс – Цена.
Работа над удобством пользователя.
Создала реквизит ТипЦен.
Для автоматической подстановки цен при выборе номенклатуры в модуле документа Поступление товаров и услуг
Процедура ТоварыНоменклатураПриИзменении(Элемент)
Элементы.Товары.ТекущиеДанные.Цена = ОМСервер.ПолучитьЦену(Элементы.Товары.ТекущиеДанные.Номенклатура, Объект.ТипЦен)
КонецПроцедуры
Функция ПолучитьЦену(Номенклатура, ТипЦен) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| ЦеныНоменклатуры.Номенклатура,
| ЦеныНоменклатуры.ТипЦен,
| ЦеныНоменклатуры.Цена
|ИЗ
| РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|ГДЕ
| ЦеныНоменклатуры.Номенклатура = &Номенклатура
| И ЦеныНоменклатуры.ТипЦен = &ТипЦен”;
Запрос.УстановитьПараметр(“Номенклатура”, Номенклатура);
Запрос.УстановитьПараметр(“ТипЦен”, ТипЦен);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий()
Тогда
Возврат ВыборкаДетальныеЗаписи.Цена;
КонецЕсли;
КонецФункции
Пересчет суммы по цене и количеству.
&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
Элементы.Товары.ТекущиеДанные.Сумма = Элементы.Товары.ТекущиеДанные.Цена*Элементы.Товары.ТекущиеДанные.Количество
КонецПроцедуры
&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
Элементы.Товары.ТекущиеДанные.Сумма = Элементы.Товары.ТекущиеДанные.Цена*Элементы.Товары.ТекущиеДанные.Количество
КонецПроцедуры
При изменении суммы пересчет или цены или количества.
Процедура ТоварыСуммаПриИзменении(Элемент)
Если Строка(ОМСервер.ПолучитьКонстанту()) = “Цена”
Тогда Элементы.Товары.ТекущиеДанные.Цена = Элементы.Товары.ТекущиеДанные.Сумма/Элементы.Товары.ТекущиеДанные.Количество
Иначе Элементы.Товары.ТекущиеДанные.Количество = Элементы.Товары.ТекущиеДанные.Сумма/Элементы.Товары.ТекущиеДанные.Цена
КонецЕсли;
КонецПроцедуры
Функция ПолучитьКонстанту() Экспорт
Возврат Константы.ВариантПересчета.Получить();
КонецФункции
Тоже самое сделала для документа реализация товаров и услуг.
Создайте регистр для хранения остатков товаров, номенклатура хранится в разрезе качества. Количество в регистре хранится в базовых единицах измерения.
Создала РН с видом Остатки. Измерения –Номенклатура, Степень Брака, ресурсы – Количество.
Создайте объект для хранения данных о закупках от поставщиков.
Создала РН с видом обороты. Измерения – поставщик, номенклатура, реквизиты – количество, сумма. Обеспечьте заполнение данных объекта при проведении документов.
В модуле объекта поступление товаров и услуг
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиТоваров.Записывать = Истина;
Движения.Закупки.Записывать = Истина;
ЗАПРОС = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| ПоступлениеТоваровИУслугТовары.СтепеньБрака,
| ПоступлениеТоваровИУслугТовары.Номенклатура,
| ПоступлениеТоваровИУслугТовары.Количество * ПоступлениеТоваровИУслугТовары.ЕдиницаИзмерения.Коэффициент КАК Количество,
| ПоступлениеТоваровИУслугТовары.Сумма,
| ПоступлениеТоваровИУслугТовары.Ссылка.Дата КАК Период,
| ПоступлениеТоваровИУслугТовары.Ссылка.Контрагент КАК Поставщик
|ИЗ
| Документ.ПоступлениеТоваровИУслуг.Товары КАК ПоступлениеТоваровИУслугТовары
|ГДЕ
| ПоступлениеТоваровИУслугТовары.Ссылка = &Ссылка”;
Запрос.УстановитьПараметр(“Ссылка”, Ссылка);
Таблица = Запрос.Выполнить().Выгрузить();
Движения.ОстаткиТоваров.Загрузить(Таблица);
Движения.Закупки.Загрузить(Таблица);
КонецПроцедуры
Необходимо реализовать проверку, которая будет запрещать изменять базовую единицу измерения для номенклатуры, если по ней есть движения в регистрах.
В справочнике Номенклатура, в модуле объекта
Процедура ПередЗаписью(Отказ)
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| ОстаткиТоваров.Номенклатура.БазоваяЕдиницаИзмерения,
| ОстаткиТоваров.Номенклатура
|ИЗ
| РегистрНакопления.ОстаткиТоваров КАК ОстаткиТоваров
|ГДЕ
| ОстаткиТоваров.Номенклатура = &Ссылка”;
Запрос.УстановитьПараметр(“Ссылка”, Ссылка);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий()
Тогда
Сообщить (“По этой номенклатуре уже есть движения”);
Отказ = Истина
КонецЕсли;
КонецПроцедуры
Создала журнал документов.
В модуле формы Поступление товаров и услуг
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаДокумента = Товары.Итог(“Сумма”);
КонецПроцедуры
Здравствуйте. Alenka, отчет принят.