Имя: Пароль:
1C
1C 7.7
v7: ИД= RBS.ValueToDBString(ТекДок.ТекущийДокумент())
0 evrybod
 
01.12.16
22:18
Всем доброго времени суток
подскажите лузеру с ошибкой в базе)
Опишу ситуацию полностью - существует база с определенными настройками заточеная под отпределеную сферу торговли - я ее само собой слямзил) вот пытаюсь запустить ее у себя на ПК - все получилось, но в базе присутсвовали данные от прошлого магазина - решил вопрос посмотрев видео по вот этой ссылке - http://extremallife.ru/work/1s/video-new-base-1s-7-7
скачав там файлик для очистки базы проделал все как в видео - после удаления все стало так как мне нужно - то есть удалились все данные продаж приемок, приходов товара и други доки, но сохранился справочник товар, клиентов, я уж было порадовался и начал вносить свои товары в базу - точнее в приходную накладную, но при попытке провести данную накладную получил отказ и вот такого рода сообщение:
ИД= RBS.ValueToDBString(ТекДок.ТекущийДокумент());
{Глобальный модуль(2129)}: Значение не представляет агрегатный объект (ValueToDBString)
Ума хватило открыть конфигурацию базы и перейти к этой строчке - но ничего больше не понял(((((((
сам модуль выглядит вот так :
//Расчет суммы оплаты или отгрузки по счету контрагента в зависимости от признака: "Д" или "К"
Процедура глРассчитатьСуммуО(ТекДок,Контрагент,СчетКонтрагента,Валюта,ВидНДС,СуммаО,НДСО,Признак,Заказ=0,ДопНалогО=0) Экспорт
    Перем ДатаДок,Ст,ИтЗак,Час,Минута,Секунда;

    // ТекДок = Контекст из формы или ТекущийДокумент из модуля проведения    
    ДатаДок = ?(ТекДок.Выбран() = 0, ТекДок.ДатаДок+1, ТекДок.ТекущийДокумент());
    
    Если ТекДок.Выбран()=0 тогда
        ДатаДок = ТекДок.ДатаДок+1;
    иначе    
        ТекДок.ПолучитьВремя(Час,Минута,Секунда);
        
        Время=Строка((Час*3600+Минута*60+Секунда)*10000);
        Пока СтрДлина(Время)<10 Цикл
            Время=" "+Время;
        КонецЦикла;              
                              
        ИД= RBS.ValueToDBString(ТекДок.ТекущийДокумент());
        ИДКон=Прав(ИД,3);
        ИДНач=СокрЛП(Лев(ИД,6));
        ИД_10=СокрЛП(Rbs.BaseToInt(ИДНач,36));
        Пока СтрДлина(ИД_10)<10 Цикл
            ИД_10=" "+ИД_10;
        КонецЦикла;    
        
        ДатаДок="#"+Формат(ТекДок.ДатаДок,"ДГГГГММДД")+Время+ИД_10+ИДКон;
    КонецЕсли;    

    СуммаО = 0; НДСО = 0; ДопНалогО=0;
    ИтЗак = СоздатьОбъект("БухгалтерскиеИтоги");
    ИтЗак.ИспользоватьПланСчетов(ПланыСчетов.Основной);
    ИтЗак.ИспользоватьРазделительУчета(ДатьРазделительУчета(ТекДок.Фирма));

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

// ===============================
Функция Представление(Субк) Экспорт
    Если ТипЗначения(Субк)=11 Тогда
        Возврат ""+Субк.ПолныйКод()+" "+Субк.Наименование;
    Иначе
        Возврат Строка(Субк);
    КонецЕсли;
КонецФункции

// ===============================
Процедура ПечатьДвижений(ТД) Экспорт
    Если ТД.Выбран()=0 Тогда
        Возврат;
    КонецЕсли;  
    
    ТекОпер = СоздатьОбъект("Операция");
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("ДвиженияДокумента");
    Таб.ВывестиСекцию("Шапка");
    Если ТД.СуществуетОперация()=1 Тогда
        // напечатем проводки
        Опер = ТД.Операция;
        Если Опер.ВыбратьПроводки()=1 Тогда
            Таб.ВывестиСекцию("ЗагПроводка");
        КонецЕсли;
        Пока Опер.ПолучитьПроводку()=1 Цикл
            Ном = Опер.НомерПроводки();
            Если Опер.СложнаяПроводка()=1 Тогда
                Ном = Строка(Опер.НомерПроводки())+"/"+Строка(Опер.НомерКорреспонденции());
            КонецЕсли;
            Кво = ?(Опер.Количество=0,"",Формат(Опер.Количество,"Ч13.3"));
            ВалСумма = ?(Опер.ВалСумма=0,"",Формат(Опер.ВалСумма,"Ч12.2"));
            Сумма = ?(Опер.Сумма=0,"",Формат(Опер.Сумма,"Ч12.2"));
            Курс = ?(Опер.Валюта.Выбран()=0,"",Формат(Опер.Валюта.Курс.Получить(ТД.ДатаДок),"Ч10.5"));
            Таб.ВывестиСекцию("Проводка");
        КонецЦикла;
    КонецЕсли;    
    Если ТД.ОперативнаяОперация.Выбран()=1 Тогда
        // напечатем проводки
        Если (ТекОпер.НайтиОперацию(ТД.ОперативнаяОперация)=1) Тогда
            Опер = ТекОпер;
            Если Опер.ВыбратьПроводки()=1 Тогда  
                Таб.ВывестиСекцию("ОперОперация");
                Таб.ВывестиСекцию("ЗагПроводка");
            КонецЕсли;
            Пока Опер.ПолучитьПроводку()=1 Цикл
                Ном = Опер.НомерПроводки();
                Если Опер.СложнаяПроводка()=1 Тогда
                    Ном = Строка(Опер.НомерПроводки())+"/"+Строка(Опер.НомерКорреспонденции());
                КонецЕсли;
                Кво = ?(Опер.Количество=0,"",Формат(Опер.Количество,"Ч13.3"));
                ВалСумма = ?(Опер.ВалСумма=0,"",Формат(Опер.ВалСумма,"Ч12.2"));
                Сумма = ?(Опер.Сумма=0,"",Формат(Опер.Сумма,"Ч12.2"));
                Курс = ?(Опер.Валюта.Выбран()=0,"",Формат(Опер.Валюта.Курс.Получить(ТД.ДатаДок),"Ч10.5"));
                Таб.ВывестиСекцию("Проводка");
            КонецЦикла;
        КонецЕсли;
    КонецЕсли;
    // выборка движений по регистрам
    Регистры = СоздатьОбъект("СписокЗначений");
    Регистры.ДобавитьЗначение("Остатки","Остатки");
    Регистры.ДобавитьЗначение("Взаиморасчеты","Взаиморасчеты");
    Регистры.ДобавитьЗначение("Консигнация","Консигнация");
    Регистры.ДобавитьЗначение("Резерв","Резерв");  
    Регистры.ДобавитьЗначение("Бронь","Бронь");
    Регистры.ДобавитьЗначение("Деньги","Деньги");
    Регистры.ДобавитьЗначение("Обороты","Обороты");        
    Регистры.ДобавитьЗначение("ТоварыВПути","ТоварыВПути");
    Регистры.ДобавитьЗначение("КонсигнацияВПути","КонсигнацияВПути");
    Регистры.ДобавитьЗначение("Гарантия","Гарантия");  
    Регистры.ДобавитьЗначение("ГарантияВПути","ГарантияВПути");
    Регистры.ДобавитьЗначение("ОстаткиСЗ","ОстаткиСЗ");
    Регистры.ДобавитьЗначение("ДеньгиВПути","ДеньгиВПути");
    Регистры.ДобавитьЗначение("ВзаиморасчетыСотр","ВзаиморасчетыСотр");
    Регистры.ДобавитьЗначение("ОстаткиБ","ОстаткиБ");
    Регистры.ДобавитьЗначение("ВзаиморасчетыБ","ВзаиморасчетыБ");  
    Регистры.ДобавитьЗначение("ФормированиеПрихода","ФормированиеПрихода");

    Для Инд = 1 по Регистры.РазмерСписка() Цикл
        Рег = СоздатьОбъект("Регистр."+Регистры.ПолучитьЗначение(Инд));
        Если Рег.ВыбратьДвиженияДокумента(ТД)=1 Тогда
            Таб.ВывестиСекцию("Шапка"+Регистры.ПолучитьЗначение(Инд));
        КонецЕсли;
        Пока Рег.ПолучитьДвижение()=1 Цикл
            Дв = "+";
            Если Рег.Расход = 1 Тогда
                Дв = "-";
            КонецЕсли;
            Таб.ВывестиСекцию("Строка"+Регистры.ПолучитьЗначение(Инд));
        КонецЦикла;
    КонецЦикла;

    Таб.ТолькоПросмотр(1);
    Таб.Защита(Константа.ФлагЗащитыТаблиц);
    Таб.Опции(0,0,,);
    Таб.Показать("ПЕЧАТЬ: Движения документа "+ТД,"");
КонецПроцедуры

// ===============================
Функция ПартияВидТорговли(Парт) Экспорт
    ВидТорг = 0;
    Док = Парт.Док;
    Если Док.Выбран()=1 Тогда
        Если Док.Вид()="ПриходнаяНакладная" Тогда
            ВидТорг = Док.ВидТорговли;
        КонецЕсли;
    КонецЕсли;
    Возврат ВидТорг;
КонецФункции

// ===============================
Процедура Парсить(Стр,Спис) Экспорт // преобразовать строку в список значений
    Спис.УдалитьВсе();
    СтрПарс = Стр;
    Инд = Найти(СтрПарс,";");
    Пока Инд<>0 Цикл
        ТекСтр = Сред(СтрПарс,1,Инд-1);
        СтрПарс = Сред(СтрПарс,Инд+1,СтрДлина(СтрПарс)-Инд);

        ИндРавно = Найти(ТекСтр,"=");
        Если ИндРавно = 0 Тогда
            Продолжить;
        КонецЕсли;
        Пар = Сокрлп(Сред(ТекСтр,1,ИндРавно-1));
        Зна = Сокрлп(Сред(ТекСтр,ИндРавно+1,СтрДлина(ТекСтр)-ИндРавно));

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

// ===============================
Функция ФИО(Сотр,Кратко=0) Экспорт
    Если ПустоеЗначение(Сотр)=1 Тогда // временная затычка
        Возврат "";
    КонецЕсли;
    Если (Сотр.Вид()="ШтатноеРасписание") Тогда
        Если Кратко = 1 Тогда
            Возврат Сокрлп(Сотр.Сотрудник.Наименование)+" "+Сред(Сотр.Сотрудник.Имя,1,1)+". "+Сред(Сотр.Сотрудник.Отчество,1,1)+".";
        Иначе
            Возврат Сокрлп(Сотр.Сотрудник.Наименование)+" "+Сокрлп(Сотр.Сотрудник.Имя)+" "+Сокрлп(Сотр.Сотрудник.Отчество);
        КонецЕсли;
    ИначеЕсли (Сотр.Вид()="Сотрудники") Тогда
        Если Кратко = 1 Тогда
            Возврат Сокрлп(Сотр.Наименование)+" "+Сред(Сотр.Имя,1,1)+". "+Сред(Сотр.Отчество,1,1)+".";
        Иначе
            Возврат Сокрлп(Сотр.Наименование)+" "+Сокрлп(Сотр.Имя)+" "+Сокрлп(Сотр.Отчество);
        КонецЕсли;
    КонецЕсли;

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

// ===============================
Функция глДатьДолларТоварный() Экспорт
    Перем ДолларТ;
    ДолларТ=НашОтдел.ДолларТоварный;
    ДолларТ=?(НЕ(ПустоеЗначение(ДолларТ)=1),ДолларТ,Доллар);
    Возврат ДолларТ;
КонецФункции    
подскажите пожалуйста что нужно изменить чтоб все заработало?
1 Mauser
 
01.12.16
23:23
Карму не обманешь - не хочешь платить за базу, будешь платить специалисту.
2 Злопчинский
 
01.12.16
23:26
1с++ поставь
3 Franchiser
 
гуру
02.12.16
00:08
ЗначениеВСтрокуБД() синтаксис 1с++
Независимо от того, куда вы едете — это в гору и против ветра!