Закупка и реализация:
Созданы документы: ПоступлениеТоваров с реквизитами:
Контрагент – составной тип Справочник.Контрагенты, Справочник.Сотрудники
Табличная часть Товары с реквизитами:
Номенклатура – тип Справочник.Номенклатура;
Единица – тип Справочник.ЕдиницыИзмеренияНоменклатуры. В свойстве Связи параметров выбора установлено: Отбор.Владелец(Товары.Номенклатура);
Количество – тип Число 15.3;
Цена – тип Число 15.2;
Сумма – тип Число 17.2;
Категория – тип Справочник.КатегорииНоменклатуры – для указания степени брака. РеализацияТоваров с реквизитами:
Контрагент – тип Справочник.Контрагенты;
Контактное лицо – Тип Справочник.КонтактныеЛицаКонтрагентов. В свойстве Связи параметров выбора установлено: Отбор.Владелец(Контрагент); в проверке заполнения – выдавать ошибку.
Табличная часть Товары с реквизитами:
Номенклатура – тип Справочник.Номенклатура;
Единица – тип Справочник.ЕдиницыИзмеренияНоменклатуры. В свойстве Связи параметров выбора установлено: Отбор.Владелец(Товары.Номенклатура);
Количество – тип Число 15.3;
Цена – тип Число 15.2;
Сумма – тип Число 17.2;
Категория – тип Справочник.КатегорииНоменклатуры;
Для подстановки в документы при выборе номенклатуры базовой единицы по умолчанию в модуле формы документов поступления и реализации присутствуют:
<code>
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТД =Элементы.Товары.ТекущиеДанные;
ПараметрыНоменклатуры = ОбщиеФункцииСервер.ПолучитьПараметрыНоменклатуры(ТД.Номенклатура);
ТД.Цена = ПараметрыНоменклатуры.Цена;
ПересчитатьСумму();
Если ПараметрыНоменклатуры.ВидНоменклатуры = ПредопределенноеЗначение(“Перечисление.ВидыНоменклатуры.Товар”) Тогда
ТД.Единица = ПараметрыНоменклатуры.БазоваяЕдиница;
Иначе
ТД.Категория = 0;
КонецЕсли;
КонецПроцедуры
//В общем модуле ОбщиеФункцииСервер определена функция:
Функция ПолучитьПараметрыНоменклатуры(Ссылка) Экспорт
ПараметрыНоменклатуры = Новый Структура;
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| ЕдиницыИзмеренияНоменклатуры.Ссылка
|ИЗ
| Справочник.ЕдиницыИзмеренияНоменклатуры КАК ЕдиницыИзмеренияНоменклатуры
|ГДЕ
| ЕдиницыИзмеренияНоменклатуры.Владелец = &Владелец
| И ЕдиницыИзмеренияНоменклатуры.ЕдиницаПоКлассификатору = &ЕдиницаПоКлассификатору”;
Запрос.УстановитьПараметр(“Владелец”, Ссылка);
Запрос.УстановитьПараметр(“ЕдиницаПоКлассификатору”, Ссылка.БазоваяЕдиница);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
ПараметрыНоменклатуры.Вставить(“БазоваяЕдиница”,ВыборкаДетальныеЗаписи.Ссылка);
ПараметрыНоменклатуры.Вставить(“Цена”,Ссылка.Цена);
ПараметрыНоменклатуры.Вставить(“ВидНоменклатуры”,Ссылка.ВидНоменклатуры);
КонецЕсли;
Возврат ПараметрыНоменклатуры;
КонецФункции // ПолучитьБазовуюЕдиницу()
</code> Реализация запчастей как юридическим, так и физическим лицам.
Создано: Перечисление.ЮрФизЛицо со значениями ЮрЛицо, ФизЛицо.
В справочник Контрагенты добавлен реквизит:
ЮрФизЛицо – тип Перечисление. ЮрФизЛицо.
В модуль формы элемента добавлена процедура для заполнения реквизита ЮрФизЛицо по умолчанию:
<code>
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не ЗначениеЗаполнено(Объект.ЮрФизЛицо) Тогда
Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
КонецЕсли;
КонецПроцедуры
</code> Фиксация контакта менеджера с клиентом.
Создано: Перечисление.ТипыКонтактов
со значениями: ЛичнаяВстреча, ТелефонныйЗвонок, Письмо Документ.КонтактСКлиентом с реквизитами:
Контрагент – тип Справочник.Контрагенты
Контактное лицо – Тип Справочник.КонтактныеЛицаКонтрагентов. В свойстве Связи параметров выбора установлено: Отбор.Владелец(Контрагент)
ТипКонтакта – тип Перечисление.ТипыКонтактов
Заголовок – тип Строка 80
Тема – тип Строка неогр. Длины.
Ввод на основании справочника Контрагенты.
Для документов поступления и реализации в модуле объекта определена процедура для ввода на основании справочника.Контрагенты:
<code>
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип(“СправочникСсылка.Контрагенты”) Тогда
// Заполнение шапки
Контрагент = ДанныеЗаполнения.Ссылка;
//Заполнение ТЧ
Товары.Загрузить(ОбщиеФункцииСервер.ДанныеПоследнегоДокумента(Контрагент,ЭтотОбъект.Метаданные().Имя));
КонецЕсли;
КонецПроцедуры
</code>
В общем модуле ОбщиеФункцииСервер определена функция, которая возвращает табличную часть последнего проведенного документа требуемого вида:
<code>
Функция ДанныеПоследнегоДокумента(Контрагент,ВидДокумента) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| *
|ИЗ
| Документ.”+ВидДокумента+”.Товары КАК ДокументТовары
|ГДЕ
| ДокументТовары.Ссылка В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| Документ.Ссылка КАК Ссылка
| ИЗ
| Документ.”+ВидДокумента+” КАК Документ
| где Документ.Проведен
| и Документ.Контрагент = &Контрагент
| УПОРЯДОЧИТЬ ПО
| Документ.МоментВремени УБЫВ)”;
Печать документа реализации.
В документе.РеализацияТоваров определена Команда «печать»
В запрос, сформированный конструктором добавлено условие для заголовка накладной:
<code>
| ВЫБОР
| КОГДА РеализацияТоваров.Контрагент.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицо)
| ТОГДА “”ТОРГ-12″”
| ИНАЧЕ “”Товарный чек””
| КОНЕЦ КАК Заголовок
//В цикл обхода табличной части вставлено вычисление итоговой суммы:
ИтогСумма = ИтогСумма + ВыборкаТовары.Сумма;
</code>
Для вывода в подвале текущего пользователя
<code>
Подвал.Параметры.ТекущийПользователь = ОбщиеФункцииСервер.глТекПользователь();
//в общем модуле ОбщиеФункцииСервер определена функция:
Функция глТекПользователь() Экспорт
Возврат Справочники.Пользователи.НайтиПоРеквизиту(“ПользовательИБ”,ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор);
КонецФункции // глТекПользователь()
</code>
Все материалы этого сайта являются составной частью Базового / Продвинутого курсов по программированию - и являются объектами авторского и имущественного права.
Любое их распространение без письменного согласования с авторами запрещено.
Сделала 7 ДЗ. Отчет отправила по почте куратору.
Закупка и реализация:
Созданы документы:
ПоступлениеТоваров с реквизитами:
Контрагент – составной тип Справочник.Контрагенты, Справочник.Сотрудники
Табличная часть Товары с реквизитами:
Номенклатура – тип Справочник.Номенклатура;
Единица – тип Справочник.ЕдиницыИзмеренияНоменклатуры. В свойстве Связи параметров выбора установлено: Отбор.Владелец(Товары.Номенклатура);
Количество – тип Число 15.3;
Цена – тип Число 15.2;
Сумма – тип Число 17.2;
Категория – тип Справочник.КатегорииНоменклатуры – для указания степени брака.
РеализацияТоваров с реквизитами:
Контрагент – тип Справочник.Контрагенты;
Контактное лицо – Тип Справочник.КонтактныеЛицаКонтрагентов. В свойстве Связи параметров выбора установлено: Отбор.Владелец(Контрагент); в проверке заполнения – выдавать ошибку.
Табличная часть Товары с реквизитами:
Номенклатура – тип Справочник.Номенклатура;
Единица – тип Справочник.ЕдиницыИзмеренияНоменклатуры. В свойстве Связи параметров выбора установлено: Отбор.Владелец(Товары.Номенклатура);
Количество – тип Число 15.3;
Цена – тип Число 15.2;
Сумма – тип Число 17.2;
Категория – тип Справочник.КатегорииНоменклатуры;
Для подстановки в документы при выборе номенклатуры базовой единицы по умолчанию в модуле формы документов поступления и реализации присутствуют:
<code>
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТД =Элементы.Товары.ТекущиеДанные;
ПараметрыНоменклатуры = ОбщиеФункцииСервер.ПолучитьПараметрыНоменклатуры(ТД.Номенклатура);
ТД.Цена = ПараметрыНоменклатуры.Цена;
ПересчитатьСумму();
Если ПараметрыНоменклатуры.ВидНоменклатуры = ПредопределенноеЗначение(“Перечисление.ВидыНоменклатуры.Товар”) Тогда
ТД.Единица = ПараметрыНоменклатуры.БазоваяЕдиница;
Иначе
ТД.Категория = 0;
КонецЕсли;
КонецПроцедуры
//В общем модуле ОбщиеФункцииСервер определена функция:
Функция ПолучитьПараметрыНоменклатуры(Ссылка) Экспорт
ПараметрыНоменклатуры = Новый Структура;
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| ЕдиницыИзмеренияНоменклатуры.Ссылка
|ИЗ
| Справочник.ЕдиницыИзмеренияНоменклатуры КАК ЕдиницыИзмеренияНоменклатуры
|ГДЕ
| ЕдиницыИзмеренияНоменклатуры.Владелец = &Владелец
| И ЕдиницыИзмеренияНоменклатуры.ЕдиницаПоКлассификатору = &ЕдиницаПоКлассификатору”;
Запрос.УстановитьПараметр(“Владелец”, Ссылка);
Запрос.УстановитьПараметр(“ЕдиницаПоКлассификатору”, Ссылка.БазоваяЕдиница);
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
ПараметрыНоменклатуры.Вставить(“БазоваяЕдиница”,ВыборкаДетальныеЗаписи.Ссылка);
ПараметрыНоменклатуры.Вставить(“Цена”,Ссылка.Цена);
ПараметрыНоменклатуры.Вставить(“ВидНоменклатуры”,Ссылка.ВидНоменклатуры);
КонецЕсли;
Возврат ПараметрыНоменклатуры;
КонецФункции // ПолучитьБазовуюЕдиницу()
</code>
Реализация запчастей как юридическим, так и физическим лицам.
Создано:
Перечисление.ЮрФизЛицо со значениями ЮрЛицо, ФизЛицо.
В справочник Контрагенты добавлен реквизит:
ЮрФизЛицо – тип Перечисление. ЮрФизЛицо.
В модуль формы элемента добавлена процедура для заполнения реквизита ЮрФизЛицо по умолчанию:
<code>
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не ЗначениеЗаполнено(Объект.ЮрФизЛицо) Тогда
Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮрЛицо;
КонецЕсли;
КонецПроцедуры
</code>
Фиксация контакта менеджера с клиентом.
Создано:
Перечисление.ТипыКонтактов
со значениями: ЛичнаяВстреча, ТелефонныйЗвонок, Письмо
Документ.КонтактСКлиентом с реквизитами:
Контрагент – тип Справочник.Контрагенты
Контактное лицо – Тип Справочник.КонтактныеЛицаКонтрагентов. В свойстве Связи параметров выбора установлено: Отбор.Владелец(Контрагент)
ТипКонтакта – тип Перечисление.ТипыКонтактов
Заголовок – тип Строка 80
Тема – тип Строка неогр. Длины.
Ввод на основании справочника Контрагенты.
Для документов поступления и реализации в модуле объекта определена процедура для ввода на основании справочника.Контрагенты:
<code>
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип(“СправочникСсылка.Контрагенты”) Тогда
// Заполнение шапки
Контрагент = ДанныеЗаполнения.Ссылка;
//Заполнение ТЧ
Товары.Загрузить(ОбщиеФункцииСервер.ДанныеПоследнегоДокумента(Контрагент,ЭтотОбъект.Метаданные().Имя));
КонецЕсли;
КонецПроцедуры
</code>
В общем модуле ОбщиеФункцииСервер определена функция, которая возвращает табличную часть последнего проведенного документа требуемого вида:
<code>
Функция ДанныеПоследнегоДокумента(Контрагент,ВидДокумента) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| *
|ИЗ
| Документ.”+ВидДокумента+”.Товары КАК ДокументТовары
|ГДЕ
| ДокументТовары.Ссылка В
| (ВЫБРАТЬ ПЕРВЫЕ 1
| Документ.Ссылка КАК Ссылка
| ИЗ
| Документ.”+ВидДокумента+” КАК Документ
| где Документ.Проведен
| и Документ.Контрагент = &Контрагент
| УПОРЯДОЧИТЬ ПО
| Документ.МоментВремени УБЫВ)”;
Запрос.УстановитьПараметр(“Контрагент”, Контрагент);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
</code>
Печать документа реализации.
В документе.РеализацияТоваров определена Команда «печать»
В запрос, сформированный конструктором добавлено условие для заголовка накладной:
<code>
| ВЫБОР
| КОГДА РеализацияТоваров.Контрагент.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицо)
| ТОГДА “”ТОРГ-12″”
| ИНАЧЕ “”Товарный чек””
| КОНЕЦ КАК Заголовок
//В цикл обхода табличной части вставлено вычисление итоговой суммы:
ИтогСумма = ИтогСумма + ВыборкаТовары.Сумма;
</code>
Для вывода в подвале текущего пользователя
<code>
Подвал.Параметры.ТекущийПользователь = ОбщиеФункцииСервер.глТекПользователь();
//в общем модуле ОбщиеФункцииСервер определена функция:
Функция глТекПользователь() Экспорт
Возврат Справочники.Пользователи.НайтиПоРеквизиту(“ПользовательИБ”,ПользователиИнформационнойБазы.ТекущийПользователь().УникальныйИдентификатор);
КонецФункции // глТекПользователь()
</code>
Наталья, ваш отчет принят.