• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Shilin-N

Добрый день.

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

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

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

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


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

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

b00tch

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

Shilin-N

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

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

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

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

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

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

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

Alecs1969

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

Shilin-N

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

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


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

Alecs1969

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

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

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

Shilin-N

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

Alecs1969

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

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

Shilin-N

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

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

Alecs1969

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

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

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

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

Shilin-N

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

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

Alecs1969

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

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

Вот здесь есть неплохой справочный материал по версии 7.7
 
B

BVS

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

Shilin-N

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

kablack

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

Pretorian

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!