helpf.pro
Регистрация

Ошибка при проведении документа

bless18
10.11.2010 07:17Прочитано: 5649
Здравствуйте!
Пытаюсь провести документ Инвентаризация, но столкнулась с такой ошибкой
"Запись не верна! Вид субконто "Номенклатура" недоступен для данной записи!"
Yandex
Возможно, вас также заинтересует
Реклама на портале
bless18
10.11.2010 07:18Ответ № 1
Вот модуль проведения:
Код 1C v 8.х
 

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

СчетМБП = ПланыСчетов.Типовой.МалоценныеИБыстроизнашивающиесяПредметы;
Счет1795 = ПланыСчетов.Типовой.МалоценныеИБыстроизнашивающиесяПредметыВЭкплуатации;
Ном = 0;
Для Каждого ТекСтрокаИнвентаризация Из Инвентаризация Цикл
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ВидыСписанияПоИнвентаризации.Ссылка,
| ВидыСписанияПоИнвентаризации.Наименование,
| ВидыСписанияПоИнвентаризации.Счет,
| ВидыСписанияПоИнвентаризации.Статья
|ИЗ
| Справочник.ВидыСписанияПоИнвентаризации КАК ВидыСписанияПоИнвентаризации";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Ном = Ном + 1;
Если Ном = 1 Тогда
СчетНедостача = Выборка.Счет;
СтатьяНедостача = Выборка.Статья;
ТекстНедостача = Выборка.Наименование;
ИначеЕсли Ном = 2 Тогда
СчетИзлишки = Выборка.Счет;
СтатьяИзлишки = Выборка.Статья;
ТекстИзлишки = Выборка.Наименование;
КонецЕсли;
КонецЦикла;
Если (Не ЗначениеЗаполнено(СчетНедостача)) Или (Не ЗначениеЗаполнено(СчетИзлишки)) Тогда
Сообщить("Не заданы счета списания по инвентаризации!");
Возврат
КонецЕсли;
Счет = ТекСтрокаИнвентаризация.СчетТМЗ;
КолСК = Счет.ВидыСубконто.Количество();
Если КолСК > 0 Тогда
Субконто1 = ТекСтрокаИнвентаризация.СчетТМЗ.ВидыСубконто[0].ВидСубконто;
Если КолСК > 0 Тогда
Субконто2 = Счет.ВидыСубконто[1].ВидСубконто;
КонецЕсли;
КонецЕсли;

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

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

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

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

//Списание
//Если ТекСтрокаИнвентаризация.Разница = 0 Тогда
// Продолжить;
//КонецЕсли;

//Расчет цены и остатков
Сумма = 0;
Остаток = 0;
СуммаИзноса = 0;

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

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

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

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

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

//МБП Аккужин 27.06.10
Если Счет = СчетМБП Тогда
//Расчет остатков МБП в эксплуатации

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

Если (СуммаМБП <> 0) Или (КоличествоМБП <> 0) Тогда
Движение.СчетДт = Счет1795;
Движение.СчетКт = СчетИзлишки;
КолСК = Счет.ВидыСубконто.Количество();
Если КолСК > 0 Тогда
ВидСубконто1 = Счет.ВидыСубконто[0].ВидСубконто;
Движение.СубконтоДт[ВидСубконто1] = ТекСтрокаИнвентаризация.Товар;
Движение.СубконтоДт[ВидСубконто1] = Склад;
Если КолСК > 1 Тогда
ВидСубконто2 = Счет.ВидыСубконто[1].ВидСубконто;
Движение.СубконтоКт = СтатьяИзлишки;
КонецЕсли;
Движение.КоличествоДт = КоличествоМБП;
Движение.Сумма = СуммаМБП;
Движение.Содержание = "МБП в эксплуатации";
Движение.НомерЖурнала = "ТВ";
Движение.Организация = Организация;
КонецЕсли;
КонецЕсли; //Аккужин 27.06.10
ИначеЕсли ТекСтрокаИнвентаризация.Разница < 0 Тогда
Движение.СчетДт = Счет;
КолСК = Счет.ВидыСубконто.Количество();
Если КолСК > 0 Тогда
ВидСубконто1 = Счет.ВидыСубконто[0].ВидСубконто;
Движение.СубконтоДт[ВидСубконто1] = ТекСтрокаИнвентаризация.Товар;
Движение.СубконтоДт[ВидСубконто1] = Склад;
Если КолСК > 1 Тогда
ВидСубконто2 = Счет.ВидыСубконто[1].ВидСубконто;
Движение.СубконтоКт = СтатьяИзлишки;
КонецЕсли;
Если Субконто1 = ПланыВидовХарактеристик.ВидыСубконтоТиповые.Номенклатура Тогда
Движение.КоличествоДт = -ТекСтрокаИнвентаризация.Разница;
КонецЕсли;
Движение.Сумма = -(СуммаУчет - СуммаИзноса);
Движение.Содержание = ТекстИзлишки;
Движение.НомерЖурнала = "ТВ";
Движение.Организация = Организация;
КонецЕсли;

//Износ
Если СуммаИзноса > 0 Тогда
Движение.СчетКт = Счет;
Движение.СчетДт = СчетИзноса;
КолСК = Счет.ВидыСубконто.Количество();
Если КолСК > 0 Тогда
ВидСубконто1 = Счет.ВидыСубконто[0].ВидСубконто;
Движение.СубконтоДт[ВидСубконто1] = ТекСтрокаИнвентаризация.Товар;
Если КолСК > 1 Тогда
ВидСубконто2 = Счет.ВидыСубконто[1].ВидСубконто;
Движение.СубконтоКт = ТекСтрокаИнвентаризация.Товар;
Движение.СубконтоКт[ВидСубконто1] = Склад;
КонецЕсли;
ИначеЕсли СуммаИзноса < 0 Тогда
Движение.СчетДт = Счет;
Движение.СчетКт = СчетИзноса;
Если КолСК > 0 Тогда
ВидСубконто1 = Счет.ВидыСубконто[0].ВидСубконто;
Движение.СубконтоДт[ВидСубконто1] = ТекСтрокаИнвентаризация.Товар;
Движение.СубконтоДт[ВидСубконто1] = ТекСтрокаИнвентаризация.Склад;
Если КолСК > 1 Тогда
ВидСубконто2 = Счет.ВидыСубконто[1].ВидСубконто;
Движение.СубконтоКт = ТекСтрокаИнвентаризация.Товар;
КонецЕсли;
КонецЕсли;
Движение.Сумма = -СуммаИзноса;
Движение.Содержание = ТекстИзлишки;
Движение.НомерЖурнала = "ТВ";
Движение.Организация = Организация;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;

КонецЦикла;
//СуммаОперации = Итог("СуммаОстаток")+Итог("СуммаФакт");
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры

bless18
10.11.2010 13:35Ответ № 2
Сделала проверку на значение субконто, значение = Неопределено, получается,
определение
Движение.СубконтоДт[ВидСубконто1] = ТекСтрокаИнвентаризация.Товар;
является неправильным, раз значение неопределено.
Как еще можно обозначить СубконтоДт и СубконтоКт?
;
Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.