Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 11:50

Консультация по "глюку" серверной 1С

Автор Elfidor, 30 янв 2023, 10:52

0 Пользователей и 1 гость просматривают эту тему.

Elfidor

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

Учетная система
Платформа:   8.3
Версия платформы:   8.3.21.1624
Конфигурация:   ERP 2.5 (причём дописанная)
Версия конфигурации:   2.5.8.303

Так вот обратились как-то с тем, что при отправке документа ТЧ сформировалась не в 1млн, а в 2млн. Казалось бы обычная ошибка расчёта, к примеру из-за коэффициента, но оказалось ничего подобного.
Ситуация какая.
Вот есть функция на клиенте ЗаполнитьСведенияОТоварах там собирается и пересчитывается вся ТЧ чтобы отправить СФ.
Берём за пример кусочек кода:

    Таблица1С_Результат = ПолучитьТаблицу1С(Док1С, ИДЭДО, КопияТаблица1С,
РазделениеПоГТД);


ЕстьСведенияОПрослеживаемости = ЗаполнитьДанныеВТЧОПрослеживаемости(Док1С, СФ_1С,
КопияТаблица1С, ИскатьПрослеживаемость);
                                 

КопироватьДанныеФормы(Таблица1С_Результат, Таблица1С);


Функция ПолучитьТаблицу1С запросом дергает из реализации правильную табличную часть, всё ок. Проскакиваем через F5 прослеживаемость, т.к. её там всё равно нет и идём до КопироватьДанныеФормы(Таблица1С_Результат, Таблица1С)и тут переменная Таблица1С_Результат становится резко не нормальной, а перемноженной на 2 по части количества, а от туда и суммы поплыли.
Я было подумал, что всё таки есть какой-то пересчёт в прослеживаемости и прошёл все функции и процедуры от туда, т.к. думал что что-то полетело внутри но НЕТ! Пересчётов нет просто проверки на Истина/Ложь.
В результате после того как скакал по коду обнаружил следующее.
Если от строки Таблица1С_Результат = ПолучитьТаблицу1С(Док1С, ИДЭДО, КопияТаблица1С,
РазделениеПоГТД);
проскочить код быстро через F5 до КопироватьДанныеФормы(Таблица1С_Результат, Таблица1С); то табличца будет перемноженная на 2, а если построчно проходить каждую строку и в прослеживаемости тоже то таблица будет ок и в конце мы действительно получим 1млн.
Далее, пока пытался понять в чём именно ошибка и как это вообще возможно, ошибка пропала сама собой. То есть далее уже как бы не скакал быстро или построчно результат опять стал постоянно 1млн.
Подумал "ну ладно, баг, хрен с ним пойду сдам работу, т.к. вопрос срочный". Звоню, параллельно в 1С на другом RDP заходит пользователь и пытается отправить документ, я в этот момент у себя его вывожу на печать (функции при отправке и печати отрабатывают одни и те же, расхождения идут уже после сбора файла) и вижу что табличная часть опять умноженная на 2!
Работаю дальше, а потом она уже умножается на 3, а в какой-то момент даже на 5! После через пол часа опять пропадает.
Сложилось впечатление только, что то на сколько табличная часть умножится зависит от того сколько пользователей 1С работает с данным документом одновременно.
Тут же вспомнил, что на обычных формах есть такая штука как блокировка таблиц, не уверен как именно это по нормальному называется, но это та штука, которая блокирует возможность одновременно нескольким пользователям заходить в документ. Однако как это реализовать на управляемых формах пока ещё не выяснил.
И вот пишу сюда, чтобы послушать ваше мнение. Что это было, с чем может быть связанно, почему в конце концов это работает так. Может кто-то из вас сможет подсказать как накинуть на управляйки блокировку и т.д.
Буду признателен за любые подсказки или домыслы, т.к. уверен это у клиента это повторится и рано или поздно придётся это решать начиная с корня проблемы, а не лишь бы отправить документ.
Заранее благодарю за ваши ответы (если таковые будут)!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск