Имя: Пароль:
1C
Юмор
Вражеский программист в базе
, , ,
0 aptomilov
 
04.09.17
08:37
Уважаемые коллеги
У меня такая вот интересная ситуация
В кафе есть прога учета продаж палтусов
были подозрения на кражи на кассе
и начили зажимить гайки разными способами
сами понимаете ключевая точка контроля это продажи в базе
и через некоторое время эти самы продажи в базе начали пропадать при этом все чеки выдаются

по журналу регистраций я вижу вот такую интересную картинку
http://joxi.ru/xAeQeWHYV5gVAy

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

Есть может у кого мысли как можно еще заставить базу не записывать в справочник и регистр данные?
160 1dvd
 
04.09.17
14:36
(159) >>одна транзакция длится несколько часов

ага, сеть упала на минуту и пипец всем данным за эти часы
161 dezss
 
04.09.17
14:37
ну че, рисуй блок-схему начал и отмен и фиксации транзакций...и ищи в ней путь, который ничем не заканчивается или когда транзакция, которая должна быть зафиксирована, отменяется.

Чую, что такие пути будут...причем такой путь будет не один.

Скорей всего, пользователь выполняет какое-то действие, которое приводит к отмене той транзакции, которая должна была ранее зафиксироваться, но из-за какого-то тупого условия не фиксируется.
162 RS2017
 
04.09.17
14:37
(159) Это ненормально, любая ошибка приведет к откату транзакции.
163 dezss
 
04.09.17
14:38
По-хорошему, время жизни одной транзакции должно исчисляться максимум секундами...и то в исключительных случаях.
164 mistеr
 
04.09.17
14:39
(156) Еще раз читай внимательно.

(159) Ты что-то путаешь. не может быть несколько часов.
165 mistеr
 
04.09.17
14:40
если это не рег. задание.
166 dezss
 
04.09.17
14:42
(164) К сожалению может. Например, внутри транзакции запускается РМК...и все, приплыли к таким вот результатам.
167 RS2017
 
04.09.17
14:43
(164) хорошо, в ЖР будет запись Документ.Проведен. А у ТСа отмена транзакции.
168 aptomilov
 
04.09.17
14:47
щас скину выборку по по журналу по одной транзакции
когда они отаменяются и когда все нормально работает

(166) да ну кто так будет делать что бы рмк загружалось в одно транзакции работало это ваще идиотизм
169 Neo111
 
04.09.17
14:48
(151) Будет - транзакция зафиксирована, объект не найден
170 dezss
 
04.09.17
14:51
(168) а ты уверен, что у тебя так не происходит?
171 Dotoshin
 
04.09.17
14:52
(161) Кроме программной отмены транзакции может быть некорректное завершение программы, например комп выключили на выходя из 1с...
172 dezss
 
04.09.17
14:54
(171) ну да...и это не исключено...
тс-у следовало бы поинтересоваться у пользаков, нет ли проблем с оборудованием, не вырубается ли 1с "внезапно"...
173 Dotoshin
 
04.09.17
14:54
(168) Попробуй виндовые логи еще посмотреть на предмет разрывов соединений и аварийных завершений работы.
174 aptomilov
 
04.09.17
14:56
(173) это все хорошо и это все можно если одна транзакция на смену но так ведь не должно быть это бред
175 dezss
 
04.09.17
14:57
(174) Ну вот и ищи откуда этот бред берется.
176 aptomilov
 
04.09.17
15:01
а можно как то программно запросить какие транзакции сейчас открыты  
есть такое  ?
177 mistеr
 
04.09.17
15:01
(169) Кстати да, нужно бы ТС-у промоделировать в копии, как выглядит в ЖР пробитие чека без вмешательства вражеского программиста.
178 aptomilov
 
04.09.17
15:02
я с ними мало работал  не люблю их
179 aptomilov
 
04.09.17
15:02
(177)  счес скину и так и так
180 Dotoshin
 
04.09.17
15:02
(174) В одной конторе было дело программа "вылетала" ни с того, ни с сего, на ровном месте. Причину нашли случайно - на одном компе была полудохлая сетевая карта, которая за$ирала весь трафик. После ее замены программа стала работать стабильно.
Это я к тому, что исправность оборудования тоже не лишне будет проверить..
181 aptomilov
 
04.09.17
15:03
тут как бы прога локально стоит
182 mistеr
 
04.09.17
15:04
(171) А что, и это вариант. Враги не додумались копировать базу, но додумались выдергивать кабель сразу после печати чека.
183 Dotoshin
 
04.09.17
15:04
+ (180) Кстати можешь смоделировать эту ситуацию. Сделай так чтобы транзакция открылась и чуток повисела, а потом просто выключи комп и посмотри, что получилось.
184 aptomilov
 
04.09.17
15:04
еще прога стоит локално на компе тут хоть завыдергивайся ))
185 aptomilov
 
04.09.17
15:08
v8: Как узнать транзакция в текущий момент есть ?
вот есть такой интересный инструмент надо пробовать
186 aptomilov
 
04.09.17
15:13
а как может быть один и тот же номер транзакции вчера и сегодня ???
это ваще реально ?
188 aptomilov
 
04.09.17
15:27
(187)
а мой чем хуже ?
нафиг так усложняться если результат будет тот же )
189 mistеr
 
04.09.17
15:28
(188) Как минимум весь лог в память не грузит.
190 RS2017
 
04.09.17
15:30
(188) (187) в 1С есть объект ЗаписьТекста
191 romix
 
04.09.17
15:31
(188) Ой сорри сорвалось. Короче надо так лог писать - он пишет ровно одну строчку в файл (не грузит туда-сюда) и лог можно открывать FAR-ом в режиме просмотра.

(190) средства 1С блокируют файл, нельзя FAR-ом посмотреть синхронно. Но или да, можно так (если синхронно не надо его читать).

///////////////////////////////////////////////////////////////////////
Процедура ЗаписьЛога(прм_стр, прм_ИмяФайла) Экспорт
    fso=Новый COMОбъект("Scripting.FileSystemObject");
    Если Не fso.FileExists(прм_ИмяФайла) Тогда
            file=fso.CreateTextFile(прм_ИмяФайла, -1, 0); //создать файл, перезаписывая существующий.
            file.WriteLine(прм_стр);
            file.Close();
    Иначе
            file=fso.OpenTextFile(прм_ИмяФайла, 8, 0); //дополнить файл
            file.WriteLine(прм_стр);
            file.Close();
    КонецЕсли;
КонецПроцедуры
192 RS2017
 
04.09.17
15:33
(191) так закрывай файл после записи каждой строки, будет тоже самое что у тебя только без COMОбъект
193 aptomilov
 
04.09.17
15:50
http://dropmefiles.com/VWXyk
транзакции за 3 и за 4 е кому интересно
там не много не больше 400 строк в каждом дне
194 aptomilov
 
04.09.17
15:50
3 его пол дня просто не как слизало одной транзакцией
195 Heckfy
 
04.09.17
16:13
Конфа жесть конечно о_О
Поиск по "Исключение" выдал 781 результат......

Где то здесь:

Исключение
ОтменитьТранзакцию();

срабатывает исключение.
196 aptomilov
 
04.09.17
16:16
(195)

да кофа ппц
там почти везде в этих местах есть запись в журнал текста ошибки коментов и тп
а нашем случае тих скромно без коментариев )
197 mistеr
 
04.09.17
16:18
(196) Постоянные "Отказ в доступе" это тоже норма для этой конфы?
198 Heckfy
 
04.09.17
16:19
Может пользователю и выдается что нибудть. Например в Сообщить(); Только у пользователя это окошко закрыто и он ничего не видит. Ну или игнорит сообщение..
199 mistеr
 
04.09.17
16:19
А "Изменение конфигурации базы данных" 5 раз - это ты?
200 aptomilov
 
04.09.17
16:22
ну да я ковыряю )
201 Heckfy
 
04.09.17
16:24
А на какой операции отмена транзакции происходит?
202 Heckfy
 
04.09.17
16:31
(123) +1 в части набить табло.

Шедеврально однако.....


    НачатьТранзакцию();
    
    Попытка
        МенеджерЗаписей.Записать();
        
        ЗарегистрироватьЗаказДляПечати(мИдентификатор);

    Исключение
        ОтменитьТранзакцию();
        Предупреждение(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    ЗафиксироватьТранзакцию();
203 sitex
 
naïve
04.09.17
16:36
(202) Там таких шедевров полно дальше. кто то просто феерично помешан на Транзакциях.
204 Woldemar177
 
04.09.17
16:49
(0) Поставь Эвотор, и уволься, все проблемы решатся.

ЗЫ а кто такие палтусы которые продают? Это рыба какая то? Что за кафе?
205 тарам пам пам
 
04.09.17
16:52
(195) ради интереса запустил поиск по "Исключение" по самописке на основе БСП - 2040 найдено, из них 90% в БСП

(202) если это вне обработки проведения или другой неявной транзакции, то оно еще имеет какое-то право на жизнь
206 Dotoshin
 
04.09.17
16:56
(204) >>а кто такие палтусы которые продают?
Это не рыба, это какой-то франь или что-то типа франя в Нижнем тагиле.
207 aptomilov
 
04.09.17
16:59
(202) я тоже видел этот кривой текст.
Проще тупо ее убрать там где так написано что бы исключить ее как проблему.
208 RS2017
 
04.09.17
17:29
а что в (202) такого страшного? Есть два действия, которые необходимо гарантировано выполнить вместе, что и реализовано.

Это явно не причина (0).
209 vi0
 
04.09.17
18:13
бегло посмотрел код конфиги
ужаса не увидел
конфа как конфа
(207) зачем тебе что-то убирать там?
с чего ты решил что транзакции там длятся несколько часов? если мы говорим про транзакции БД, а не про справочник "Транзакции", назначение которого, судя по справке: "В справочнике хранятся данные о продажах до закрытия кассовой смены."

И мой тебе совет удалить базу из скачки. Так как вражеским программистом тут ты очень видишься)
210 Хрыч
 
04.09.17
20:15
(208) читай (38)
В такой конструкции теряется причина отмены записи.
211 Serg_1960
 
05.09.17
10:23
Ещё в начале обсуждения, в (38), я указал возможную причину - возникновение проблемы, неявной для программиста, поддержки платформой "вложенности" транзакций.
Господин ПЖ, в (56),  напомнил, что 1С не поддерживает вложенность транзакция.
Да, это так. Но проблема в том, что 1С допускает(!) существование "вложенных" транзакций и своеобразно их обрабатывает в рамках единой транзакции.

Почему вернулся к теме? Дело в том, что отмена транзакции может произойти по разным причинам. Некоторые из них уже были озвучены...

Но есть ещё одна, не озвученная в этой теме, интересная особенность работы платформы: она автоматически начинает и завершает транзакции в обработчиках объектов или набора записей, например, типа ПередЗаписью. Вот так и возникают те самые преславутые "вложенные" транзакции, скрытые от взгляда невнимательного программиста. При этом фиксация транзакции или её отмена зависит от параметра Отказ. И "Отказ=Истина" может возникнуть, например, в одной из многочисленных подписке на событие.

Автор может долго и  тщательно искать в конфигурации ошибку или место в коде, где отменяется транзакция - а отмена транзакции может быть неявная, внутриплатформенная и не предусмотренная в конфигурации.

Автору уже указывали на битые данные - они могут (теоретически) порождать озвученную в теме проблему.

PS: sorry за много буковок. Что-то, как-то не получается лаконично высказаться :)
212 Господин ПЖ
 
05.09.17
10:28
>Но проблема в том, что 1С допускает(!) существование "вложенных" транзакций и своеобразно их обрабатывает в рамках единой транзакции

своеобразия никакого. тупо счетчик начать/зафиксировать. не сошлось в конце - откат

и неявные транзакции и криво воткнутые попытка/исключение

большой простор для творчества
213 Serg_1960
 
05.09.17
10:38
(212) Тупой, как Вы верно заметили, подсчёт уровней вложенности - это и есть "своеобразие" платформы. Просто я выразился более политкорректно :) А хотелось бы видеть более "умного" поведения платформы. Например, хотя бы иметь доступ к "уровню" транзакции. Но это уже лирика.
214 Господин ПЖ
 
05.09.17
10:40
>Например, хотя бы иметь доступ к "уровню" транзакции.

вы еще хинты захотите в запросах или pivot
215 Господин ПЖ
 
05.09.17
10:41
>подсчёт уровней вложенности

не считаются эти уровни. считается только количество
216 DrShad
 
05.09.17
10:42
интересно, а Палтусову уже табло начистили?
217 DrShad
 
05.09.17
10:45
или хотя бы ссылку на ветку кинули?
218 ildary
 
05.09.17
10:46
(211) я бы такими многобукавными сообщениями тыкал новичков, как в (0) до посинения, чтобы в подкорке выжглось на века, чтобы идея вести себя как Палтусов, вызывала моментальное "Низяяяя" в голове.
219 antgrom
 
05.09.17
10:53
прочел версии
тут говорят что кассиры пробивают чек , а потом заменяют рабочую базу утренней копией. Т.о. по ФР деньги проходят , а в базе 1С данных о продажах нет.
А скажите - зачем кассиру такое делать , если он , кассир , вечером сверяет сумму наличных ( допустим торговали только наличными ) в т.ч. с данными прошедшими по ФР ?
Кассир же обязан сдать денег столько сколько прошло по ФР ?
220 ildary
 
05.09.17
10:56
(219) вспоминается фокус из реальной практики (автор и реализатор идеи присел за воровство) - отбивается два Z-отчета. По одному из них отчитываемся, деньги из второго кладем в карман.
221 antgrom
 
05.09.17
11:00
(220) у каждого Z-отчета свой порядковый номер. Если я не ошибаюсь. Сдавать в бухгалтерию только нечетные номера Z-отчетов - сомнительная хитрость
222 ildary
 
05.09.17
11:09
(221) это был очень маленький ларек (ИП, где работают по принципу "человек-оркестр"), и теперь они смотрят на номер Z отчета.
223 crotnn
 
05.09.17
11:13
(64) У нас так и было :) так жулики повадились полностью менять реквизиты контрагента :) Специфика такова, что 90% продаж полностью идентичны, отличаются только контрагенты, контрагенты - физики. В результате в базе один документ, а реальных продаж по нему 3-4 делали. Спалились случайно и по собственной глупости, когда один из контрагентов пришел к ним за возвратом, а его в базе нет :) Им бы по-тихому из собственного кармана возврат сделать бы, а они к прогам поперлись отношения выяснять :) тут их схему по ЖР и вскрыли :)
224 mehfk
 
05.09.17
11:25
(221) А еще дата и время снятия Z-отчета...
225 ildary
 
05.09.17
11:39
(223) пробегала байка, что по похожей схеме работали продаваны (продавали себе с минимальной наценкой а потом реальным пользователям - по обычной цене, при этом делая вид, что продают от лица конторы), и покупатель, разбираясь с браком позвонил в офис и попал на владельца, который и вскрыл схему.
226 Heckfy
 
05.09.17
14:28
(217) Думаешь есть смысл?!
227 paltusov
 
05.09.17
15:18
Разработчик:

Описанная конфигурация (1) не является тиражной, т.к. в конфигурации "Ресторан" Палтусов нет регистра "Печать заказа" и справочника "Копия транзакций 1", которые видно в журнале регистрации. В Вашем случае взят за основу тиражный продукт, который был кем-то переписан/переделан/доработан и т.д. Соответственно почему Палтусов должен нести ответственность за измененную кем-то программу. Так можно хаять любой открытый для конфигурирования программный продукт Фирмы 1С.
228 paltusov
 
05.09.17
15:26
Heckfy

(123) +1 в части набить табло.

Так набейте если найдете того, кто это написал. В тиражной конфигурации (во всех релизах) нет такой функции ЗарегистрироватьЗаказДляПечати()
229 Господин ПЖ
 
05.09.17
15:26
попался сукин сын прелюбодей якин!
230 Heckfy
 
05.09.17
15:28
В связи с вновь открывшимися обстоятельствами голосую против чистки табла Палтусова :) :) :)
231 Heckfy
 
05.09.17
15:32
А ТС, по ходу, налетел на проставу для г - на Палтусова.
232 Fish
 
05.09.17
15:33
"прога учета продаж палтусов " - Блин. Это разработчик называется Палтусов? А я думал, они там палтусами торгуют :))
233 Господин ПЖ
 
05.09.17
15:38
>А я думал, они там палтусами торгуют

+1

живая рыба, в розницу...

а вон оно как
234 paltusov
 
05.09.17
15:40
Зато реклама ))
235 dezss
 
05.09.17
15:49
ОФФ:
Да тут прямо какая-то санта-барбара начинается...уже и сам Палтусов объявился. Может скоро и Нуралиев в ветку заглянет?
236 Господин ПЖ
 
05.09.17
15:50
(234) с такой рекламой тебе девичью фамилию брать предется
237 screamhome
 
05.09.17
15:56
(232) твой ник больше подходит


(234) ребрейдинг нужен
название сбивает людей с коллеи.
238 ildary
 
05.09.17
16:00
(227) приношу свои извинения, за то, что плохо подумал (и написал) о Вашей организации, для (0) теперь дело чести найти вредителя - дабы закрыть эту грустную историю, где пострадали невинные.
239 Господин ПЖ
 
05.09.17
16:01
>ребрейдинг нужен

+1

предлагаю новое имя "во-блин". оно и рыбное и нет одновременно
240 Господин ПЖ
 
05.09.17
16:01
палтус шредингера
241 screamhome
 
05.09.17
16:06
(238) еще не были представлены доказательства невиновности!!!

Нельзя верить человеку, только потому что его фамилия совпадает с название конфигурации.
242 El_Duke
 
гуру
05.09.17
16:44
(227) Ждем хода со стороны автора темы
Если сейчас он напишет что в тиражном решении все тоже самое, а указанные объекты он добавил в конфу для поиска проблемы - тема чистки заиграет новыми красками
243 Злопчинский
 
05.09.17
23:46
(63) это не схема воровства, а схема бардака на отгрузках. Просто так отгрузить налево - это надо постараться, или при левой отгрузке никто не проверяет ни график от грузовым ароматов, ни довереностей - вообще ничего?
244 Злопчинский
 
05.09.17
23:48
(65) проведенный документ прекрасно печатается на завтрашнюю дату. Всего лишь достаточно указать что дата на печать д.б. "завтра" или датой отгрузки...
245 Злопчинский
 
06.09.17
00:07
Отпуск, каникулы...
Развлекаюсь чтением ветки
246 DrShad
 
06.09.17
09:09
(227) тогда бы выложить исходную конфигурацию, ибо в представленной в теме конфе нет конфигурации поставщика и сравнить не с чем
247 DrShad
 
06.09.17
09:16
+(246) релиз 2.2.3.42 конфигурация Ресторан
248 Serg_1960
 
06.09.17
09:21
Что, она ещё и снята с поддержки? Оригинально. Что же там от палтусов осталось? Одни хвосты и жабры? :)

PS: "учёт продаж палтусов" - пусть на короткое время, но новый мем родился.
249 mehfk
 
06.09.17
09:24
(248) Некоторые поделки от франчей бывают прямо в дистрибутиве без конфигурации поставщика.
250 mehfk
 
