Вопрос № 91170: Уважаемые эксперты!!!
Возникла проблема:
Пользователем в документе была указана дата "01.01.0007", документ был проведен. При повторном входе и изменении даты на "01.01.2007" и проведении документа программа зависает...Вопрос № 91191: Поставить ограничение: не проводить реализацию при отсутствии введенного на ее основании счета-фактуры ...Вопрос № 91207: Добрый день!
Имеем 1С-Рарус:Автотранспорт. Поставили передо мной задачу реализовать пакетную печать путевых листов.
То есть, есть справочник водителей. За каждым водителем закреплен автомобиль. Каждое утро выписывается путевой лист (но н...
Вопрос № 91.170
Уважаемые эксперты!!!
Возникла проблема:
Пользователем в документе была указана дата "01.01.0007", документ был проведен. При повторном входе и изменении даты на "01.01.2007" и проведении документа программа зависает, приходиться завершать работу программы в аварийном режиме (ошибки при этом ни какой не указывается).
При использовании универсальной обработки по установке реквизитов результат тот же. Тестирование и исправление ИБ тоже не помогает. Как поступить с данной ситуации?
Заранее спасибо!!!
Отправлен: 13.06.2007, 02:54
Вопрос задала: Maska (статус: 5-ый класс)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 6)
Отвечает: Полозов Олег aka Asher
Здравствуйте, Maska!
Попробуйте отменить проведение и скопировать документ. У меня это спасает.
Ответ отправил: Полозов Олег aka Asher (статус: 6-ой класс)
Ответ отправлен: 13.06.2007, 03:28
Отвечает: DERL.KG
Здравствуйте, Maska!
Попробуйте удалить этот документ и ввести по новой...
Ответ отправил: DERL.KG (статус: 3-ий класс)
Ответ отправлен: 13.06.2007, 08:15
Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Maska!
Вам могу посоветовать только одно: вечером, уходя домой, оставить компьютер включенным, оставить его помечать на удаление данный документ. На самом деле Ваш компьютер не зависает, а обрабатывает 2000 лет. Если он за ночь удалит документ, то Вам повезло.
Ответ отправил: Шахрайчук Владимир Анатольевич (статус: Практикант)
Ответ отправлен: 13.06.2007, 10:27 Оценка за ответ: 5 Комментарий оценки: При попытке пометки удаления, программа виснет. По крайне мере, в диспечере задач напротив состояние - не работает. Но Ваш ответ натолкнул меня на кое-какие другие варианты, что помогло! Спасибо!
Отвечает: Dmitry Stashenko
Здравствуйте, Maska!
А если попробовать удалить документ методом Удалить(1). С остатками может конечно не то быть, но все ж лучше, чем 2 тысячи лет обработать
Ответ отправил: Dmitry Stashenko (статус: 4-ый класс)
Ответ отправлен: 13.06.2007, 11:38 Оценка за ответ: 4 Комментарий оценки: А потом объяснять бухгалтеру почему у него не пошли остатки, народ как-то не очень к этому относится!!!
Вопрос № 91.191
Поставить ограничение: не проводить реализацию при отсутствии введенного на ее основании счета-фактуры
Отвечает: Vovchai
Здравствуйте, филов сергей петрович !
самое простое вставить этот код в модуле проведения, в процедуру ОбработкаПроведения
Док = СоздатьОбъект("Документ");
Док.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент());
Если Док.ПолучитьДокумент() = 0 Тогда
// нет подчиненных документов вообще
Возврат;
Иначе
Если Док.Вид()<>"СчетФактураВыданный" Тогда
// нет подчиненного документа вида "Счет-фактура"
Возврат;
КонецЕсли;
КонецЕсли;
Ответ отправил: Vovchai (статус: 2-ой класс)
Ответ отправлен: 13.06.2007, 09:31
Отвечает: Strawberry
Здравствуйте, филов сергей петрович !
В процедуре Обработка проведения добавить:
Док= Создатьобъект("Документ");Сч=0;
Если док.выбратьподчиненные(,,ТекущийДокумент) = 1 Тогда
Пока Док.ПолучитьДокумент()=1 Цикл
Если Док.Вид()="СчетФактура" Тогда
Сч=1;
Прервать;
КонецЕСли;
КонецЦикла;
Если сч=1 Тогда
Иначе
НеПроводитьДокумент();
КонецЕСли;
Иначе
НеПроводитьДокумент();
КОнецЕСли;
--------- Мальчик-извращенец прочел деду Морозу с табуретки всего Пастернака!
Ответ отправил: Strawberry (статус: 8-ой класс)
Ответ отправлен: 13.06.2007, 10:06 Оценка за ответ: 5 Комментарий оценки: >фраза " введенного на ее основании счета-фактуры " подразумевала ,что счет-фактура проведена > - сорри,если было непонятно из текста - это "язык" бухгалтеров. >у ВАС нет проверки проведения счет-фактуры и сброса проводок ,если удалена или помечена на удаление - ошибочно счет-фактура С уважением - жду вашего мнения!!
Отвечает: Dmitry Stashenko
Здравствуйте, филов сергей петрович !
Процедура ОбработкаПроведения()
СЗ = СоздатьОбъект("СписокЗначений");
Док = СоздатьОбъект("Документ");
Док.ВыбратьПодчиненныеДокументы(,,ТекущийДокумент());
Пока Док.ПолучитьДокумент() = 1 Цикл
Если (Док.Вид() = "Счет") и (Док.Проведен() = 1) Тогда
СЗ.ДобавитьЗначение(СокрЛП(ДокТест.ТекущийДокумент()));
КонецЕсли;
КонецЦикла;
Если СЗ.РазмерСписка() = 0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецПроцедуры
Ответ отправил: Dmitry Stashenko (статус: 4-ый класс)
Ответ отправлен: 13.06.2007, 11:14 Оценка за ответ: 5 Комментарий оценки: нет проверки сброса проводок ,если удалена или помечена на удаление - ошибочно счет-фактура С уважением - жду вашего мнения!!
Отвечает: Elric
Здравствуйте, филов сергей петрович !
Чтобы сбросить проводки просто включите в модуль цикл удаления проводок в случае если СчетФактура помечен на удаление.
Проверка:
Если Док.ПометкаУдаления()=1 Тогда
..
КонецЕсли;
Цикл:
Пока Операция.КоличествоПроводок()>0 Цикл
Операция.ПолучитьПроводкуПоНомеру(1);
Операция.УдалитьПроводку();
КонецЦикла;
--------- Мирный атом в КАЖДЫЙ дом!
Ответ отправил: Elric (статус: Специалист)
Ответ отправлен: 13.06.2007, 13:01
Вопрос № 91.207
Добрый день!
Имеем 1С-Рарус:Автотранспорт. Поставили передо мной задачу реализовать пакетную печать путевых листов.
То есть, есть справочник водителей. За каждым водителем закреплен автомобиль. Каждое утро выписывается путевой лист (но не всем водителям).
Буду признателен если подскажете как сие реализовать?
Отправлен: 13.06.2007, 11:21
Вопрос задал: Abaza (статус: Посетитель)
Всего ответов: 5 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Dmitry Stashenko
Здравствуйте, Abaza!
Можно так:
Создаем обработку, реквизит диалога формы Таблицу значений заполняем из Справочника.Водители, помечаем нужных водителей уже в таблице значений, ну и пока есть что выбрать из этой таблицы, выводи на печать бланки путевых листов, попутно заполняя марку, номер (не видел к сожаленью Рарус.Автотранспорт, но так понимаю, что там это реквизиты справочника), пробег автомобиля, остаток бензина (тоже по идее должны вводиться заранее каким-нить документом) ну и все, что надо в путевом листе.
Ответ отправил: Dmitry Stashenko (статус: 4-ый класс)
Ответ отправлен: 13.06.2007, 11:50
Отвечает: DIMa@XX
Здравствуйте, Abaza!
Ваш вопрос про Рарус. очень не конкретен. Если хотите помощи конкретизируйте. Возможно так, вы указали, что тут нужна привязка к водителям, значит надо.
1. Создать формы с выбором тех водителей которые должны выехать на линию.
2. Если у всех путевые листы одинаковой формы (например 3) тогда больше ничего не надо в эту форму Иначе добавляем к каждому водителю выбор формы путевого листа.
3. Создаем путевые листы. Для этого пишем примерно так.
Для каждого строка из Форма.Водители Цикл //Та форма которую создали
Документ = Документы.уатПутевойЛист.СоздатьДокумент();
Документ.ВидПЛ = Перечисления.уатВидыПЛ."нужный вид";
Документ.ТранспортноеСредство = "Получи ТС водителя любым образом"
Документ.Водитель1 = Строка.Водитель;
Документ.ДатаВыписки = ТекущаяДата();
Документ.Организация = Справочники.организации.НайтиПоКоду("код");
//и т.д. пока не заполните все необходимые поля
Документ.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный);
//Например форма 3 Легковой автомобиль Параметры 1 ИмяМакета в данном //случае "_3" и 2 ФлагПечати 0 - весь п/л, 1 - лиц. сторона, 2 - обр. строна
Документ.Документ.уатПечать_3("_3",0);
КонецЦикла;
--------- Hайден неизвестный драйвер, воткните какое-нибудь устройство!
Ответ отправил: DIMa@XX (статус: 4-ый класс)
Ответ отправлен: 13.06.2007, 11:57
Отвечает: Шахрайчук Владимир Анатольевич
Здравствуйте, Abaza!
Ну, естественно, внешним отчетом.
Формируем список водителей.
Сп=СоздатьОбъект("СписокЗначений");
Спр=СоздатьОбъект("Справочник.Водители");
Спр.ВыбратьЭлементы()
Пока Спр.Получитьлемент()=1 Цикл
Сп.ДобавитьЗначение(Спр.ТекучийЭлемент());
КонецЦикла;
Теперь помечаем, какие листы будем печатать
Для Сч=1 По Сп.РазмерСписква() Цикл
Вод=Сп.ПолучитьЗначение(Сч);
Если Вод.Печатать=1 Тогда или другое условие
Сп.Пометка(Сч,1)
Иначе
Сп.Пометка(Сч,0)
КонецЕсли;
КонецЦикла
Теперь бухгалтер окончательно расставляет птички напротив тех водителей, которых будем печатать
Вод="";
Поз=0;
Если Сп.ОтметитьЗначения(Вод,"ПутевыеЛисты",Поз)=0 Тогда Возврат;КонецЕсли;
Теперь печатаем выбранных водителей
Для Сч=1 По Сп.РазмерСписква() Цикл
Если Сп.Пометка(Сч)=1 Тогда
Печать()
КонецЕсли;
КонецЦикла
Процедуру Печать прийдется скопировать с процедуры печати одиночного путевого листа (подшеколадивши).
Прочитайте комманды Таб.ПараметрыСтраницы, Таб.Напечатать
Кнопку вызова внешнего отчета вставьте в форму справочника или журнала путевых листов. Эта же обработка может создавать путевые листы
Задача несложная.
Ответ отправил: Шахрайчук Владимир Анатольевич (статус: Практикант)
Ответ отправлен: 13.06.2007, 12:17 Оценка за ответ: 5 Комментарий оценки: Примерно понял. Попытаюсь реализовать. Спасибо
Отвечает: svsrus
Здравствуйте, Abaza!
Коротко:
Смотрите процедуру (обычно "Печать"). Пишете аналогичную, например ПакетнаяПечать(). Делаете в этой процедуре цикл по документам. Внутрь цикла вставляете код с процедуры Печать(). Вместо метода Показать(), используете метод Напечатать() - вывод на печать без предварительного просмотра. И все.
Будут вопросы, пишите.
Ответ отправил: svsrus (статус: 6-ой класс)
Ответ отправлен: 13.06.2007, 14:30
Отвечает: Ромашов Евгений Николаевич
Здравствуйте, Abaza!
обработкой, ели есть встроенная в меню "сервис, обработка документов", если нет, то самому в процедуре приоткрытии() "путевого листа" проверить передаваемый параметр "Форма.Параметр = СписокЗначений" если Операция = Печать вызываешь процедуру печать, в списке можно передать дополнительные параметры, водитель, автомобиль, заказчик и т.д.