|
Не записывается движения документа | ☑ | ||
---|---|---|---|---|
0
Zeratul
19.12.11
✎
17:05
|
Всем привет! Заранее извиняюсь за глупый вопрос...
Не записывается вот эта проводка...все реквизиты находятся в шапке документа...что я делаю не так??? Процедура ОбработкаПроведения(Отказ, РежимПроведения) Движения.Хозрасчетный.Записывать = Истина; Движения.Хозрасчетный.Очистить(); Сч_20_3 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("20.03"); ДвижениеШапка = Движения.Хозрасчетный.Добавить(); ДвижениеШапка.Период = Дата; ДвижениеШапка.СчетДт = Сч_20_3; БухгалтерскийУчет.УстановитьСубконто(ДвижениеШапка.СчетДт,ДвижениеШапка.СубконтоДт,Субконто1.Родитель.Метаданные().Имя,Субконто1); БухгалтерскийУчет.УстановитьСубконто(ДвижениеШапка.СчетДт,ДвижениеШапка.СубконтоДт,Субконто2.Родитель.Метаданные().Имя,Субконто2); ДвижениеШапка.ПодразделениеДт = Субконто3.Ссылка; Номенклатура = ПродукцияПущена.Ссылка; МассивНоменклатура = Новый Массив(); МассивНоменклатура.Добавить(Номенклатура); ТестЗапрос = Новый Запрос(); ТестЗапрос.УстановитьПараметр("Номенклатура",МассивНоменклатура); ТестЗапрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СчетаУчетаНоменклатуры.Организация КАК Организация, | СчетаУчетаНоменклатуры.Номенклатура КАК Номенклатура, | СчетаУчетаНоменклатуры.Номенклатура.ЭтоГруппа КАК ЭтоГруппа, | СчетаУчетаНоменклатуры.Склад КАК Склад, | СчетаУчетаНоменклатуры.ТипСклада КАК ТипСклада, | СчетаУчетаНоменклатуры.СчетУчета КАК СчетУчета, | СчетаУчетаНоменклатуры.СчетУчетаПередачи КАК СчетУчетаПередачи, | СчетаУчетаНоменклатуры.СчетДоходовОтРеализации КАК СчетДоходовОтРеализации, | СчетаУчетаНоменклатуры.СчетРасходовОтРеализации КАК СчетРасходовОтРеализации, | СчетаУчетаНоменклатуры.СчетУчетаНДСПоПриобретеннымЦенностям КАК СчетУчетаНДСПоПриобретеннымЦенностям, | СчетаУчетаНоменклатуры.СчетУчетаНДСПоРеализации КАК СчетУчетаНДСПоРеализации, | СчетаУчетаНоменклатуры.СчетУчетаНДСУплаченногоНаТаможне КАК СчетУчетаНДСУплаченногоНаТаможне, | СчетаУчетаНоменклатуры.Субконто1 КАК Субконто1, | СчетаУчетаНоменклатуры.Субконто2 КАК Субконто2, | СчетаУчетаНоменклатуры.Субконто3 КАК Субконто3 |ИЗ | РегистрСведений.СчетаУчетаНоменклатуры КАК СчетаУчетаНоменклатуры |ГДЕ | СчетаУчетаНоменклатуры.Номенклатура В(&Номенклатура)"; ТаблицаЗапроса = ТестЗапрос.Выполнить().Выгрузить(); Для каждого Строка из ТаблицаЗапроса Цикл СчетУчетаНоменклатурыШапка = Строка.СчетУчета; КонецЦикла; ДвижениеШапка.СчетКт = СчетУчетаНоменклатурыШапка; БухгалтерскийУчет.УстановитьСубконто(ДвижениеШапка.СчетКт,ДвижениеШапка.СубконтоКт,ПродукцияПущена.Родитель.Метаданные().Имя, ПродукцияПущена); БухгалтерскийУчет.УстановитьСубконто(ДвижениеШапка.СчетКт,ДвижениеШапка.СубконтоКт,СкладОтправитель.Родитель.Метаданные().Имя,СкладОтправитель); ДвижениеШапка.КоличествоДт = КоличествоПущено; //внимательно Запрос = Новый Запрос; Запрос.УстановитьПараметр("НачПериода",Дата); Запрос.УстановитьПараметр("КонПериода",Дата); Счет = СчетУчетаНоменклатурыШапка; НоменклатураСсылка = ПродукцияПущена.Ссылка; Запрос.УстановитьПараметр("Счет",Счет); Запрос.УстановитьПараметр("Ссылка",НоменклатураСсылка); Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Счет КАК Счет, | ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1, | ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2, | ХозрасчетныйОстаткиИОбороты.Организация КАК Организация, | ХозрасчетныйОстаткиИОбороты.КоличествоначальныйОстатокДт КАК КоличествоначальныйОстатокДт, | ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, , , , , ) КАК ХозрасчетныйОстаткиИОбороты |ГДЕ | ХозрасчетныйОстаткиИОбороты.Счет = &Счет | И ХозрасчетныйОстаткиИОбороты.Субконто1 = &Ссылка | И ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт > 0 "; Результат = запрос.Выполнить().Выбрать(); Пока результат.Следующий() Цикл СредняяСтоимость = результат.СуммаНачальныйОстатокДт/результат.КоличествоначальныйОстатокДт; КонецЦикла; Если СредняяСтоимость > 0 Тогда ДвижениеШапка.Сумма = Окр(КоличествоПущено * СредняяСтоимость,2); Иначе Предупреждение("Средняя стоимость номенклатуры -"+ ПродукцияПущена.Наименование +" равна 0!"); Отказ = Истина; Возврат; КонецЕсли; ДвижениеШапка.Содержание = "Передана продукция"; Движения.Записать(); |
|||
1
Zeratul
19.12.11
✎
17:05
|
Вот полный код процедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения) Движения.Хозрасчетный.Записывать = Истина; Движения.Хозрасчетный.Очистить(); Сч_20_3 = ПланыСчетов.Хозрасчетный.НайтиПоКоду("20.03"); ДвижениеШапка = Движения.Хозрасчетный.Добавить(); ДвижениеШапка.Период = Дата; ДвижениеШапка.СчетДт = Сч_20_3; БухгалтерскийУчет.УстановитьСубконто(ДвижениеШапка.СчетДт,ДвижениеШапка.СубконтоДт,Субконто1.Родитель.Метаданные().Имя,Субконто1); БухгалтерскийУчет.УстановитьСубконто(ДвижениеШапка.СчетДт,ДвижениеШапка.СубконтоДт,Субконто2.Родитель.Метаданные().Имя,Субконто2); ДвижениеШапка.ПодразделениеДт = Субконто3.Ссылка; Номенклатура = ПродукцияПущена.Ссылка; МассивНоменклатура = Новый Массив(); МассивНоменклатура.Добавить(Номенклатура); ТестЗапрос = Новый Запрос(); ТестЗапрос.УстановитьПараметр("Номенклатура",МассивНоменклатура); ТестЗапрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | СчетаУчетаНоменклатуры.Организация КАК Организация, | СчетаУчетаНоменклатуры.Номенклатура КАК Номенклатура, | СчетаУчетаНоменклатуры.Номенклатура.ЭтоГруппа КАК ЭтоГруппа, | СчетаУчетаНоменклатуры.Склад КАК Склад, | СчетаУчетаНоменклатуры.ТипСклада КАК ТипСклада, | СчетаУчетаНоменклатуры.СчетУчета КАК СчетУчета, | СчетаУчетаНоменклатуры.СчетУчетаПередачи КАК СчетУчетаПередачи, | СчетаУчетаНоменклатуры.СчетДоходовОтРеализации КАК СчетДоходовОтРеализации, | СчетаУчетаНоменклатуры.СчетРасходовОтРеализации КАК СчетРасходовОтРеализации, | СчетаУчетаНоменклатуры.СчетУчетаНДСПоПриобретеннымЦенностям КАК СчетУчетаНДСПоПриобретеннымЦенностям, | СчетаУчетаНоменклатуры.СчетУчетаНДСПоРеализации КАК СчетУчетаНДСПоРеализации, | СчетаУчетаНоменклатуры.СчетУчетаНДСУплаченногоНаТаможне КАК СчетУчетаНДСУплаченногоНаТаможне, | СчетаУчетаНоменклатуры.Субконто1 КАК Субконто1, | СчетаУчетаНоменклатуры.Субконто2 КАК Субконто2, | СчетаУчетаНоменклатуры.Субконто3 КАК Субконто3 |ИЗ | РегистрСведений.СчетаУчетаНоменклатуры КАК СчетаУчетаНоменклатуры |ГДЕ | СчетаУчетаНоменклатуры.Номенклатура В(&Номенклатура)"; ТаблицаЗапроса = ТестЗапрос.Выполнить().Выгрузить(); Для каждого Строка из ТаблицаЗапроса Цикл СчетУчетаНоменклатурыШапка = Строка.СчетУчета; КонецЦикла; ДвижениеШапка.СчетКт = СчетУчетаНоменклатурыШапка; БухгалтерскийУчет.УстановитьСубконто(ДвижениеШапка.СчетКт,ДвижениеШапка.СубконтоКт,ПродукцияПущена.Родитель.Метаданные().Имя, ПродукцияПущена); БухгалтерскийУчет.УстановитьСубконто(ДвижениеШапка.СчетКт,ДвижениеШапка.СубконтоКт,СкладОтправитель.Родитель.Метаданные().Имя,СкладОтправитель); ДвижениеШапка.КоличествоДт = КоличествоПущено; //внимательно Запрос = Новый Запрос; Запрос.УстановитьПараметр("НачПериода",Дата); Запрос.УстановитьПараметр("КонПериода",Дата); Счет = СчетУчетаНоменклатурыШапка; НоменклатураСсылка = ПродукцияПущена.Ссылка; Запрос.УстановитьПараметр("Счет",Счет); Запрос.УстановитьПараметр("Ссылка",НоменклатураСсылка); Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОстаткиИОбороты.Счет КАК Счет, | ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1, | ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2, | ХозрасчетныйОстаткиИОбороты.Организация КАК Организация, | ХозрасчетныйОстаткиИОбороты.КоличествоначальныйОстатокДт КАК КоличествоначальныйОстатокДт, | ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт |ИЗ | РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, , , , , ) КАК ХозрасчетныйОстаткиИОбороты |ГДЕ | ХозрасчетныйОстаткиИОбороты.Счет = &Счет | И ХозрасчетныйОстаткиИОбороты.Субконто1 = &Ссылка | И ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт > 0 "; Результат = запрос.Выполнить().Выбрать(); Пока результат.Следующий() Цикл СредняяСтоимость = результат.СуммаНачальныйОстатокДт/результат.КоличествоначальныйОстатокДт; КонецЦикла; Если СредняяСтоимость > 0 Тогда ДвижениеШапка.Сумма = Окр(КоличествоПущено * СредняяСтоимость,2); Иначе Предупреждение("Средняя стоимость номенклатуры -"+ ПродукцияПущена.Наименование +" равна 0!"); Отказ = Истина; Возврат; КонецЕсли; ДвижениеШапка.Содержание = "Передана продукция"; Движения.Записать(); Для Каждого ТекСтрокаТаблицаПродукции Из ТаблицаПродукции Цикл ДвижениеТч = Движения.Хозрасчетный.Добавить(); ДвижениеТч.Период = Дата; НоменклатураТч = ТекСтрокаТаблицаПродукции.Номенклатура.Ссылка; МассивНоменклатураТч = Новый Массив(); МассивНоменклатураТч.Добавить(НоменклатураТч); ТестЗапрос = Новый Запрос(); ТестЗапрос.УстановитьПараметр("НоменклатураТЧ", МассивНоменклатураТч); ТестЗапрос.Текст = "ВЫБРАТЬ | СчетаУчетаНоменклатуры.Организация КАК Организация, | СчетаУчетаНоменклатуры.Номенклатура КАК Номенклатура, | СчетаУчетаНоменклатуры.Номенклатура.ЭтоГруппа КАК ЭтоГруппа, | СчетаУчетаНоменклатуры.Склад КАК Склад, | СчетаУчетаНоменклатуры.ТипСклада КАК ТипСклада, | СчетаУчетаНоменклатуры.СчетУчета КАК СчетУчета, | СчетаУчетаНоменклатуры.СчетУчетаПередачи КАК СчетУчетаПередачи, | СчетаУчетаНоменклатуры.СчетДоходовОтРеализации КАК СчетДоходовОтРеализации, | СчетаУчетаНоменклатуры.СчетРасходовОтРеализации КАК СчетРасходовОтРеализации, | СчетаУчетаНоменклатуры.СчетУчетаНДСПоПриобретеннымЦенностям КАК СчетУчетаНДСПоПриобретеннымЦенностям, | СчетаУчетаНоменклатуры.СчетУчетаНДСПоРеализации КАК СчетУчетаНДСПоРеализации, | СчетаУчетаНоменклатуры.СчетУчетаНДСУплаченногоНаТаможне КАК СчетУчетаНДСУплаченногоНаТаможне, | СчетаУчетаНоменклатуры.Субконто1 КАК Субконто1, | СчетаУчетаНоменклатуры.Субконто2 КАК Субконто2, | СчетаУчетаНоменклатуры.Субконто3 КАК Субконто3 |ИЗ | РегистрСведений.СчетаУчетаНоменклатуры КАК СчетаУчетаНоменклатуры |ГДЕ | СчетаУчетаНоменклатуры.Номенклатура В(&НоменклатураТЧ)"; ТаблицаЗапроса = ТестЗапрос.Выполнить().Выгрузить(); Для каждого СтрокаТЧ из ТаблицаЗапроса Цикл СчетУчетаНоменклатурыТч = СтрокаТЧ.СчетУчета; КонецЦикла; Если ЗначениеЗаполнено(СчетУчетаНоменклатурыТч) Тогда ДвижениеТч.СчетДт = СчетУчетаНоменклатурыТч; Иначе Предупреждение("Укажите счет учета для номенклатуры - "+НоменклатураТч.Наименование); Отказ = Истина; Возврат; КонецЕсли; БухгалтерскийУчет.УстановитьСубконто(ДвижениеТч.СчетДт,ДвижениеТч.СубконтоДт,ТекСтрокаТаблицаПродукции.Номенклатура.Родитель.Метаданные().Имя,ТекСтрокаТаблицаПродукции.Номенклатура); БухгалтерскийУчет.УстановитьСубконто(ДвижениеТч.СчетДт,ДвижениеТч.СубконтоДт,СкладПолучатель.Родитель.Метаданные().Имя,СкладПолучатель); ДвижениеТч.КоличествоДт = ТекСтрокаТаблицаПродукции.Количество; ДвижениеТч.КоличествоКт = ТекСтрокаТаблицаПродукции.Количество; ДвижениеТч.СчетКт = Сч_20_3; БухгалтерскийУчет.УстановитьСубконто(ДвижениеТч.СчетКт,ДвижениеТч.СубконтоКт,Субконто1.Родитель.Метаданные().Имя,Субконто1); БухгалтерскийУчет.УстановитьСубконто(ДвижениеТч.СчетКт,ДвижениеТч.СубконтоКт,СтатьяВыходаПродукции.Родитель.Метаданные().Имя,СтатьяВыходаПродукции); ДвижениеТч.ПодразделениеКт = Субконто3; //запрос по ценам номенклатуры ДатаЦены = Дата; СсылкаНомен = ТекСтрокаТаблицаПродукции.Номенклатура; Запрос = Новый Запрос(); Запрос.УстановитьПараметр("Период", ДатаЦены); Запрос.УстановитьПараметр("Ссылка", СсылкаНомен); Запрос.Текст = "ВЫБРАТЬ | ТипыЦенНоменклатуры.Ссылка КАК ТипЦен, | ЦеныНоменклатурыСрезПоследних.Цена, | ЛОЖЬ КАК Записать, | ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Валюта ЕСТЬ NULL ТОГДА | ТипыЦенНоменклатуры.ВалютаЦены | ИНАЧЕ | ЦеныНоменклатурыСрезПоследних.Валюта | КОНЕЦ КАК Валюта, | ВЫБОР КОГДА ЦеныНоменклатурыСрезПоследних.Регистратор ЕСТЬ NULL ТОГДА | МАКСИМУМ(ЦеныНоменклатурыСрезПоследних1.Регистратор) | ИНАЧЕ | ЦеныНоменклатурыСрезПоследних.Регистратор | КОНЕЦ КАК Документ |ИЗ | Справочник.ТипыЦенНоменклатуры КАК ТипыЦенНоменклатуры | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, Номенклатура = &Ссылка) КАК ЦеныНоменклатурыСрезПоследних | ПО ЦеныНоменклатурыСрезПоследних.ТипЦен = ТипыЦенНоменклатуры.Ссылка | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Период, ) КАК ЦеныНоменклатурыСрезПоследних1 | ПО ЦеныНоменклатурыСрезПоследних1.ТипЦен = ТипыЦенНоменклатуры.Ссылка | |СГРУППИРОВАТЬ ПО | ТипыЦенНоменклатуры.Ссылка, | ЦеныНоменклатурыСрезПоследних.Цена, | ЦеныНоменклатурыСрезПоследних.Валюта, | ЦеныНоменклатурыСрезПоследних.Регистратор"; ЦеныНоменклатуры = Запрос.Выполнить().Выбрать(); Пока ЦеныНоменклатуры.Следующий() Цикл ПлановаяСтоимость = ЦеныНоменклатуры.Цена; КонецЦикла; Если ЗначениеЗаполнено(ПлановаяСтоимость) Тогда ДвижениеТч.Сумма =Окр(ТекСтрокаТаблицаПродукции.Количество*ПлановаяСтоимость,2); Иначе Предупреждение("Не указана цена для номенклатуры - "+ТекСтрокаТаблицаПродукции.Номенклатура.Наименование); Отказ = Истина; Возврат; КонецЕсли; ДвижениеТч.Организация = Организация; ДвижениеТч.Содержание = "Перемещена продукция"; //Движения.Записать(); КонецЦикла; КонецПроцедуры |
|||
2
Zeratul
19.12.11
✎
17:06
|
То что находится ТЧ делает движения
|
|||
3
Zeratul
19.12.11
✎
17:31
|
ап ап
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |