7.7 Документ с признаком "Расчет"

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем X-Man, 12 май 2011.

  1. TopicStarter Overlay
    X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    433
    Симпатии:
    3
    Баллы:
    29
    Уже кинулся было благодарить всех милосердно откликнувшихся, но решил глянуть модуль формы документа:) Никаких движений там не создается.

    Код:
    Процедура ПровестиИзФормы(НажатаКнопкаОК=0)
    
    ПриЗаписиПерепроводить(0);
    Записать();
    ПриЗаписи();
    
    Если глПроведенВПрошлом(Контекст) <> 1 Тогда
    
    ПриЗаписиПерепроводить(1);
    Провести();
    
    КонецЕсли;
    
    Если НажатаКнопкаОК = 1 Тогда
    Форма.Закрыть();
    КонецЕсли;
    
    КонецПроцедуры
    
    
    
    //*****************************************************************************
    // Предопределенная процедура
    //
    Процедура ПриЗаписи() 
    
    Если ФизЛицо.Выбран() = 0 тогда
    Предупреждение("Не указан исполнитель!");
    Активизировать("ФизЛицо", 0);
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    
    Если (Константа.ЕстьРасчетыВВалюте = 0) Тогда
    Валюта = ПолучитьПустоеЗначение("Справочник.Валюты");
    КонецЕсли;    
    
    ЖурналРасчетовЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");
    НачалоТП = ЖурналРасчетовЗарплата.НачалоТекущегоПериода();
    КонецТП = ЖурналРасчетовЗарплата.КонецТекущегоПериода();
    
    Если (глПроведенВПрошлом(ТекущийДокумент()) = 1) и (ПустоеЗначение(ТекущийДокумент().Окончание) = 1) и (ПустоеЗначение(Окончание) = 0) тогда
    // если открыли документ прошлого периода и у него была открыта дата окончания и ее при этом закрыли, то необходимо проверить, что бы дата закрытия не была
    // меньше чем дата окончания предыдущего периода.
    ДатаКонцаПредыдущегоПериода = ЖурналРасчетовЗарплата.КонецПериодаПоДате(НачалоТП - 1);
    Если Окончание < ДатаКонцаПредыдущегоПериода тогда
    Сообщить("Дата окончания не может быть меньше даты окончания предыдущего расчетного периода! Документ не записан.", "!");
    СтатусВозврата(0);
    КонецЕсли;
    КонецЕсли;
    
    Если ПроверкаУникальностиКода()=1 Тогда
    НайденСотрудник = глНайтиСотрудника(ФизЛицо,ЮрЛицо);
    Если ПустоеЗначение(НайденСотрудник)=0 Тогда
    Иначе
    СпрСотрудники = СоздатьОбъект("Справочник.Сотрудники");
    СпрСотрудники.Новый();
    СпрСотрудники.ФизЛицо = ФизЛицо;
    СпрСотрудники.ЮрЛицо = ЮрЛицо;
    СпрСотрудники.Код = глПодобратьНовыйКодЭлементу(ТабельныйНомер,,ЮрЛицо.ПрефиксНомеровДокументов);
    СпрСотрудники.Наименование = ФизЛицо.Наименование;
    СпрСотрудники.Записать();
    Сотрудник=СпрСотрудники.ТекущийЭлемент();
    КонецЕсли;
    КонецЕсли;
    
    Если Сотрудник.Выбран()=0 Тогда
    Сообщить("Не выбран сотрудник! Запись документа невозможна.", "!");
    СтатусВозврата(0);
    КонецЕсли;
    Если ПустоеЗначение(Начало)=1 Тогда
    Сообщить("Не выбрана дата начала договора. Запись документа невозможна", "!");
    СтатусВозврата(0);
    Иначе
    Если (ПустоеЗначение(Окончание)=0)и(Начало>Окончание) Тогда
    Сообщить("В договоре дата начала больше даты окончания. Запись документа невозможна", "!");
    СтатусВозврата(0);
    КонецЕсли;
    КонецЕсли;
    Если (ШаблонПроводки.Наименование = "Распределять пропорционально расчетной базе") Тогда
    Сообщить("Неверно указан шаблон проводки.", "!");
    СтатусВозврата(0);
    КонецЕсли;
    Если УчетНалогаНаПрибыль.ВидРасхода=Перечисление.ВидыРасходов.ПропорциональноРаспределять Тогда
    Сообщить("В данных учета налога на прибыль выбран вид расхода ""Распределять пропорционально расчетной базе"". Запись документа невозможна. ", "!");
    СтатусВозврата(0);
    КонецЕсли; 
    
    Если СтатусВозврата() = 0 Тогда
    Возврат;
    КонецЕсли;
    
    Если ПроверкаУникальностиКода()=0 Тогда
    СтатусВозврата(0);Возврат;
    КонецЕсли;
    
    Если глМожноЗаписатьДокумент(Контекст) = 0 Тогда
    СтатусВозврата(0);
    Возврат;
    ИначеЕсли глКонтрольДатыДокумента(Контекст, НачальнаяДатаДокумента) = 1 Тогда
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    
    Фирма = "";
    
    КонецПроцедуры     //     ПриЗаписи()    
    
    //******************************************************************************
    //    Предопределенная процедура
    //
    Процедура ОбработкаПроведения()
    
    Если Проверка()=0 Тогда
    СтатусВозврата(0);Возврат;
    КонецЕсли;
    
    Если ПБОЮЛ = 1 Тогда
    Расчет = ВидРасчета.ОплатаПоДоговоруСПредпринимателем;
    ИначеЕсли ТипДоговора = Перечисление.ТипДоговора.ДоговорПодряда Тогда
    Расчет = ВидРасчета.ОплатаПоДоговору;
    ИначеЕсли ТипДоговора = Перечисление.ТипДоговора.АвторскийДоговор Тогда
    Расчет = ВидРасчета.Авторские;
    ИначеЕсли ТипДоговора = Перечисление.ТипДоговора.ЛицензионныйДоговор Тогда
    Расчет = ВидРасчета.ЛицензионныеВыплаты;
    ИначеЕсли ТипДоговора = Перечисление.ТипДоговора.ОбОтчужденииИсключительныхПрав Тогда
    Расчет = ВидРасчета.ВыплатыЗаОтчуждениеИсключительныхПрав;        
    Иначе
    Сообщить("Не указан тип договора. Проведение документа невозможно", "!");
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    
    НачислениеУдержание = глПолучитьСвободноеНачислениеУдержание(Сотрудник,Расчет,Начало,Окончание); 
    
    Если ПустоеЗначение(НачислениеУдержание)=1 Тогда
    Сообщить("Документ "+ глПредставлениеДокумента(ТекущийДокумент())+": проведение отменено!", "!!!");
    СтатусВозврата(0);
    Возврат;
    Иначе
    Если ПустоеЗначение(Начало)=0 Тогда
    УстановитьРеквизитСправочника(НачислениеУдержание.ТекущийЭлемент(),"Действует",1,Начало);
    КонецЕсли;
    Если ПустоеЗначение(Окончание)=0 Тогда
    УстановитьРеквизитСправочника(НачислениеУдержание.ТекущийЭлемент(),"Действует",0,Окончание+1);
    КонецЕсли;
    КонецЕсли;
    
    КонецПроцедуры    //     ОбработкаПроведения() 
    
    
    
    При этом никаких записей как у архивного, так и у "неархивного" документов не наблюдается. Блин, вот стопудово че-то не так сделала, а мне голову морочит. Но мне теперь реально интересно стало, что такое за ерунда:(
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    ПровестиИзФормы() у вас изменена поэтому и не видите. В стандартной вызывается документ НачислениеЗП (в вашем случае вы все равно ее вызываете - иначе не получите РК и НДФЛ). Он то в данном случае и формирует запись в ЖР, но запись-то принадлежит ДГПХ! Вот откуда ноги растут. Не важно что при нажатии кнопки "введено документом" появляется начислениеЗП. Главное (как совершенно правильно отметил Gucci76 ) что 1с пишет по кнопке действия в журнале документов (см. движения документов на ДГПХ)
  3. TopicStarter Overlay
    X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    433
    Симпатии:
    3
    Баллы:
    29
    Это понятно, что, скорее всего, при формировании отчета о движениях по кнопке действия берется не родитель, а прародитель, то есть, документ, на основании которого записи введены в журнал. Но мне непонятно одно: почему ОБА документа, НЕ сформировавшие записей, выглядят по-разному (снял с проведения все договоры, снял с проведения начисления з/п, провел все договоры-опять та же песня. при том, что Начисление з/п в этот момент с проведения снято:() ?


    Кстати, процедура ПровестиИзФормы()-оригинальная. Проста конфа-не ЗиК, а комплексная.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Я и Gucci76 на этот вопрос уже отвечали - либо провели не в том периоде (дата роли не играет) либо меняли период програмно (там есть хитрость). Попробуйте поставить БУДУЩИЙ период (я вам об этом писал) - должен "заштриховаться"))) НО только при условии что по этому сотруднику есть начисление ЗП (появится запись в ЖР и все остальные вкусности)

    Понятно.
  5. Gucci76
    Offline

    Gucci76 Опытный в 1С

    Регистрация:
    9 мар 2008
    Сообщения:
    67
    Симпатии:
    0
    Баллы:
    26
    Если совсем интересно, то поковырявшись в модуле обработки ...... можно разобраться откуда берется "архивность"
    [warn="_"]
    Ссылка на сайт удалена. Если хотите привести пример - прикрепляйте файл к сообщению
    [/warn]

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