Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка!!!  (Прочитано 13112 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« : 04-08-2010 19:02 » new

Всем доброй ночи. Приобрел учебную версию и теперь штудирую книгу М.Г.Радченко. дошел до главы регистр и бухгалтерии. Подскажите пожалуйста по ошибке "Вид субконто "Материалы не доступен для данной записи". номер строки 2"
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 04-08-2010 21:46 » 

Версию не использовал, Радченко не читал, потому по количеству информациии могу только предположить: ты пытаешься обратиться к субконто Материалы у счета, у которого нет этого вида субконто
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 08-08-2010 18:13 » 

Kivals, а можно ли сюда прикрепить дт-шку? я так понимаю что я при создании планов счетов чет не так сделал. Эл-ты этого справочника делятся на услуги и материалы по виду перечисления. что проставил тем оно и будет.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 08-08-2010 18:30 » 

Для начала напиши код, где ошибка возникает
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 08-08-2010 18:34 » 

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

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

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

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

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

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество=0 тогда
СтоимостьМатериала = 0;
иначе
СтоимостьМатериала=ВыборкаДетальныеЗаписи.Стоимость/ВыборкаДетальныеЗаписи.Количество;
КонецЕсли;

Если ВыборкаДетальныеЗаписи.Номенклатура.ВидНоменклатуры=Перечисления.ВидыНоменклатуры.Материал тогда

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


Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения=ВидДвиженияНакопления.Расход;
Движение.Период=Дата;
Движение.Материал=ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Стоимость=ВыборкаДетальныеЗаписи.КоличествоВдокументе*СтоимостьМатериала;

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

КонецЕсли;

Движение = Движения.Продажи.Добавить();
Движение.Период=Дата;
Движение.номенклатура=ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Клиент=Клиент;
Движение.Мастер=Мастер;
Движение.Количество=ВыборкаДетальныеЗаписи.КоличествоВДокументе;
Движение.Выручка=ВыборкаДетальныеЗаписи.СуммаВДокументе;
Движение.Стоимость=СтоимостьМатериала*ВыборкаДетальныеЗаписи.КоличествоВдокументе;


КонецЦикла;

    Движения.Записать();

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

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

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

КонецЕсли;
КонецПроцедуры
при том что в документе приходная накладная все срабатывает на ура.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 08-08-2010 20:03 » 

1. Определи на какой итерации цикла (Пока ВыборкаДетальныеЗаписи.Следующий()) происходит ошибка
2. Попробуй комментирвать блоки с движениями (у тебя их 2) чтобы выделить какой из них ошибку вызывает
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 10-08-2010 06:52 » 

Kivals, я прокоментировал каждую строчку. ошибку выдает после блоков.
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 10-08-2010 11:11 » 

У тебя ошибку дает в середине цикла, потому есть 2 варианта: либо ему не нравится твое текущее действие (что-то не дописал перед добавлением новового движения), либо не нравится как ты закончил предудущее движение (чего-то не хватает в прошлом движении) - потому я и спросил про итерацию цикла.
"комментирвать блоки" - имелось в виду отключить их по очереди и позапускать - будет ли ошибка когда включен только один блок? какой?
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 10-08-2010 12:07 » 

ааа ясно. сейчас по очереди закомментировал блоки. После 1го ошибка осталась, после 2го исчезла.
потом построчно расскоментировал движения 2го блока. ошибка прячется
в последней строке
Код:
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Материалы]
=ВыборкаДетальныеЗаписи.Номенклатура;
   
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 10-08-2010 12:36 » 

Код:
Движение.СчетДт=ПланыСчетов.Основной.Капитал;
Движение.СчетКт=ПланыСчетов.Основной.Товары;
...
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Материалы]...

По Счету Капитал вряд ли есть аналитика по материалам - может в последней строке должно быть СубконтоКт?
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 10-08-2010 17:46 » 

Kivals, большое спасибо за помощь, там действительно должен стоять
СубконтоКт. Улыбаюсь
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines