Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Перепроведение документа.          
alex040269 Подменю пользователя
сообщение 21.02.12, 14:18
Сообщение #1

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Добрый день. При закрытии документа появляется вопрос: " Сохранить документ? (Документ будет перепроведен) ".

Можно как-то запретить сохранение документа, кроме нажатия на кнопку ОК?

Спасибо.

Платформа 7.70.027.


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

MATEVI Подменю пользователя
сообщение 21.02.12, 14:23
Сообщение #2

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Повесить на кнопку закрыть свою процедуру
//=============================================
Процедура ПриЗакрытииДокумента()
    Форма.Закрыть(0); // где 0 без вопросов
КонецПроцедуры

nysysimara Подменю пользователя
сообщение 21.02.12, 14:29
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

MATEVI, а как быть с нажатием крестика в правом верхнем углу?


Signature
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП)
1С Предприятие 8.3: Бух.предприятия 3.0 + самописка
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Кроме высшего образования, нужно иметь хотя бы среднее соображение

5_kopeek Подменю пользователя
сообщение 21.02.12, 14:32
Сообщение #4

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

В правах пользователя убрать разрешение записи без перепроведения. Тогда даже при выборе утвердительного ответа документ не будет сохранен без нажатия ОК.

nysysimara Подменю пользователя
сообщение 21.02.12, 14:35
Сообщение #5

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

нужна глобальная переменная
например - НажалиОк
при нажатии кнопки "Ок" присвоить НажалиОк=1;
а в процедуре ПриЗаписи прописать
Процедура ПриЗаписи()
    Если  НажалиОк=0 Тогда
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;  
КонецПроцедуры


Signature
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП)
1С Предприятие 8.3: Бух.предприятия 3.0 + самописка
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Кроме высшего образования, нужно иметь хотя бы среднее соображение

Спасибо сказали: alex040269,

MATEVI Подменю пользователя
сообщение 21.02.12, 14:50
Сообщение #6

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Цитата(nysysimara @ 21.02.12, 14:29) *
MATEVI, а как быть с нажатием крестика в правом верхнем углу?

Да поспешил.

alex040269 Подменю пользователя
сообщение 21.02.12, 16:30
Сообщение #7

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Спасибо всем откликнувшимся!!!

К сожалению ничего не помогает.

У меня есть дописанная Бух 7.70.259. В ней есть документ, Расчет ЗП не типовый. Этот документ использует "всповогательные документы". РасчетНачисления,РасчетУдержания и РасчетФонды. Так вот, если Документ рассчтиать и нажаить ОК, то все хорошо, но если документ закрыть как нибудь иначе, даже если реалльно документ в базу не записывается:
Процедура ПриЗаписи()
      СтатусВзврата(0);
      Возврат;
КонецПроцедуры.


Каким то образом документы РасчетУдержания помечаются на удаление и при следуещем перепроведении документ проводится не правильно.
Нужно снова рассчитать весь документ и провести sad.gif


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

MATEVI Подменю пользователя
сообщение 21.02.12, 17:26
Сообщение #8

Отдыхающий
Иконка группы
Ветеран троянской войныМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 2201
Из: Одесса
Спасибо сказали: 956 раз
Рейтинг: 0

Как так? При закрытии помечается на удаление? Поподробней желательно с кодом

Читатель Подменю пользователя
сообщение 21.02.12, 17:56
Сообщение #9

Говорящий
Иконка группы
Группа: Местный
Сообщений: 56
Из: Киевская обл.
Спасибо сказали: 20 раз
Рейтинг: 0

Надо смотреть код где и как Ваш документ "Расчет ЗП" <использует "всповогательные документы">. Где-то же он помечает на удаление.

5_kopeek Подменю пользователя
сообщение 21.02.12, 21:52
Сообщение #10

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Цитата(alex040269 @ 21.02.12, 16:30) *
Каким то образом документы РасчетУдержания помечаются на удаление и при следуещем перепроведении документ проводится не правильно.
Нужно снова рассчитать весь документ и провести sad.gif

Так это совсем другой вопрос. Как говорили, нужен код.

alex040269 Подменю пользователя
сообщение 22.02.12, 8:09
Сообщение #11

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

В какие обработчики смотреть?


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

nysysimara Подменю пользователя
сообщение 22.02.12, 8:29
Сообщение #12

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

Цитата(alex040269 @ 21.02.12, 16:30) *
но если документ закрыть как нибудь иначе, даже если реалльно документ в базу не записывается

а что у вас в процедуре ПриЗакрытии()?
Может там прописано удаление


Signature
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП)
1С Предприятие 8.3: Бух.предприятия 3.0 + самописка
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Кроме высшего образования, нужно иметь хотя бы среднее соображение

alex040269 Подменю пользователя
сообщение 22.02.12, 8:52
Сообщение #13

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

ПриЗакрытии процедура не определена
ПриЗаписи вполне стандартно было:

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


+ Я добавил код для проверки соответсвия основного документа вспомогательным, после чего и выявил такой баг...


Р.S. НажалиОК - тоже я добавил по совету nysysimara


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

nysysimara Подменю пользователя
сообщение 22.02.12, 8:59
Сообщение #14

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

Если Итоговый = 1 Тогда
        ИзмИтоговый();
    КонецЕсли;

- это вами добавленная проверка?
а непосредственно код процедуры ИзмИтоговый() можно


Signature
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП)
1С Предприятие 8.3: Бух.предприятия 3.0 + самописка
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Кроме высшего образования, нужно иметь хотя бы среднее соображение

alex040269 Подменю пользователя
сообщение 22.02.12, 9:16
Сообщение #15

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

нет там ничего!
Процедура ИзмИтоговый()
    Если Итоговый = 1 Тогда
        НачалоПериода = НачМесяца(ДатаДок);
        КонецПериода  = КонМесяца(ДатаДок);
        
        ДатаДок = КонецПериода;
    КонецЕсли;
КонецПроцедуры


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

nysysimara Подменю пользователя
сообщение 22.02.12, 9:31
Сообщение #16

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

Цитата(alex040269 @ 22.02.12, 8:52) *
+ Я добавил код для проверки соответсвия основного документа вспомогательным, после чего и выявил такой баг...

так может в этом коде собака и зарыта
и закрытие или запись документа ни причем

alex040269 Подменю пользователя
сообщение 22.02.12, 9:45
Сообщение #17

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

баг был и раньше, суммы в доке есть а проводок - нет.
вот полный код:
Процедура ПроверитьВспомогательныеДокументы(ДокументыНачисления,ТабличнаяЧасть,спНачислено,ДокНач)
    НСДокументаНачисления = 0;
    Пока ДокументыНачисления.НайтиЗначение(ТабличнаяЧасть.Сотрудник,НСДокументаНачисления,"Сотр") = 1 Цикл
        ДокументыНачисления.ПолучитьСтрокуПоНомеру(НСДокументаНачисления);
        Если ДокНач.НайтиДокумент(ДокументыНачисления.Док) = 1 Тогда
            ТабЧасть = 0;
            ДокНач.ВыгрузитьТабличнуюЧасть(ТабЧасть,);
            //ТабЧасть.ВыбратьСтроку();
            РазмерСписка = спНачислено.РазмерСписка();
            Для ш = 1 По РазмерСписка Цикл
                Реквизит = спНачислено.ПолучитьЗначение(ш);
                Значение = ТабличнаяЧасть.ПолучитьЗначение(ТабличнаяЧасть.НомерСтроки,Реквизит);
                Если Значение <> 0 Тогда
                    СтрокаНУ = 0;
                    Если СоответсвиеНУ.НайтиЗначение(Реквизит,СтрокаНУ,"Реквизит") = 0 Тогда
                        Сообщить("Не найден вид расчета для " + Реквизит);
                        Продолжить;
                    КонецЕсли;
                    СоответсвиеНУ.ПолучитьСтрокуПоНомеру(СтрокаНУ);
                    //ТабЧасть.ВыбратьСтроку();
                    спВидыРасчетов.ВыбратьЭлементыПоРеквизиту("ВидРасчетов",СоответсвиеНУ.ВидРасчета,0,0);
                    Пока спВидыРасчетов.ПолучитьЭлемент() = 1 Цикл
                        СтрокаНУ = 0;
                        Пока ТабЧасть.НайтиЗначение(спВидыРасчетов.ТекущийЭлемент(),СтрокаНУ,"НачислениеУдержание") = 1 Цикл
                            ТабЧасть.ПолучитьСтрокуПоНомеру(СтрокаНУ);
                            Значение = Значение - ТабЧасть.Результат;
                            ТабЧасть.УдалитьСтроку(СтрокаНУ);
                            СтрокаНУ = 0;
                        КонецЦикла;
                    КонецЦикла;
                    ТабличнаяЧасть.УстановитьЗначение(ТабличнаяЧасть.НомерСтроки,Реквизит,Значение)
                КонецЕсли;
            КонецЦикла;    
        Иначе
            Сообщить(ДокументыНачисления.Док + " не найден");
        КонецЕсли;
        ДокументыНачисления.УдалитьСтроку(НСДокументаНачисления);
        НСДокументаНачисления = 0;
    КонецЦикла;
КонецПроцедуры



