Имя: Пароль:
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) Ну как бы для погрузки никакая доверенность не нужна. Пакет отгрузочных документов с подписями и печатями это и есть сама по себе доверенность. Так вот фальшивый комплект тоже имеет все подписи и печати. Там идет сговор диспетчера, который печатает документы и водителя, еще иногда охрана участвует. То есть водила с левым грузом и левыми документами спокойно выезжает за ворота и там уничтожает фальшивые документы. Охрана тоже через некоторое время избавляется от фальшивки. Дальше все шито-крыто следов нет. Следы можно найти только в логах. Но их начинают смотреть только при большой недостаче. Далее увольняют всю смену и меняют охранную фирму. На некоторое время это помогает, потом все начинается по новой.
Эта схема неистребима.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший