Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 сен 2021, 19:55

Тестовые задачи

Автор ivangrant, 20 мар 2019, 16:24

0 Пользователей и 1 гость просматривают эту тему.

ivangrant

Решаю тестовые задачки по БУ от автора экзамена 1С: Спец.
Но даже подобных не могу найти в билетах :(
Даже решение сравнить не с чем.
Может кто-то видел их или решал?
ДЗ
_____
Необходимо создать документ «Операция», с помощью которого пользователь должен иметь возможность ввести проводки с произвольной корреспонденцией счетов. При решении задачи следует учитывать возможность наличия проводок, сформированных с помощью данного документа.
Компания занимается торговлей продуктами питания. Учет товаров ведется в разрезе сроков годности. Под сроком годности понимается календарная дата, до которой товар годен к употреблению. На один и тот же товар с разными сроками годности при его поступлении может указываться разная цена. Например, на товар со сроком годности 10 января 2010 цена может быть ниже, чем на товар со сроком годности 30 января 2010. Товар с одинаковым сроком годности может поступать разными документами и по разной цене. Возможна ситуация когда в одном документе один и тот же товар поступает с разными сроками годности (и по разной цене). Учет товаров в разрезе складов не ведется.
Документ «Приходная накладная» реализует следующую проводку:
Дт «Товары» - Кт «Поставщики» на количество и сумму закупаемого товара.
Продажа товара регистрируется документом «Расходная накладная». Срок годности указывается в табличной части документа. Себестоимость рассчитывается как средняя по номенклатурной позиции в разрезе срока годности.
Документ «Расходная накладная» реализует следующие проводки:
Дт «Прибыли и убытки» - Кт «Товары» на количество и сумму себестоимости;
Дт «Покупатели» - Кт «Прибыли и убытки» на сумму в продажных ценах.
При первоначальном проведении документа «Расходная накладная» себестоимость не формируется. Фиксируется только количество продаваемого товара.
Для формирования себестоимости списываемых товаров необходимо запустить специальную обработку «Формирование себестоимости», которая для всех расходных накладных, введенных в заданном в обработке периоде, переформирует необходимые проводки с учетом рассчитанной на момент проведения документа себестоимости.
_________

+ ДЗ
_________
Необходимо создать документ «Операция», с помощью которого пользователь должен иметь возможность ввести проводки с произвольной корреспонденцией счетов. При решении задачи следует учитывать возможность наличия проводок, сформированных с помощью данного документа.
Компания занимается закупкой, сборкой и продажей мебели. Покупать и продавать можно как отдельные детали, так и мебель в целом. Факт закупки отражается документом «Приходная накладная», факт продажи – документом «Расходная накладная».
Каждый вид мебели состоит из отдельных деталей. Например, стол состоит из четырех ножек и столешницы. В информационной базе необходимо хранить информацию о том, какая мебель, из каких деталей состоит. Один вид мебели не может в качестве детали использовать другой вид мебели.
Для описания каждого вида мебели к нему добавляется произвольное количество характеристик. Набор этих характеристик является свойством. Например: стол «обеденный, дубовый» или стул «офисный, металлический, белый». «Офисный», «белый» это характеристики, а «офисный, металлический, белый» это свойство. Учет мебели, но не деталей, ведется в разрезе ее свойств. Механизм свойств должен быть реализован с помощью плана вида характеристик. Одно и то же свойство может быть указано у различных видов мебели.
Документ «Приходная накладная» формирует следующие проводки:

Дт «Товары» - Кт «Поставщики»

на количество и сумму закупаемой мебели.

Дт «Материалы» - Кт «Поставщики»

на количество и сумму закупаемых деталей.

Документ «Расходная накладная» формирует следующие проводки:

Дт «Прибыли и убытки» - Кт «Товары»

на количество и сумму себестоимости продаваемой мебели. Себестоимость каждого вида мебели рассчитывается как средняя по каждому свойству сразу  по всем складам.

Дт «Прибыли и убытки» - Кт «Материалы»

на количество и сумму себестоимости продаваемой деталей. Себестоимость рассчитывается как средняя для каждой детали по каждому складу.

Дт «Покупатели» - Кт «Прибыли и убытки»
на сумму в продажных ценах.
Операция сборки мебели оформляется в системе с помощью документа «Сборка». В шапке этого документа указывается склад, с которого происходит списание деталей, и склад, на который приходуется готовая продукция. В табличной части документа - собираемая мебель и ее количество.
Документ «Сборка» формирует следующие проводки:
Дт «Основное производство» - Кт «Материалы»
на списываемое количество деталей и их себестоимость. Себестоимость деталей рассчитывается так же, как и в случае продажи.
Дт «Товары» - Кт «Основное производство»
на собранное количество мебели и на стоимость списанных деталей.
________________

Заранее спасибо.

AIFrame

Посмотри типовой ОперацияБух в бухгалтерии 2.0
Остальное в твоем ДЗ - нюансы.

ivangrant

Цитата: AIFrame от 20 мар 2019, 17:41
Посмотри типовой ОперацияБух в бухгалтерии 2.0
Это касаемо всего ТЗ, или отдельного документа?

AIFrame

Цитата: ivangrant от 20 мар 2019, 16:24Необходимо создать документ «Операция», с помощью которого пользователь должен иметь возможность ввести проводки с произвольной корреспонденцией счетов
^this

ivangrant

Цитата: AIFrame от 21 мар 2019, 07:21
Цитата: ivangrant от 20 мар 2019, 16:24Необходимо создать документ «Операция», с помощью которого пользователь должен иметь возможность ввести проводки с произвольной корреспонденцией счетов
^this
Нееее... в данном случае там вообще ничего почти настраивать не нужно.
По первой задачке у меня не работает проверка остатков в Документе РасходнаяНакладная (во второй цикл не заохид обработчик :( ).
_______

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

Движения.БухУчет.Записывать = Истина;
Движения.БухУчет.Записать();

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

//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Товары", ПланыСчетов.Управленческий.Товары);

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

РезультатЗапроса = Запрос.Выполнить();

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

ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();

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

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

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

КонецЦикла;
КонецЦикла;


//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
________
Чего я пропустил?

AIFrame

Теги

[code][ /code]

вокруг кода, для начала.
И табуляцию.

ivangrant

Цитата: AIFrame от 21 мар 2019, 12:46
Теги

[code][ /code]

вокруг кода, для начала.
И табуляцию.
Прошу прощения.
Предыдущую проблему решил.
Теперь в первом ДЗ застопорился с выгрузкой обработки.
______
Не хочет запускаться :(


&НаКлиенте
Процедура Заполнить(Команда)
ВыполнитьОбработку();
Сообщить("Обработка завершена!");
КонецПроцедуры

&НаСервере
Процедура ВыполнитьОбработку()
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
    ОбработкаОбъект.Метаданные(ВыборПериода.ДатаНачала, ВыборПериода.ДатаОкончания);


РегистрыБухгалтерии.БухУчет.Записывать = Истина;
    РегистрыБухгалтерии.БухУчет.Записать();

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


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

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

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.КоличествоОборотДт <> 0 Тогда
    Себестоимость = Окр(ВыборкаДетальныеЗаписи.СуммаОборотДт/ВыборкаДетальныеЗаписи.КоличествоОборотДт*ВыборкаДетальныеЗаписи.КоличествоОборотКт, 2);
// регистр БухУчет
Движение = РегистрыБухгалтерии.БухУчет.Добавить();
Движение.СчетДт = ПланыСчетов.Управленческий.Покупатели;
Движение.СчетКт = ПланыСчетов.Управленческий.ПрибылиУбытки;
//Движение.Период = Дата;
Движение.Сумма = Себестоимость;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаДетальныеЗаписи.Номенклатура;
Иначе
ВыборкаДетальныеЗаписи.КоличествоОборотДт = 0;
КонецЕсли;
КонецЦикла;


//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА


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

______
Что здесь не так?

ivangrant

Прдолжаю бороться с задачками. В приниципен все решил)
Осталось разобраться с документом Сборка.
Проблема в записи регистра бухгалтерии. При списании и проверке на остатки, детали списываются корректно, себестоиомсть тоже пересчитывается.
А при записи собранного товара, у меня каждая запись дублируется на каждое количество списания каждой детали.
То есть, три детали одного собранного товара списались, и тут же второй проводкой этот собранный товар записался три раза.
Как можно настроить, чтобы вторая проводка была только по количеству добавленного товара?
________________

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

//Программное удаление существующих движений при перепроведении документа путем записи «пустого набора»
Движения.Управленческий.Записывать = Истина;
Движения.Управленческий.Записать();

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

//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Материалы", ПланыСчетов.Управленческий.Материалы);
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

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

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

Если Отказ Тогда
Продолжить;
КонецЕсли;

//Проверяем остатки
Нехватка = ВыборкаДетальныеЗаписи.КоличествоДетали - ВыборкаДетальныеЗаписи.КоличествоОстаток;
Если Нехватка > 0 Тогда
Отказ = Истина;
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Недостаточно товара: " +ВыборкаДетальныеЗаписи.НаименованиеДетали+" в количестве "+Нехватка+" шт.";
Сообщение.Сообщить();
КонецЕсли;

Если Отказ Тогда
Продолжить;
КонецЕсли;

//Считаем себестоиомсть
Если ВыборкаДетальныеЗаписи.КоличествоДетали = ВыборкаДетальныеЗаписи.КоличествоОстаток ИЛИ ВыборкаДетальныеЗаписи.КоличествоОстаток = 0 Тогда
СуммаСписания = ВыборкаДетальныеЗаписи.СуммаОстаток;
Иначе
СуммаСписания = ВыборкаДетальныеЗаписи.КоличествоДетали * ВыборкаДетальныеЗаписи.СуммаОстаток / ВыборкаДетальныеЗаписи.КоличествоОстаток;
КонецЕсли;

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

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

КонецЦикла;

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА


//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!


//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

___________

Нурлан

Цитата: ivangrant от 20 мар 2019, 16:24
Решаю тестовые задачки по БУ от автора экзамена 1С: Спец.
Но даже подобных не могу найти в билетах :(
Даже решение сравнить не с чем.
Может кто-то видел их или решал?
ДЗ
_____
Необходимо создать документ «Операция», с помощью которого пользователь должен иметь возможность ввести проводки с произвольной корреспонденцией счетов. При решении задачи следует учитывать возможность наличия проводок, сформированных с помощью данного документа.
Компания занимается торговлей продуктами питания. Учет товаров ведется в разрезе сроков годности. Под сроком годности понимается календарная дата, до которой товар годен к употреблению. На один и тот же товар с разными сроками годности при его поступлении может указываться разная цена. Например, на товар со сроком годности 10 января 2010 цена может быть ниже, чем на товар со сроком годности 30 января 2010. Товар с одинаковым сроком годности может поступать разными документами и по разной цене. Возможна ситуация когда в одном документе один и тот же товар поступает с разными сроками годности (и по разной цене). Учет товаров в разрезе складов не ведется.
Документ «Приходная накладная» реализует следующую проводку:
Дт «Товары» - Кт «Поставщики» на количество и сумму закупаемого товара.
Продажа товара регистрируется документом «Расходная накладная». Срок годности указывается в табличной части документа. Себестоимость рассчитывается как средняя по номенклатурной позиции в разрезе срока годности.
Документ «Расходная накладная» реализует следующие проводки:
Дт «Прибыли и убытки» - Кт «Товары» на количество и сумму себестоимости;
Дт «Покупатели» - Кт «Прибыли и убытки» на сумму в продажных ценах.
При первоначальном проведении документа «Расходная накладная» себестоимость не формируется. Фиксируется только количество продаваемого товара.
Для формирования себестоимости списываемых товаров необходимо запустить специальную обработку «Формирование себестоимости», которая для всех расходных накладных, введенных в заданном в обработке периоде, переформирует необходимые проводки с учетом рассчитанной на момент проведения документа себестоимости.
_________

+ ДЗ
_________
Необходимо создать документ «Операция», с помощью которого пользователь должен иметь возможность ввести проводки с произвольной корреспонденцией счетов. При решении задачи следует учитывать возможность наличия проводок, сформированных с помощью данного документа.
Компания занимается закупкой, сборкой и продажей мебели. Покупать и продавать можно как отдельные детали, так и мебель в целом. Факт закупки отражается документом «Приходная накладная», факт продажи – документом «Расходная накладная».
Каждый вид мебели состоит из отдельных деталей. Например, стол состоит из четырех ножек и столешницы. В информационной базе необходимо хранить информацию о том, какая мебель, из каких деталей состоит. Один вид мебели не может в качестве детали использовать другой вид мебели.
Для описания каждого вида мебели к нему добавляется произвольное количество характеристик. Набор этих характеристик является свойством. Например: стол «обеденный, дубовый» или стул «офисный, металлический, белый». «Офисный», «белый» это характеристики, а «офисный, металлический, белый» это свойство. Учет мебели, но не деталей, ведется в разрезе ее свойств. Механизм свойств должен быть реализован с помощью плана вида характеристик. Одно и то же свойство может быть указано у различных видов мебели.
Документ «Приходная накладная» формирует следующие проводки:

Дт «Товары» - Кт «Поставщики»

на количество и сумму закупаемой мебели.

Дт «Материалы» - Кт «Поставщики»

на количество и сумму закупаемых деталей.

Документ «Расходная накладная» формирует следующие проводки:

Дт «Прибыли и убытки» - Кт «Товары»

на количество и сумму себестоимости продаваемой мебели. Себестоимость каждого вида мебели рассчитывается как средняя по каждому свойству сразу  по всем складам.

Дт «Прибыли и убытки» - Кт «Материалы»

на количество и сумму себестоимости продаваемой деталей. Себестоимость рассчитывается как средняя для каждой детали по каждому складу.

Дт «Покупатели» - Кт «Прибыли и убытки»
на сумму в продажных ценах.
Операция сборки мебели оформляется в системе с помощью документа «Сборка». В шапке этого документа указывается склад, с которого происходит списание деталей, и склад, на который приходуется готовая продукция. В табличной части документа - собираемая мебель и ее количество.
Документ «Сборка» формирует следующие проводки:
Дт «Основное производство» - Кт «Материалы»
на списываемое количество деталей и их себестоимость. Себестоимость деталей рассчитывается так же, как и в случае продажи.
Дт «Товары» - Кт «Основное производство»
на собранное количество мебели и на стоимость списанных деталей.
________________

Заранее спасибо.

Есть новости по данным задачам? Сейчас прохожу курсы по специалисту, застрял на данных задачах

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск