Выполнить функцию только если пользователь провел документ
15.02.2009
17:16
#1
"У меня стоит задача.
К документу ПКО я прекрепил функцию которая при нажатие на Ок,Записать,Провести
Создает\пополняет файлик тхт.
С этим все верно.
Но есть одно но, нужно чтобы функция срабатывала только тогда когда документ проведен, а не только записан.
Тоесть щас у меня функция создания файла находитсья в процедуре
Процедура ПриЗаписи()
Перем ОписаниеОш;
Если глМожноЗаписатьДокумент(Контекст)=0 Тогда
СтатусВозврата(0);
ИначеЕсли глКонтрольДатыДокумента(Контекст, НачальнаяДатаДокумента)=1 Тогда
СтатусВозврата(0);
Иначе
Если глПриЗаписиДокОснСФКонтр(Контекст, ВидСчетаФактуры, "ЗаписьКнигиПродаж", НачКонтрагент, НачДоговор, НачФирма, ОписаниеОш, НачСумма) = 0 Тогда
Предупреждение(ОписаниеОш, 60);
СтатусВозврата(0);
Иначе
Если глПриЗаписиДокОснСФВал(Контекст, ВидСчетаФактуры, "ЗаписьКнигиПродаж", НачВалюта, НачКурс, ОписаниеОш) = 0 Тогда
Предупреждение(ОписаниеОш, 60);
СтатусВозврата(0);
Иначе
НачВалюта = Валюта;
НачКурс = Курс;
НачКонтрагент = Контрагент;
НачДоговор = Договор;
НачФирма = Фирма;
НачСумма = Сумма;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если КодОперации = глКО.ВозвратПодотчетныхСумм Тогда
Контрагент = """";
Договор = """";
Счет = """";
Субконто1 = """";
Субконто2 = """";
Субконто3 = """";
СчетНУ = """";
СубконтоНУ1 = """";
СубконтоНУ2 = """";
СубконтоНУ3 = """";
ИначеЕсли КодОперации = глКО.Прочее Тогда
Контрагент = """";
Договор = """";
ФизЛицо = """";
АвансовыйОтчет = """";
Иначе
Счет = """";
Субконто1 = """";
Субконто2 = """";
Субконто3 = """";
СчетНУ = """";
СубконтоНУ1 = """";
СубконтоНУ2 = """";
СубконтоНУ3 = """";
ФизЛицо = """";
АвансовыйОтчет = """";
КонецЕсли;
Конст = Константа.Биллинг.Наименование;
Текст = СоздатьОбъект("Текст");
ТекстДок = СоздатьОбъект("Текст");
Список = СоздатьОбъект("СписокЗначений");
/// Создание файла ПКО.txt
Список.ДобавитьЗначение(НомерДок);
Список.ДобавитьЗначение(ДатаДок);
Список.ДобавитьЗначение("Контрагент: "+ДокОснование.Контрагент);
Кол=0; //Количество Наименований номенклатуры в документ Реализацие.
Биллинг="Ложь";
Пока(ДокОснование.ПолучитьСтроку() > 0) Цикл
Сообщить(Конст);
Сообщить(ДокОснование.Номенклатура.Наименование);
Если ДокОснование.Номенклатура.Наименование = Конст Тогда
Биллинг="Истина";
Список.ДобавитьЗначение(ДокОснование.Номенклатура.Наименование);
КонецЕсли;
Кол=Кол+1;
КонецЦикла;
Список.ДобавитьЗначение(ДокОснование.СуммаВзаиморасчетов);
Если (Кол=1) и (Биллинг="Истина") Тогда
Текст.ДобавитьСтроку(Список.ВСтрокуСРазделителями());
Если ФС.СуществуетФайл("C:\ПКО.txt")=1 Тогда
Сообщить("Фаил существует");
ТекстДок.Открыть("C:\ПКО.txt");
ТекстДок.ДобавитьСтроку(Список.ВСтрокуСРазделителями());
ТекстДок.Записать("C:\ПКО.txt");
Иначе
Сообщить("Фаила не существует");
Текст.Записать("C:\ПКО.txt");
КонецЕсли;
КонецЕсли;
Список.УдалитьВсе();// очищаем список
/// Конец Создание файла ПКО.txt
КонецПроцедуры // ПриЗаписи()
Как зделать чтобы файлик перезаписывался только если документ проводиться(тоесть сразу после проводки).
"
К документу ПКО я прекрепил функцию которая при нажатие на Ок,Записать,Провести
Создает\пополняет файлик тхт.
С этим все верно.
Но есть одно но, нужно чтобы функция срабатывала только тогда когда документ проведен, а не только записан.
Тоесть щас у меня функция создания файла находитсья в процедуре
Процедура ПриЗаписи()
Перем ОписаниеОш;
Если глМожноЗаписатьДокумент(Контекст)=0 Тогда
СтатусВозврата(0);
ИначеЕсли глКонтрольДатыДокумента(Контекст, НачальнаяДатаДокумента)=1 Тогда
СтатусВозврата(0);
Иначе
Если глПриЗаписиДокОснСФКонтр(Контекст, ВидСчетаФактуры, "ЗаписьКнигиПродаж", НачКонтрагент, НачДоговор, НачФирма, ОписаниеОш, НачСумма) = 0 Тогда
Предупреждение(ОписаниеОш, 60);
СтатусВозврата(0);
Иначе
Если глПриЗаписиДокОснСФВал(Контекст, ВидСчетаФактуры, "ЗаписьКнигиПродаж", НачВалюта, НачКурс, ОписаниеОш) = 0 Тогда
Предупреждение(ОписаниеОш, 60);
СтатусВозврата(0);
Иначе
НачВалюта = Валюта;
НачКурс = Курс;
НачКонтрагент = Контрагент;
НачДоговор = Договор;
НачФирма = Фирма;
НачСумма = Сумма;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если КодОперации = глКО.ВозвратПодотчетныхСумм Тогда
Контрагент = """";
Договор = """";
Счет = """";
Субконто1 = """";
Субконто2 = """";
Субконто3 = """";
СчетНУ = """";
СубконтоНУ1 = """";
СубконтоНУ2 = """";
СубконтоНУ3 = """";
ИначеЕсли КодОперации = глКО.Прочее Тогда
Контрагент = """";
Договор = """";
ФизЛицо = """";
АвансовыйОтчет = """";
Иначе
Счет = """";
Субконто1 = """";
Субконто2 = """";
Субконто3 = """";
СчетНУ = """";
СубконтоНУ1 = """";
СубконтоНУ2 = """";
СубконтоНУ3 = """";
ФизЛицо = """";
АвансовыйОтчет = """";
КонецЕсли;
Конст = Константа.Биллинг.Наименование;
Текст = СоздатьОбъект("Текст");
ТекстДок = СоздатьОбъект("Текст");
Список = СоздатьОбъект("СписокЗначений");
/// Создание файла ПКО.txt
Список.ДобавитьЗначение(НомерДок);
Список.ДобавитьЗначение(ДатаДок);
Список.ДобавитьЗначение("Контрагент: "+ДокОснование.Контрагент);
Кол=0; //Количество Наименований номенклатуры в документ Реализацие.
Биллинг="Ложь";
Пока(ДокОснование.ПолучитьСтроку() > 0) Цикл
Сообщить(Конст);
Сообщить(ДокОснование.Номенклатура.Наименование);
Если ДокОснование.Номенклатура.Наименование = Конст Тогда
Биллинг="Истина";
Список.ДобавитьЗначение(ДокОснование.Номенклатура.Наименование);
КонецЕсли;
Кол=Кол+1;
КонецЦикла;
Список.ДобавитьЗначение(ДокОснование.СуммаВзаиморасчетов);
Если (Кол=1) и (Биллинг="Истина") Тогда
Текст.ДобавитьСтроку(Список.ВСтрокуСРазделителями());
Если ФС.СуществуетФайл("C:\ПКО.txt")=1 Тогда
Сообщить("Фаил существует");
ТекстДок.Открыть("C:\ПКО.txt");
ТекстДок.ДобавитьСтроку(Список.ВСтрокуСРазделителями());
ТекстДок.Записать("C:\ПКО.txt");
Иначе
Сообщить("Фаила не существует");
Текст.Записать("C:\ПКО.txt");
КонецЕсли;
КонецЕсли;
Список.УдалитьВсе();// очищаем список
/// Конец Создание файла ПКО.txt
КонецПроцедуры // ПриЗаписи()
Как зделать чтобы файлик перезаписывался только если документ проводиться(тоесть сразу после проводки).
"
15.02.2009
17:32
#2
при нажатие на кнопки Провести и Ок... Вылазиет окошко(которое просит указать в какой конец дня ввести), такчто нужно именно чтобы функция срабатывала при нажатие на кнопку Ок в этом окошке выбора времени... а не при нажатие на кнопки провести на главной Форме ПКО
15.02.2009
17:40
#3
Иван Александрович, а вы можете не так много писать? Да и не плохо бы указать конфигурацию и платформу, хотя догадываюсь, что речь идет о 7.7!
15.02.2009
18:01
#4
Да.. не указать конфигурацию в данном случае...
О чем люди думают, когда пишут вопрос?
Но если какая-нибудь 7.7, то в документе есть еще модуль документа с процедурой ОбработкаПроведения(). Попробуйте добавить в нее.
О чем люди думают, когда пишут вопрос?
Но если какая-нибудь 7.7, то в документе есть еще модуль документа с процедурой ОбработкаПроведения(). Попробуйте добавить в нее.
15.02.2009
18:03
#5
Да, Иван Александрович, так много писать не стоило.
Я думаю Вашу "функцию" лучше запускать через процедуру ОбработкаПроведения() с предварительной проверкой проведен документ или нет.
Я думаю Вашу "функцию" лучше запускать через процедуру ОбработкаПроведения() с предварительной проверкой проведен документ или нет.
15.02.2009
18:16
#7
ОбработкаПроведения() - такой процедуры нет в модуле ПКО (7.7)
Я так понимаю ее нужно написать самому...
Какое условие вставить в эту процедуру?
Я так понимаю ее нужно написать самому...
Какое условие вставить в эту процедуру?
15.02.2009
22:46
#8
ОбработкаПроведения(<3нач>) - мне непоможет..
щас читал про нее.. нечего толком непонял..
и вообще немогу понять что вызывает эту процедуру..
она попросту несрабатывает у меня.
может быть это и очень "нубовский" вопрос, но всеже.. я немогу найти хорошей книги по 7.7
Где бы была удобная навигация по книге.
щас же листая к примеру
1С:Предприятие
Версия 7.7
Описание встроенного языка
Часть 1
Я немогу понять полную функциональность этой процедуры.
Понял что Диолог ввода времени вылазит даже при записывание документа без проведения, значит не то что надо.
Неужели некто несталкивался со столь простой(частой) задачей?
Всеголиш нужно чтобы Функция срабатывала после того как документ проведен.
щас читал про нее.. нечего толком непонял..
и вообще немогу понять что вызывает эту процедуру..
она попросту несрабатывает у меня.
может быть это и очень "нубовский" вопрос, но всеже.. я немогу найти хорошей книги по 7.7
Где бы была удобная навигация по книге.
щас же листая к примеру
1С:Предприятие
Версия 7.7
Описание встроенного языка
Часть 1
Я немогу понять полную функциональность этой процедуры.
Понял что Диолог ввода времени вылазит даже при записывание документа без проведения, значит не то что надо.
Неужели некто несталкивался со столь простой(частой) задачей?
Всеголиш нужно чтобы Функция срабатывала после того как документ проведен.
Читают тему
(гостей: 1)