понедельник, 30 марта 2015 г.

Задачи по Управляемым формам 5.1- 5.4

5.1) Необходимо добавить кнопку в форме списка документа, с помощью которой можно просмотреть какие движения делает текущий документ.


Реализация изображена с помощью скриншота




5.2) Задание про фотки сотрудников.

  Скачать решение задачи 5.2 


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


1)  Добавляем форму списка регистра бухгалтерии
2) Добавляем параметр "Контрагент"в эту форму.
3) Делаем произвольный запрос для динамического списка, в нем добавляем условие на субконто.
4) Устанавливаем параметр запроса динамического списка

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список.Параметры.УстановитьЗначениеПараметра("Контрагент", Параметры.Контрагент);

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

5) Добавляем команду в справочник контрагенты





&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
ПараметрыФормы = Новый Структура("Контрагент", ПараметрКоманды );
ОткрытьФорму("РегистрБухгалтерии.Управленческий.Форма.ФормаСпискаОтборПОКонтрагенту", ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно, ПараметрыВыполненияКоманды.НавигационнаяСсылка);
КонецПроцедуры

Скачать решение задачи 5.3 (на базе задачи 2.25)

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


1) Добавляем в РН необходимые реквизиты (Склад, ВидЦены).
2) Добавляем на форму команду подбора.
Процедура Подбор(Команда)
Парам = Новый Структура("ДатаСреза, ВидЦены,Склад", Объект.Дата,Объект.ВидЦены,Объект.Склад); 
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора", Парам, Элементы.СписокНоменклатуры);
КонецПроцедуры

3)Добавляем форму выбора справочника "Номенклатура" и добавляем необходимые параметры на форму.
4) Для динамического списка изменяем запрос на произвольный.
Соединяем таблицу номенклатуры с регистрами накопления(для получения остатков и регистром сведений для получения цены).
ВЫБРАТЬ
СправочникНоменклатура.Ссылка,
СправочникНоменклатура.ПометкаУдаления,
СправочникНоменклатура.Родитель,
СправочникНоменклатура.ЭтоГруппа,
СправочникНоменклатура.Код,
СправочникНоменклатура.Наименование,
СправочникНоменклатура.ТипТовара,
СправочникНоменклатура.Предопределенный,
СправочникНоменклатура.ИмяПредопределенныхДанных,
ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Остаток,
ЕСТЬNULL(ОстаткиНоменклатурыОстатки.КоличествоОстаток, 0) КАК Цена
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Остатки(&ДатаСреза, Склад = &Склад) КАК ОстаткиНоменклатурыОстатки
ПО СправочникНоменклатура.Ссылка = ОстаткиНоменклатурыОстатки.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаСреза, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура

5) Заполняем параметры в форме выбора.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список.Параметры.УстановитьЗначениеПараметра("Склад", Параметры.Склад);
Список.Параметры.УстановитьЗначениеПараметра("ВидЦены", Параметры.ВидЦены);
Список.Параметры.УстановитьЗначениеПараметра("ДатаСреза", Параметры.ДатаСреза);
КонецПроцедуры

6) Обрабатываем выбор значения.

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

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




четверг, 26 марта 2015 г.

1c специалист. Задача 2.27

Решение:
Для решения задачи задействуем следующие объекты:
1) ПВХ "Виды субконто". 

  • Заполняем типы значений характеристик и дополнительные значения характеристик. 
  • Согласно условия задачи заводим 3 предопределенных элемента "Склады"  "Номенклатура" и "Покупатели"
2) Дорабатываем план счетов. 
  •  на закладке "субконто" заполняем тип субконто и устанавливаем значение субконто=3.
  • Редактируем предопределенный счет: "Товары"  и  добавляем 3 субконто.(покупатели "только обороты")
3) Добавляем регистр бухгалтерии "Управленческий".
  • Связываем его с планом счетов
  • Добавляем признак учета "количественный".
  • Добавляем ресурсы ( сумма, количество). Количество - не балансовый, "Количественный"
  • Выбираем регистраторы.
