Почему у меня в регистре бухгалтерии формируются 2 проводки по себестоимости
Процедура ОбработкаПроведения(Отказ, Режим)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Товар КАК Товар,
| СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество,
| РасходнаяНакладнаяТовары.Ссылка.Склад КАК Склад
|ПОМЕСТИТЬ ВременнаяТабличнаяЧастьТовары
|ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
|ГДЕ
| РасходнаяНакладнаяТовары.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РасходнаяНакладнаяТовары.Товар,
| РасходнаяНакладнаяТовары.Ссылка.Склад
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| ВременнаяТабличнаяЧастьТовары.Товар КАК Товар,
| ВременнаяТабличнаяЧастьТовары.Товар.Представление КАК ТоварПредставление,
| ВременнаяТабличнаяЧастьТовары.Количество КАК Количество,
| ВременнаяТабличнаяЧастьТовары.Склад КАК Склад,
| ЕСТЬNULL(ОстаткиТоваровОстатки.КоличествоОстатокОстаток, 0) КАК КоличествоОстаток
|ИЗ
| ВременнаяТабличнаяЧастьТовары КАК ВременнаяТабличнаяЧастьТовары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(
| &Дата,
| (Номенклатура, Склад) В
| (ВЫБРАТЬ
| ВременнаяТабличнаяЧастьТовары.Товар КАК Товар,
| ВременнаяТабличнаяЧастьТовары.Склад КАК Склад
| ИЗ
| ВременнаяТабличнаяЧастьТовары КАК ВременнаяТабличнаяЧастьТовары)) КАК ОстаткиТоваровОстатки
| ПО ВременнаяТабличнаяЧастьТовары.Товар = ОстаткиТоваровОстатки.Номенклатура
| И ВременнаяТабличнаяЧастьТовары.Склад = ОстаткиТоваровОстатки.Склад
|
|УПОРЯДОЧИТЬ ПО
| Товар,
| Склад";
Запрос.УстановитьПараметр("Дата",Дата);
Запрос.УстановитьПараметр("Ссылка",Ссылка);
Запрос.УстановитьПараметр("Склад",Склад);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество > ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
Отказ = Истина;
Сообщить("Не хватает: " + ВыборкаДетальныеЗаписи.ТоварПредставление + " " + (ВыборкаДетальныеЗаписи.Количество - ВыборкаДетальныеЗаписи.КоличествоОстаток)+ " штук");
КонецЕсли;
Если Отказ Тогда
Продолжить;
КонецЕсли;
Если ТипЗнч(ВыборкаДетальныеЗаписи.Товар) = Тип("СправочникСсылка.Номенклатура") тогда
Движения.ОстаткиТоваров.Записывать = Истина;
Движение = Движения.ОстаткиТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Товар;
Движение.Склад = Склад;
Движение.КоличествоОстаток = ВыборкаДетальныеЗаписи.Количество;
КонецЕсли;
КонецЦикла;
Запрос1 = Новый Запрос;
Запрос1.Текст =
"ВЫБРАТЬ
| СебестоимостьТоваровОстатки.Номенклатура КАК Номенклатура,
| СебестоимостьТоваровОстатки.СуммаОстаток КАК Сумма,
| СебестоимостьТоваровОстатки.КоличествоОстаток КАК Количество
|ИЗ
| РегистрНакопления.СебестоимостьТоваров.Остатки(
| &МоментВремени,
| Номенклатура В
| (ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Товар КАК Товар
| ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
| ГДЕ
| РасходнаяНакладнаяТовары.Ссылка = &Ссылка)) КАК СебестоимостьТоваровОстатки";
Запрос1.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос1.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса1 = Запрос1.Выполнить();
Выборка = РезультатЗапроса1.Выбрать();
СуммаСебестоимости = 0;
Пока Выборка.Следующий() Цикл
Если Выборка.Количество <> 0 Тогда
СебестоимостьЕдиницы = Выборка.Сумма/Выборка.Количество;
Иначе
СебестоимостьЕдиницы = 0;
КонецЕсли;
СтрокаТЧ = Товары.Найти(Выборка.Номенклатура,"Товар");
СебестоимостьСписания = СебестоимостьЕдиницы * СтрокаТЧ.Количество;
Движения.СебестоимостьТоваров.Записывать = Истина;
Движение = Движения.СебестоимостьТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Количество = СтрокаТЧ.Количество;
Движение.Сумма = СебестоимостьСписания;
КонецЦикла;
Движения.РегистрБухгалтерии.Записывать = Истина;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Если ТипЗнч(Выборка.Номенклатура) = Тип("СправочникСсылка.Номенклатура") тогда
Движение = Движения.РегистрБухгалтерии.Добавить();
Движение.СчетДт = ПланыСчетов.ПланСчетов.ПрибыльИУбыток;
Движение.СчетКт = ПланыСчетов.ПланСчетов.Товары;
Движение.Период = Дата;
Движение.Сумма = СебестоимостьСписания;
КонецЕсли;
КонецЦикла;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Если ТипЗнч(Выборка.Номенклатура) = Тип("СправочникСсылка.Номенклатура") тогда
Движение = Движения.РегистрБухгалтерии.Добавить();
Движение.Контрагент = Контрагент;
Движение.СчетДт = ПланыСчетов.ПланСчетов.Покупатели;
Движение.СчетКт = ПланыСчетов.ПланСчетов.ПрибыльИУбыток;
Движение.Период = Дата;
Движение.Сумма = ТекСтрокаТовары.Сумма ;
КонецЕсли;
КонецЦикла;
Для Каждого ТекСтрокаТовары Из Товары Цикл
Если ТипЗнч(Выборка.Номенклатура) = Тип("СправочникСсылка.Услуги") тогда
Движение = Движения.РегистрБухгалтерии.Добавить();
Движение.Контрагент = Контрагент;
Движение.СчетДт = ПланыСчетов.ПланСчетов.Покупатели;
Движение.СчетКт = ПланыСчетов.ПланСчетов.ПрибыльИУбыток;
Движение.Период = Дата;
Движение.Сумма = ТекСтрокаТовары.Сумма ;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Бухгалтерские проводки в программе "Управление торговлей"
- Сверка книги покупок с бухгалтерскими проводками по счетам 68.02, 68.22
- Выравнивание налогового учета по данным бухгалтерского учета
- Про бухгалтерский учёт очень просто
- Внешняя печатная форма, выводящая итоги по бухгалтерским проводкам документов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6)Я бы все таки вам рекомендовала пройти какие нить курсы онлайн. За регистр бухгалтерии пока ничего сказать не могу, так как до того модуля я еще не дошла. Но то что у вас тут черт ногу сломит и надо бы делать иначе - это я вижу))))
Как минимум по стандартным регистрам(не бухгалтерии) я бы сделала сначала в пакете запросов:
1) Временная таблица ТЧ товары
2) запрос к регистру, где в конструкторе выбираем обе таблицы и временную и регистр и ставим условие по номенклатуре как минимум и возможно по периоду и там же согласно выборки уже заполняла бы регистры: один, второй, третий.
В пакете запросов бывает не два-три, бывает и больше. А у вас запрос и уже результат, потом опять запрос и опять результат.. Посмотрите как сделаны процедуры в типовых.
На основании данных запросов я даже не понимаю, что это за ТЗ такое. Но то что вы говорите, это запросом к одной таблице не делается, это нужно стопудово пакет с двух-трех как минимум запросов при наличии связей, условий..)))
Как минимум по стандартным регистрам(не бухгалтерии) я бы сделала сначала в пакете запросов:
1) Временная таблица ТЧ товары
2) запрос к регистру, где в конструкторе выбираем обе таблицы и временную и регистр и ставим условие по номенклатуре как минимум и возможно по периоду и там же согласно выборки уже заполняла бы регистры: один, второй, третий.
В пакете запросов бывает не два-три, бывает и больше. А у вас запрос и уже результат, потом опять запрос и опять результат.. Посмотрите как сделаны процедуры в типовых.
На основании данных запросов я даже не понимаю, что это за ТЗ такое. Но то что вы говорите, это запросом к одной таблице не делается, это нужно стопудово пакет с двух-трех как минимум запросов при наличии связей, условий..)))
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот