Опять Я С документом ЗаказНарядАкт

Тема в разделе "1C и всё что с ней связано", создана пользователем tarakan, 7 окт 2009.

  1. tarakan

    tarakan Гость

    Доброго время Суток!
    огромное спасибо за помощь в прошлых темах VBS
    кто не знает: Я делал документ для автосервиса ЗаказНарядАкт
    В конфигурации Комплексная конфигурация 4.5 (7.70.483)
    у меня уже с ним была проблема: не было проводок вообще!
    Но после долгой долбежки VBS по мне всё заработало!(проводки стали проводиться)
    НО когда бухгалтер увидела мою работу! Показала мне ещё на кучу недоработок

    дак вот проблема:
    Мой документ реализовывает как услуги так и потраченные матерьялы.
    с проводкой на услуги всё в порядки а вот на товар!
    Для ясности я прикреплю две картинки Проводки документа реализации и проводки документа ЗаказНарядакт!
    Да и ссылки на MD http://files.mail.ru/60RMJ3
    и базу http://files.mail.ru/FJ8N8T






    Это реализация


    _______________.jpg

    Это ЗаказНарядАкт

    realiz.jpg
     
  2. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Документ новый внедрить в комплексную - дело простое, а вот проводки к нему - далеко не тривиальное.
    Похоже, ты обречен по образу и подобию документа "Реализация" настроить справочники "ДвиженияРегистров"
    и "ХозОперации" для "ЗаказНарядАкт" так, чтобы они обеспечивали списание с 41 счета.
    Правильным это не выглядит, но если главбух так хочет - придется пробовать именно в этом направлении
     
  3. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    какой молодец однако. базу выложил. видать не подписывал док о не разглашении комерческой тайны ;) ;) ;) :D :D
     
  4. tarakan

    tarakan Гость

    нет подписывал :()
    Так всё я проблему решил:
    Скопировал в хоз. операциях элемент реализации и все её проводки!
    потом в модуле документа ЗаказНарядАкт
    прописал заного движение регистров это выгледит так:
    Процедура ПроведениеПоРегистрам()

    Перем ТаблСписПартий, ТаблСписПартийКом;
    Перем ВремРегистры;
    Перем ВремЗаявки, ВремЗаказыЗаявки, ВремОстаткиТМЦ, ВремРезервыТМЦ, ВремПартииНаличие, ВремПокупатели;

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

    ТаблицаУслуг = СоздатьОбъект("ТаблицаЗначений");
    ТаблицаТМЦ = глПодготовитьТаблицуДокумента(Контекст,1,ТаблицаУслуг);

    ФирмаДляОстатковТМЦ = глФирмаДляОстатковТМЦ(Фирма);

    СписокПараметров=СоздатьОбъект("СписокЗначений");

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

    // Сформируем список статусов партий
    СтатусПартии = СоздатьОбъект("СписокЗначений");
    СписокПараметров.ДобавитьЗначение(КодОперации, "КодОперации");

    ВремРегистры = СоздатьОбъект("Регистры");
    ВремЗаявки = ВремРегистры.Заявки;
    ВремЗаказыЗаявки = ВремРегистры.ЗаказыЗаявки;
    ВремОстаткиТМЦ = ВремРегистры.ОстаткиТМЦ;
    ВремРезервыТМЦ = ВремРегистры.РезервыТМЦ;
    ВремПартииНаличие = ВремРегистры.ПартииНаличие;
    ВремПокупатели = ВремРегистры.Покупатели;

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

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

    // контроль величины кредита клиенту (с учетом права пользователя превышать его)
    Если КодОперации = глКО.Продажа Тогда
    Если КонтрольКредитаПройден(ВремПокупатели) = 0 Тогда
    Возврат;
    КонецЕсли;
    КонецЕсли;

    ДвижениеЗаявокПокупателя(ТаблицаТМЦ, ВремЗаявки, ВремЗаказыЗаявки, ВремРезервыТМЦ); // по ТМЦ
    ДвижениеЗаявокПокупателя(ТаблицаУслуг, ВремЗаявки, ВремЗаказыЗаявки, ВремРезервыТМЦ); // по услугам и работам

    // остатки ТМЦ
    Если глСписаниеОстатковТМЦ (Контекст,ТаблицаТМЦ,СписокПараметров, ВремОстаткиТМЦ, ВремРезервыТМЦ)=0 Тогда
    Возврат;
    КонецЕсли;

    // партии ТМЦ
    глСписаниеПартийТМЦ(Контекст,ТаблицаТМЦ,СписокПараметров,ВремПартииНаличие,ТаблС
    писПартий,ТаблСписПартийКом);

    Если КодОперации=Перечисление.КодыОпераций.ПередачаНаРеализацию Тогда

    // надо списанные партии оприходовать на регистр "Партии отданные"
    ТаблСписПартий.ВыбратьСтроки();
    Пока ТаблСписПартий.ПолучитьСтроку()=1 Цикл
    //измерения
    Регистр.ПартииОтданные. Фирма = ТаблСписПартий.Фирма;
    Регистр.ПартииОтданные. Номенклатура = ТаблСписПартий.Номенклатура;
    Регистр.ПартииОтданные. СтатусПартии = ТаблСписПартий.СтатусПартии;
    Регистр.ПартииОтданные. Партия = ТаблСписПартий.Партия;

    Регистр.ПартииОтданные. Договор = Договор;
    Регистр.ПартииОтданные. ДокументПередачи= ТекущийДокумент();
    // ресурсы
    Регистр.ПартииОтданные. Количество = ТаблСписПартий.Количество;
    Регистр.ПартииОтданные. СуммаУпр = ТаблСписПартий.СуммаУпр;
    Регистр.ПартииОтданные. СуммаРуб = ТаблСписПартий.СуммаРуб;
    Регистр.ПартииОтданные. СуммаБезНДС = ТаблСписПартий.СуммаБезНДС;
    Регистр.ПартииОтданные. ПродСтоимость = ТаблСписПартий.СуммаПрод;
    // реквизиты
    Регистр.ПартииОтданные. КодОперации = глКО.ПередачаНаРеализацию;

    Регистр.ПартииОтданные. ДвижениеПриходВыполнить();
    КонецЦикла;

    // проверим, а не указал ли пользователь услуги или работы - их отдавать на релизацию нельзя
    ТаблицаУслуг.ВыбратьСтроки();
    Если ТаблицаУслуг.ПолучитьСтроку()= 1 Тогда
    глНеПроводить(Контекст,"Услуги и работы отдавать на реализацию невозможно! ("+ТаблицаУслуг.Номенклатура+")");
    Возврат;
    КонецЕсли;


    ИначеЕсли КодОперации=Перечисление.КодыОпераций.Продажа Тогда

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

    ТаблСписПартий.Свернуть("СтатусПартии,СтавкаНП,СтавкаНДС,ДоговорКомитента","СуммаПрод,СуммаПродУпр,СуммаПродРуб,НДСПрод,НППрод,СуммаБезНДС");
    ТаблСписПартий.НоваяКолонка("КредДокумент");
    ТаблСписПартий.НоваяКолонка("ВидДолга");
    ТаблСписПартий.НоваяКолонка("Сумма");
    ТаблСписПартий.НоваяКолонка("СуммаУпр");
    ТаблСписПартий.НоваяКолонка("СуммаРуб");
    ТаблСписПартий.НоваяКолонка("СуммаНДС");
    ТаблСписПартий.НоваяКолонка("СуммаНП");
    ТаблСписПартий.НоваяКолонка("Себестоимость");
    ТаблСписПартий.НоваяКолонка("ОблагаетсяНП");

    ТаблСписПартий.ВыбратьСтроки();
    Пока ТаблСписПартий.ПолучитьСтроку()=1 Цикл
    ТаблСписПартий.КредДокумент = ТекущийДокумент();
    ТаблСписПартий.ВидДолга = ВидДолгаПоСтатусу(ТаблСписПартий.СтатусПартии);
    ТаблСписПартий.Себестоимость= ТаблСписПартий.СуммаБезНДС;
    ТаблСписПартий.СуммаНДС = ТаблСписПартий.НДСПрод;
    ТаблСписПартий.СуммаНП = ТаблСписПартий.НППрод;
    ТаблСписПартий.Сумма = ТаблСписПартий.СуммаПрод;
    ТаблСписПартий.СуммаУпр = ТаблСписПартий.СуммаПродУпр;
    ТаблСписПартий.СуммаРуб = ТаблСписПартий.СуммаПродРуб;
    ТаблСписПартий.ОблагаетсяНП = УчитыватьНП;
    КонецЦикла;

    СписокПараметров.Установить("ЗнакДвижения", 1); // идет увеличение долга
    глДвижениеДолгов(Контекст,Договор,ТаблСписПартий,СписокПараметров,ВремПокупатели
    );

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

    // реализация услуг
    глДвижениеПартийУслуг(Контекст, ТаблицаУслуг, СписокПараметров);

    // сначала увеличим обороты продаж по услугам и работам
    ТаблицаУслуг.ВыбратьСтроки();
    Пока ТаблицаУслуг.ПолучитьСтроку()=1 Цикл
    глДвижениеОборотовПродаж(Контекст,
    Фирма,
    Контрагент,
    "",
    ТаблицаУслуг.Номенклатура,
    ТаблицаУслуг.Количество,
    0,
    ТаблицаУслуг.СуммаУпр);
    КонецЦикла;

    // теперь задолженность покупателя за отпущенные услуги или работы
    СписокПараметров.Установить("ЗнакДвижения",1); // увеличился долг клиента

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

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

    ТаблицаУслуг.ВыбратьСтроки();
    Пока ТаблицаУслуг.ПолучитьСтроку()=1 Цикл

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

    ТаблицаУслуг.Себестоимость = 0;
    ТаблицаУслуг.ОблагаетсяНП = УчитыватьНП;

    КонецЦикла;

    глДвижениеДолгов(Контекст,Договор,ТаблицаУслуг,СписокПараметров,ВремПокупатели);

    КонецЕсли;

    КонецПроцедуры
     
  5. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Ну вот, справился !
    А сколько бесценного опыта приобрел !
     
Загрузка...
Похожие Темы - Опять документом ЗаказНарядАкт
  1. vitte
    Ответов:
    10
    Просмотров:
    2.874
  2. Renat11111
    Ответов:
    8
    Просмотров:
    3.699
  3. sanch
    Ответов:
    5
    Просмотров:
    3.082
  4. NickProstoNick
    Ответов:
    5
    Просмотров:
    2.700
  5. aameno2
    Ответов:
    4
    Просмотров:
    3.117

Поделиться этой страницей