Имя: Пароль:
1C
1C 7.7
v7: Слетают итоги регистров при обмене РИБ
0 kasperiks
 
25.03.16
08:58
Здравствуйте, необходима консультация по проблеме итогов регистров.
Используется УРИБ центр+1 точка. Конфигурация ТИС 7.7
Центр Клиент серверный вариант работы
Почка Клиент файловый.

Итоги слетают по регистрам ТОЛЬКО в центе. СУБД центра MSSQL 2005х64 используется в режиме пониженной совместимости 2000(80).

Слетают итоги не при каждом обмене, понять закономерность не могу по какой причине и при каких условиях это происходит.
Обмен может нормально работать неделю и при след обмене итоги слетят, может проработать 3 дня и слетят.
1 Mikeware
 
25.03.16
09:00
что значит "слетают"?
ТА при этой ситуации не перемещается никуда?
2 HawkEye
 
25.03.16
09:03
(0) задним числом что-нибудь проводят...
3 Mikeware
 
25.03.16
09:06
(2) и что?
4 kasperiks
 
25.03.16
09:07
Слетают это разница между
нач ост + приход - расход НЕ РАВНО кон ост.

Сейчас приведу пример отчета

Часто это замечают пользователи при формировании отчета по кассе.

Например:
нач ост в кассе 100000
приходов было на 50000
расходов на 30000

конечный остаток должен быть 120000, но это не так он отличается на неопределенную сумму.

Если формировать отчет в разрезе документов, то на последний документ остатки будут 120000, а итоговые значения отчета неправильные
5 Смотрящий
 
25.03.16
09:12
Итоги криво формируются
6 Mikeware
 
25.03.16
09:12
(4)
1)определи сумму расхождения.
2)найди документ на эту сумму. (как правило, это один документ. реже два. значительно реже несколько)
3) посмотри, что и когда происходило с этим документом (например, проводили во время обмена)
7 Mikeware
 
25.03.16
09:13
Обмен - автомат?
8 kasperiks
 
25.03.16
09:14
6
даже если проводили что с того?
При обмене должна происходить проверка блокировки документа
если документ заблокирован для изменения. то транзакция не фиксируется.
и тогда этот пакет будет загружен следующим обменом
9 kasperiks
 
25.03.16
09:15
7 обмен автомат. период обмена 10 минут
10 Mikeware
 
25.03.16
09:20
(8) не документа, журнала (проверка блокировки документа сыграет только в том случае, если переписывается этот документ).
ну а "с того" то, что если  одновременно пишется док по кассе из обмена, и док по кассе в текущей базе - конкуренция за ресурс (таблицу итогов регистра). Если это так - нужно чесать репу дальше
11 kasperiks
 
25.03.16
09:41
Пользователи в каждой базе делают документы по своей фирме.
Конкуренция не должна происходить так как документы точки и центра будут различаться фирмой.
А фирма это измерение регистра. по логике не должно возникать конкуренции
12 Mikeware
 
25.03.16
09:44
(11) по логике - да.
Но по факту - возникает.
поэтому (6)
13 kasperiks
 
25.03.16
10:33
Проблема заключается в том что документооборот большой и таких документов много.
Примерно 800 документов в день.
300 центр и 500 почка.
Поэтому при обмене при таком количестве документов пересечения будут по любому.

Кто-нибудь встречался с подобной проблемой?
14 kasperiks
 
25.03.16
11:28
ап
15 vcv
 
25.03.16
12:00
Сталкивался. Но проблема у меня возникает достаточно редко, что бы на неё забить. Если что, пересчитываю итоги обработкой с прямыми запросами.
16 Mikeware
 
25.03.16
12:22
(13) 800 документов -не так уж и много .
При 10-синутном обмене у тебя "в среднем" приходит порядка 10 документов. Это слишком мало для "пересечений". поэтому надо смотреть (6).
(15) на сиквеле, старше 2000-го?
/Вроде у меня появлялось после перхода на 2008, но точно не помню..
17 varelchik
 
25.03.16
12:56
У меня частенько было такое.
Как правило правда не в центре, а на ПФ.
Выход нашел простой.
Перехватчиком перехватую модульпроведения.
Проверяю не запущен ли конфигуратор.
Если да, то откат с сообщение для пользователя чтоб повременил.
После таких танцев проблема исчезла.
А так как правило раз или два в месяц в какой нить из 40-ка  перефериек слетали итоги.
Причем как правило после этого выдавало сообщение :
Есть более ранние проведенные документы.
Типа ТА откатывалось назад.
Но документ оставался проведенным (с зеленой галкой).
18 varelchik
 
