MATEVI, а как быть с нажатием крестика в правом верхнем углу?
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП) 1С Предприятие 8.3: Бух.предприятия 3.0 + самописка ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Кроме высшего образования, нужно иметь хотя бы среднее соображение
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0
В правах пользователя убрать разрешение записи без перепроведения. Тогда даже при выборе утвердительного ответа документ не будет сохранен без нажатия ОК.
нужна глобальная переменная например - НажалиОк при нажатии кнопки "Ок" присвоить НажалиОк=1; а в процедуре ПриЗаписи прописать
Процедура ПриЗаписи() Если НажалиОк=0 Тогда СтатусВозврата(0); Возврат; КонецЕсли; КонецПроцедуры
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП) 1С Предприятие 8.3: Бух.предприятия 3.0 + самописка ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Кроме высшего образования, нужно иметь хотя бы среднее соображение
У меня есть дописанная Бух 7.70.259. В ней есть документ, Расчет ЗП не типовый. Этот документ использует "всповогательные документы". РасчетНачисления,РасчетУдержания и РасчетФонды. Так вот, если Документ рассчтиать и нажаить ОК, то все хорошо, но если документ закрыть как нибудь иначе, даже если реалльно документ в базу не записывается:
Каким то образом документы РасчетУдержания помечаются на удаление и при следуещем перепроведении документ проводится не правильно. Нужно снова рассчитать весь документ и провести
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник. ЗиУП
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0
Цитата(alex040269 @ 21.02.12, 16:30)
Каким то образом документы РасчетУдержания помечаются на удаление и при следуещем перепроведении документ проводится не правильно. Нужно снова рассчитать весь документ и провести
Так это совсем другой вопрос. Как говорили, нужен код.
но если документ закрыть как нибудь иначе, даже если реалльно документ в базу не записывается
а что у вас в процедуре ПриЗакрытии()? Может там прописано удаление
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП) 1С Предприятие 8.3: Бух.предприятия 3.0 + самописка ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Кроме высшего образования, нужно иметь хотя бы среднее соображение
- это вами добавленная проверка? а непосредственно код процедуры ИзмИтоговый() можно
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП) 1С Предприятие 8.3: Бух.предприятия 3.0 + самописка ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Кроме высшего образования, нужно иметь хотя бы среднее соображение
баг был и раньше, суммы в доке есть а проводок - нет. вот полный код:
Процедура ПроверитьВспомогательныеДокументы(ДокументыНачисления,ТабличнаяЧасть,спНачислено,ДокНач) НСДокументаНачисления = 0; Пока ДокументыНачисления.НайтиЗначение(ТабличнаяЧасть.Сотрудник,НСДокументаНачисления,"Сотр") = 1 Цикл ДокументыНачисления.ПолучитьСтрокуПоНомеру(НСДокументаНачисления); Если ДокНач.НайтиДокумент(ДокументыНачисления.Док) = 1 Тогда ТабЧасть = 0; ДокНач.ВыгрузитьТабличнуюЧасть(ТабЧасть,); //ТабЧасть.ВыбратьСтроку(); РазмерСписка = спНачислено.РазмерСписка(); Для ш = 1 По РазмерСписка Цикл Реквизит = спНачислено.ПолучитьЗначение(ш); Значение = ТабличнаяЧасть.ПолучитьЗначение(ТабличнаяЧасть.НомерСтроки,Реквизит); Если Значение <> 0 Тогда СтрокаНУ = 0; Если СоответсвиеНУ.НайтиЗначение(Реквизит,СтрокаНУ,"Реквизит") = 0 Тогда Сообщить("Не найден вид расчета для " + Реквизит); Продолжить; КонецЕсли; СоответсвиеНУ.ПолучитьСтрокуПоНомеру(СтрокаНУ); //ТабЧасть.ВыбратьСтроку(); спВидыРасчетов.ВыбратьЭлементыПоРеквизиту("ВидРасчетов",СоответсвиеНУ.ВидРасчета,0,0); Пока спВидыРасчетов.ПолучитьЭлемент() = 1 Цикл СтрокаНУ = 0; Пока ТабЧасть.НайтиЗначение(спВидыРасчетов.ТекущийЭлемент(),СтрокаНУ,"НачислениеУдержание") = 1 Цикл ТабЧасть.ПолучитьСтрокуПоНомеру(СтрокаНУ); Значение = Значение - ТабЧасть.Результат; ТабЧасть.УдалитьСтроку(СтрокаНУ); СтрокаНУ = 0; КонецЦикла; КонецЦикла; ТабличнаяЧасть.УстановитьЗначение(ТабличнаяЧасть.НомерСтроки,Реквизит,Значение) КонецЕсли; КонецЦикла; Иначе Сообщить(ДокументыНачисления.Док + " не найден"); КонецЕсли; ДокументыНачисления.УдалитьСтроку(НСДокументаНачисления); НСДокументаНачисления = 0; КонецЦикла; КонецПроцедуры
Процедура ПриЗаписи()
Если НажалиОк = 0 Тогда СтатусВозврата(0); Возврат КонецЕсли;
Если Итоговый = 1 Тогда ИзмИтоговый(); КонецЕсли;
Форма.Обновить(1);
Автор = Пользователь; АвтоВремяНачалоДня(); глПроверкаДатыДок(Контекст,"Запись"); // проверить изменения
запрНачислСотр = "//{{ЗАПРОС(запрНачислСотрПриЗаписи) |Период с НачалоПериода по КонецПериода; |Фир = Документ.авбЗарплатаСотрудникаНачисления.Фирма; |Док = Документ.авбЗарплатаСотрудникаНачисления.ТекущийДокумент; |Сотр = Документ.авбЗарплатаСотрудникаНачисления.Сотрудник; |Группировка Сотр без групп; |Группировка Док без групп; |Условие(Сотр в сзСписокСотрудников); |Условие(Фир = Фирма); |"//}}ЗАПРОС ;
запрУдержСотр = "//{{ЗАПРОС(запрУдержСотрПриЗаписи) |Период С НачДатаРасчета по КонДатаРасчета; |ОбрабатыватьДокументы Проведенные; |Фир = Документ.авбЗарплатаСотрудникаУдержания.Фирма; |Док = Документ.авбЗарплатаСотрудникаУдержания.ТекущийДокумент; |Сотр = Документ.авбЗарплатаСотрудникаУдержания.Сотрудник; |Группировка Сотр без групп; |Группировка Док без групп; |Условие(Сотр в сзСписокСотрудников); |Условие(Фир = Фирма); |"//}}ЗАПРОС ;
Для ш = 6 По КвоРеквизитов Цикл Реквизит = ДокРасчетЗП.РеквизитТабличнойЧасти(ш); Если Реквизит.Тип <> "Число" Тогда Продолжить КонецЕсли; Если Реквизит.Идентификатор = "Начислено" Тогда Удержания = 1; Продолжить ИначеЕсли Реквизит.Идентификатор = "Удержано" Тогда Прервать КонецЕсли; Если Удержания = 0 Тогда спНачислено.ДобавитьЗначение(Реквизит.Идентификатор) Иначе спУдержано.ДобавитьЗначение(Реквизит.Идентификатор) КонецЕсли; КонецЦикла;
ТабличнаяЧасть.ВыбратьСтроки(); Пока ТабличнаяЧасть.ПолучитьСтроку() = 1 Цикл Если (ТабличнаяЧасть.Начислено <> 0) Тогда ПроверитьВспомогательныеДокументы(ДокументыНачисления,ТабличнаяЧасть,спНачислено,ДокНач) КонецЕсли; Если (ТабличнаяЧасть.Удержано <> 0) Тогда ПроверитьВспомогательныеДокументы(ДокументыУдержания,ТабличнаяЧасть,спУдержано,ДокУд) КонецЕсли; КонецЦикла;
РазмСписка = спУдержано.РазмерСписка(); Для ш = 1 по РазмСписка Цикл спНачислено.ДобавитьЗначение(спУдержано.ПолучитьЗначение(ш)) КонецЦикла;
РазмСписка = спНачислено.РазмерСписка(); ТабличнаяЧасть.ВыбратьСтроки(); Пока ТабличнаяЧасть.ПолучитьСтроку() = 1 Цикл Для ш = 1 По РазмСписка Цикл ИмяРевизита = спНачислено.ПолучитьЗначение(ш); Значение = ТабличнаяЧасть.ПолучитьЗначение(ТабличнаяЧасть.НомерСтроки,ИмяРевизита); Если Значение <> 0 Тогда Сообщить("Сотрудник " + ТабличнаяЧасть.Сотрудник + " расхождение сумм в колонке " + ИмяРевизита + " = " + Значение,"!!!"); КонецЕсли; КонецЦикла; КонецЦикла; КонецПроцедуры
Большое спасибо за внимание.
Нужно еще исследовать процедуру ПриУдаленииДокумента. Отладчик не остананавливался, Сообщить не устанавливал, а надо бы ... в общем сделаю - отпишусь...
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник. ЗиУП
Группа: Пользователи*
Сообщений: 940
Спасибо сказали: 285 раз
Рейтинг: 0
Проверьте, действительно ли вспомогательный документ помечается на удаление именно при закрытии документат Расчет ЗП. Заодно гляньте, что происходит в ПриОтменеПроведения(). А для анализа формирования/не формирования проводок нужен модуль документа.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!