06.09.17
09:24
(249)+ И в рекомендациях по обновлению написано: "...загрузить конфигурацию из файла..."
251 vi0
 
06.09.17
09:26
(249) это например какая конфига*
252 mehfk
 
06.09.17
09:31
ЕМНИП, Штрих-М:Кассир или Бармен, где-то 3-4-летней давности.
253 vi0
 
06.09.17
09:33
(252) > "...загрузить конфигурацию из файла..."
диверсанты какие-то
254 mehfk
 
06.09.17
09:40
(253) А вот кусок кода по обновлению из другой франчевской конфы

    ТекстФайлаПоУмолчанию = ТекстФайлаПоУмолчанию + "
        |REM Логин администратора системы
        |set AdminUser=" + ИмяЛогинаАдминистратора + " /WA-
        |
        |" + СтрокаОбъявленияФайлаСообщенийОбОшибках + "
        |
        |rem Создание резервной копии
        |
        |echo (1/4) Делаем резервную копию...
        |start """" /wait %v8exe% CONFIG     %DataBase% %AdminUser% /DumpIB""" + КаталогИБ + "\Backups\" + ПрефиксБаков + "\" + ПрефиксБаков + ".dt"" " + СтрокаДляВыводаДанныхВФайл + " /DisableStartupMessages
        |
        |rem Грузим конфигурацию
        |
        |echo (2/4) Загружаем новую конфигурацию...
        |start """" /wait %v8exe% CONFIG     %DataBase% %AdminUser% /LoadCfg""" + КаталогИБ + "\Temp\1cv8.cf"" /UC""ПакетноеОбновлениеКонфигурацииИБ""    " + СтрокаДляВыводаДанныхВФайл + "
        |
        |rem Обновляем конфигурацию БД
        |
        |echo (3/4) Применяем изменения...
        |start """" /wait %v8exe% CONFIG     %DataBase% %AdminUser% /UpdateDBCfg /UC""ПакетноеОбновлениеКонфигурацииИБ""    " + СтрокаДляВыводаДанныхВФайл + "
        |
        |rem Запуск самой программы
        |
        |echo (4/4) Запускаем программу...
        |start """" %v8exe% ENTERPRISE %DataBase% %User% /C""UpdateComplete""
        |
        |del " + КаталогИБ + "\Temp\Upd1C.bat
        |";
255 Dotoshin
 
06.09.17
09:42
(243) Правильней сказать - это схема порожденная бардаком на отгрузках. Но преодолеть этот бардак нет технической возможности, ибо проверять надо каждый документ, а их несколько тысяч. Чтобы это сделать нужен некий механизм, который сможет сверить бумажную накладную с накладной в базе. Если это делать вручную есть риск срыва отгрузки, ибо это будет очень долго.
256 Злопчинский
 
06.09.17
10:36
(255) тут непонятно как у вас вообще построен процесс подготовки заказов и их отгрузка. Доверенности у водителей не проверяют вообще? Типа водила пришёл - я за заказом 287! Ему - на, забирай! Забрал и исчез?
257 DrShad
 
06.09.17
19:01
Ни автора поделки ни ТС
258 1Садовник
 
07.09.17
08:45
Что-то накопал ТС походу... вот диверсанты и убрали его
259 Dotoshin
 
07.09.17
09:00
(256) Ну как бы для погрузки никакая доверенность не нужна. Пакет отгрузочных документов с подписями и печатями это и есть сама по себе доверенность. Так вот фальшивый комплект тоже имеет все подписи и печати. Там идет сговор диспетчера, который печатает документы и водителя, еще иногда охрана участвует. То есть водила с левым грузом и левыми документами спокойно выезжает за ворота и там уничтожает фальшивые документы. Охрана тоже через некоторое время избавляется от фальшивки. Дальше все шито-крыто следов нет. Следы можно найти только в логах. Но их начинают смотреть только при большой недостаче. Далее увольняют всю смену и меняют охранную фирму. На некоторое время это помогает, потом все начинается по новой.
Эта схема неистребима.