×
Показано с 1 по 6 из 6
  1. Клерк
    Регистрация
    27.08.2010
    Адрес
    Ульяновск
    Сообщений
    13

    1С 8.2 Управление торговлей документы на основании глюки

    Здравствуйте

    Переходим на 1С 8.2 управление торговлей редакция 10.3.14.5

    Столкнулся с следующей проблемой

    Делаю документ Реализацию товаров и услуг на сумму 2400 руб. На основании этого документа делаю Приходный кассовый ордер от покупателя, но он делается не на 2400 рублей, а на всю задолжность контрагента. Подскажите как исправить
    Поделиться с друзьями

  2. Клерк Аватар для kot
    Регистрация
    01.01.2009
    Адрес
    Россия
    Сообщений
    2,772
    руками в документе.

  3. Клерк
    Регистрация
    27.08.2010
    Адрес
    Ульяновск
    Сообщений
    13
    Руками в документе это и так понятно, но каждый раз напрягает в 1С 7.7 все работало нормально. 1с менеджеры иногда делают на автомате приходный\расходный ордер и даже не смотрят на сумму так как она на основании другого документа. Потом бухам при сверке будет полный абзац

    А не может быть из за того что в настройках основного договора стоит: вести взаиморасчеты по По договору в целом, а не по заказам.

  4. Клерк
    Регистрация
    27.08.2010
    Адрес
    Ульяновск
    Сообщений
    13
    Вопрос частично решен, сегодня полазил в конфигурации и нашел такой прикол если документ Реализацию товаров и услуг не проведен тогда делает все нормально, но стоит провести реализацию и сделать приходный на основании опять делает на весь долг по договору плюс сумма текущего документа.
    Ржу не магу программисты 1С совсем свихнулись, как и с семеркой без напильника не работает

    Как поправлю код выложу может кому будет полезно

  5. Клерк
    Регистрация
    27.08.2010
    Адрес
    Ульяновск
    Сообщений
    13
    Чтобы убрать глюк делаем так
    Заходим в конфигуратор выбираем Документы->Приходный кассовый ордер, открываем модуль документа, находим
    Процедура ОбработкаЗаполнения(Основание)
    и меняем на следующий текст

    Процедура ОбработкаЗаполнения(Основание)

    Если Основание = Неопределено ИЛИ НЕ Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Основание)) Тогда
    возврат;
    КонецЕсли;

    // Заполним реквизиты из стандартного набора по документу основанию.
    ЗаполнениеДокументов.ЗаполнитьШапкуДокументаПоОснованию(ЭтотОбъект, Основание);

    Если НЕ ЗначениеЗаполнено(Касса) Тогда
    оснКасса = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяКасса");

    Если оснКасса.Владелец <> Организация Тогда
    //ВвестиЗначение(оснКасса, "Укажите кассу поступления денежных средств", "СправочникСсылка.Кассы");
    оснКасса = Справочники.Кассы.ПустаяСсылка();

    #Если Клиент Тогда

    формаВыбораКассы = ПолучитьФорму("ФормаВыбораКассы");
    формаВыбораКассы.Организация = Организация;

    Если формаВыбораКассы.ОткрытьМодально() = Истина Тогда
    оснКасса = формаВыбораКассы.Касса;
    КонецЕсли;

    #КонецЕсли

    КонецЕсли;

    Касса = оснКасса;
    КонецЕсли;

    ВалютаДокумента = ?(НЕ Касса.ВалютаДенежныхСредств.Пустая(),Касса.ВалютаДенежныхСредств,мВалютаРегламентированногоУчета);

    СтруктураКурсаДокумента = МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаДокумента, Дата);
    КурсДокумента = СтруктураКурсаДокумента.Курс;
    КратностьДокумента = СтруктураКурсаДокумента.Кратность;

    ДокументОснование = Основание.Ссылка;
    стрСпособЗаполнения = "Не заполнять";

    Если ТипЗнч(Основание) = Тип("ДокументСсылка.ЗаказПокупателя")
    ИЛИ ТипЗнч(Основание) = Тип("ДокументСсылка.СчетНаОплатуПокупателю") Тогда

    УправлениеДенежнымиСредствами.ЗаполнитьПриходПоОснованию(
    ЭтотОбъект, Основание,
    УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(
    глЗначениеПеременной("глТекущийПользователь"), "ОсновнойОтветственный"));

    ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.РеализацияТоваровУслуг")
    или ТипЗнч(Основание) = Тип("ДокументСсылка.ОтчетКомиссионераОПродажах") Тогда

    СтрокаПлатеж = РасшифровкаПлатежа.Добавить();
    ВидОперации = Перечисления.ВидыОперацийПКО.ОплатаПокупателя;
    Контрагент = Основание.Контрагент;

    СтрокаПлатеж.ДоговорКонтрагента = Основание.ДоговорКонтрагента;
    СтрокаПлатеж.СтатьяДвиженияДенежныхСредств = СтрокаПлатеж.ДоговорКонтрагента.ОсновнаяСтатьяДвиженияДенежныхСредств;
    СтруктураКурсаВзаиморасчетов = МодульВалютногоУчета.ПолучитьКурсВалюты(СтрокаПлатеж.ДоговорКонтрагента.ВалютаВзаиморасчетов, Дата);
    СтрокаПлатеж.КурсВзаиморасчетов = СтруктураКурсаВзаиморасчетов.Курс;
    СтрокаПлатеж.КратностьВзаиморасчетов = СтруктураКурсаВзаиморасчетов.Кратность;
    СтрокаПлатеж.Проект = Основание.Проект;

    СтрокаПлатеж.Сделка = Основание.Сделка;

    Если ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом Тогда
    СтрокаПлатеж.ДокументРасчетовСКонтрагентом = Основание;
    Если Основание.Проведен Тогда
    //стрСпособЗаполнения = "По взаиморасчетам";
    //Иначе
    стрСпособЗаполнения = "По сумме документа";
    Иначе

    КонецЕсли;
    Иначе
    Если Основание.Проведен Тогда
    //стрСпособЗаполнения = "По взаиморасчетам";
    //Иначе
    стрСпособЗаполнения = "По сумме документа";
    Иначе

    КонецЕсли;
    КонецЕсли;

    СтрокаПлатеж.СтавкаНДС = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),"ОсновнаяСтавкаНДС");

    ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.ВозвратТоваровПоставщику") Тогда

    СтрокаПлатеж = РасшифровкаПлатежа.Добавить();
    ВидОперации = Перечисления.ВидыОперацийПКО.ВозвратДенежныхСредствПоставщиком;
    Контрагент = Основание.Контрагент;

    СтрокаПлатеж.ДоговорКонтрагента = Основание.ДоговорКонтрагента;
    СтрокаПлатеж.СтатьяДвиженияДенежныхСредств = СтрокаПлатеж.ДоговорКонтрагента.ОсновнаяСтатьяДвиженияДенежныхСредств;
    СтруктураКурсаВзаиморасчетов = МодульВалютногоУчета.ПолучитьКурсВалюты(СтрокаПлатеж.ДоговорКонтрагента.ВалютаВзаиморасчетов, Дата);
    СтрокаПлатеж.КурсВзаиморасчетов = СтруктураКурсаВзаиморасчетов.Курс;
    СтрокаПлатеж.КратностьВзаиморасчетов = СтруктураКурсаВзаиморасчетов.Кратность;
    СтрокаПлатеж.Проект = Основание.Проект;

    СтрокаПлатеж.Сделка = Основание.Сделка;

    Если ДоговорКонтрагента.ВестиПоДокументамРасчетовСКонтрагентом Тогда

    СтрокаПлатеж.ДокументРасчетовСКонтрагентом = Основание;

    Если Основание.Проведен Тогда
    стрСпособЗаполнения = "По взаиморасчетам";
    КонецЕсли;
    Иначе
    Если Основание.Проведен Тогда
    стрСпособЗаполнения = "По сумме документа";
    КонецЕсли;
    КонецЕсли;

    СтрокаПлатеж.СтавкаНДС = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),"ОсновнаяСтавкаНДС");

    ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.РасходныйКассовыйОрдер") Тогда

    ЗаполнитьПоРКОУпр();

    ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.ОтчетОРозничныхПродажах") Тогда

    СтрокаПлатеж = РасшифровкаПлатежа.Добавить();
    ВидОперации = Перечисления.ВидыОперацийПКО.ПриходДенежныхСредствРозничнаяВыручка;

    Если Основание.ВидОперации=Перечисления.ВидыОперацийОтчетОРозничныхПродажах.ОтчетККМОПродажах Тогда
    ВидПриемаРозничнойВыручки=Перечисления.ВидПриемаРозничнойВыручки.ИзКассы;
    Контрагент = Основание.КассаККМ;
    ИначеЕсли Основание.ВидОперации=Перечисления.ВидыОперацийОтчетОРозничныхПродажах.ОтчетНТТОПродажах Тогда
    ВидПриемаРозничнойВыручки=Перечисления.ВидПриемаРозничнойВыручки.ИзНТТ;
    Контрагент = Основание.Склад;
    КонецЕсли;

    стрСпособЗаполнения = "По розничной выручке";

    СтрокаПлатеж.СтавкаНДС = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),"ОсновнаяСтавкаНДС");

    ИначеЕсли ТипЗнч(Основание) = Тип("ДокументСсылка.ДенежныйЧек") Тогда

    СтрокаПлатеж = РасшифровкаПлатежа.Добавить();

    ВалютаДокумента = Основание.ВалютаДокумента;
    Касса = Основание.Касса;
    СчетОрганизации = Основание.СчетОрганизации;
    Организация = Основание.Организация;
    СуммаДокумента = Основание.СуммаДокумента;
    ВидОперации = Перечисления.ВидыОперацийПКО.ПолучениеНаличныхДенежныхСредствВБанке;

    ДенежныйЧек=Основание.Ссылка;

    СтрокаПлатеж.СуммаПлатежа=СуммаДокумента;
    СтрокаПлатеж.СтатьяДвиженияДенежныхСредств=Основание.СтатьяДвиженияДенежныхСредств;

    ИначеЕсли ТипЗнч(Основание)=Тип("ДокументСсылка.ПланируемоеПоступлениеДенежныхСредств") Тогда

    Если Основание.ФормаОплаты=Перечисления.ВидыДенежныхСредств.Безналичные Тогда
    Сообщить("Документом планировалось поступление безналичных денежных средств.");
    Возврат;
    КонецЕсли;

    ВидОперацииПоступление = Основание.ВидОперации;

    СтавкаНДС = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"),"ОсновнаяСтавкаНДС");

    УправлениеДенежнымиСредствами.ОпределитьОперациюПоОснованиюУпр(ВидОперации,ВидОперацииПоступление);

    Организация = Основание.Организация;
    ВалютаДокумента = Основание.ВалютаДокумента;

    Если ЗначениеЗаполнено(Основание.БанковскийСчетКасса) Тогда
    Касса = Основание.БанковскийСчетКасса;
    КонецЕсли;

    Если ВалютаДокумента.Пустая() Тогда
    ВалютаДокумента = мВалютаРегламентированногоУчета;
    КонецЕсли;

    СтруктураКурсаДокумента = МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаДокумента,);
    КурсДокумента = СтруктураКурсаДокумента.Курс;
    КратностьДокумента = СтруктураКурсаДокумента.Кратность;

    Если ВидОперации=Перечисления.ВидыОперацийПКО.ПриходДенежныхСредствРозничнаяВыручка Тогда

    ВидПриемаРозничнойВыручки=Основание.ВидПриемаРозничнойВыручки;
    Контрагент=Основание.КассаККМ;

    КонецЕсли;

    УправлениеДенежнымиСредствами.ЗаполнитьПоПланируемомуПоступлениюУпр(РасшифровкаПлатежа,
    Основание,
    СтавкаНДС,
    ВалютаДокумента,
    КурсДокумента,
    КратностьДокумента,
    ВидОперации);

    СуммаДокумента=РасшифровкаПлатежа.Итог("СуммаПлатежа");

    КонецЕсли;

    ПроверкаКурсовВалют(СтрокаПлатеж);

    Если стрСпособЗаполнения = "По взаиморасчетам" Тогда

    УправлениеДенежнымиСредствами.ЗаполнитьПоВзаиморасчетамУпр(ВалютаДокумента,КурсДокумента,КратностьДокумента,СтрокаПлатеж,1);
    СуммаДокумента=СтрокаПлатеж.СуммаПлатежа;
    УправлениеДенежнымиСредствами.ПересчитатьСуммуНДС(СтрокаПлатеж);

    ИначеЕсли стрСпособЗаполнения = "По взаиморасчетам с подотчетным лицом" Тогда
    ЗаполнитьПоВзаиморасчетамСПодотчетнымЛицомУпр(СтрокаПлатеж);

    ИначеЕсли стрСпособЗаполнения = "По розничной выручке" Тогда
    ЗаполнитьПоРозничнойВыручкеУпр(СтрокаПлатеж);
    УправлениеДенежнымиСредствами.ПересчитатьСуммуНДС(СтрокаПлатеж);

    ИначеЕсли стрСпособЗаполнения = "По сумме документа" Тогда
    ЗаполнитьПоСуммеДокументаУпр(СтрокаПлатеж);
    УправлениеДенежнымиСредствами.ПересчитатьСуммуНДС(СтрокаПлатеж);

    КонецЕсли;

    ЕстьРасчетыСКонтрагентами=УправлениеДенежнымиСредствами.ЕстьРасчетыСКонтрагентами(ВидОперации);
    ЕстьРасчетыПоКредитам=УправлениеДенежнымиСредствами.ЕстьРасчетыПоКредитам(ВидОперации);

    ОтраженоВОперУчете=Истина;
    Оплачено=Истина;
    ОтражатьВУправленческомУчете=Истина;

    Если (ВидОперации=Перечисления.ВидыОперацийПКО.ВозвратДенежныхСредствПодотчетником ) И
    НЕ ВалютаВзаиморасчетовРаботника = ВалютаДокумента Тогда

    ОтражатьВБухгалтерскомУчете=Ложь;
    ОтражатьВНалоговомУчете=Ложь;

    Иначе

    ОтражатьВБухгалтерскомУчете=Истина;

    КонецЕсли;

    Если ПринятоОт="" И ЗначениеЗаполнено(Контрагент) Тогда

    Если ЕстьРасчетыСКонтрагентами ИЛИ ЕстьРасчетыПоКредитам Тогда

    ПринятоОт =?(Контрагент.НаименованиеПолное="",Контрагент.Наименование, Контрагент.НаименованиеПолное);

    ИначеЕсли ВидОперации=Перечисления.ВидыОперацийПКО.ВозвратДенежныхСредствПодотчетником Тогда

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

    Результат=Запрос.Выполнить().Выбрать();
    Если Результат.Следующий() Тогда

    ПринятоОт = ?(НЕ ПустаяСтрока(Результат.Фамилия),
    Результат.Фамилия + ?(НЕ ПустаяСтрока(Результат.Имя)," " + Результат.Имя + " " + ?(НЕ ПустаяСтрока(Результат.Отчество),Результат.Отчество, ""), ""),"");

    КонецЕсли;

    Если ЗначениеЗаполнено(РасчетныйДокумент) Тогда

    ЭтотОбъект.Основание=Лев(Строка(РасчетныйДокумент),Найти(Строка(РасчетныйДокумент),Строка(РасчетныйДокумент.Дата))-1)+Формат(РасчетныйДокумент.Дата,"ДФ=dd.MM.yyyy");

    КонецЕсли;

    КонецЕсли;

    КонецЕсли;

    Ответственный = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнойОтветственный");

    ЗаполнитьРеквизитыПоУмолчаниюУпр();

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


    Тоже самое для Расходного кассового ордера и будет вам счастье
    Последний раз редактировалось Andyko; 30.01.2012 в 13:01. Причина: red

  6. Нормально. Спасибо

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

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

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