Процедура ПриЗаписи()

    Если НажалиОк = 0 Тогда
        СтатусВозврата(0);
        Возврат
    КонецЕсли;
    
    Если Итоговый = 1 Тогда
        ИзмИтоговый();
    КонецЕсли;  
    
    Форма.Обновить(1);
    
    Автор = Пользователь;
    АвтоВремяНачалоДня();
    глПроверкаДатыДок(Контекст,"Запись");
    // проверить изменения
    
    запрНачислСотр = "//{{ЗАПРОС(запрНачислСотрПриЗаписи)
    |Период с НачалоПериода по КонецПериода;
    |Фир = Документ.авбЗарплатаСотрудникаНачисления.Фирма;
    |Док = Документ.авбЗарплатаСотрудникаНачисления.ТекущийДокумент;
    |Сотр = Документ.авбЗарплатаСотрудникаНачисления.Сотрудник;
    |Группировка Сотр без групп;
    |Группировка Док без групп;
    |Условие(Сотр в сзСписокСотрудников);
    |Условие(Фир = Фирма);
    |"//}}ЗАПРОС
    ;
        
    запрУдержСотр = "//{{ЗАПРОС(запрУдержСотрПриЗаписи)
        |Период С НачДатаРасчета по КонДатаРасчета;
        |ОбрабатыватьДокументы Проведенные;
        |Фир = Документ.авбЗарплатаСотрудникаУдержания.Фирма;
        |Док = Документ.авбЗарплатаСотрудникаУдержания.ТекущийДокумент;
        |Сотр = Документ.авбЗарплатаСотрудникаУдержания.Сотрудник;
        |Группировка Сотр без групп;
        |Группировка Док без групп;
        |Условие(Сотр в сзСписокСотрудников);
        |Условие(Фир = Фирма);
        |"//}}ЗАПРОС
    ;

    
        
    ДокРасчетЗП = Метаданные.Документ("авбРасчетЗарплаты");
    КвоРеквизитов = ДокРасчетЗП.РеквизитТабличнойЧасти();
    
    спНачислено = СоздатьОбъект("СписокЗначений");
    спУдержано = СоздатьОбъект("СписокЗначений");
    Удержания = 0;
    
    Для ш = 6 По КвоРеквизитов Цикл
        Реквизит = ДокРасчетЗП.РеквизитТабличнойЧасти(ш);
        Если Реквизит.Тип <> "Число" Тогда
            Продолжить
        КонецЕсли;
        Если Реквизит.Идентификатор = "Начислено" Тогда
            Удержания = 1;
            Продолжить
        ИначеЕсли Реквизит.Идентификатор = "Удержано" Тогда
            Прервать
        КонецЕсли;
        Если Удержания = 0 Тогда
            спНачислено.ДобавитьЗначение(Реквизит.Идентификатор)
        Иначе
            спУдержано.ДобавитьЗначение(Реквизит.Идентификатор)
        КонецЕсли;
    КонецЦикла;
    
    Запрос = СоздатьОбъект("Запрос");      
    сзСписокСотрудников = СоздатьОбъект("СписокЗначений");
    
    
    ВыгрузитьТабличнуюЧасть(сзСписокСотрудников,"Сотрудник");
    
    Если Запрос.Выполнить(запрНачислСотр) = 0 Тогда
        Сообщить("Не выполнен запрос по начислениям сотрудников ");
        Возврат;
        //Продолжить;
    КонецЕсли;
    
    ДокументыНачисления = 0;
    Запрос.Выгрузить(ДокументыНачисления,,0);

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

    СоздатьСоответсвие();    
    спВидыРасчетов = СоздатьОбъект("Справочник.авбНачисленияУдержания");

    
        ТабличнаяЧасть = 0;
    ВыгрузитьТабличнуюЧасть(ТабличнаяЧасть);
    
    ТабличнаяЧасть.ВыбратьСтроки();
    Пока ТабличнаяЧасть.ПолучитьСтроку() = 1 Цикл
        Если (ТабличнаяЧасть.Начислено <> 0) Тогда
            ПроверитьВспомогательныеДокументы(ДокументыНачисления,ТабличнаяЧасть,спНачислено,ДокНач)
        КонецЕсли;
        Если (ТабличнаяЧасть.Удержано <> 0) Тогда
            ПроверитьВспомогательныеДокументы(ДокументыУдержания,ТабличнаяЧасть,спУдержано,ДокУд)
        КонецЕсли;
    КонецЦикла;
    
    
    РазмСписка = спУдержано.РазмерСписка();
    Для ш = 1 по РазмСписка Цикл
        спНачислено.ДобавитьЗначение(спУдержано.ПолучитьЗначение(ш))
    КонецЦикла;
        
    РазмСписка = спНачислено.РазмерСписка();
    ТабличнаяЧасть.ВыбратьСтроки();
    Пока ТабличнаяЧасть.ПолучитьСтроку() = 1 Цикл
        Для ш = 1 По РазмСписка Цикл
            ИмяРевизита = спНачислено.ПолучитьЗначение(ш);
            Значение = ТабличнаяЧасть.ПолучитьЗначение(ТабличнаяЧасть.НомерСтроки,ИмяРевизита);
            Если Значение <> 0 Тогда
                Сообщить("Сотрудник " + ТабличнаяЧасть.Сотрудник + " расхождение сумм в колонке " + ИмяРевизита + " = " + Значение,"!!!");
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
КонецПроцедуры



Большое спасибо за внимание.


Нужно еще исследовать процедуру ПриУдаленииДокумента. Отладчик не остананавливался, Сообщить не устанавливал, а надо бы ... в общем сделаю - отпишусь...


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

5_kopeek Подменю пользователя
сообщение 22.02.12, 12:38
Сообщение #18

Ветеран
*******
Женщине-одинэснику
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0

Проверьте, действительно ли вспомогательный документ помечается на удаление именно при закрытии документат Расчет ЗП. Заодно гляньте, что происходит в ПриОтменеПроведения(). А для анализа формирования/не формирования проводок нужен модуль документа.

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 05.05.24, 12:00
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!