Кто подскажет новичку ошибка в коде?

1. Andrei12 15.12.11 13:02 Сейчас в теме
Добрый день!
Бухгалтерия предприятия 8.2 Закрытие месяца. Документ РегламентОперация закрытие 20,23,25,26 ошибка
{Документ.РегламентнаяОперация.МодульОбъекта(8741)}: Значение не является значением объектного типа (Счет)
движение.СчетДт=Инф.Счет;


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

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

Запрос.УстановитьПараметр("ДН", НачалоМесяца(Дата));
Запрос.УстановитьПараметр("ДК", КонецМесяца(Дата));
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("25"));

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

Выб = Результат.Выбрать();

НомГруппы=ПолучитьНомГр();

//У нас 1 цех = 1 группа номенклатуры
Пока Выб.Следующий() Цикл
движение=мПроводки.Добавить();
движение.Период=КонецМесяца(Дата);
движение.Организация=Организация;
Движение.Содержание="Затраты 25 счета";

Инф=НомГруппы.получить(Выб.подразделение);
движение.СчетДт=Инф.Счет;
движение.ПодразделениеДт=Выб.подразделение;
движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат]= выб.субконто1;
движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеГруппы]=Инф.Группа ;
движение.СчетКт=ПланыСчетов.Хозрасчетный.НайтиПоКоду("25");
движение.ПодразделениеКт=Выб.подразделение;
//движение.СубконтоКТ[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат]= выб.субконто1;

движение.Сумма=выб.сумма;
КонецЦикла;

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
мПроводки.Записать(Ложь);

КонецПроцедуры
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. AlexW 15.12.11 13:07 Сейчас в теме
НомГруппы=ПолучитьНомГр();
...
Инф=НомГруппы.получить(Выб.подразделение);
движение.СчетДт=Инф.Счет;

Что за процедура ПолучитьНомГр(); ?
3. sumv1 7 15.12.11 13:08 Сейчас в теме
Ошибка (Значение не является значением объектного типа (Счет)) говорит о том, что у объекта "Инф" нет метода .Счет
Это из-за того, что Инф - пустое.
Нужна проверка на это.
4. Andrei12 15.12.11 13:10 Сейчас в теме
AlexW пишет:

НомГруппы= ПолучитьНомГр();

...

Инф=НомГруппы.получить(Выб.подразделение);

движение.СчетДт=Инф.Счет;



Что за процедура ПолучитьНомГр(); ?
Показать

Группа подразделения
5. deniseek77 86 15.12.11 13:14 Сейчас в теме
Andrei12 пишет:



Не так сформулировал...Что говорит отладчик?
6. AlexW 15.12.11 13:20 Сейчас в теме
Что-то я не вижу, чтобы у группы подразделений (или даже номенклатурной группы) был реквизит "счет".
На какой конкретно счет вы хотите закрыть 25-ый? Обычно это 20-ый. И задается он в "Методах распределения общехоз-ых и общепроиз-ых расходах"
7. Andrei12 15.12.11 13:45 Сейчас в теме
AlexW пишет:

Что-то я не вижу, чтобы у группы подразделений (или даже номенклатурной группы) был реквизит "счет".

На какой конкретно счет вы хотите закрыть 25-ый? Обычно это 20-ый. И задается он в "Методах распределения общехоз-ых и общепроиз-ых расходах"


Ошибка при вычислении условия для точки останова в строке 8741: Переменная не определена
8. Andrei12 15.12.11 13:50 Сейчас в теме
Нет хрень получаеться. Вот полный код. Что то я не вижу.
Функция ПолучитьНомГр()
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

Запрос.УстановитьПараметр("ДН", НачалоМесяца(Дата));
Запрос.УстановитьПараметр("ДК", КонецМесяца(Дата));
сч=Новый Массив;
сч.Добавить( ПланыСчетов.Хозрасчетный.НайтиПоКоду("20.01"));
сч.Добавить( ПланыСчетов.Хозрасчетный.НайтиПоКоду("23"));

Запрос.УстановитьПараметр("Счет",сч);


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

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
дт=Новый Структура("Счет,Группа");
дт.Счет=ВыборкаДетальныеЗаписи.Счет;
Дт.Группа=ВыборкаДетальныеЗаписи.Субконто1;
С.Вставить(ВыборкаДетальныеЗаписи.Подразделение,дт);
КонецЦикла;


возврат с;
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

КонецФункции


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

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

Запрос.УстановитьПараметр("ДН", НачалоМесяца(Дата));
Запрос.УстановитьПараметр("ДК", КонецМесяца(Дата));
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.НайтиПоКоду("25"));

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

Выб = Результат.Выбрать();

НомГруппы=ПолучитьНомГр();

//У нас 1 цех = 1 группа номенклатуры
Пока Выб.Следующий() Цикл
движение=мПроводки.Добавить();
движение.Период=КонецМесяца(Дата);
движение.Организация=Организация;
Движение.Содержание="Затраты 25 счета";

Инф=НомГруппы.получить(Выб.подразделение);
движение.СчетДт=Инф.Счет;
движение.ПодразделениеДт=Выб.подразделение;
движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат]= выб.субконто1;
движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеГруппы]=Инф.Группа ;
движение.СчетКт=ПланыСчетов.Хозрасчетный.НайтиПоКоду("25");
движение.ПодразделениеКт=Выб.подразделение;
//движение.СубконтоКТ[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат]= выб.субконто1;

движение.Сумма=выб.сумма;
КонецЦикла;

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
мПроводки.Записать(Ложь);

КонецПроцедуры
9. AlexW 15.12.11 14:20 Сейчас в теме
Короче, погонял на отладчике. Итого - в коде ошибки нет.
Ошибка где-то в логике. Как я понял, вы пытаетесь закрыть 25-ый счет либо на 20, либо на 23, в зависимости от того, на каком из них были обороты по данному подразделению (по крайней мере судя по коду).
Ваша ошибка у меня повторилась лишь в том случае, когда ни на 20-м, ни на 23-м нет за этот период оборотов по тому подразделению, которое стоит на 25-м.
Вообще же, лично от себя, способ закрытия 25-го довольно странный.
10. Andrei12 15.12.11 16:28 Сейчас в теме
AlexW пишет:
Вообще же, лично от себя, способ закрытия 25-го довольно странный.

Наши бухи пожелали чтобы было так. Сейчас сижу и репу ломаю. А по поводу оборотов по подразделению это точно. А как тогда если нет оборота то выбирать только те подразделения где есть оборот?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот