Запись данных о несохраненных документах

  • Автор темы Shilin-N
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Shilin-N

Гость
#1
Добрый день.

1С 7.7 Торговля и склад 934
Для начала ситуация: Продавец договаривается с покупателем, создает новый документ (Реализация), заполняет необходимые поля, выводит на печать, закрывает документ и НЕ сохраняет, выручку кладет в карман (вместо кассы).

Отключить пользователям полномочия на печать непроведенных документов,- отличный вариант. Так и будет сделано. НО сейчас вопрос состоит в том, чтобы поймать за руку нечестных продавцов и вообще узнать кто этим занимается.

Я в 1С не просто несилен, а скорее чайник. Просто на предприятии встал вопрос ребром.

Я думаю, что можно написать процедуру
ПриЗакрытии
если документ новый (не сохранялся) тогда
если пользователь нажал не сохранять, проверяем, распечатали ли его и если да, тогда
сохраняем в журнал (куда угодно) максимум полезной информации о документе (имя пользователя создавшего док. , номер, дату, контрагента, список проданного с ценами, общую сумму).


Пожалуйста, помогите реализовать такую возможность.
Сам сижу с книгами уже второй день напролет. Ну не понимаю я 1С.
Для людей постоянно работающих с 1С это не так уж и сложно.
У меня дальше
"Процедура ПриЗакрытии()

КонецПроцедуры" дело не пошло.
 
B

b00tch

Гость
#2
В процедуре Печать() после Таб.Показать(...) напиши Таб.Сохранить(ИмяФайла)...
только ИмяФайла надо формировать каждый раз разное, чтоб не переписывались...
 
S

Shilin-N

Гость
#3
Ничего подобного не нашел в модуле документа Реализация

попытался вот что сделать:
...
...
// показать сформированную таблицу

Если СразуНаПринтер = 0 Тогда
ПечТабл.Опции(0, 0, 0, 0, "ДляРеализации", "ДляРеализации");

Если глПолучитьПолномочие("РазрешитьРедактированиеТаблиц") = 0 Тогда
ПечТабл.Защита(1);
Иначе
ПечТабл.Защита(0);
КонецЕсли;
ПечТабл.ТолькоПросмотр(1);
ПечТабл.Показать(глНазваниеДокументаВжурнале(Контекст),"");

Иначе
ПечТабл.ПараметрыСтраницы(,,,,,,,,,1,,);
ПечТабл.КоличествоЭкземпляров(КолЭкз);
ПечТабл.Напечатать(0);
ДОБАВИЛ: ПечТабл.Сохранить("C:\123\q1.txt");
КонецЕсли;

КонецПроцедуры // Печать()
....
Ноль реакции ...

И все же, задача отловить момент когда пользователь заполняет новый документ, печатает, и не сохраняет его.
 
A

Alecs1969

Гость
#4
Если так ставить вопрос, то самое правильное решение будет - ведение логов.
Для этого надо в процедуре ПриЗакрытии, прописать процедуру добавления всех данных документа, в конец текстового файла(например реализация.txt).
 
S

Shilin-N

Гость
#5
Если "плясать" от процедуры "ПриЗакрытии", то сталкиваюсь с такими проблемами:
1. Каким образом узнать, что ответил пользователь в ответ на вопрос сохранять ли документ? (Да, Нет, Отмена)???
2. Не нашел метода узнать, документ с которым сейчас
-работает пользователь
-или пытается напечатать
-или пытается не сохранить
новый (т.е. был создан, но еще не сохранялся) или открыт и исправляется...

помогите, сам копаю, но тщетно.


Ведение логов..... а размер лог-файла????
Повторюсь, Необходимы данные лишь тех документов, которые были созданы, заполнены, напечатаны и не сохранены.
 
A

Alecs1969

Гость
#6
Если "плясать" от процедуры "ПриЗакрытии", то сталкиваюсь с такими проблемами:
1. Каким образом узнать, что ответил пользователь в ответ на вопрос сохранять ли документ? (Да, Нет, Отмена)???
2. Не нашел метода узнать, документ с которым сейчас
-работает пользователь
-или пытается напечатать
-или пытается не сохранить
новый (т.е. был создан, но еще не сохранялся) или открыт и исправляется...