25.03.16
12:57
После этих танцев уже года 3 проблем не возникало.
19 kasperiks
 
25.03.16
15:39
17 дельное предложение. спасибо проверю)
20 Mikeware
 
25.03.16
16:05
(17) а время засинхрить админов не заставлял? :-)
вкупе с запретом возможности проводить вперед?
на такое  нарывался только когда "проблемы перевода времени" были, и админ косякнул с несколькими машинами...
а еще - проверялка итогов и прямой пересчет по сбойным изменениям - в планировщике на ежедневно стояли.
21 Mikeware
 
25.03.16
16:06
+(20) проверялка итогов валяется на нимфостарте, а пересчет по сбойному набору - у меня не осталось. но там пишется легко из любого имеющегося прямого пересчета...
22 kasperiks
 
26.03.16
05:44
21 обработка с инфостата есть дял пересчета итогов.
время засинхронили. это первое на что грешили
23 kasperiks
 
26.03.16
06:11
21+ Каким образом можно проверить запущенное приложение конфигуратор?
методы конфигурации есть?
или искать наличие фалика блокировки?
24 Это_mike
 
26.03.16
07:12
(23) Файлик, или  admin.dll
25 kasperiks
 
26.03.16
07:27
24 где файл блокировки найти можно и как называется?
26 Mikeware
 
26.03.16
08:29
(25) 1Сv7.lck  в каталоге пользователей и в корне. подробнее расскадывали hogik и МуМу, но это было так давно... ищите, интернет помнит все...
27 kasperiks
 
26.03.16
08:50
(26) Спасибо вам большое)
28 kasperiks
 
26.03.16
09:03
Проверил запуск конфигуратора, файл lck не создаетя в папке пользователя.
А тот что в корне висит если хотя бы один пользователь в базе.
Может еще какой файл есть?
29 Смотрящий
 
26.03.16
09:06
На локальной машине где ПФ запрети чтение средствами винды файла config.dll - конфигуратор никогда не запустится.
30 Смотрящий
 
26.03.16
09:06
А точнее юзеру запрети, а систему разрещи; и стартуй обмен от система
31 aspirator23
 
26.03.16
10:41
Посмотри миграцию последовательностей
32 kasperiks
 
26.03.16
16:14
(30) не понял при чем тут обмен от системной учетной записи. (31) Для чего посмотреть миграцию последовательностей?
33 aspirator23
 
26.03.16
16:31
У тебя она мигрирует?
34 kasperiks
 
26.03.16
19:43
(33) да. база распределенная. центр+1 точка
35 aspirator23
 
26.03.16
21:14
(34) Вот поэтому и спрашивал. Отключи.
36 vcv
 
27.03.16
08:27
(35) Не факт, что поможет. У меня последовательность не мигрирует, но нарушение итогов бывает.
37 Это_mike
 
27.03.16
15:58
(35) керню городишь. Миграция последовательности к итогам никаким боком не относится.
38 kasperiks
 
28.03.16
07:17
Кто может подсказать как именно проверить запущенное приложение конфигуратора?
файлик блокировки 1Сv7.lck создается только при запуске 1с предприятия, но не конфигуратора.
39 Mikeware
 
28.03.16
07:53
(38) файлмрном или процесс эксплорером посмотри. Только именно при запуске пакетного задания на обмен...
40 kasperiks
 
28.03.16
07:59
(39) Мне нужно программным путем определить идет ли обмен или нет.
Вот мне и нужно узнать активен ли конфигуратор.
Ну или определить активен ли пользователь с именем "obmen" это тоже будет сигнализировать работу конфигуратора
41 Mikeware
 
28.03.16
08:23
42 varelchik
 
28.03.16
08:24
Функция Событие_ОбработкаПроведения(Конт,Парам) Экспорт
    Если ПроведениеМОД(Конт)=1 Тогда
        Возврат 0;
    КонецЕсли;
    _КонтФормы=Конт;
    ЕстьТабличнаяЧасть=Метаданные.Документ(Конт.Вид()).РеквизитТабличнойЧасти();
    Если ЕстьТабличнаяЧасть>0 Тогда
        Если Конт.КоличествоСтрок()=0 Тогда
            Сообщить("Не заполнена табличная часть!","!");
            Возврат 0;
        КонецЕсли;
    КонецЕсли;
    стат=СпПосещения.Принадлежит(_КонтФормы.Вид());
    Если стат=1 Тогда
        Возврат _Перехватчик.ВыполнитьОригинальноеСобытиеГК(Конт,"ОбработкаПроведения",Парам);
    КонецЕсли;
    Если Конт.Вид()="УстановкаСкидок" Тогда
        Возврат _Перехватчик.ВыполнитьОригинальноеСобытиеГК(Конт,"ОбработкаПроведения");
    КонецЕсли;
    Если Конт.ДатаДок>ТекущаяДата() Тогда
        Сообщить("Запрещено проводить документы в будующем периоде!","!");
        Возврат 0;
    КонецЕсли;
    Если глДатаЗапрета>=Конт.ДатаДок Тогда
        Сообщить("Запрещено проводить документы ДО : "+Строка(глДатаЗапрета),"!");
        Возврат 0;
    КонецЕсли;
    Если Метаданные.Документ(Конт.Вид()).АвтоудалениеДвижений=0 Тогда
        Конт.ОчиститьДвижения();
    КонецЕсли;
    //Сообщить(Конт.Форма);
    //Если Конт.Вид()="ЗаявкаРемонт" Тогда
    //    Рег=СоздатьОбъект("Регистр.ВзаиморасчетыПокупателей");
    //    Если Рег.ВыбратьДвиженияДокумента(Конт.ТекущийДокумент())=1 Тогда
    //        Конт.ОчиститьДвижения();
    //    КонецЕсли;
    //КонецЕсли;
    Если (Интерактивно=1) и (ТекущаяИБЦентральная()=0) Тогда
        //рФорма=СоздатьОбъект("РасширениеФормы");
        ////рФорма.УстановитьФорму(конт);
        //рФорма.УстановитьФорму(Конт.Форма);
        //Если рФорма.ТипОбъекта()="Документ" Тогда
            // это явно работа пользователя
            лИТЗ=глСервис.ПолучитьСписокАктивныхПользователей(2,);
            Если лИТЗ.КоличествоСтрок()>1 Тогда
                ИТЗ=СоздатьОбъект("ИндексированнаяТаблица");
                ИТЗ.Загрузить(лИТЗ);
                ИТЗ.ДобавитьИндекс("инд","Режим");
                Если ИТЗ.НайтиСтроку("инд",2)>0 Тогда
                    Сообщить("Идет обмен!
                    |Попробуйте позже.");
                    Конт.НеПроводитьДокумент();
                    //Ответ=Вопрос("Идет обмен!
                    //|Повторить попытку?","Да+Нет",50);
                    //Если Ответ="Да" Тогда
                    //    Возврат Событие_ОбработкаПроведения(Конт,Парам);
                    //КонецЕсли;
                    Возврат 0;
                КонецЕсли;
            КонецЕсли;
            //Если Конт.Вид()="Перемещение" Тогда
            //    Текст="Требуется утверждение
            //|бренд менеджера";
            //    Предупреждение(Текст,20);
            //    Конт.НеПроводитьДокумент();
            //    Возврат 0;
            //КонецЕсли;
            Конт.ДатаИзмененияДок = ТекущаяДата();
            Конт.ТипУчета = 1;
            Конт.ФинУчет = 1;
            Если Конт.Проведен()=0 Тогда
                Конт.Автор=глПользователь;
            КонецЕсли;
            РегистрацияДоставки(Конт);
            Если глДокументыСоСтатусами.Принадлежит(Конт.Вид())=1 Тогда
                РаботаСоСтатусами(Конт);
            КонецЕсли;
        //КонецЕсли;
    КонецЕсли;
    Возврат _Перехватчик.ВыполнитьОригинальноеСобытиеГК(Конт,"ОбработкаПроведения",Парам);
КонецФункции  // СобытиеГМ_ПриОбработкаПроведения
43 varelchik
 
28.03.16
08:24
Делов то?
44 Mikeware
 
28.03.16
08:28
(43) глСервис - Это у тебя что? У ТС его нету :-)) иначе б он не спрашивал
45 varelchik
 
28.03.16
08:39
глСервис=СоздатьОбъект("Сервис");
46 kasperiks
 
28.03.16
08:40
(43) Спасибо за предоставленный код.
Я уже нашел внешнюю компоненту Admin1C.dll которая возвращаем мне список активных подключений и режим подключения к БД. вот с ним сейчас и работаю.
Как все сделаю напишу по результатам помогли или нет.
47 Mikeware
 
28.03.16
08:42
(45) "Сервис" - чей? Не формексовский явно :-)
48 varelchik
 
28.03.16
08:48
(47)его самого.
49 varelchik
 
28.03.16
08:49
(46)Зачем?
Для этого есть FormEx.
50 ADirks
 
28.03.16
08:55
(48) хм...  а версия какая?
в 2.0.5.93 такого нет
51 Mikeware
 
28.03.16
08:56
(49) Прикольно. в документации нет... а в реальности есть...
52 Mikeware
 
28.03.16
08:57
(50) 2.0.5.108 - работает
53 ADirks
 
28.03.16
09:19
как интересно
ещё там есть парочка событий  OnDrop и OnURLDrop
интересный метод DecodeToUTF8
может и ещё чего интересного
54 varelchik
 
28.03.16
09:42
(53)Я чесно говоря так глубоко не рыл.
Мне фатило работы с пользователями.
55 Mikeware
 
28.03.16
09:50
(53) Ксатати, у меня OnDrop и OnURLDrop не срабатывают. ЧЯНТД?
56 varelchik
 
28.03.16
10:07
Попробуй
Информатора.
Что он скажет про эти методы.
57 Mikeware
 
28.03.16
10:09
(56) эт чо?
58 Mikeware
 
28.03.16
10:10
что это за меттоды - я и так знаю (на форуме описано). вопрос в том, почему не работают :-)
59 varelchik
 
28.03.16
10:18
(58) Класс Информатор из 1С++.
60 varelchik
 
28.03.16
10:19
Класс "Информатор" / "Informer".

Удобный сервисный класс, показывающий различную информацию.

Версия: релиз 2.5 и выше.

Методы
ПолучитьТаблицуМетодов / GetMethodsTable Получает таблицу методов для переданного объекта.
ПолучитьТаблицуСвойств / GetPropsTable Получает таблицу свойств для переданного объекта.
МетодСуществует / MethodExists Проверяет существование указанного метода у переданного объекта.
СвойствоСуществует / PropExists Проверяет существование указанного свойства у переданного объекта.
ЯвляетсяОбъектом / TheObjectIs Если первым параметром передан объект, проверяет, является ли переданный объект объектом указанного во втором параметре типа или наследует от него. Если первым параметром передана строка с наименованием типа, проверяет, является ли переданный тип указанным во втором параметре типом или наследует от него.
ЯвляетсяФункцией / IsFunction Проверяет, является ли указанный метод функцией.
КоманднаяСтрока / CommandLine Возвращает командную строку запуска 1С-Предприятия.
ПутьПриложения1С / GetAppPath Возвращает путь к исполняемому файлу 1С-Предприятия.
ТипЗначенияСтрВнутр / GetInternalTypeName Возвращает внутренний тип объекта. Например, для класса КОП будет возвращено "CComponentClass".
ПолучитьВремяПростояСистемы / GetIdleTimeOfSystem Возвращает время простоя сеанса работы пользователя в Windows. Используется соответствующие системные функции из WinAPI.
ПолучитьТаблицуЗагруженныхВК / GetAddInDllTable Получает таблицу свойств с информацией по всем загруженным ВК. Порядок следования файлов в таблице совпадает с порядком загрузки ВК.
ПолучитьТекстТекущегоМодуля / GetCurrentModuleText Получает текст текущего модуля, в котором вызван данный метод. Работает как для модулей классов 1С++, так и для любых штатных модулей 1С
ПолучитьТекстМодуля / GetModuleText Получает текст модуля для указанного контекста.
61 Mikeware
 
28.03.16
10:21
(60) спасибо. "о сколько нам открытий чудных..."©
клюшки уже забывать пора, а в них все что-то новое находится... :-)
62 varelchik
 
28.03.16
10:51
(61)Ну до 2032 года пока будет жить.