4) Не забываем о том, что в задачах бухгалтерского учета необходимо добавить документ,  с помощью которого можно добавлять записи в регистр вручную. Назовем его "Операция".
 укажем что он является регистратором нашего регистра. 
добавим форму,на форму вытащим реквизит Объект-движения-управленческий.
Запретим проведение этого документа

 5) Переходим к Приходной накладной.

При решении задания решил использовать вспомогательный регистр "Остатки номенклатуры" для демонстрации методики  оперативного проведения.
  • С помощью конструктора движений формируем обработку проведения.


Процедура ОбработкаПроведения(Отказ, Режим)
Движения.Управленческий.Записывать = Истина;
Движения.ОстаткиНоменклатуры.Записывать = Истина;

Для Каждого ТекСтрокаСписокНоменклатуры Из СписокНоменклатуры Цикл
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаСписокНоменклатуры.Номенклатура;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаСписокНоменклатуры.Количество;

Движение = Движения.Управленческий.Добавить();
Движение.СчетДт = ПланыСчетов.Управленческий.Товары;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Склады] = Склад;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ТекСтрокаСписокНоменклатуры.Номенклатура;
Движение.СчетКт = ПланыСчетов.Управленческий.Поставщики;
Движение.Период = Дата;
Движение.Сумма = ТекСтрокаСписокНоменклатуры.Сумма;
Движение.КоличествоДт = ТекСтрокаСписокНоменклатуры.Количество;
КонецЦикла;

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

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
СуммаПоДокументу = СписокНоменклатуры.Итог("Сумма");

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

6) Потребуется регистр сведений "Состав комплекта"
Добавляем проверку чтобы выполнялось условие задачи (Комплект не может быть частью другого комплекта)

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


7) Переходим к "Сборке".

  • Добавим необходимые реквизиты шапки.
Добавим на форму требуемую команду "Заполнить"
&НаСервере
Процедура ЗаполнитьНаСервере()
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
             | СоставКомплекта.Номенклатура,
             | Сборка.Количество * СоставКомплекта.Количество КАК Количество
             |ИЗ
             | Документ.Сборка КАК Сборка
             | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставКомплекта КАК СоставКомплекта
             | ПО Сборка.Комплект = СоставКомплекта.Комплект
             |ГДЕ
             | Сборка.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка",Объект.Ссылка);
Объект.Состав.Загрузить(Запрос.Выполнить().Выгрузить());
КонецПроцедуры

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

Запретим пользователям в поле комплект выбирать не комплекты

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


  • Пишем процедуру проведения.

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

Движения.ОстаткиНоменклатуры.БлокироватьДляИзменения = Истина;
Движения.ОстаткиНоменклатуры.Записать();


Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.ОстаткиНоменклатуры");
ЭлементБлокировки.УстановитьЗначение("Склад", СкладОтправитель);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = Состав;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Номенклатура", "Номенклатура");
Блокировка.Заблокировать();

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


Запрос.УстановитьПараметр("Ссылка",Ссылка);
Запрос.УстановитьПараметр("Склад",СкладОтправитель);
Запрос.УстановитьПараметр("ТочкаИтогов", Новый Граница(МоментВремени(),ВидГраницы.Включая));

РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Отказ = Истина;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Недосточно товара "+ Выборка.Номенклатура + " в количестве "+ (-Выборка.Остаток);
Сообщение.Сообщить();
КонецЦикла;
КонецЕсли;



Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Управленческий");
ЭлементБлокировки.УстановитьЗначение("Субконто1", СкладОтправитель);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = Состав;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Субконто2", "Номенклатура");
Блокировка.Заблокировать();



Если  Отказ Тогда 
Возврат;
КонецЕсли;


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

Запрос.УстановитьПараметр("СчетТовары", ПланыСчетов.Управленческий.Товары);
Запрос.УстановитьПараметр("Склад",СкладОтправитель);
МСубконто = Новый Массив(2);
МСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Склады);
МСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура);
Запрос.УстановитьПараметр("МСубконто",МСубконто);
Запрос.УстановитьПараметр("ТочкаИтогов", Новый Граница(МоментВремени(),ВидГраницы.Исключая));

СтоимостьКомплектующих =0;
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Проводка =Движения.Управленческий.Добавить() ;
Проводка.Период = Дата;
Проводка.СчетДт = ПланыСчетов.Управленческий.ОсновноеПроизводство;
Проводка.СчетКт = ПланыСчетов.Управленческий.Товары;
Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Склады] =СкладОтправитель ;
Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] =Выборка.Номенклатура ;
Проводка.КоличествоКт = Выборка.Количество;
СуммаПроводки  = Выборка.Количество *(Выборка.ОстатокСум/Выборка.ОстатокКол);
Проводка.Сумма = СуммаПроводки;
СтоимостьКомплектующих =СтоимостьКомплектующих + СуммаПроводки;
КонецЦикла;

Проводка =Движения.Управленческий.Добавить() ;
Проводка.Период = Дата;
Проводка.СчетКт = ПланыСчетов.Управленческий.ОсновноеПроизводство;
Проводка.СчетДт = ПланыСчетов.Управленческий.Товары;
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Склады] =СкладПолучатель ;
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] =Комплект ;
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Покупатели] =Покупатель ;
Проводка.КоличествоДт = Количество;
Проводка.Сумма = СтоимостьКомплектующих;

Проводка =Движения.Управленческий.Добавить() ;
Проводка.Период = Дата;
Проводка.СчетКт = ПланыСчетов.Управленческий.ВспомогательноеПроизводство;
Проводка.СчетДт = ПланыСчетов.Управленческий.Товары;
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Склады] =СкладПолучатель ;
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] =Комплект ;
Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Покупатели] =Покупатель ;
Проводка.Сумма = СуммаСборки ;


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

СГРУППИРОВАТЬ ПО
УправленческийОборотыДтКт.СубконтоДт3,
УправленческийОборотыДтКт.СубконтоДт2


Скачать решение задачи 2.27

среда, 25 марта 2015 г.

1c специалист. Задача 2.25

Решение:
Для решения задачи задействуем следующие объекты:
1) ПВХ "Виды субконто". 

  • Заполняем типы значений характеристик и дополнительные значения характеристик. 
  • Согласно условия задачи заводим 2 предопределенных элемента "Курьер"  и "Поставщик". (для отчета)

2) Дорабатываем план счетов. 
  •  на закладке "субконто" заполняяем тип субконто и устанавливаем значение субконто=1.
  • Редактируем предопределенные счета: "Товары"  и  "Покупатели", добавляем субконто.
3) Добавляем регистр бухгалтерии "Управленческий".
  • Связываем его с планом счетов
  • Добавляем ресурсы ( сумма)
  • Выбираем регистраторы.
4) Не забываем о том, что в задачах бухгалтерского учета необходимо добавить документ,  с помощью которого можно добавлять записи в регистр вручную. Назовем его "Ручная операция".
 укажем что он является регистратором нашего регистра. 
добавим форму,на форму вытащим реквизит Объект-движения-управленческий.
Запретим проведение этого документа
 5) Переходим к Приходной накладной.
  • Добавим реквизиты шапки "Курьер"  и "Поставщик".
  • С помощью конструктора движений формируем обработку проведения.

Процедура ОбработкаПроведения(Отказ, Режим)
// регистр Управленческий 
Движения.Управленческий.Записывать = Истина;
Движение = Движения.Управленческий.Добавить();
Движение.СчетДт = ПланыСчетов.Управленческий.Товары;
Движение.СчетКт = ПланыСчетов.Управленческий.Сотрудники;
Движение.Период = Дата;
Движение.Сумма = СуммаПоДокументу;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Курьер] = Курьер;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Поставщик] = Поставщик;
КонецПроцедуры

6) Переходим к "Расходу денег".

  • Добавим реквизит шапки "Курьер" .
  • Пишем процедуру проведения.

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

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




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


Скачать решение задачи 2.25