помогите, сам копаю, но тщетно.
Зачем все это? Скидываете в лог все подряд. Потом отсортируете легальные документы, и останется то что вы ищите.
 
S

Shilin-N

Гость
#7
прикиньте: 6 касс. работа практически без остановки, т.е. постоянно выписываются документы, продавец даже попу оторвать не может от стула.
И что???? Это все сортировать? Не лучше ли записывать только полезную информацию?
 
A

Alecs1969

Гость
#8
Кстати, можно вести лог распечатанных документов.

прикиньте: 6 касс. работа практически без остановки, т.е. постоянно выписываются документы, продавец даже попу оторвать не может от стула.
И что???? Это все сортировать? Не лучше ли записывать только полезную информацию?
А кто вас заставляет сортировать все в ручную?
Напишите обработку по сравнению данных в документах и логах.
 
S

Shilin-N

Гость
#9
Тогда, вопрос:
в таком логе будет информация помимо номера документа, даты его и прочего, информация о номенклатуре, ценам, суммам? Именно это и важно. Кто облапошил и на сколько.

Если да, то можно сверять этот лог распечаток со списком всех документов (того же типа(реализация)) сохраненных и проведенных.
 
A

Alecs1969

Гость
#10
Тогда, вопрос:
в таком логе будет информация помимо номера документа, даты его и прочего, информация о номенклатуре, ценам, суммам? Именно это и важно. Кто облапошил и на сколько.

Если да, то можно сверять этот лог распечаток со списком всех документов (того же типа(реализация)) сохраненных и проведенных.
Скидывайте в лог все данные которые вам могут понадобится.
Для облегчения обработки используйте такую схему:

Маркер начала документа
данные шапки(те которые нужны, например автор док-та)
номер
автор
и т.д.
Маркер табличной части
данные о товарах
товар1 / цена / кол-во /
товар2 / цена / кол-во /
Маркер конеца документа
 
S

Shilin-N

Гость
#11
тогда для чайника не могли бы хоть в кратце написать код
- сохранения данных документа в файл
- обработку сравнения

ну очень нужно....
в синтакс-помошнике не могу найти методов для работы с текстовыми файлами (создать, пополнить, закрыть)
 
A

Alecs1969

Гость
#12
тогда для чайника не могли бы хоть в кратце написать код
- сохранения данных документа в файл
- обработку сравнения

ну очень нужно....
в синтакс-помошнике не могу найти методов для работы с текстовыми файлами (создать, пополнить, закрыть)
Вот здесь есть неплохой справочный материал по версии 7.7
http://love1c.kiev.ua/download/book1c.htm
 
B

BVS

Гость
#13
Для: Shilin-N
1С сам может вести логи, тебе требуется при печати документа создать лог с информацией о номере документе, сумме операции. Потом просматривая логи ты сможешь найти документы с одинаковыми номерами, сравнивая время создания документа с документом в базе данных (хотя логически правильно будет считать последний документ сохраненным) ты сможешь узнать какой документ "забыли" сохранить и на какую сумму (и какой оператор).
 
S

Shilin-N

Гость
#14
Спасибо всем за помошь. Потихонечку разбираюсь.
 
K

kablack

Гость
#15
Как вариант сделать недоступной кассирам в форме документа кнопку "закрыть",
а на кнопке "ОК" убрать возможноть выбора сохранить-не сохранять
(у нас вот так: ДалиДенег(); Автор = Пользователь; #Записать() Провести? Закрыть) тогда у них после печати чека сразу сам сохраняется и спрашивает провеcти=-не провести.
С месяц назад сделала - пока довольны (тут еще зависит от степени освещенности кассиров...если смеканут что еще можно закрыть эскейпом или просто крестиком..тада не сохранит.но и чек тогда не напечатают, хотя просто накладную смогут)
Но я пока дошла только до этого и..работает:)
а, да и еще. добавила в заполнение таблицы запрет удаления строки - у нас была проблема не только "несохранения доков", но еще просто "удаления части товара из накл с последующим сохранением"..разница - тоже на карман кассиру:)
 
P

Pretorian

Гость
#16
ЗаписьЖурналаРегистрации поможет тебе, см. хелп. У меня так вобще гайки затянуты, пока не проведешь документ, ни какой печати.
 
Статус
Закрыто для дальнейших ответов.