×
Показано с 1 по 5 из 5
  1. #1
    Клерк
    Регистрация
    06.10.2003
    Сообщений
    67

    При попытке проведения

    При попытке проведения документа переоценки выходит вот такая бяка. что с ней делать? >8-<
    Операция.Содержание="Переоценка док.№"+НомерДок;
    {Документ.ПереоценкаРозница.Модуль Документа(194)}: Недопустимая операция
    Поделиться с друзьями

  2. #2
    Модератор Аватар для Aquad
    Регистрация
    04.12.2002
    Адрес
    Москва
    Сообщений
    3,870
    Модуль в студию !

  3. #3
    Клерк
    Регистрация
    06.10.2003
    Сообщений
    67
    Вот текст модуля, ошибка вроде здесь, в реквизитах шапки есть отдел и склад, остальные неиспользуемые (как мне кажется) субконто я закоментировал

    ////////////////////////////////////////////////////////////////////////////////
    // ПРОЦЕДУРЫ И ФУНКЦИИ МОДУЛЯ
    //
    //******************************************************************************
    // ПроведениеПоРегистрам()
    //
    // Параметры:
    // Нет.
    //
    // Возвращаемое значение:
    // Нет.
    //
    // Описание:
    // Проведение по регистрам оперативного учета.
    //
    Процедура ПроведениеПоРегистрам()

    Перем ВремРегистры;
    Перем ВремОстаткиТМЦ;
    Перем ТаблицаДокумента;
    Перем ФирмаДляОстатковТМЦ;

    // Удаление движений по регистрам.
    Для Номер = 1 По Метаданные.Регистр() Цикл
    ОчиститьДвижения("Регистр."+Метаданные.Регистр(Номер).Идентификатор);
    КонецЦикла;

    // Таблица для хранения переоцениваемых товаров и их продажных цен с целью
    // последующего списания партий
    ТабОстатков = СоздатьОбъект("ТаблицаЗначений");
    ТабОстатков.НоваяКолонка("Номенклатура", "Справочник.Номенклатура");
    ТабОстатков.НоваяКолонка("Количество", "Число");
    ТабОстатков.НоваяКолонка("ЦенаПрод", "Число");

    ВыгрузитьТабличнуюЧасть(ТаблицаДокумента);

    // надо привести таблицу к стандартно понимаемому процедурами проведения виду
    ТаблицаДокумента.НоваяКолонка("СуммаУпр");
    ТаблицаДокумента.НоваяКолонка("СуммаРуб");
    ТаблицаДокумента.НоваяКолонка("СкидкаРуб");
    ТаблицаДокумента.НоваяКолонка("Сумма");
    ТаблицаДокумента.НоваяКолонка("СуммаНДС");
    ТаблицаДокумента.НоваяКолонка("СуммаНП");
    ТаблицаДокумента.НоваяКолонка("СтавкаНДС");
    ТаблицаДокумента.НоваяКолонка("СтавкаНП");
    ТаблицаДокумента.НоваяКолонка("ПродСтоимость");

    Регистр.ОстаткиТМЦ.Склад = Склад;
    Регистр.ОстаткиТМЦ.Фирма = Фирма;

    КурсРубля = глКурсДляВалюты(глРубли, ДатаДок);

    КолСтрок = ТаблицаДокумента.КоличествоСтрок();
    Для Сч = 1 По КолСтрок Цикл

    ТаблицаДокумента.ПолучитьСтрокуПоНомеру(КолСтрок - Сч +1);

    // услуги здесь не учитываем
    Если ТаблицаДокумента.Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга Тогда
    Продолжить;
    КонецЕсли;

    // если цена не менялась - движения не делаем
    Если ТаблицаДокумента.ЦенаСтарая = ТаблицаДокумента.ЦенаНовая Тогда
    ТаблицаДокумента.УдалитьСтроку();
    Продолжить;
    КонецЕсли;

    ТаблицаДокумента.СуммаРуб = глПересчет (
    ТаблицаДокумента.Количество * ТаблицаДокумента.ЦенаСтарая,
    Валюта, Курс,
    глРубли, КурсРубля);
    ТаблицаДокумента.СкидкаРуб = 0 ;
    ТаблицаДокумента.Количество = ТаблицаДокумента.Количество * ТаблицаДокумента.Коэффициент;
    ТаблицаДокумента.ПродСтоимость = ТаблицаДокумента.СуммаРуб;

    // измерения
    Регистр.ОстаткиТМЦ.Номенклатура = ТаблицаДокумента.Номенклатура;
    Регистр.ОстаткиТМЦ.ЦенаПрод = глПересчет(
    ТаблицаДокумента.ЦенаНовая/ТаблицаДокумента.Коэффициент,
    Валюта, Курс,
    глРубли, КурсРубля);
    // ресурсы
    Регистр.ОстаткиТМЦ.Количество = ТаблицаДокумента.Количество;
    Регистр.ОстаткиТМЦ.Внутреннее = 1;
    // выполним движение
    Регистр.ОстаткиТМЦ.ДвижениеПриходВыполнить();
    ТабОстатков.НоваяСтрока();
    ТабОстатков.Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура;
    ТабОстатков.Количество = Регистр.ОстаткиТМЦ.Количество;
    ТабОстатков.ЦенаПрод = Регистр.ОстаткиТМЦ.ЦенаПрод;

    КонецЦикла;

    ФирмаДляОстатковТМЦ = глФирмаДляОстатковТМЦ(Фирма);
    СписокПараметров = СоздатьОбъект("СписокЗначений");

    СписокПараметров.ДобавитьЗначение(ТекущийДокумент(),"ТекДок");
    СписокПараметров.ДобавитьЗначение(Склад, "Склад");
    СписокПараметров.ДобавитьЗначение(Фирма, "Фирма");
    СписокПараметров.ДобавитьЗначение(ФирмаДляОстатковТМЦ,"ФирмаДляОстатковТМЦ");
    СписокПараметров.ДобавитьЗначение(глКО.Перемещение, "КодОперации");

    ВремРегистры = СоздатьОбъект("Регистры");

    ВремОстаткиТМЦ = ВремРегистры.ОстаткиТМЦ;
    ВремПартииТМЦ = ВремРегистры.ПартииНаличие;
    глФильтрОстатковТМЦ(Контекст,ТаблицаДокумента, СписокПараметров, ВремОстаткиТМЦ);
    глФильтрПартийТМЦ(Контекст, ТаблицаДокумента, СписокПараметров, ВремПартииТМЦ);

    Если ИтогиАктуальны() = 0 Тогда
    ВремРегистры.Актуальность(1);
    ВремРегистры.РассчитатьРегистрыНа(ТекущийДокумент());
    КонецЕсли;

    // остатки ТМЦ
    Если глСписаниеОстатковТМЦ (Контекст,ТаблицаДокумента,СписокПараметров, ВремОстаткиТМЦ)=0 Тогда
    Возврат;
    КонецЕсли;
    ТаблицаДокумента.НоваяКолонка("Партия", "Справочник.Партии");
    ТаблицаДокумента.Свернуть("НомерСтрокиДокумента, Номенклатура, Единица, Коэффициент, СтавкаНДС, СтавкаНП, Партия", "Количество, Сумма, СуммаУпр, СуммаРуб, СкидкаРуб, СуммаНДС, СуммаНП, ПродСтоимость");
    ТЗПартий = СоздатьОбъект("ТаблицаЗначений");
    глСписаниеПартийТМЦ (Контекст,ТаблицаДокумента,СписокПараметров, ВремПартииТМЦ, ТЗПартий);
    ТЗПартий.ВыбратьСтроки();
    Пока ТЗПартий.ПолучитьСтроку() = 1 Цикл
    ОстКоличество = ТЗПартий.Количество;
    Регистр.ПартииНаличие.Фирма = ТЗПартий.Фирма;
    Регистр.ПартииНаличие.МОЛ = ТЗПартий.МОЛ;
    Регистр.ПартииНаличие.Номенклатура = ТЗПартий.Номенклатура;
    Регистр.ПартииНаличие.СтатусПартии = ТЗПартий.СтатусПартии;
    Регистр.ПартииНаличие.Партия = ТЗПартий.Партия;
    Регистр.ПартииНаличие.ДатаПартии = ТЗПартий.ДатаПартии;
    Регистр.ПартииНаличие.Количество = ТЗПартий.Количество;
    Регистр.ПартииНаличие.СуммаРуб = ТЗПартий.СуммаРуб;
    Регистр.ПартииНаличие.СуммаУпр = ТЗПартий.СуммаУпр;
    Регистр.ПартииНаличие.СуммаБезНДС = ТЗПартий.СуммаБезНДС;
    Регистр.ПартииНаличие.КодОперации = глКО.Перемещение;
    ТабОстатков.ВыбратьСтроки();
    Пока ТабОстатков.ПолучитьСтроку() = 1 Цикл
    Если ТабОстатков.Количество = 0 Тогда
    Продолжить;
    КонецЕсли;
    Если ТабОстатков.Номенклатура = ТЗПартий.Номенклатура Тогда
    Кол = Мин(ОстКоличество, ТабОстатков.Количество);
    Регистр.ПартииНаличие.Количество = Кол;
    ТабОстатков.Количество = ТабОстатков.Количество - Кол;
    ОстКоличество = ОстКоличество - Кол;
    Регистр.ПартииНаличие.ПродСтоимость = Кол * ТабОстатков.ЦенаПрод;
    Регистр.ПартииНаличие.ДвижениеПриходВыполнить();
    Если ОстКоличество = 0 Тогда
    Прервать;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецПроцедуры // ПроведениеПоРегистрам()

    ////////////////////////////////////////////////////////////////////////////////
    // ПРЕДОПРЕДЕЛЕННЫЕ ПРОЦЕДУРЫ
    //
    //******************************************************************************
    // Предопределенная процедура.
    //
    Процедура ОбработкаПроведения(ВидыДвижений)

    перем Счет_;
    перем Счет_1, Цены_, ЦенаРоз_, ЦенаПрих_;

    // Проверка заполненности обязательных реквизитов.
    Если глВсеРеквизитыДокументаЗаполнены(Контекст,
    "Фирма,Склад,Валюта")=0 Тогда
    Возврат;
    КонецЕсли;

    Если Склад.РозничныйСклад = 0 Тогда
    глНеПроводить(Контекст,"Выбранный склад не является розничным!
    |Переоценка на таком складе не производится!");

    КонецЕсли;

    // Проведение по регистрам оперативного учета.
    Если (ПустоеЗначение(ВидыДвижений) = 1) ИЛИ (Найти(ВидыДвижений, "Регистр") <> 0) Тогда
    ПроведениеПоРегистрам();

    Если СтатусВозврата() = 0 Тогда
    Возврат;
    КонецЕсли;
    КонецЕсли;

    глПриПроведении(Контекст, ВидыДвижений);



    Операция.Содержание="Переоценка док.№"+НомерДок; // ВОТ ЗДЕСЬ ОРЕТ ОШИБКУ

    ВыбратьСтроки();

    Пока ПолучитьСтроку()=1 Цикл

    Цены_=СоздатьОбъект("Справочник.Цены");
    Цены_.ИспользоватьВладельца(Номенклатура);
    Цены_.ВыбратьЭлементы();

    Пока Цены_.ПолучитьЭлемент()=1 Цикл
    //Сообщить(Цены_.Процент);
    //Сообщить(Цены_.Цена.Получить(ТекущаяДата()));
    //Сообщить(Цены_.ТипЦен.Наименование);
    Если Цены_.ТипЦен.Наименование="Приходная" тогда
    //Сообщить("Попали!!!");
    ЦенаПрих_=Цены_.Цена.Получить(ТекущаяДата());

    КонецЕсли;
    Если Цены_.ТипЦен.Наименование="Розничная" тогда
    //Сообщить("Попали!!!");
    ЦенаРоз_=Цены_.Цена.Получить(ТекущаяДата());

    КонецЕсли;
    КонецЦикла;


    Если Склад.Наименование="Головные уборы" тогда

    // 41.1. --- 43
    //Опер.НоваяПроводка();
    //Опер.Содержание="Перем. розн.";



    Операция.НоваяПроводка();
    Операция.РазделительУчета=ЮрЛицо;
    Операция.СодержаниеПроводки="Перем. розн.";


    Счет_1.НайтиПоКоду("41.1");
    Операция.Дебет.Счет=Счет_1.ТекущийСчет();

    Счет_1.НайтиПоКоду("43");
    Операция.Кредит.Счет=Счет_1.ТекущийСчет();


    Операция.Дебет.Субконто(1,Номенклатура);
    Операция.Дебет.Субконто(2,Склад);
    Операция.Дебет.Субконто(3,Отдел);

    Операция.Кредит.Субконто(1,Номенклатура);
    //Операция.Кредит.Субконто(2,СкладПолучатель);
    //Операция.Кредит.Субконто(3,Отдел1);



    Операция.Сумма=(ЦенаНовая-ЦенаСтарая)*Количество;

    Операция.СуммаОперации=Операция.СуммаОперации+(ЦенаНовая-ЦенаСтарая)*Количество;



    // 41.1. --- 43
    иначе


    // 42.1. --- 42
    //Опер.НоваяПроводка();
    //Опер.Содержание="Перем. розн.";



    Операция.НоваяПроводка();
    Операция.РазделительУчета=ЮрЛицо;
    Операция.СодержаниеПроводки="Перем. розн.";




    Операция.Дебет.Счет=Склад.Счет;


    Счет_1.НайтиПоКоду("42");
    Операция.Кредит.Счет=Счет_1.ТекущийСчет();


    Операция.Дебет.Субконто(1,Номенклатура);
    Операция.Дебет.Субконто(2,Склад);
    Операция.Дебет.Субконто(3,Отдел);

    Операция.Кредит.Субконто(1,Номенклатура);
    // Операция.Кредит.Субконто(2,СкладПолучатель);
    // Операция.Кредит.Субконто(3,Отдел1);



    Операция.Сумма=(ЦенаНовая-ЦенаСтарая)*Количество;

    Операция.СуммаОперации=Операция.СуммаОперации+(ЦенаНовая-ЦенаСтарая)*Количество;



    // 42.1. --- 42



    КонецЕсли;

    КонецЦикла;

    Операция.Записать();

    //вася 04-03-03 конец





    КонецПроцедуры //ОбработкаПроведения()

    ////////////////////////////////////////////////////////////////////////////////
    // ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ

  4. #4
    moroder
    Гость
    Вроде в моделе нет причин ругни. Проверь: 1)у документа стоит признак БухУчета;
    2) Других причин пока не вижу. (а может компоненты БухУчет нет?)

  5. #5
    Модератор Аватар для Aquad
    Регистрация
    04.12.2002
    Адрес
    Москва
    Сообщений
    3,870
    Скорее всего не установлен Бухучет.... как и сказал moroder

    Еще вопрос зачем вам с ТиСе использовать "План Счетов" ?

    Или это веже комплекс ?

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)