Алгоритмы с решениями для экзамена Специалист УТ 11.1

Программирование - Сертификация

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

Оглавление:

Билет 1:

Билет 2:

Билет 3:

Билет 4:

Билет 5:

Билет 6:

Билет 7:

Билет 8:

Билет 9:

Билет 10:

1.44 - "Направление деятельности"                            
1.Администрирование – «Склад и доставка» несколько складов, перемещение товаров, внутреннее потребление
2.Заполнить справочники: организация, склады (основной, склад №1 №2), контрагенты, номенклатура (специальная одежда №1,№2,№3 – далее в тексте СО 1,2,3)
3. Создать документ «Поступление товаров» СО 1 (100шт./ 4 000р), СО2 (100шт./11 000) СО3 (100шт./2 000), склад основной
4. Создать документы «Перемещение товаров» с основного склада на склад № 1 и склад № 2 по 10 шт. СО №1,№2,№3
5. Создать документ «Списание на расходы» со склада № 1, № 2 по 10 шт., создать статью расходов «Обеспечение продаж», указав вид аналитики расходов «Направление деятельности» и создать Аналитику расходов.


6. Финансы – закрытие месяца – выполнить операции, проверить создание документа «Распределение доходов и расходов по направлениям деятельности», вкладка расходы, сумма должна быть 401 200 
В комментарий указать: «Указываются функциональные опции, создается организация, склады, контрагенты, номенклатура, поступление товаров, перемещение товаров, внутреннее потребление, производим закрытие месяца, проверяем заполнение документа «Распределение доходов и расходов по направлениям деятельности» и формируем отчет «Финансовые результаты.

Оглавление

2.01 - Отчет "Ведомость по товарам на складах в ценах номенклатуры" добавить оценку в валюте.

Отчёт «Ведомость по товарам на складах в ценах номенклатуры» предоставляет стоимостную оценку остатков, оборотов в ценах по выбранному типу цен. Стоимостная оценка производится в валюте выбранного вида цен. Руководству компании (по собственным соображениям) необходимо получать эту оценку в валюте, выбираемой в диалоге отчёта. Необходимо реализовать данную возможность. Также требуется, чтобы после выбора типа цены в реквизит «Валюта», расположенный в диалоге отчёта, по умолчанию подставлялась валюта, указанная для выбранного типа цен.

Добавляем новые параметры отчёта. В конструкторе СКД отчёта на закладке «Параметры» добавляем параметры «ВалютаОтчёта». К сожалению авторы задачника не стали утруждать себя в новой редакции указаниями на какую дату требуется брать курс валюты отчёта (произвольная дата, конец периода отчёта или текущая дата), потому обязательно уточняем этот момент у экзаменатора. В данном примере мы возьмём курс валюты на произвольную дату, которая по умолчанию будет равна текущему дню. Создавать данный параметр не требуется, т.к. он появится автоматически. У параметров валют ставим значение в колонке «Использовать» - Всегда, что бы незаполненное значение валюты отлавливать по пустой ссылке.

Дополняем запрос пересчётом сумм по выбранной валюте. Среди вопросов к тестированию 1С:Профессионал встречались вопросы связанные с пересчётом валютных сумм в рубли. Кто сдавал, наверняка запомнили формулу: Сумма_в_рублях = Сумма_в_валюте * Курс_валюты / Кратность_валюты Т.к. у нас участвуют 2 валюты («валюта отчёта» и «валюта типа цены»), которые в рублёвом эквиваленте равны между собой, мы можем составить следующую формулу: Сумма_отчёта * Курс_отчёта / Кратность_отчёта = Сумма_цены * Курс_цены / Кратность_цены Т.е. итоговая формула пересчёта из одной валюты в другую будет выглядеть так: Сумма_отчёта = Сумма_цены * Курс_цены * Кратность_отчёта / (Кратность_цены * Курс_отчёта) Данная формула работает даже в том случае если одна из валют рубль (в этом случае курс и кратность равна 1, соответствующая запись есть регистре КурсыВалют) или валюта цены будет совпадать с валютой отчёта (курс и кратность просто сократятся в дробях) Добавляем новое поле с именем ВалютаДляОтчёта следующего содержания:

	ВЫБОР
		КОГДА &ВалютаОтчета = ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)
			ТОГДА ВидыЦен.ВалютаЦены
		ИНАЧЕ &ВалютаОтчета
	КОНЕЦ

По значению этого поля мы в дальнейшем будем подтягивать данные курса и кратности валюта отчёта. В целях упрощения работы с запросом, помещаем результат в новую временную таблицу на вкладке «Дополнительно» в запросе Запрос пакета 8

После чего переключаемся на вкладку «Пакет запросов» и создаём новый запрос

В новом запросе мы переносим все поля из созданной временной таблицы ПредИтог и добавляем 2 таблицы КурсыВалют.СрезПоследних, одну из которых переименовываем в КурсыЦены, а вторую в КурсыОтчёта соответственно. Для виртуальной таблицы КурсыОтчёта и КурсыЦены заполняем параметр период.

И связываем эти таблицы по полям с валютой согласно рисунку ниже.

Теперь правим поля с суммами, подставляя вместо значений такую конструкцию в поля «ПредИтог.СуммаНачальныйОстаток», «ПредИтог.СуммаКонечныйОстаток», «ПредИтог.СуммаПриход» и «ПредИтог.СуммаРасход» (в каждом поле будет меняться только значения выделенные в тексте) ПредИтог.СуммаНачальныйОстаток * КурсыЦены.Курс * КурсыОтчёта.Кратность / (КурсыЦены.Кратность * КурсыОтчёта.Курс) Чтобы не заморачиваться потом в настройках, не забудьте на вкладке «Объединения/Псевдонимы» восстановить имена полей.

В принципе, пересчёт сумм можно было делать с помощью вычисляемых полей в СКД. В таком случае процедура пересчёта будет производится на сервере 1С, а не на сервере БД. На мой взгляд такой вариант менее оптимален, т.к. после получения данных запросом будет произведён повторный обход всех записей.

Настройка отчёта. На вкладке параметры корректируем заголовок параметра «Период», который автоматически добавился при работе с регистрами сведений курсов валют. На вкладке «Настройки» устанавливаем значения параметров по умолчанию и включаем их в пользовательские настройки для удобства.

Так же в колонке Валюта нам следует брать значение поля ВаляютаДляОтчёта (делаем соответствующие поправки в группировке и выбранных полях)

Важное уточнение! Если на экзамене выяснится что курс валют следует брать строго на текущую дату, то заполняем свойства следующим образом:

Проверяем работу отчёта Отчёт можно запустить с меню «Склад» - Отчёты по складу.

Реализация подстановки валюты при выборе типа цены.
В отчет необходимо добавить новую «Форму»
Скопируем её из ветки метаданных Общие формы – ФормаОтчета и добавим её в форму отчета.
Переходим в модуль формы и найдем процедуру Процедура «Подключаемый_ПолеВвода_ПриИзменении»
Перед процедурой «Подключаемый_ПолеВвода_ПриИзменении(Элемент)» добавить функцию «ПолучитьВалюту»

Подключаемый_ПолеВвода_ПриИзменении(Элемент)
Вначале процедуры находим строчку и добавляем свой код
Значение = ПользовательскаяНастройкаКД.Значение;

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


1.Администрирование – «Маркетинг и планирование»: несколько видов цен; «Организация и денежные средства»: несколько валют (добавить USD, EUR и загрузить курсы); 
2.Маркетинг и планирование – настройка и справочники – виды цен – добавить два вида цен ЦенаUSD, ЦенаEUR (включает НДС, при продаже клиентам); 
3. В том же разделе – цены (прайс-лист) – история изменения цен – создать
4. отметить галочками все цены – перейти к установке цен – добавить товары и указать для них цену в рубляъ,usd,eur
5. Склад – Отчеты по складу – ведомость по товарам в ценах номенклатуры, перейти в настройку, вид (расширенный), поле «оценка запасов» - по виду цен указанному в отчете. 

Оглавление

Билет 2/1.09 - Генерация топологии склада

1.Администрирование – «Склад и доставка» – Несколько складов, ордерные склады
2.Справочники: Организация, Типоразмеры ячейки (Все функции) (Размер и грузоподъемность – не ограничена)
3.Номенклатура: Номенклатура 1, 2, 3
4.Склады: Склад № 1, № 2 (вкладка Ордерная схема и структура, поле ячейки «Использовать для справочного размещения номенклатуры»
5.Обработка – Генерация топологии склада
6.Для каждого склада необходимо создать секции, линии, стеллажи, ярусы, позиции (от 1 до 3)
7.Документ: Поступление товаров (добавить контрагента) заполнить склад № 1, номенклатура 1 (создать на основании документ – размещение номенклатуры по ячейкам (справочно) указать ячейку склада) сделать еще одно поступление для склада № 2 и номенклатура № 2  

8. При продажи товара заходим в его карточку – Размещение в ячейках – Размещение номекнлатуры по складским ячейкам. (как мне кажется так удобнее всего смотреть, где надо искать товар) , можно также отчетом – Склад – Отчеты по складу – складские операции – «Справочное размещение товаров по ячейкам»
В комментарий указать: «Указываются функциональный опции, создается организация, номенклатура, склады, контрагенты, Поступление товаров, формируем отчет «Размещение товаров в ячейках справочно»

Оглавление

Билет 2/2.06 - Отчет "Продажи" + плановая себестоимость
1.Администрирование – Маркетинг и планирование: Несколько видов цен 
2.Организации и денежные средства: Несколько валют (добавить валюту, загрузить курс), валюта управленческого учета: USD
3.Маркетинг и планирование – настройки и справочники – виды цен – добавим («Плановая себестоимость», валюта Руб, цена включ НДС, способ задания цены (Ручное назначение)
4.Маркетинг и планирование – цены (прайс-лист) – история изменения цен – создать – 5.ПлановаяСебестоимость – добавляем номенклатуру № 3 (указываем цену в рублях)
6.Документ: Поступление товаров (вкладка «дополнительно» (Рубли, цена включает НДС)), добавляем номенклатуру и указываем цену)
7.Документ: Реализация товаров (продать товар, который сделали ранее в поступлении)
8.Конфигурация – Поддержка – Настройка поддержки – Включить возможность изменения
9. Открыть отчет «ВыручкаИСебестоимостьПродаж»
10.Открываем скд – последний запрос (Запрос пакета 3) – Таблицы (изменить) 
11.Добавим регистр сведений «ЦеныНоменклатурыСрезПоследних», добавить параметр период (&ПериодОтчета) параметр условие (ВидЦены = &ПлановаяСебестоимость)
Из регистра сведений добавим ресурсы Цена и Упаковка
12.Связи – Таблица1(Продажи), левое соединение, Таблица2(ЦеныНоменклатурыСрезПоследних), Условие связи (Продажи.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура)
Добавим такую же связь, условие связи (Продажи.АналитикаУчетаНоменклатуры.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика) - ОК


13. к «Таблица» добавить регистр сведений «КурсыВалют.СрезПоследних» 2 шт.
1й переименовываем в «КурсыВалютПлан»
КурсыВалютПлан – параметр период (&ПериодОтчета), параметр условие -  Валюта В ( ВЫБРАТЬ ВидыЦен.ВалютаЦены  ИЗ Справочник.ВидыЦен КАК ВидыЦен ГДЕ ВидыЦен.Ссылка = &ПлановаяСебестоимость)
2й в «КурсыВалютОтчет»
КурсыВалютОтчет – параметр период (&ПериодОтчета), параметр условие:

ВЫБОР
	КОГДА &ДанныеОтчета = 1
			ИЛИ &ДанныеОтчета = 2
		ТОГДА Валюта В
				(ВЫБРАТЬ
					ВалютаУправленческогоУчета.Значение
				ИЗ
					Константа.ВалютаУправленческогоУчета КАК ВалютаУправленческогоУчета)
	ИНАЧЕ Валюта В
			(ВЫБРАТЬ
				ВалютаРегламентированногоУчета.Значение
			ИЗ
				Константа.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета)
КОНЕЦ


Связи – Таблица1(Таблица), левое соединение, Таблица2(КурсыВалютОтчет), условие связи ИСТИНА (аналогично для Таблица2 (КурсыВалютПлан))


Добавляем новое поле в последнем пакете запроса

ВЫРАЗИТЬ(ВЫБОР
		КОГДА ЕСТЬNULL(Таблица.Цена, 0) = 0
			ТОГДА 0
		ИНАЧЕ Таблица.Цена * ВЫБОР
				КОГДА Таблица.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
					ТОГДА 1
				ИНАЧЕ Таблица.Упаковка.Коэффициент
			КОНЕЦ / КурсыВалютОтчет.Курс * КурсыВалютПлан.Кратность / (КурсыВалютПлан.Курс * КурсыВалютОтчет.Кратность)
	КОНЕЦ * Таблица.Количество КАК ЧИСЛО(27, 2))


Перейти во вкладку «Объединения/Псевдонимы» переименовать «Поле1» в «СебестоимостьПлан»
ОК
14.Вкладка «Вычисляемые поля» - добавить
ПутьКДанным (РазницаПлановая), Выражение(Выручка - СебестоимостьПлан), Заголовок (Разница плановая)
15.Вкладка «Ресурсы»
Добавить: СебестоимостьПлан, РазницаПлановая
16.Вкладка «Параметры»
ПериодОтчета, выражение (&Период.ДатаОкончания)
ПлановаяСебестоимость (ограничение доступности снять галочку, запрещать незаполненные значение поставить галочку)
17.Вкладка «Настройки»
 Вкладка «Параметры» Плановая себестоимость (поставить галочку и включить в пользовательские настройки)
 Вкладка «Выбранные поля» добавить группу (Плановая себестоимость: СебестоимостьПлан, РазницаПлановая)


18.В программном коде отчета необходимо найти &ПериодОтчета и зафиксировать параметр в {} во всем отчете (должно быть 3 упоминания в отчете)
19.Запускаем  пользовательский режим
20.Продажи – отчеты по продажам – валовая прибыль предприятия

В отчете не формируется «Разница плановая»

Оглавление

Билет 3/1.24 - воронка продаж                                               
1.Администрирование – «CRM и продажи» сделки с клиентами, управление сделками, согласование коммерческих предложений, оптовые продажи (только индивидуальные соглашения), здесь же указать ответственных (после п.2); «Маркетинг и планирование» фиксировать первичный интерес, маркетинговые мероприятия; «Склад и доставка» несколько складов; «Органайзер» почтовый клиент, звонки, sms, встречи и запланированные взаимодействия; «Закупки» соглашение с поставщиками. (Создать организацию)
2.Создать группу доступа и пользователя  Руководителя отдела продаж.
3.Создать «Маркетинговые мероприятия» - «Все будет хорошо (экзамен)».
4.«Маркетинговые мероприятия» - Настройки исправочники – Каналы рекламных воздействий – создать – Наименование (Выставка), Тип воздействия (Маркетинговое мероприятие).
5.Создать контрагента «Все будет хорошо (экзамен)», затем в карточке перейти «соглашения с клиентом», создать индивидуальное соглашение: Оплата (Кредит, 20, 100%), цена включает НДС, налогообложение (Продажа облагается НДС), (???канал (выставка), источник (маркетинговое мероприятия).???)
6.Создать «Сделка с клиентом»: наименование (Сделка с клиентом), канал (Выставка), Источник (Маркетинговое мероприятия), вид сделки создать с типом "Сделки с ручным переходом по этапам" и в ТЧ "Этапы процесса" добавить этапы, выбрать клиент и соглашение.


7.На основании «Сделка с клиентом» создать – Коммерческое предложение клиенту – в ТЧ добавить товар, статус (Не согласовано) – создать на основании – согласование коммерческого предложения клиенту – стартовать и закрыть. Согласовывать на рабочем столе.

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

Оглавление


Билет 3/2.30 - наличные лимиты ДС

//1.Справочник (??БанковскиеСчетаОрганизации??) добавить в форме реквизит (ИспользоватьЗаявкиСверхЛимита – булево) и разместить его на форме.

2. Документ «РасходныйКассовыйОрдер» модуль менеджера, найти по поиску «МассивРеквизитовОперации» код где заполняется для «ОплатаПоставщику» и добавить строчку:

МассивРеквизитовОперации.Добавить("Подразделение");

3.Создать общий модуль «ДопПроведение».

4.Создать подписку на событие «ПроведениеРасходныйКассовыйОрдер», источник (ДокументОбъект.РасходныйКассовыйОрдер), событие (ОбработкаПроведения), обработ (ДопПроведение). 

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

5.Создать регистр сведений «ЛимитыПоПодразделениям», подсистема (Финансы – ПланированиеИКОнтрольДС),

Данные: измерения (Подразделение – СтруктураПредприятия), ресурсы (Сумма).

6.Администрирование – «Организация и денежных средств» заявки на расходование денежных средств, лимиты расхода денежных средств, лимиты расхода по подразделениям, контролировать превышение лимитов.

7.НСИ – структура предприятия – создать – основное подразделение

8.НСИ – настройка и справочники –(??? настройка банковского счета (создать)???), настройка кассы (основное подразделение), добавить статью (оплата поставщику) лимит (галочка, 10 000).

9.Документ «Заявка на расходование ДС» - создать – операция (оплата поставщику), подразделение (основное подразделение), получатель, счет получателя (заполнить), сумма (10 001), в ТЧ указать статья движ дс (оплата поставщику), статус (согласована), провести документ.

10. на основании сделать док РКО и провести.

11. Отчет. Так как задача писалась до введеня типового "РегистрНакопления.ЛимитыРасходаДенежныхСредств", мы оставляем НАШ "РегистрСведений.ЛимитыПоПодразделениям" для док. "РасходныйКассовыйОрдер", а отчет делаем на типовом:

ВЫБРАТЬ
	ВЫБОР
		КОГДА Лимиты.ЛимитОборот - (Лимиты.РасходВПределахЛимитаОборот + Лимиты.РасходСверхЛимитаОборот) >= 0
			ТОГДА Лимиты.ЛимитОборот - (Лимиты.РасходВПределахЛимитаОборот + Лимиты.РасходСверхЛимитаОборот)
		ИНАЧЕ 0
	КОНЕЦ КАК Остаток,
	Лимиты.Подразделение,
	Лимиты.ЛимитОборот КАК Лимит,
	ВЫБОР
		КОГДА Лимиты.ЛимитОборот - (Лимиты.РасходВПределахЛимитаОборот + Лимиты.РасходСверхЛимитаОборот) <= 0
			ТОГДА (Лимиты.ЛимитОборот - (Лимиты.РасходВПределахЛимитаОборот + Лимиты.РасходСверхЛимитаОборот)) * -1
		ИНАЧЕ 0
	КОНЕЦ КАК Перерасход
ИЗ
	РегистрНакопления.ЛимитыРасходаДенежныхСредств.Обороты(&НачалоПериода, &КонецПериода, Авто, СтатьяДвиженияДенежныхСредств = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ОплатаПоставщику)
//И Организация = &Организация
) КАК Лимиты

Оглавление

Билет 4/1.31 обработки "Формирование заказов по плану"

1.Администрирование «Закупки» соглашение с поставщиками, заказы поставщикам, обеспечение потребностей (расширенное);
«Маркетинг и планирование» планы продаж, планы закупок;
«CRM и продажи» заказы клиентов;
2.Создать склад, добавить график работы (без выходных), поставить галочку в складе «контролировать обеспечение», добавить организацию,
3.Создать двух контрагентов (Поставщик 1,2) для них добавить соглашения.
4.НСИ.Создать «Способы обеспечения потребностей» для Поставщика 1,2 (срок покупки 1 дней, заказ по графику, дата ближайшей и следующей поставки ближайший четный день), вкладка «ограничение использования» указать поставщиков и соглашения.


5.Создать две номенклатуры, товар 1,2 (для каждой из них указать в карточке «параметры обеспечения продаж», для товара 1 – поставщик1, для товара 2 – поставщик2.
6."Маркетинг и планирование" - "Настройки и справочники" - Создать «Сценарии планирования» Месячный покупка, Месячный продажа (периодичность месяц, создавать по сценарию: планы закупок, заказы поставщику, планы продаж по номенклатуре)
7.Создать «Виды Планов» Месячный Продажа (Использовать Плана продаж), Месячный Покупка (Использовать Плана закупок) детализировать планы по поставщику и клиенту.
8.Создать документ «Планы продаж по номенклатуре» сценарий (Месячный продажа), статус (утвержден), вид плана (продажи), клиент (добавить), в табличную часть добавить товар 1,2 по 100 шт.


9.Создать документ «Планы закупок» сценарий (Месячный покупка), статус (утвержден), вид плана (месячный покупка),(поставщик 1), добавить товар 1- 100 штук, создать второй документ и указать поставщика 2 и товар 2 – 100 шт.
10. "Настройка панели действий"Открыть обработку «Формирование заказов поставщику по плану» сценарий (Месячный покупка), период заказа (очистить поля), поставщик (поставщик 1), соглашение (соглашение 1), товар (товар 1) – далее, поставить галочку возле количества и нажать на кнопку «создать заказы», далее перейти в документ «заказ поставщику» отредактировать цену и провести документ.


В комментарий указать: «Указываются функциональные опции, создается организация, склад, график работы, контрагенты, способы обеспечения потребностей, номенклатура, сценарии планирования, виды планов, планы продаж по номенклатуре, планы закупок, формируем заказы поставщиков с помощью обработки «Формирование заказов поставщику по плану».

Оглавление

Билет 4/2.41 - привлечение Агента в заказах и реализации.  ДополнительныеРеквизитыИСведения.
1.Администрирование – Общие настройки: Дополнительные реквизиты и сведения, вкл. общие реквизиты и сведения
2.Конфигурация – Поддержка – Настройка поддержки – Включить возможность изменения
3.ПланыВидовХарактеристик – ДополнительныеРеквизитыИСведения (добавить предопределенный элемент «Агент» СправочникСсылка.Контрагенты)
4.Общие модули – добавить модуль (Дополнительный)
5.Подписка на события – создать – «ВводНаОсновании», источник (ДокументОбъект.РеализацияТоваровУслуг), события (ОбработкаЗаполнения), Обработчик (нажимаем на лупу - Дополнительный)
6.

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


Функция НайтиСтрокуДопСвойств(ДокументИсточник)
	ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.Агент;
	ДопСвойствоЗаказа = УправлениеСвойствами.ПолучитьЗначенияСвойств(ДокументИсточник);
	Возврат ДопСвойствоЗаказа.Найти(ДопСвойство, "Свойство");
КонецФункции // НайтиСтрокуДопСвойств()


7.Администрирование – Общие настройки – Дополнительные реквизиты – «Реализация товаров и услуг», «Заказ клиента» в правом окне пкм добавить – общий (Агент)
8.Продажи – Заказ Клиентов – создать – клиент (Розничный покупатель), товар 1 – 1 шт, вид цены (очистить), цена – 1000, вкладка «Дополнительно» в поле агент добавить нового контрагента с типом «Поставщик», на основании документ создать документ «Реализация товаров и услуг» (проверить заполнения поля агент)
9.В конфигураторе открыть документ «РеализацияТоваровУслуг», движения – добавить регистр накопления «Расчеты с поставщиками»
10.Создать подписку на событие – ПроведениеРТиУ, источник (ДокументОбъект.РеализацияТоваровУслуг), событие (ОбработкаПроведения), Обработчик (нажимаем на лупу - Дополнительный) :

Процедура ПроведениеРТиУОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	РеализацияТоваровУслуг.Валюта,
	|	РеализацияТоваровУслуг.СуммаДокумента / 100 * 3 КАК КОплате,
	|	&Период,
	|	ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) КАК ВидДвижения,
	|	&АналитикаУчетаПоПартнерам,
	|	РеализацияТоваровУслуг.СуммаДокумента / 100 * 3 КАК Сумма
	|ИЗ
	|	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
	|ГДЕ
	|	РеализацияТоваровУслуг.Ссылка = &Ссылка";
	Агент = Справочники.Контрагенты.ПустаяСсылка();
	нСтрока = НайтиСтрокуДопСвойств(Источник.Ссылка);
	Если нСтрока <> Неопределено и ЗначениеЗаполнено(нСтрока.Значение) Тогда
		Агент = нСтрока.Значение; КонецЕсли;
	
	КлючАналитики = Новый Структура;
	КлючАналитики.Вставить("Организация", Источник.Организация);
	КлючАналитики.Вставить("Партнер", Неопределено);
	КлючАналитики.Вставить("Контрагент", Агент);
	
	Запрос.УстановитьПараметр("АналитикаУчетаПоПартнерам", РегистрыСведений.АналитикаУчетаПоПартнерам.ЗначениеКлючаАналитики(КлючАналитики));
	Запрос.УстановитьПараметр("Период", Источник.Дата);
	Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
	РезультатЗапроса = Запрос.Выполнить().Выгрузить();
	Источник.Движения.РасчетыСПоставщиками.Записывать = Истина;
	Источник.Движения.РасчетыСПоставщиками.Загрузить(РезультатЗапроса);
КонецПроцедуры
	


11.Создать в пользовательском режиме документ «Поступление товаров», добавить нового поставщика, товар 1, 10 штук, цена 900.
12.Провести документ «Реализация товаров и услуг» из пункта № 8

13.В конфигураторе, справочник «СтатьиДвиженияДенежныхСредств» добавить предопределенный элемент – ОплатаАгенту

14.Документ «РасходныйКассовыйОрдер» модуль менеджера, находим функцию «ТекстЗапросаВременнаяТаблицаРасшифровкаПлатежа», в запросе после строчки
«И &Контрагент = Аналитика.Контрагент» вставить следующий 

//***IgorXml***10.12.2016 19:42:27***START
//|			И ТаблицаРасшифровкаПлатежа.Партнер = Аналитика.Партнер

				   |			И (ВЫБОР
				   |				КОГДА ТаблицаРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ОплатаАгенту)
				   |					ТОГДА ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка)
				   |				ИНАЧЕ ТаблицаРасшифровкаПлатежа.Партнер
				   |			КОНЕЦ = Аналитика.Партнер)
//***END

15.В пользовательском режиме раздел Финансы – Настройки и Справочники – Статьи движения денежных средств – оплата агенту, хоз. опер - Оплата поставщику
16.Создать элемент справочника «Касса»
17.Создать документ «Расходный кассовый ордер» с видом Оплата поставщику, получатель (АгентПоПродажам), подобрать по остаткам. Например отч. "Ведомость расчетов с поставщиками".

Оглавление 

Билет 5/1.11 - Генерация топологии склада + для  2х помещений ("Холодильник" и "Обычное хранение").                              
1.Администрирование – «Склад и доставка» несколько складов, ордерные склады; «Номенклатура» упаковки номенклатуры, добавление индивидуальных упаковок при создании номенклатуры. Множество видов номенклатуры. (Добавить организацию)
2.Создать склад (Склад 1, 2) – вкладка «Ордерная схема и структура» проставить галочки (при поступлении, при отгрузке, при отражении излишков недостач и порчи, использовать помещения), записать элемент.
3.В элементе складов (1,2) после записи появится ссылка «Складские помещения» перейти и создать «Холодильник» и «Обычное хранение», Склад (Склад 1) Ячейки (Использовать для хранения остатков номенклатуры), Рабочие участки (Не использовать). п. 7.
4.Обработка «Генерация топологии склада» создать структуру для Склада 1,2 (Холодильник 1-3, Обычное хранение 4-6)
5.Создать «Складские группы номенклатуры» (Обычная и Холодная)
6.Создать «Складские группы упаковок» (Обычная и Холодная)
7.Создать «Области хранения» (Обычная область хранения, Холодная область хранения)  (укажем монотоварность – размещение в каждой ячейки разные товары).
8.Для помещений (Обычное помещение) создать правила размещения товаров: 
Склад (Склад1),Помещение(Обычное помещение),Область хранения(Обычная область хранения), Складская группа номенклатуры (Холодная), Складская группа //упаковок (Холодная) приоритет (2)
Склад (Склад1),Помещение(Обычное помещение),Область хранения(Обычная область хранения), Складская группа номенклатуры (Обычная), Складская группа //упаковок (Обычная) приоритет (1)


По аналогии создать и для склада 2
9.Создать «Набор упаковок» (Упаковка мяса) для неё создадим «Упаковки» ед изм (шт), конечная упаковка, в этой упаковке (10), складская группа (холодная)
10.Создать «Набор упаковок»(Коробка конфет) для неё создадим «Упаковки» ед изм (шт), конечная упаковка, в этой упаковке (100), складская группа (обычная)


11.Создать «Виды номенклатуры» Мясо, Конфеты (тип номенклатуры – Товар)
12.Создать номенклатуру (Говядина, Свинина) вид номенклатуры (Мясо), при записи номенклатуры перейти в карточки на вкладку «Учетная информация» и указать набор упаковок и складскую группу (холодная)
13.Создать номенклатуру (Конфеты чупа-чупс) вид номенклатуры (Конфеты), складская группа (обычная)
14.Создать для помещений складскую ячейку «Премка товара», тип(приемка)
15.Создать документ «Поступление товаров и услуг»: склад (склад 1), товар(говядина), на основании документа создать «Приходный ордер на товары» помещение (холодное помещение), зона приемки (Приемка товара).

16.Далее создать   «Отбор и размещение». В отчете видно какой товар уже разобрали по ячейкам кладовщики, а какой только собираются))

17. Склад – отчеты по складу – "Движения товаров на адресных складах".

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

Оглавление

Билет 5/2.03 - "Прайс-лист" с картинками.
1) Сохранить как внешний отчет «Прайс_ЛИСТ».

2) МО

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	СегментыСервер.ВключитьОтборПоСегментуНоменклатурыВСКД(КомпоновщикНастроек);
	
	АссортиментСервер.ВключитьОтборПоАссортиментуВСКД(КомпоновщикНастроек);
	
	СтандартнаяОбработка = Ложь;
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпановки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,  КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);
	ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпановки.Инициализировать(МакетКомпановки,,ДанныеРасшифровки,Истина);
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
	ПроцессорВывода.Вывести(ПроцессорКомпановки,Истина);
	
	КолСтрок = ДокументРезультат.ВысотаТаблицы;
	КолКолонок = ДокументРезультат.ШиринаТаблицы;
	
	Для ТекСтрока = 1 по КолСтрок Цикл
		Для ТекКолонка = 1 по КолКолонок Цикл
			ТекОбласть = ДокументРезультат.Область(ТекСтрока, ТекКолонка);
			Если ТекОбласть.Расшифровка <> Неопределено Тогда
				ПоляРасшифровки = ДанныеРасшифровки.Элементы[ТекОбласть.Расшифровка].ПолучитьПоля();	
				Если ПоляРасшифровки.Количество() > 0 Тогда
					ФайлКартинки = ПоляРасшифровки[0].Значение;
					Если ТипЗнч(ФайлКартинки) = Тип("СправочникСсылка.НоменклатураПрисоединенныеФайлы") и ЗначениеЗаполнено(ФайлКартинки)      
						Тогда
						Рисунок = ПрисоединенныеФайлы.ПолучитьДвоичныеДанныеФайла(ФайлКартинки);
						Если Рисунок <> Неопределено Тогда
							ТекОбласть.ВысотаСтроки = 50;
							Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
							Рис.Картинка = Новый Картинка(Рисунок);
							Рис.Расположить(ТекОбласть);
						КонецЕсли;
					КонецЕсли;
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;

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

3) взять типовую форму "ФормаОтчета" и добавить реквизит формы "Номенклатура" тип ТЗ с реквизитом "Товар" тип спр.Номенклатура и описать события

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

&НаКлиенте
Процедура НоменклатураПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа, Параметр)
	Если Номенклатура.Количество()>=2 Тогда
		ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Нельзя выбирать больше 2-х товаров.",,,,Отказ);
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент)
	Параметр = КомпоновкаДанныхКлиентСервер.ПолучитьПараметр(Отчет.КомпоновщикНастроек.Настройки,"СписокНоменклатуры");
	Параметр.Значение = ПолучитьСписокНомеклатуры();
	Параметр.Использование = Истина;

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

&НаСервере
Функция ПолучитьСписокНомеклатуры()
	СписокЗначений = Новый СписокЗначений;
	СписокЗначений.ЗагрузитьЗначения(РеквизитФормыВЗначение("Номенклатура").ВыгрузитьКолонку("Товар"));
	Возврат СписокЗначений;
КонецФункции

4) В СКД добавить параметр "СписокНоменклатуры" и ограничть им номенклатуру в запросе.

5) в СКД в запросе вытащить "Цены.Номенклатура.ФайлКартинки" и в настройках в выводе СКД вытащить в группировку где Номенклатура и в Выбранные поля

6) Перед проверкой создать док. Прайс лист.

Оглавление

Билет 6/1.35   - втоматически сформировать заказы на сборку                                
  1.Администрирование(5 ф): «Закупки» заказы поставщикам, обеспечение потребностей (расширенное); «Склад и доставка» сборка/разборка, заказ на сборку/разборку, несколько складов. (Добавить организацию)
  2.Создать склад (Склад 1)
 3.Создать номенклатуру: «Стойка», «Полка», «Стеллаж №1» (вариант комплектации: 4 стойки, 6 полок), «Стеллаж №2 (4 стойки, 4 полки)
4.В разрезе склада перейти по ссылке – «Параметры обеспечения потребностей» - заполнить способ обеспечения потребностей – создать – (Наименование - Поддержание в запасе (расчет по норме)), «Заполнить метод обеспечения» выбрать метод «Поддержание запаса (расчет по норме)»
5.В разрезе номенклатуры для «Стеллажа №1» в параметрах обеспечения потребностей для склада (Склад 1) заполнить способ обеспечения потребностей (Поддержание в запасе (расчет по норме), норма потребления -5


6.Для номенклатуры «Стеллаж №2» все то же самое, только норма потребления -10
7.Панель действий  - Обработка «Формирование заказов по потребностям» (оставить все поля пустыми) – далее – две строчки (поддержание в запасе и сборка стеллажей) – далее – перейти в документ «Заказ поставщику» и добавить поставщика и указать цену.
8.Проверка результата: 
9.Запускаем обработку «Состояние обеспечения» и обеспечением потребность по норме.

Оглавление

Билет 6/2.15 - новый отчет "Информационная карточка клиента" с ДополнительныеРеквизитыИСведения. 
1.Настройка поддержки – включить возможность изменения.
2.В конфигураторе в ПВХ – ДополнительныеРеквизитыИСведения – добавить 2 предопределенных элемента (Гост и Марка).
3.В пользовательском режиме создать группы номенклатуры«Прокат» и «Трубы».
4.Администрирование – Номенклатура – множество видов номенклатуры.
5.Создать вид номенклатуры «Металлопрокат»
6.Создать две номенклатуры «Листы» согласно заданию и указать вид – «Металлопрокат».
7.Открыть константу «Основной график работы предприятия» и заполнить графиком «Пятидневка» только хз зачем если честно.
8.Администрирование – Общие настройки – Дополнительные реквизиты и сведения – дополнительные реквизиты – группа «Позиция номенклатуры» в ней проваливаемся в «Металлопрокат» и создаем два элемента «ГОСТ» и «Марка» с типом значения «Дополнительное значение».
9.Администирование- «CRM и продажи» бизнес-регионы, карта (Регионы России и города), роли контактных лиц.
10.Заполнить справочную информацию, справочник «Партнеры» создаем контрагента указываем Бизнес-регион, информацию о контактном лице, его роль, контактные телефон.
11.Создаем номенклатуру согласно заданию, делаем поступление товаров, затем реализацию товаров.
12.Создаем новый отчет в конфигураторе (Задача_2).
13.Создаем форму отчета ( добавляем Реквизиты: Период (Стандартный период), Партнеры (СправочникСсылка.Партнеры), ОсновнойГрафик (СправочникСсылка.Календари); создаем кнопку «Сформировать» (код_1)
14.Создаем Макет:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Период.ДатаНачала = ДобавитьМесяц(ТекущаяДата(),-12);
	Период.ДатаОкончания = ТекущаяДата();
КонецПроцедуры

&НаСервере
Функция makeReportOnServer()
	Макет = РеквизитФормыВЗначение("Отчет").Вернуть();
	табДок = Новый ТабличныйДокумент;
	
	Область = Макет.ПолучитьОбласть("Шапка");
	Область.Параметры.Имя = Партнер.Наименование;
	Область.Параметры.БР = Партнер.БизнесРегион;
	табДок.Вывести(Область);
	
	ЗапросКонт = Новый Запрос;
	ЗапросКонт.Текст = "ВЫБРАТЬ
	|	КонтактныеЛицаПартнеров.Наименование,
	|	КонтактныеЛицаПартнеров.КонтактнаяИнформация.(
	|		Представление
	|	),
	|	КонтактныеЛицаПартнеров.РолиКонтактногоЛица.(
	|		РольКонтактногоЛица
	|	)
	|ИЗ
	|	Справочник.КонтактныеЛицаПартнеров КАК КонтактныеЛицаПартнеров
	|ГДЕ
	|	КонтактныеЛицаПартнеров.Владелец = &Владелец" ;
	ЗапросКонт.УстановитьПараметр("Владелец",Партнер);
	Результат = ЗапросКонт.Выполнить().Выбрать(ОбходРезультатаЗапроса.Прямой);
	Пока Результат.Следующий() Цикл
		СтрКД = "";
		Для каждого СтрТаб Из Результат.КонтактнаяИнформация.Выгрузить() Цикл
			СтрКД = СтрКД + СтрТаб.Представление + 
			"|";
		КонецЦикла;
		СтрРоль= "";
		Для каждого СтрТаб Из Результат.РолиКонтактногоЛица.Выгрузить() Цикл
			СтрРоль = СтрРоль + СтрТаб.РольКонтактногоЛица + "
			|"; КонецЦикла;
		Область = Макет.ПолучитьОбласть("СтрКИ");
		Область.Параметры.ФИО = Результат.Наименование;
		Область.Параметры.КД = СтрКД;
		Область.Параметры.Роль = СтрРоль;
		табДок.Вывести(Область); КонецЦикла;
	Область = Макет.ПолучитьОбласть("Шапка2");
	табДок.Вывести(Область);
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ КалендарныеГрафики.ДатаГрафика) КАК ДатаГрафика,
	|	КалендарныеГрафики.Календарь
	|ИЗ
	|	РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
	|ГДЕ
	|	КалендарныеГрафики.ДеньВключенВГрафик
	|	И КалендарныеГрафики.Календарь = &Календарь
	|	И КалендарныеГрафики.ДатаГрафика МЕЖДУ &Начало И &Окончание
	|
	|СГРУППИРОВАТЬ ПО
	|	КалендарныеГрафики.Календарь";
	Запрос.УстановитьПараметр("Календарь",ОсновнойГрафик);
	Запрос.УстановитьПараметр("Начало",Период.ДатаНачала);
	Запрос.УстановитьПараметр("Окончание",Период.ДатаОкончания);
	табГр = Запрос.Выполнить().Выгрузить();
	ВсегоРабочихДней = табГр[0].ДатаГрафика;
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура КАК Товар,
	|	ВыручкаИСебестоимостьПродажОбороты.Регистратор КАК Регистратор,
	|	ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура.Родитель КАК тг,
	|	ВыручкаИСебестоимостьПродажОбороты.КоличествоОборот КАК КоличествоОборот,
	|	ЕСТЬNULL(ЗапросМарка.Значение, """") КАК Марка,
	|	ЕСТЬNULL(ЗапросГост.Значение, """") КАК ГОСТ,
	|	ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения
	|ИЗ
	|	РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты(&Начало, &Окончание, Авто, АналитикаУчетаПоПартнерам.Партнер = &Партнер) 
	|КАК ВыручкаИСебестоимостьПродажОбороты
	|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	|			НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка,
	|			НоменклатураДополнительныеРеквизиты.Значение КАК Значение
	|		ИЗ
	|			Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
	|		ГДЕ
	|			НоменклатураДополнительныеРеквизиты.Свойство.Наименование = ""Марка (Металлопрокат)"") КАК ЗапросМарка
	|		ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура.Ссылка = ЗапросМарка.Ссылка
	|		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	|			НоменклатураДополнительныеРеквизиты.Ссылка КАК Ссылка,
	|			НоменклатураДополнительныеРеквизиты.Значение КАК Значение
	|		ИЗ
	|			Справочник.Номенклатура.ДополнительныеРеквизиты КАК НоменклатураДополнительныеРеквизиты
	|		ГДЕ
	|			НоменклатураДополнительныеРеквизиты.Свойство.Наименование = ""ГОСТ (Металлопрокат)"") КАК ЗапросГост
	|		ПО ВыручкаИСебестоимостьПродажОбороты.АналитикаУчетаНоменклатуры.Номенклатура.Ссылка = ЗапросГост.Ссылка
	|
	|УПОРЯДОЧИТЬ ПО
	|	тг,
	|	Товар
	|ИТОГИ
	|	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Регистратор),
	|	СУММА(КоличествоОборот)
	|ПО
	|	Товар" ;
	
	Запрос.УстановитьПараметр("Партнер",Партнер);
	Запрос.УстановитьПараметр("Начало",Период.ДатаНачала);
	Запрос.УстановитьПараметр("Окончание",Период.ДатаОкончания);
	
	Результат = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	Пока Результат.Следующий() Цикл
		ВыборкаПоРег = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		ВыборкаПоРег.Следующий();
		Раз = Формат(ВыборкаПоРег.Регистратор.Дата,"ДФ=dd.MM.yyyy");
		Гост =  ВыборкаПоРег.ГОСТ;
		Марка =  ВыборкаПоРег.Марка;
		Ед =  ВыборкаПоРег.ЕдиницаИзмерения;
		
		Если Результат.Регистратор > 1 Тогда
			Пост = СокрЛП(ВсегоРабочихДней/Результат.Регистратор) + " дн.";
			Раз = "";
		Иначе
			Пост = "";
		КонецЕсли;
		Область = Макет.ПолучитьОбласть("Стр");
		Область.Параметры.Раз = Раз;
		Область.Параметры.Пост = Пост;
		Область.Параметры.тг = Результат.тг;
		Область.Параметры.ГОСТ = ГОСТ;
		Область.Параметры.Марка = Марка;
		Область.Параметры.товар = Результат.товар;
		Область.Параметры.Количество = СокрЛП(Результат.КоличествоОборот) + " " + Ед;
		табДок.Вывести(Область); КонецЦикла;
	Возврат табДок; КонецФункции

&НаКлиенте
Процедура Сформировать(Команда)
	тд = makeReportOnServer();
	тд.Показать(); 
КонецПроцедуры

МО

Функция  вернуть() экспорт
	возврат получитьМакет("Макет");
КонецФункции

15.Завести парочку реализаций для проверки и демнстрации.

Обновление ИБ МФ:


&НаСервереБезКонтекста
Процедура Команда1НаСервере()
	 Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();	
КонецПроцедуры

&НаКлиенте
Процедура Команда1(Команда)
	Команда1НаСервере();
КонецПроцедуры

Оглавление

Билет 7/1.16 1.16 - розница скидки
1.Администрирование – «Маркетинг и планирование» несколько видов цен, ценовые группы, автоматические скидки в продажах, сегменты номенклатуры, маркетинговые мероприятия; «Продажи и CRM» розничные продажи, назначать скидки по кнопке расчет, несколько касс ККМ; «Склад и доставка» несколько складов, «РМК и оборудование» использовать подключаемое оборудование. (Создать организацию).
2.Создать «Ценовые группы» (Эксклюзив).
3.Создать номенклатуру (Номенклатура 1) и указать ценовую группу Эксклюзив.
4.Создать «Склады»: Розничный (Розничный магазин, розничный вид цен (розничный (при добавлений поставить галочку «цена включает НДС», «при продаже клиентам»))), Склад 1 (оптовый склад).
5.Создать «Поступление товаров», добавить поставщика, склад (розничный) указать кол-во (100), цена (100).
6.Маркетинг и планирование – цены/прайс-лист, история изменения цен – создать – добавить номенклатуру и указать цену (100).
7.Маркетинг и планирование – скидки/наценки – вместо «Максимум» делаем «Вытеснение»
8.Создать скидку: назначается (автоматически), предоставить скидку/наценку (10%), условия предоставления: добавить за время продажи (ПН с 23:00:00 до 23:59:59, ВТ с 00:00:00 до 03:00:00, ВТ 23:00:00 до 23:59:59 и т.п. для всей недели).
9.Создать скидку: назначается (автоматически), предоставить скидку/наценку (3%), условия предоставления: добавить за разовый объём продаж (сумма в документе не менее 10 000).
10.ВАЖНО (в скидках не забыть изменить текущий статус скидки на «Действует»).
11.Продажи – Кассы ККМ (создать кассу).
12.Администрирование – РМК и оборудование – подключаемое оборудование – создать – фискальный регистратор – создать – драйвер оборудования (1С: Фискальный регистратор (эмулятор)).
13.Администрирование – РМК и оборудование – Настройки РМК для текущего рабочего места – указать Кассу ККМ без подключения оборудования.
В комментарий необходимо указать следующее: «Указываются функциональные опции, создается организация, склады, номенклатура, касса ККМ, скидки, поступление товаров, подключается оборудование, открываем смену, пробиваем чеки, закрываем смену».

Оглавление

Билет 7/2.17 - отчет обоснованность цен закупки
1.Администрирование – «Закупки» соглашение с поставщиками, заказы поставщикам, «Общие настройки» дополнительные реквизиты и сведения.
2.НСИ – Структура предприятия – создать – Склад
3.Финансы – Настройки и справочники – Статьи расходов – создать – наименование (Затраты на доставку), вариант распределения (На себестоимость товаров), Правила распределения (Пропорционально количеству), Вид аналитики расходов (Заказ поставщику).


4.Создать «Номенклатура» Товар 1, Товар 2, создать поставщика.
5.Закупки – Цены поставщиков/прайс-листы – история изменения цен – создать – укажем созданного поставщика и добавить две цены: «Без условий», «Самовывоз» (для самовывоза Все действия – изменить состав дополнительных реквизитов – пкм в поле «Дополнительный реквизит» - создать – наименование «Самовывоз», тип значения «Булево», в карточке цены отметим булевское значение галочкой. Отметить галочками виды цен – перейти к установке цен – добавляем Товар 1,2 (исходя из условии задачи для цены «Без условий» Товар 1 – 2 000, Товар 2 – 4 000; Самовывоз Товар 1 – 1 700, Товар 2 – 3 600.


6.Закупки – соглашения об условиях закупок – создать – наименование (Поставщик(Без условий)), Поставщик (Поставщик), Цена включает НДС, Вид цены поставщика (Без условий), Налогообложение (Закупка облагается НДС) – записать и закрыть.
7.Создаем соглашения для Самовывоза – наименование (Поставщик(Самовывоз), Вид цены поставщика (Самовывоз).
8.Закупки – Заказы поставщикам – создать три документа для соглашения «Без условий» 2 шт. и «Самовывоз».
9.Создать на основании Заказов поставщиков – Поступление товаров.
10.Финансы – Поступления услуг и прочих активов – создать – Поставщик (Поставщик), вкладка «Расходы» - добавить – Содержание (Доставка), Количество (1), Цена (1 000), Ставка НДС (18%), Подразделение-получатель (Склад), Статья расходов (Затраты на доставку), Аналитика расходов (Заказ поставщику с соглашением «Самовывоз), вкладка «Дополнительно» Цена включает НДС.


11.Создать Поступление услуг и прочих активов и для второго заказа поставщика с соглашением «Без условий».
12. Отчет СКД:

ВЫБРАТЬ
	ПартииПрочихРасходовОбороты.АналитикаРасходов,
	ПартииПрочихРасходовОбороты.СтоимостьПриход
ПОМЕСТИТЬ ВТРасходы
ИЗ
	РегистрНакопления.ПартииПрочихРасходов.Обороты(, , , СтатьяРасходов = &Доставка) КАК ПартииПрочихРасходовОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ЗаказыПоставщикамОбороты.ЗаказПоставщику,
	ЗаказыПоставщикамОбороты.Номенклатура,
	ЗаказПоставщикуТовары.Ссылка.Соглашение.ВидЦеныПоставщика,
	ЗаказыПоставщикамОбороты.ЗаказаноРасход,
	ЗаказПоставщикуТовары.Цена,
	ВТРасходы.СтоимостьПриход КАК СтоимостьДоставки,
	ЗаказПоставщикуТовары.Цена * ЗаказыПоставщикамОбороты.ЗаказаноРасход КАК Сумма
ИЗ
	РегистрНакопления.ЗаказыПоставщикам.Обороты(
			,
			,
			,
			ЗаказПоставщику В
				(ВЫБРАТЬ
					ВТРасходы.АналитикаРасходов
				ИЗ
					ВТРасходы КАК ВТРасходы)) КАК ЗаказыПоставщикамОбороты
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
		ПО ЗаказыПоставщикамОбороты.ЗаказПоставщику = ЗаказПоставщикуТовары.Ссылка
			И ЗаказыПоставщикамОбороты.Номенклатура = ЗаказПоставщикуТовары.Номенклатура
			И ЗаказыПоставщикамОбороты.Характеристика = ЗаказПоставщикуТовары.Характеристика
		ЛЕВОЕ СОЕДИНЕНИЕ ВТРасходы КАК ВТРасходы
		ПО ЗаказыПоставщикамОбороты.ЗаказПоставщику = ВТРасходы.АналитикаРасходов
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			ВидыЦенПоставщиковДополнительныеРеквизиты.Ссылка КАК Ссылка,
			ВидыЦенПоставщиковДополнительныеРеквизиты.Значение КАК Значение
		ИЗ
			Справочник.ВидыЦенПоставщиков.ДополнительныеРеквизиты КАК ВидыЦенПоставщиковДополнительныеРеквизиты
		ГДЕ
			ВидыЦенПоставщиковДополнительныеРеквизиты.Свойство.Наименование ПОДОБНО "%Самовывоз%") КАК ВложенныйЗапрос
		ПО (ЗаказПоставщикуТовары.ВидЦеныПоставщика = ВложенныйЗапрос.Ссылка)
//ГДЕ
//	ВидыЦенССамовывозом.Значение ЕСТЬ NULL 

13.Вкладка «Ресурсы» добавить – Количество, СтоимостьДоставки («Выражение» Максимум(СтоимостьДоставки) «рассчитывать по…» (Заказ Поставщику), Сумма, Цена.

14.Вкладка «Параметры» - Ограничение для НачалоПериода, КонецПериода, у Доставки снять ограничение и поставить галочку «Запрет незаполненных значение».

15.Вкладка «Настройка» - установить галочку у параметра «Доставка» и включить в пользовательские настройки.

16.Открыть конструктор настроек – список – ЗаказПоставщику, Номенклатура, Характеристика, Количество, Цена, Сумма, ВидЦеныПоставщика, СтоимостьДоставки, группировка и упорядочивание – ЗаказПоставщику.

Оглавление

Билет 8/1.32  - обработка "Формирование заказов по потребностям". Метод "Заказ под заказ".                                          
1.Администрирование – «Закупки» заказы поставщикам, обеспечение потребностей (расширенное), соглашение с поставщиками «Склад и доставка» несколько складов, внутреннее обеспечение, «CRM и продажи» заказы клиентов, использование заказов (Заказ со склада и под заказ), реализация товаров с нескольких складов (Создать организацию).
2.Создать «График работы», Пятидневка, последний день субботы каждого месяца – рабочий день.
3.Создать Групп склада (Разрешить в заказах и накладных), добавить два склада (Склад 1,2) указать в них график работы.
4.Создать Номенклатура 1, 2 (для каждой создать «Параметры обеспечения потребностей» для двух складов).
5.Создать «Способы обеспечения потребностей» в разрезе склада (срок покупки(2), заказ при достижении точки заказа, обеспечиваемый период (10), гарантированный срок отгрузки (2), вкладка «Ограничение использования» с одним поставщиком, поставщик (Поставщик), Соглашение (Соглашение с поставщиком).
6.В разрезе номенклатуры еще раз проверить параметры обеспечения потребностей: срок исполнения (2), обеспечиваемый период (10).
7.Создать «Заказ клиента» клиент (розничный покупатель), склад (группа складов), в ТЧ добавить номенклатура 1, кол-во (100), цена (100), склад (склад1); номенклатура 2, кол-во(200), цена (200), склад (склад 2).
8.Открыть обработку «Формирование заказов по потребностям», на первом шаге установить отбор по складу, затем в заказах поставщику добавить информацию и провести документы.
В комментарий указать: «Указать функциональные опции, создать организацию, график работы, группу складов, склады, номенклатуру, параметры обеспечения потребностей, способы обеспечения потребностей, заказ клиента и с помощью обработки «Формирование заказов по потребностям».

Оглавление

Билет 8/2.38- исходные комплектующие "теряютсяв" + отчет "Комплектующие в сборке"
1.Администрирование – «Склад и доставка» сборка/разборка, статусы сборок/разборок.
2.Создать склад (основной), поставщика (Поставщик 2), добавить две номенклатуры (Номенклатура 3 Комплект 1,2, Номенклатура 4 Комплект 1,2); создать номенклатуру (Комплект 1), в карточке перейти в «Варианты комплектации», наименование варианта (Комплект 1), количество (1), длительность сборки/разборки (20), в ТЧ Номенклатура 3 комплект 1, Номенклатура 4 комплект 1 в кол-ве (5), сделать то же самое для Комплекта 2 (длит сборки 30), в кол-ве (10).


3.Создать Поступление товаров и услуг, в ТЧ указать номенклатуру по 100шт.
4.Склад – сборки/разборки товаров – создать сборку – Номенклатура (Комплект 1), кол-во (5), в ТЧ указать (Номенклатура 3 компл 1, Номенклатура 3 компл 2) в кол-ве (25), поставить статус «В работе».


5.Включить конфигурацию с возможностью изменения.
6.Найти регистр накопления «ТоварыНаСкладах» и скопировать его, наименование «ТоварыВСборке»; Подсистема «УправлениеТорговлей»; Регистратор «СборкаТоваров»; Данные (добавить Измерение – Комплект, тип СправочникСсылка.Номенклатура).
7.Добавить «ОбщиеМодули» ДопПроведение.
8.Добавить «Подписка на события» (ПроведениеСборки, Источник (ДокументОбъект.СборкаТоваров), Событие (ОбработкаПроведения), Обработчик (ДопПроведение).


Процедура ПроведениеСборкиОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
	//Процедура ПроведениеСборкиОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
	Статус = Источник.Статус;
	Если Статус <> перечисления.СтатусыСборокТоваров.ВРаботе и Статус <> Перечисления.СтатусыСборокТоваров.СобраноРазобрано Тогда
		Возврат;
	КонецЕсли;
	Источник.Движения.ТоварыВСборке.Записывать = Истина;
	Запрос = Новый Запрос(ПолучитьТекстЗапроса());
	Запрос.УстановитьПараметр("ДвиженияТоварыНаСкладах", Источник.Движения.ТоварыНаСкладах.Выгрузить());
	Запрос.УстановитьПараметр("Период", Источник.Дата);
	Запрос.УстановитьПараметр("Статус", Источник.Статус);
	Запрос.УстановитьПараметр("Комплект", Источник.Номенклатура);
	Источник.Движения.ТоварыВСборке.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры

Функция ПолучитьТекстЗапроса()
	ТекстЗапроса = "ВЫБРАТЬ
	               |	ТоварыНаСкладах.ВидДвижения,
	               |	ТоварыНаСкладах.Номенклатура,
	               |	ТоварыНаСкладах.Характеристика,
	               |	ТоварыНаСкладах.Назначение,
	               |	ТоварыНаСкладах.Склад,
	               |	ТоварыНаСкладах.Помещение,
	               |	ТоварыНаСкладах.Серия,
	               |	ТоварыНаСкладах.ВНаличии
	               |ПОМЕСТИТЬ ВТ
	               |ИЗ
	               |	&ДвиженияТоварыНаСкладах КАК ТоварыНаСкладах
	               |;
	               |
	               |////////////////////////////////////////////////////////////////////////////////
	               |ВЫБРАТЬ
	               |	ВТ_ТоварыНаСкладах.Номенклатура,
	               |	ВТ_ТоварыНаСкладах.Характеристика,
	               |	ВТ_ТоварыНаСкладах.Назначение,
	               |	ВТ_ТоварыНаСкладах.Склад,
	               |	ВТ_ТоварыНаСкладах.Помещение,
	               |	ВТ_ТоварыНаСкладах.Серия,
	               |	СУММА(ВТ_ТоварыНаСкладах.ВНаличии) КАК ВНаличии,
	               |	ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) КАК ВидДвижения,
	               |	&Период,
	               |	&Комплект
	               |ИЗ
	               |	ВТ КАК ВТ_ТоварыНаСкладах
	               |ГДЕ
	               |	ВТ_ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
	               |
	               |СГРУППИРОВАТЬ ПО
	               |	ВТ_ТоварыНаСкладах.Характеристика,
	               |	ВТ_ТоварыНаСкладах.Назначение,
	               |	ВТ_ТоварыНаСкладах.Склад,
	               |	ВТ_ТоварыНаСкладах.Помещение,
	               |	ВТ_ТоварыНаСкладах.Серия,
	               |	ВТ_ТоварыНаСкладах.Номенклатура
	               |
	               |ОБЪЕДИНИТЬ ВСЕ
	               |
	               |ВЫБРАТЬ
	               |	ВТ_ТоварыНаСкладах.Номенклатура,
	               |	ВТ_ТоварыНаСкладах.Характеристика,
	               |	ВТ_ТоварыНаСкладах.Назначение,
	               |	ВТ_ТоварыНаСкладах.Склад,
	               |	ВТ_ТоварыНаСкладах.Помещение,
	               |	ВТ_ТоварыНаСкладах.Серия,
	               |	СУММА(ВТ_ТоварыНаСкладах.ВНаличии),
	               |	ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход),
	               |	&Период,
	               |	&Комплект
	               |ИЗ
	               |	ВТ КАК ВТ_ТоварыНаСкладах
	               |ГДЕ
	               |	ВТ_ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход)
	               |	И &Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСборокТоваров.СобраноРазобрано)
	               |
	               |СГРУППИРОВАТЬ ПО
	               |	ВТ_ТоварыНаСкладах.Помещение,
	               |	ВТ_ТоварыНаСкладах.Серия,
	               |	ВТ_ТоварыНаСкладах.Характеристика,
	               |	ВТ_ТоварыНаСкладах.Номенклатура,
	               |	ВТ_ТоварыНаСкладах.Назначение,
	               |	ВТ_ТоварыНаСкладах.Склад";
	Возврат ТекстЗапроса; 
КонецФункции


10.Скопировать отчет «ВедомостьПоТоварамНаСкладах» и переименовать ««ВедомостьПоТоварамНаСкладахВСборке».
11.В СКД – текст – заменить – искать(ТоварыНаСкладах), заменить (ТоварыВСборке) – заменить все.
12.Конструктор запросов – Запрос пакета 3 – Добавить (ТоварыВСборкеОстаткиИОбороты.Комплект) – ОК.
13.Настройки, строчка (Номенклатура, Характеристика, Серия) добавить поле Комплект.
14.Сервис – Параметры – Запуск 1с:Предприятия – параметр запуска (ЗапуститьОбновлениеИнформационнойБазы).
15.Склад – Сборки/разборки товаров – провести ранее созданный документ в статусе «В работе».
В комментарий указать: «Отчет для просмотра товаров на складах в сборке можно найти через команду «Все функции».

Оглавление

Билет 9/1.42 дминистрирование: «Закупки» акты о расхождениях при поступлении товаров                                                                                                                            

1.Администрирование: «Закупки» акты о расхождениях при поступлении товаров. (создать организацию, склад).

2. Создать документ «Поступление товаров» в тч добавить (Товар 1, № по док. 1, кол-во 10, цена 6 000, Товар 2, № по док. 2, кол-во 10, цена 11 000), проставить галочку «Есть расхождения».

3.Во вкладке «Товары по данным поставщика» исправить кол-во по товару 2 на 9 шт., провести документ «в пользу поставщика».

4.Далее на основании документы «АКТ ...» для печати ТОРГ 1,ТОРГ 2, ТОРГ 3 - 160 т.руб

5.Закупки- Отчеты по закупкам – Ведомость по расчетам с поставщиками (здесь видим что наш долг перед поставщиком увеличился не только на товары  по данным поставщика, но за излишек мы также стали должны поставщику) 170 т.руб.

В комментарии указать: «Указываются функциональные опции, создается организация, склад, документ «Поступление товаров», заполняется табличная часть, ставиться галочка «Есть расхождения» указываются расхождения, документ проводится».

Оглавление

Билет 9/2.34 информация о "плохих" сериях номенклатуры

1. Администирование: «Номенклатура» характеристика номенклатуры, серии товаров, множество видов номенклатуры; «Склад и доставка» ордерные склады.

2. Создать склад «Экзамен». Установить галку «Использовать ордерную схему документооборота «при отражении излишков, недостач и порчи», иначе серии можно использовать только справочно, а нам по условию нужно знать остатки в разрезе серий.

3. Создать вид номенклатуры «Экзамен», поставить галку «Использовать серии». Указать что серии идентифицируют «Партия товаров, имеющих одинаковый номер серии». Для склада «Экзамен» указать политику учета серий с типом «Управление остатками серий».

4. Создать номенклатуру с видом номенклатуры «Экзамен» и создать поступления с разными сериями.

5. Решение:

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

В форме регистрации серий нужно:

  1. На вкладке «Ввод» при изменении колонки «Номер» проверять не является ли серия «плохой» и если да, то предупреждать об этом и обнулять колонку «Количество». При изменении количества проверять  если серия «плохая», то обнулять колонку «Количество».
  2. На вкладке «Выбор» если серия «плохая», то обнулять колонку «Количество».

И все равно нужно делать проверку при проведении, т.к. можно взять созданный документ, поменять дату и провести.

  1. Создать регистр сведения «ПлохиеСерии» (независимый, периодичность в пределах дня). Измерения:
  2. (тип СправочникСсылка.СерииНоменклатуры),
  3. (тип СправочникСсылка.Номенклатура), ведущее
  4. (тип СправочникСсылка.ХарактеристикиНоменклатуры)

Создать общий модуль «ПроверкаПлохихСерий» (сервер, вызов сервера), в нем функцию которая срезом последних под дате документа из регистра «Плохие серии» возвращает на переданную номенклатуру, характеристику и серию Истина или Ложь.

Функция ПроверкаПлохихСерий(ДатаСреза,Номенклатура,Характеристика,Серии) Экспорт
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	ПлохиеСерииСрезПоследних.Период
		|ИЗ
		|	РегистрСведений.ПлохиеСерии.СрезПоследних(
		|			&ДатаСреза,
		|			Номенклатура = &Номенклатура
		|				И Серии = &Серии
		|				И Характеристика = &Характеристика) КАК ПлохиеСерииСрезПоследних";
	Запрос.УстановитьПараметр("ДатаСреза", ДатаСреза);
	Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
	Запрос.УстановитьПараметр("Серии", Серии);
	Запрос.УстановитьПараметр("Характеристика", Характеристика);
	возврат Запрос.Выполнить().Пустой();
КонецФункции
  1. В форме «ФормаРегистрацииСерий» на странице «Выбор» обработки ПодборСерийВДокументы в табличной части для колонки «Количество» в процедуру ПриИзменении в начале добавить проверку для строки из которой открывается обработка ПодборСерийВДокументы. В функцию проверка плохих серий нужно передать:

ДатуСреза  (Этаформа.ВладелецФормы.Объект.Дата)

Номеклатуру (Этаформа.Номенклатура)

Характеристика (Этаформа.Характеристика)

Серии (Этаформа.Элементы.ОстаткиСерий.ТекущиеДанные.Серия)

            Если функция вернет Истина, то обнулить в текущих данных КоличествоУпаковок

Этаформа.Элементы.ОстаткиСерий.ТекущиеДанные.КоличествоУпаковок = 0;

                И сообщить что эту серию использовать нельзя.

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

Серии (Элементы.Серии.ТекущиеДанные.Серия)

и у неё же обнулять КоличествоУпаковок, если возвращается Истина  

   Этаформа.Элементы.Серии.ТекущиеДанные.КоличествоУпаковок = 0;
  1. Теперь нужно сделать проверку при проведении поступления. Создать подписку на события «ОбработкаПроведения» для документа поступления товаров. Обработчик события разместить в том же общем модуле «Рарус_ПроверкаПлохихСерий».
  2. В обработчике сделать запрос к табличной части «Серии» документа поступления и соединить её внутренним соединением со срезом последних регистра сведений «ПлохиеСерии». Т.о., если запрос что-то вернет, то это и будет плохая серия с номенклатурой и характеристикой.
  3. Опишем таблицы запроса

  1)Серии Источник табличная часть «Серии» документа ПоступлениеТоваровУслуг

Поля: 

Серия (Серии.Серия)

Номенклатура (Серии.Номенклатура)

Характеристика (Серии.Характеристика)

2)ПлохиеСерииСрезПоследних  

Источник: срез последних регистра сведений «ПлохиеСерии» (&ДатаСреза)

 Условие: Серии.Ссылка = &Документ"

Связи: Внутреннее по полям Номенклатура, Серия, Характеристика.

Парамеры: &ДатаСреза = Источник.Дата, &Документ = Источник.Ссылка

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

  1. Серии так же есть еще у приходного ордера на товары, который используется при ордерном на ордерном складе. Если есть время, то нужно сделать проверку при проведении ордера.  В подборе ничего делать не надо, т.к. вызывается та же обработка, а вот для проверки проведения нужно сделать следующее:

1) В подписку события добавить документ ПриходныйОрдерНаТовары.

2) В начале процедуры добавить поиск полного имени документа

ДокументПоиска = Метаданные.НайтиПоТипу(ТипЗнч(Источник)).ПолноеИмя();

3) В запросе вместо 

ИЗ   Документ.ПоступлениеТоваровУслуг.Серии КАК СерииДокумента   "+ДокументПоиска+".Серии КАК СерииДокумента

Поскольку табличная часть «Серии» у документов одинаковые, менять больше ничего не надо.

Процедура  Рарус_ПроведениеОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт
	ДокументПоиска = Метаданные.НайтиПоТипу(ТипЗнч(Источник)).ПолноеИмя();
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	СерииДокумента.Серия,
	|	СерииДокумента.Номенклатура,
	|	СерииДокумента.Характеристика
	|ИЗ
	|	"+ДокументПоиска+".Серии КАК СерииДокумента
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПлохиеСерии.СрезПоследних(&ДатаСреза, ) КАК ПлохиеСерииСрезПоследних
	|		ПО СерииДокумента.Номенклатура = ПлохиеСерииСрезПоследних.Номенклатура
	|			И СерииДокумента.Характеристика = ПлохиеСерииСрезПоследних.Характеристика
	|			И СерииДокумента.Серия = ПлохиеСерииСрезПоследних.Серии
	|ГДЕ
	|	СерииДокумента.Ссылка = &Документ";
	
	Запрос.УстановитьПараметр("ДатаСреза", Источник.Дата);
	Запрос.УстановитьПараметр("Документ", Источник.Ссылка);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	Если НЕ РезультатЗапроса.Пустой() Тогда
		ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
		ПредыдущаяНоменклатура = Справочники.Номенклатура.ПустаяСсылка();
		ПредыдущаяХарактеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
		СтрокаСообщения = "";
		Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
			Если ПредыдущаяНоменклатура = ВыборкаДетальныеЗаписи.Номенклатура и ПредыдущаяХарактеристика = ВыборкаДетальныеЗаписи.Характеристика Тогда
				СтрокаСообщения = СтрокаСообщения + ", "+ВыборкаДетальныеЗаписи.Серия;
			Иначе
				Если СтрокаСообщения <> "" Тогда
					Сообщить(СтрокаСообщения);
				КонецЕсли;
				СтрокаСообщения = "Для номенклатуры """+ВыборкаДетальныеЗаписи.Номенклатура+""" с характеристикой """+ВыборкаДетальныеЗаписи.Характеристика+""" указаны плохие серии:"+ВыборкаДетальныеЗаписи.Серия;
			КонецЕсли;
			ПредыдущаяНоменклатура = ВыборкаДетальныеЗаписи.Номенклатура;
			ПредыдущаяХарактеристика = ВыборкаДетальныеЗаписи.Характеристика;
		КонецЦикла;
		Сообщить(СтрокаСообщения);
		Отказ = Истина;
	КонецЕсли
КонецПроцедуры

6. Создать отчет «Движение ИспорченныхСерий»

Две временные таблицы «Приход» и «Расход» Серий (отличаются условием Документ ССЫЛКА Документ.ПоступлениеТоваровУслуг):

ВЫБРАТЬ
	ПлохиеСерии.Номенклатура,
	ПлохиеСерии.Характеристика,
	ПлохиеСерии.Серии,
	ДвиженияСерийТоваровОбороты.Документ.Дата КАК ДатаПоступления,
	ДвиженияСерийТоваровОбороты.Документ.Партнер КАК Поставщик
ПОМЕСТИТЬ ПриходСерий
ИЗ
	РегистрСведений.ПлохиеСерии КАК ПлохиеСерии
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияСерийТоваров.Обороты(
				&НачалоПериода,
				&КонецПериода,
				Регистратор,
				Документ ССЫЛКА Документ.ПоступлениеТоваровУслуг
					ИЛИ Документ ССЫЛКА Документ.ПрочееОприходованиеТоваров) КАК ДвиженияСерийТоваровОбороты
		ПО ПлохиеСерии.Номенклатура = ДвиженияСерийТоваровОбороты.Номенклатура
			И ПлохиеСерии.Характеристика = ДвиженияСерийТоваровОбороты.Характеристика
			И ПлохиеСерии.Серии = ДвиженияСерийТоваровОбороты.Серия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ПлохиеСерии.Номенклатура,
	ПлохиеСерии.Характеристика,
	ПлохиеСерии.Серии,
	ДвиженияСерийТоваровОбороты.Документ.Партнер КАК Клиент
ПОМЕСТИТЬ РасходСерий
ИЗ
	РегистрСведений.ПлохиеСерии КАК ПлохиеСерии
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияСерийТоваров.Обороты(&НачалоПериода, &КонецПериода, Регистратор, Документ ССЫЛКА Документ.РеализацияТоваровУслуг) КАК ДвиженияСерийТоваровОбороты
		ПО ПлохиеСерии.Номенклатура = ДвиженияСерийТоваровОбороты.Номенклатура
			И ПлохиеСерии.Характеристика = ДвиженияСерийТоваровОбороты.Характеристика
			И ПлохиеСерии.Серии = ДвиженияСерийТоваровОбороты.Серия
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ПриходСерий.Номенклатура,
	ПриходСерий.Характеристика,
	ПриходСерий.Серии,
	ПриходСерий.ДатаПоступления,
	ПриходСерий.Поставщик,
	РасходСерий.Клиент,
	ТоварыНаСкладахОстатки.ВНаличииОстаток
ИЗ
	ПриходСерий КАК ПриходСерий
		ЛЕВОЕ СОЕДИНЕНИЕ РасходСерий КАК РасходСерий
		ПО ПриходСерий.Характеристика = РасходСерий.Характеристика
			И ПриходСерий.Номенклатура = РасходСерий.Номенклатура
			И ПриходСерий.Серии = РасходСерий.Серии
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&КонецПериода, ) КАК ТоварыНаСкладахОстатки
		ПО ПриходСерий.Характеристика = ТоварыНаСкладахОстатки.Характеристика
			И ПриходСерий.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
			И ПриходСерий.Серии = ТоварыНаСкладахОстатки.Серия

Далее Соединить их (слева – главная «ПриходСерий)

Добавить его как внешний и в «ЗапасыИЗакупки»

«ЖЕЛАТЕЛЬНО ЕЩЁ СДЕЛАТЬ В ПРОЧЕМ ОПРИХОДЫВАНИИ»

5 Создать свой склад, «Использовать ордера при отражении излишков и недостач», Создать «ВидТовара», несколько своего товара, на каждый товар - серию:

6. Создать поступление, продать. Оприходовать товар

Оглавление

Билет 10/1.13 - настройка виды цен. Наценки                                                                                                                                           

1.Администрирование – «Маркетинг и планирование» - несколько видов цен.

2.«Маркетинг и планирование» - настройки и справочники – «Виды цен» - Создаем три вида цен  «Вид цен колонки прайс-листа»: Базовая (при продаже клиентам, ручное назначение, цена включает НДС); Оптовая (цена включает НДС, при продаже клиентам, наценка на другой вид цен, базовый вид цены (Базовая) наценка (10%); Розничная (цена включает НДС), использовать полные возможности,  при продаже клиентам, наценка на другой вид цен (Базовая), наценка (20%), точность округления (100, вычитать из результата 1);

3.Маркетинг и планирование – цены(прайс-лист) – история изменения цен – создать – добавить цены для трех товаров.

В комментарии указать: «Указываются функциональная опция (Несколько видов цен), создаются виды цен согласно заданию, устанавливаются цены для прайс-листа, цены можно посмотреть отчетом «Прайс-лист»

Оглавление

Билет 10/2.31 - бзналичные лимиты ДС

1.Справочник (БанковскиеСчетаОрганизации) добавить в форме реквизит (ИспользоватьЗаявкиСверхЛимита – булево) и разместить его на форме.

2. Документ «СписаниеБезналичныхДенежныхСредств» модуль менеджера, найти по поиску «МассивРеквизитовОперации» код где заполняется для «ОплатаПоставщику» и добавить строчку:

МассивРеквизитовОперации.Добавить("Подразделение");

3.Создать общий модуль «ДопПроведение».

4.Создать подписку на событие «ПроведениеСписаниеБезналичныхДС», источник (Документ.СписаниеБезналичныхДС), событие (ОбработкаПроведения), обработ (ДопПроведение). 

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

5.Создать регистр сведений «ЛимитыПоПодразделениям», подсистема (Финансы – ПланированиеИКОнтрольДС),

Данные: измерения (Подразделение – СтруктураПредприятия), ресурсы (Сумма).

6.Администрирование – «Организация и денежных средств» заявки на расходование денежных средств, лимиты расхода денежных средств, лимиты расхода по подразделениям, контролировать превышение лимитов.

7.НСИ – структура предприятия – создать – основное подразделение

8.НСИ – настройка и справочники – настройка банковского счета (создать), настройка кассы (основное подразделение), добавить статью (оплата поставщику) лимит (галочка, 10 000).

9.Документ «Заявка на расходование ДС» - создать – операция (оплата поставщику), подразделение (основное подразделение), получатель, счет получателя (заполнить), сумма (10 001), в ТЧ указать статья движ дс (оплата поставщику), статус (согласована), провести документ.

10. Отчет. Так как задача писалась до введеня типового "РегистрНакопления.ЛимитыРасходаДенежныхСредств", мы оставляем НАШ "РегистрСведений.ЛимитыПоПодразделениям" для док. "СписаниеБезналичныхДенежныхСредств", а отчет делаем на типовом:

ВЫБРАТЬ
	ВЫБОР
		КОГДА Лимиты.ЛимитОборот - (Лимиты.РасходВПределахЛимитаОборот + Лимиты.РасходСверхЛимитаОборот) >= 0
			ТОГДА Лимиты.ЛимитОборот - (Лимиты.РасходВПределахЛимитаОборот + Лимиты.РасходСверхЛимитаОборот)
		ИНАЧЕ 0
	КОНЕЦ КАК Остаток,
	Лимиты.Подразделение,
	Лимиты.ЛимитОборот КАК Лимит,
	ВЫБОР
		КОГДА Лимиты.ЛимитОборот - (Лимиты.РасходВПределахЛимитаОборот + Лимиты.РасходСверхЛимитаОборот) <= 0
			ТОГДА (Лимиты.ЛимитОборот - (Лимиты.РасходВПределахЛимитаОборот + Лимиты.РасходСверхЛимитаОборот)) * -1
		ИНАЧЕ 0
	КОНЕЦ КАК Перерасход
ИЗ
	РегистрНакопления.ЛимитыРасходаДенежныхСредств.Обороты(&НачалоПериода, &КонецПериода, Авто, СтатьяДвиженияДенежныхСредств = ЗНАЧЕНИЕ(Справочник.СтатьиДвиженияДенежныхСредств.ОплатаПоставщику)
//И Организация = &Организация
) КАК Лимиты

Оглавление

Скачать файлы

Наименование Файл Версия Размер
Алгоритмы с решениями для экзамена Специалист УТ 11.1:
.docx 1,43Mb
27.03.17
7
.docx 1,43Mb 7 Скачать

См. также

Комментарии
1. probot (Probot1c) 04.02.17 06:31 Сейчас в теме
2. pirm2 (pirm2) 17.03.17 17:53 Сейчас в теме
Спасибо конечно. Но мы бы и архивом скачали бы. Работу можно и поощрить.
Оставьте свое сообщение