Глюк в 1С 8 с зависанием (кешированием/буферизированием) обработки в памяти (не обновляется код)

Описание глюка с зависанием (кешированием/буфферизированием) обработки/формы в памяти (не обновляется код)

Ключевые слова: баг, глюк, фича, не обновляется код, циклические ссылки

1С:Предприятие 8.2 (8.2.13.219), Win XP, Win Seven
Из-за незнания этого бага я потратил пол дня: чистил кэши, перустановил несколько раз 1С на самый последний релиз, переустановил Windows, и эксерементировал с разными базами, разным обработками пытаясь вычислить в чем причина следующей проблемы: есть внешняя обработка, после ее выполнения закрываю ее, но 1С не закрываю, после этого что то меняем в коде, запускаем ее и пытаюсь выполнить новый код. Но не тут-то было!!! Обработка не видит новый код! Даже в отладчике становяь на нужный код я получаю что если передана например переменная — то ее проверка через "Вычислить выражение" показывает что переменной просто нет. Ощущение что обработка вызывается из виртуальной памяти, а не с диска. Эксперименты выявили что это происходит если в модуле обработки открыть произвольную форму данной обработки, например:
Форма = ПолучитьФорму("ДопФорма");
Форма.Открыть();

И все! Обработка с данным именем зависла в памяти! Если ее переименовать или перезапустить сеанс 1С то все нормально пока этот код не отработает
Если тот же код запустить из формы (пробоавал ту что по умолчанию) то все нормально будет.
Самое интересное однако дальше! Если сократить код в модуле обработке до такого:
ПолучитьФорму("ДопФорма").Открыть();
То все тоже будет нормально. Итак приходим к выводу что виновата переменная "Форма", и действительно стоит ее обнулить, и все опять нормально! Вот так:
Форма = ПолучитьФорму("ДопФорма");
Форма.Открыть();
Форма = "";

Удивительно что в 1С приходится следить за чисткой переменных после работы, даже Бэйсик в этом плане работает лучше. Похожее на это я встречал на 7.7 при использовании внешних компонент, но на это претензий нет, т.к. вроде бесплатно и не от производителя, к тому-же часто авторы говорят что созданные объекты нужно обнулять.

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

Кстати с данной ошибкой я познакомился впервые в продукте "АСДОБ v.1.0.26" от фирмы ООО "Аудит — новые технологии" в одной газовой компании. Пока еще не копался глубоко, но если она не в закрытом модуле то попробую исправить и вышлю разработчикам информацию об этом.

Продолжение от 30.05.2024:

Неожиданно вопрос повторился, на этот раз на грабли наступил более именитый разработчик "1С-Рарус" в своей обработке "Загрузка данных в "Бухгалтерия предприятия редакция 2.0" версий 2.0" — аналогично завели экспортные переменные "ФормаПараметров" и "ФормаСоответстий".

Итог: разработчики обнуляйте переменные с формами хотя бы в обработчике ПриЗакрытии()

Благодаря помощи сообщества, а именно пользователя Lara.Builova установлено что данная проблема описана в разделе ИТС "Методические рекомендации по конфигурированию" (46) из подраздела "Прочие", (50) — "Встроенный язык".

Вот выдержки присланные Lara.Builova:
Методика решения проблемы с открытием старой версии внешней обработки
В процессе разработки конфигураций иногда может возникнуть следующая ситуация.

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

Причина возникновения проблемы
Причина возникновения подобной проблемы заключается в самой обработке. Она возникает в том случае, если разработчик допустил возникновение циклических ссылок.

Рассмотрим ситуацию несколько подробнее. В режиме исполнения (1С:Предприятие) объект обработка существует в памяти в качестве реквизита формы обработки. При закрытии формы обработка прекращает свое существование.

Данная схема нарушается в двух случаях. На саму обработку возникла дополнительная ссылка, либо ссылка возникла на форму, в этом случае закрытие окна формы не означает уничтожение объекта — формы. Соответственно, остается в памяти и обработка.

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

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

Если "обратная связь" между обработкой и формой все же необходима, следует явным образом позаботиться о ее разрыве. Это можно сделать, например, в обработчике закрытия формы.

Методика устранения проблемы
Даже следование всем рекомендациям не может застраховать от возникновения подобной проблемы.

В первую очередь следует проанализировать алгоритм исполнения обработки на предмет циклических ссылок. Иногда источник проблемы не очевиден. Циклы могут носить достаточно сложный характер, да и возникновение проблемы можно заметить не сразу. …

Еще про циклические ссылки с ИТС:

Особенности хранения значений в переменных модулей объектов и форм
В платформе 1С:Предприятие 8 используется стратегия управления временем жизни объектов, основанная на подсчете ссылок на объекты — reference counting. Данная стратегия заключается в следующем. Каждый объект платформы содержит счетчик ссылок. При появлении ссылки на объект (объект присваивается какой-либо переменной) происходит увеличение счетчика на единицу, при уничтожении подобной ссылки — значение счетчика на единицу уменьшается. Объект автоматически уничтожается, и память, занимаемая им, освобождается в момент, когда счетчик ссылок объекта становится равен нулю.

Особенностью подсчета ссылок на объекты является возможность организации "циклической ссылки". Циклическая ссылка возникает, когда объекты начинают ссылаться друг на друга. Это приводит к ситуации, при которой ни один из объектов, участвующих в циклической ссылке, не будет уничтожен. В свою очередь это является причиной возникновения утечек памяти (memory leaks).

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

Полный перечень случаев возникновения циклической ссылки привести невозможно, приведем лишь некоторые примеры:

хранение в переменной модуля объекта (набора записей, формы) ссылки на данный объект (набор записей, форму) — ситуация приводит к появлению циклической ссылки — объект (набор записей, форма) никогда не будет уничтожен;
хранение ссылки на владеемый объект в объекте-владельце и ссылки на объект-владелец во владеемом объекте — оба объекта никогда не будут уничтожены.
Следует обратить внимание, что, помимо переменных модулей, ссылки на объекты могут образовываться при передаче их в методы встроенного языка. Например, добавление в список значений нового значения — этого же списка значений, приведет к появлению циклической ссылки.

Ссылки в тему:
//infostart.ru/public/63392 — Кольцевые ссылки в скриптах 1С 

 

ЧАСТЬ 2.

Продолжения приключений Буратино в Стране Дураков

или зацикливание формы при ее программном переоткрытии

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

Шаг 1. обычно переоткрытие делается в форме обработке, поэтому мы сначала должны закрыть саму форму:

Закрыть();

Шаг 2. после закрытия открываем ту же самую форму той же самой обработки (слава богу обработка хранит в себе полное имя своего файла). Вроде очевидно что нужно делать так как делают сами разработчики 1С. В популярнейшей конфигурации Управление торговлей ред.10.3 самый очевидный пример мы найдем в механизме подключаемых внешних обработок/отчетов: Справочник.ВнешниеОбработки.Форма.ФормаСписка.Форма.Модуль в процедуре СправочникСписокВыбор() видим:

ИмяФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные = ВыбраннаяСтрока.ХранилищеВнешнейОбработки.Получить();
ДвоичныеДанные.Записать(ИмяФайла);
Если ЭтоОбработка Тогда
Форма = ВнешниеОбработки.ПолучитьФорму(ИмяФайла);
Иначе
Форма = ВнешниеОтчеты.ПолучитьФорму(ИмяФайла);
КонецЕсли;
Если Не Форма = Неопределено Тогда
Форма.Открыть(); // ВОТ ОНО! Получение в переменную формы и открытие ее!
Иначе // дальше нас не интересует, но переменная Форма не обнуляется и дальше вы поймете почему

Переработав получаем вот такой компактный вариант:

ВнешниеОбработки.ПолучитьФорму(ИспользуемоеИмяФайла).Открыть();

Вроде соблюли условие чтобы не было переменной во избежание зацикливания и буферизации формы. Однако при проверке результат отрицательный! Вариант то не рабочий! В случае с внешними обработками он подходит т.к. обратите внимание что имя файла генерируется всегда новое при помощи метода ПолучитьИмяВременногоФайла(), что позволяет пренебрегать тем что после заполнения переменной она зависает в памяти (кстати вспоминается упоминание 1С: "происходит потеря памяти"- занятно однако), при повторном использовании мы откроем новый экземпляр и все.

Итак пример 1С-ков не позволяет получить новый экземпляр обработки.

Однако выход тут есть и очень простой — используем 2-й вариант обращения к обработке — сначала создадим ее, а потом уже получим форму (опять таки обойдемся без переменных, хотя это и не критично):

ВнешниеОбработки.Создать(ИспользуемоеИмяФайла).ПолучитьФорму().Открыть();

Проверяем и вуаля! Все работает!

ВЫВОД: забудьте про метод ПолучитьФорму() для внешних обработок/отчетов т.к. создание обработки все равно происходит (хотя ожидаешь что этого и не произойдет — должна же быть разница в работе методов раз они разные!) в чем легко убедится написав любое оповещение в модуле обработки. От него только проблемы и никакого толку (буду рад если кто-то аргументированно поправит меня)

99 Comments

  1. red80

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

    Reply
  2. CaSH_2004

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

    Сильно напомнило о притче http://infostart.ru/public/57360/

    Reply
  3. anig99

    Плюс за решение, но не баг. Баг известен ещё с 8.0 Именно поэтому у меня есть привычка часто менять номер версии обработки в заголовке окна.

    Reply
  4. CaSH_2004

    (3)Восхититеьно! К сожалению я, как и многие, не знал об этом. А это написано в официальном перечне ошибок 1С прилагаемый к платформе? Если нет, то повторения наступления на грабли неизбежны. Если да то удивляет почему разработчики считают что это не нужно исправлять? Так это решение было известно или только баг был известен?

    Reply
  5. anig99

    (4) в официальных багах ошибки этой не видел. Видимо из разряда «видели, знаем почему, исправить не можем». Кроме того, само 1с редко балуется внешними обработками.

    Есть ещё одна ошибка, которую не пишут. Иногда при открытии формы (отчета, справочника, документов и т.д.) она не выводится на экран. В списке окон появляется, на панели окон тоже. Но можно тыкать на название до посинения, но ничего не появится. Пока не нажмешь правой кнопкой на названии окна в панели окон и не выберешь пункт «Восстановить положение».

    Reply
  6. cool.vlad4

    (5) Ну, глюки с формами у 1С периодические. Довольно часто встречался глюк с подбором(в типовой), неправильные внутренние размеры формы по сравнению с внешними (как будто неправильная привязка), также решается с помощью «восстановить положение».

    Reply
  7. Abadonna

    Баг вполне прогнозируемый. Модуль формы работает в адресном пространстве самой формы, форма при закрытии за собой подчищает. Модуль обработки работает в адресном пространстве всего приложения, там недочистили.

    Другой вопрос: если надо просто открыть форму, зачем создавать промежуточную переменную? Для красоты?

    ПолучитьФорму(«ФормаБлаБла»).Открыть() — никакого подвисания не вызовет.

    Тут больше баг «чистых одноэснегов», вообще плохо представляющих как работает память.

    Если просто открываем форму, то имеем при раскладе, описанном у автора:

    Форма=ПолучитьФорму(«ФормаБлаБла»); // получили беспонтновый указатель, который и будем хранить неизвестно зачем (и, как выяснилось, неизвестно сколько)

    Если он нам еще может понадобиться — куда ни шло, а если только для Форма.Открыть() — просто расточительное программирование.

    _______________________________

    В сухом остатке:

    За то, что автор разобрался в чем дело — плюс.

    За что что ему вообще пришло в голову использовать конструкцию

    Форма=ПолучитьФорму(); Форма.Открыть() — минус.

    Итого: нейтралитет 😉

    Reply
  8. hogik

    (7)

    Аркадий.

    А «Форма», случайно, не является ключевым словом? А если объявить эту переменную явно в модуле обработки — глюк остаётся?

    Reply
  9. Abadonna

    (8) Остается, потому что это почти «глобальный» модуль.

    Получили (и запомнили )указатель в системе, после закрытия обработки указатель не подчистился (это уж разработчиков косяк), так и завис

    В явном виде Форма=»»; чистит этот указатель после Форма.Открыть(), ссылок не остается, и все ОК.

    Reply
  10. hogik

    (9)

    Чистит при Форма=»» — понятно. Но если её объявить явно — что будет? Или в модуле обработки написать и вызывать функцию, а в ней уже делать вызов ПолучитьФорму() — должно, вроде, зачистить при завершении функции. Или — нет?

    Reply
  11. Abadonna

    (10)

    Но если её объявить явно — что будет?

    Вова, я ж, как-никак, НС бывший, любопытный 😀

    Проверил: ОСТАЁТСЯ

    Да! А в процедуре локальную — надо попробовать

    Reply
  12. hogik

    (11)

    «НС бывший» — и это чувствуется. Типа, сам уже проверил, и никому не скажу… 🙂

    Проверяй дальше. Жду результат… 😉

    Reply
  13. Abadonna

    +(11) Для особых извращенцев 😀

    Процедура ОткрытьМоюФорму()

    Перем Форма; // эта переменная локальная внутри процедуры

    Форма=ПолучитьФорму(«Форма1»);

    Форма.Открыть();

    КонецПроцедуры


    Reply
  14. hogik

    (13)

    Сам ты извращенец после таких слов: «это почти «глобальный» модуль». 😉

    Спасибо НС-у от СНС-а за проведенное научное исследование… 🙂

    Reply
  15. Abadonna

    (14)

    от СНС-а

    СНС, ваще-то я завлабом был 😀

    Reply
  16. hogik

    (15)

    Ну, вот, опять. Все МЫ — были… Забудь…

    Reply
  17. alexk-is

    Вот ещё ситуация, которая не подчищается во внешних отчетах и обработках.

    Reply
  18. anig99

    Дааааа… Кстати. Чуть не забыл. Чистить переменную форма можно только если она задана явно… А если форма открывается как основная, то помогают только спец маркеры на форме. Например, регулярно меняемые номер версии в заголовке окна.

    Reply
  19. i132

    по моему это где-то описывалась на ИТС — про кэширование объектов

    Reply
  20. PowerBoy

    Люди вы что никогда не слышали термина «Циклическая ссылка»!!! Это азы!!! Описано и в документации и на ИТС еще с 8.0.

    Reply
  21. Abadonna

    (20) Как бы они ее там не называли, нормальная прога (обработка) обязана за собой всё почистить в секции Finalization- вот это АЗЫ

    Reply
  22. PowerBoy

    (21) В Экселе сделай циклическую формулу — и объяви что баг нашел. 🙂

    Reply
  23. cool.vlad4

    (20) Ну, глюк из 6 это никакая не «Циклическая ссылка». Замечено при изменении размера окна (обычно, когда пользователь работал совместно другим окном — например icq).

    Reply
  24. Abadonna

    (23)Я-то как раз и не объявлял, что баг нашел. Мало того, четко написал, что он прогнозируемый.

    Но: покажи-ка на пальцах чего тут циклического? Обе формы закрылись, ничего не ругнулось.

    В каком адресном пространстве заторчала эта ссылка? Почему после закрытия всех форм обработки она не самоликвидировалась?

    А ДОЛЖНА была

    /13/ читал?

    Reply
  25. artbear

    А (0) случайно, не объявлена в начале модуля обработки, т.е. время ее жизни не равно ли времени работы обработки?

    Тогда это точно циклическая ссылка.

    (13) косвенно подтверждает это предположение.

    Reply
  26. PowerBoy

    (24)

    1.Сам вызов формы из модуля объекта я считаю ошибкой.

    2.1с не может удалить объект, если у него есть ссылка на подчиненные себе объекты, конкретно как это реализуется у 1С надо смотреть ИТС.

    Reply
  27. Abadonna

    (25)

    случайно, не объявлена в начале модуля обработки

    Когда я проверял, они у меня и случайно не была объявлена, и специально потом объявлял. Без разницы — висняк. Время жизни — до перевключения 1С.

    Внутри процедуры — благополучно дохнет, как и должна

    Reply
  28. PowerBoy

    (26) + То бишь «родитель» формы является тем же объектом, кому принадлежит модуль объекта. 🙂

    Reply
  29. Abadonna
    1.Сам вызов формы из модуля объекта я считаю ошибкой.

    2.1с не может удалить объект, если у него есть ссылка на подчиненные себе объекты, конкретно как это реализуется у 1С надо смотреть ИТС.

    Еще раз повторю: всякая уважающая себя прога (обработка) ОБЯЗАНА чистить за собой. Если не чистит — баг

    Reply
  30. PowerBoy

    (28) Если баг описан в документации, то это фича. 🙂

    Reply
  31. Abadonna

    (29) Значит, 13 ты все-таки не прочел.

    Там те же условия:

    «родитель» формы является тем же объектом

    но с маленькой разницей — жизнь переменной только внутри процедуры. И НЕ ВИСНЕТ

    А так: все та же «циклическая»

    Reply
  32. CaSH_2004

    (7)Abadonna пишет: если надо просто открыть форму, зачем создавать промежуточную переменную? Для красоты?

    Странный ты спец! Я же ясно написал что это пример, ситуация была такая что это потребовалось, если любопытно то я делал для своей обработки аналог из типовых ЗУП ред.2.5 и КА ред.последняя «Обработка.СообщенияВыполняемыхДействий».

    Abadonna пишет: ПолучитьФорму(«ФормаБлаБла»).Открыть() — никакого подвисания не вызовет.

    Именно это я и расписал в статье

    Abadonna пишет: Тут больше баг «чистых одноэснегов», вообще плохо представляющих как работает память.

    Если так подходить то можно требовать от любого водителя знания как чинить мотрор машины и знание всех принципов машиностроения, а так я могу сказать что лучше езжу на машение чем авто-слесарь, так же как он лучше меня чинит ее. Это разделение обязанностей. 1С для того и придумали чтобы могли пользоваться люди которые не собираются кодить в 0-м цикле распределяя память и чистя все за собой:)

    Abadonna пишет: Форма=ПолучитьФорму(«ФормаБлаБла»); // получили беспонтновый указатель, который и будем хранить неизвестно зачем (и, как выяснилось, неизвестно сколько)

    Если он нам еще может понадобиться — куда ни шло, а если только для Форма.Открыть() — просто расточительное программирование.

    Спасибо что тут признал что ВОЗМОЖНО это мне нужно, а не просто фигней страдаю:)

    Reply
  33. Abadonna

    (32)

    Именно это я и расписал в статье

    Я и не утверждал, что ты это НЕ писал.

    А вот действительно ли

    это мне нужно

    — откуда я знаю?

    Может действительно «фигней страдаешь»?

    А то я не знаю как копипастят «классический код»!

    А его студентики корябали 😉

    Вообще-то я не конкретно про тебя писал

    «чистых одноэснегов»

    _______________

    то можно требовать от любого водителя знания как чинить мотрор машины

    Вот когда ездили те, кто знал, как чинить мотор, можно было еще ездить. А сейчас на дорогах одни лодочники итальянские

    😀 Вот как раз сейчас из окна смотрю: как же можно было умудриться на регулируемом пешеходном переходе столкнуться под углом 90 градусов?

    Всё, пробочка гарантирована

    Reply
  34. AndrewEv

    Вот я, например, всегда все переменные небазового типа закрываю:

    ValList = UnDefined;

    Что по-русски

    СпЗнач = НеОпределено;

    Это мне не позволило познакомится с багом…

    Reply
  35. Lara.Builova

    А я просто не выбираю имена переменных из списка зарезервированных системой.

    Reply
  36. Abadonna

    (35)

    А я просто не выбираю имена переменных из списка зарезервированных системой.

    Пришла Лора и сразу все проблемы решила.

    Дело-то, оказывается, в имени переменной, а вовсе не в том, что тут все дурачки написали.

    Для справки особо одаренным: когда я тестил, эта переменная у меня называлась «Ф».

    Это тоже зарезервировано?

    Надо написать в 1С, а то что они, дурачки, не следуют твоим рекомендациям?:

    Форма (Form)

    Открыть (Open)

    Синтаксис:

    Открыть()

    Описание:

    Открывает форму и делает ее окно активным.

    Доступность:

    Толстый клиент.

    Пример:

    Форма = Справочники.Номенклатура.ПолучитьФормуСписка();

    Форма.Открыть();

    Показать

    Reply
  37. iov

    (34) Жил да был идеальный программист и написал он идеальный код. Но прошло время и надо было изменить идеальный код и пригласили программиста (хороший мальчик — знакомый студент) и сказал он что программист — плохой и переписал код — но глючил его код и мальчик переписал глобальный модуль, но и тогда не заработал код. И позвали они друго-го программиста и то дописал код и написал еще немного…. и длилось так годами и заработали программисты денег и ругали они предыдущих. Смысл в том что вокруг рыночные отношения и код писать грамотно-не всегда выгодно — порой быстренько на коленке выгодней… Я за хороший код но как вы объясните заказчику что ваш код круче но дороже потому что он гипотетически не содержит ошибок?

    (33) И про машинки верно — вот не стукнись они не заработают люди денег а если все будут по правилам ездить? На чем производителям зарабатывать? У кого нефть отнимать чтоб ездить? Есть мнение что вечные вещи — убьют мир. Так вот 1С с её глюками и недоделками — прям свеча зажигания экономики — прогеры не так мало зарабатывают жеж.

    (0) Ну вот теперь более мощный сервер тебе не светит — 1С же не виснет 😉

    Reply
  38. iov

    (0) P.S. Всем спасибо — глюк смачный — вон как его обмусолили и облизали тарелку… Ищи еще… >громко стуча ложкой по столу<

    Reply
  39. Lara.Builova

    (36) не знаю, откуда ты это берешь, в СП примеры такие:

    Товары = Справочники.Номенклатура;
    ФормаСписка= Товары.ПолучитьФорму(«ФормаСписка»);
    Если Не ФормаСписка.Открыта() Тогда
    ФормаСписка.Открыть();
    КонецЕсли;
    

    ИЛИ

    Клиенты = Справочники.Контрагенты;
    НовыйКлиент= Клиенты.СоздатьЭлемент();
    НовыйКлиент.ПолучитьФорму().Открыть(); 

    И получить форму списка:

    Товары = Справочники.Номенклатура;
    ФормаСписка= Товары.ПолучитьФормуСписка();
    Если Не ФормаСписка.Открыта() Тогда
    ФормаСписка.Открыть();
    КонецЕсли;
    

    Ни в одном примере не встретилось объявление переменной «Форма». Может плохо искала.

    Reply
  40. Abadonna

    (39) На! Смотри! Если это не СП, то я — папа Римский.

    Движок 8.2.13.202. Не супер свежак, но все-таки…

    Reply
  41. Abadonna

    И еще смотри:

    Может в твоем СП переменная вообще «шаршы пішін» названа?

    А для полного тебе счастья (ты ж любишь, когда все стандартно-одноэсовски) — второй рисунок, поиск по типовой УТ

    Reply
  42. Abadonna

    (37)

    как вы объясните заказчику что ваш код круче

    Совсем недавно:

    — В такой-то накладной неверно посчитан НДС!

    -?

    Смотрим: точно, блин, не тот, что должен быть.

    Оказалось: франь, который работал до нас, приделал кнопку «Убрать автоматические скидки»

    Скидки обнуляются, потом стоит:

    ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(…)

    А про то, что надо бы еще:

    ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(…) он «забыл»

    Полтора года (!!!) они так работали, пока какой-то покупатель их носом не ткнул.

    Благо эту кнопку не так часто нажимали, однако за 8 месяцев документов 80 набралось.

    Reply
  43. CaSH_2004
    Lara.Builova пишет:

    А я просто не выбираю имена переменных из списка зарезервированных системой.

    Да что же вы все так вцепились в то что я написал как ПРИМЕР!!! В рабочей ситуации все работает совсем по другому, совсем другие условия, другие переменные, только смысл тот-же.

    Reply
  44. CaSH_2004

    (33)Удивительно! Почему же если не знаеш надо сразу худшее предпологать, и при этом об этом тут-же объявлять вслух?

    Reply
  45. Abadonna

    (44)

    Удивительно, что ты именно на меня имеешь какие-то обиды. На того, кто последовательно как раз и защищает мысль, что это баг 1С

    В отличие от:

    Люди вы что никогда не слышали термина «Циклическая ссылка»!!! Это азы!!!
    А (0) случайно, не объявлена в начале модуля обработки, т.е. время ее жизни не равно ли времени работы обработки?

    А я просто не выбираю имена

    На первые два лично я как раз бы жестоко оскорбился.

    Воистину: ни одно доброе дело не останется безнаказанным! 😀

    Reply
  46. Lara.Builova
    Reply
  47. CaSH_2004

    (45) Ну у тебя на мой взгляд получилось жестче. Хотя я не в обиде, просто странно что это тут все так друг другу тычат носом кто чего не знает. Вроде сайт предназначен чтобы узнавать новое с минимумом усилий. А получается тыкалово. Как-то неприятно. Естественно не все все знают, но можно же промолчать или посоветовать куда рыть. Нет же — все начинают вопить, да ты ниче не знаеш, да это азы, ты страдаеш фигней! Это как-то унижает знате-ли. Когда вы у прохожего спрашиваете как кудато пройти — такого вы не услышите, а представььте себе аналагичный ответ, какая будет ваша реакция — возможно вы даже физически ответите, а не только устно.

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

    Ладно это все лирика, размышления вслух.

    (46) Действительно, повидимому все есть. Виноват, не читалю ИТС, хотя и есть они, код действительно содержит ситуацию описанную в ИТС, и повидимому попадает под понятие «возникновение циклических ссылок», я отмечу это в посте чтобы другим таким же «гениям» как я было легче найти проблему.

    Есть же такие трудолюбивые спецы которые читают все что написано на ИТС, и помнят и понимают все что там написано! Завидую вам от души

    Reply
  48. Abadonna

    (0) Во! А ты на меня обижаешься. 😀

    В /13/ код проанализирован, показано, что именно такой код, но со временем жизни переменной в пределах процедуры никаких проблем не вызывает.

    А они тебе так и будут талдычить про «проанализировать».

    Reply
  49. CaSH_2004

    Кстати не тольько я не знаю про «цикличексие ссылки», я нескольких знакомых перед этим опросил — все тоже без понятия были, а читать горы ИТС и другой документации не зная даже какие слова ключевые — бесполезное дело как показывает практика, ну в 20% получалось остальное быстрее самому вычислить.

    (48) Да я без обид конкретно на тебя, т.к. ты не один такой, вы все тут как с одной сковородки слезли 🙂 ошпаренные какие-то

    Reply
  50. Lara.Builova

    (47) Еще про циклические ссылки с ИТС:

    Особенности хранения значений в переменных модулей объектов и форм

    В платформе 1С:Предприятие 8 используется стратегия управления временем жизни объектов, основанная на подсчете ссылок на объекты — reference counting. Данная стратегия заключается в следующем. Каждый объект платформы содержит счетчик ссылок. При появлении ссылки на объект (объект присваивается какой-либо переменной) происходит увеличение счетчика на единицу, при уничтожении подобной ссылки — значение счетчика на единицу уменьшается. Объект автоматически уничтожается, и память, занимаемая им, освобождается в момент, когда счетчик ссылок объекта становится равен нулю.

    Особенностью подсчета ссылок на объекты является возможность организации «циклической ссылки». Циклическая ссылка возникает, когда объекты начинают ссылаться друг на друга. Это приводит к ситуации, при которой ни один из объектов, участвующих в циклической ссылке, не будет уничтожен. В свою очередь это является причиной возникновения утечек памяти (memory leaks).

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

    Полный перечень случаев возникновения циклической ссылки привести невозможно, приведем лишь некоторые примеры:

    хранение в переменной модуля объекта (набора записей, формы) ссылки на данный объект (набор записей, форму) — ситуация приводит к появлению циклической ссылки — объект (набор записей, форма) никогда не будет уничтожен;

    хранение ссылки на владеемый объект в объекте-владельце и ссылки на объект-владелец во владеемом объекте — оба объекта никогда не будут уничтожены.

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

    Показать

    Если циклические ссылки не случайны, а необходимы по замыслу разработчика, то переменные нужно очищать, но при этом

    необходимо определить момент для ее разрыва, чтобы объекты могли быть уничтожены нормальным образом
    Reply
  51. Abadonna

    (47)

    Есть же такие трудолюбивые спецы которые читают все что написано на ИТС, и помнят и понимают все что там написано! Завидую вам от души

    Да, офигеть! Они и ЖКК, наверное, читают 😀

    Знавал я одного такого читальца — выгнали за профнепригодность.

    Reply
  52. CaSH_2004

    (50)Дайте хотя бы ссылку где об этом почитать? На каком ИТС в каком разделе и какая статья, я хоть в статье это укажу, всем полезно будет

    Reply
  53. anig99

    (46) а ведь эту статью с ИТС здесь уже на форуме выкладывали. Только сейчас и вспомнил.

    Reply
  54. anig99

    (51) на ИТС тоже полезное иногда печатают (:

    Reply
  55. CaSH_2004

    (51)Несмотря на правду это слишком саркастично. Стиль знакомый.

    Думаю стоит иметь ввиду мировую практику, а именно: бывают голые теоретики и есть практики. Это как и любой перегиб ведет к проблемам, но если использовать таланты людей правильно то результат неплохой. Сходу не приведу примеры т.к. не компьютер, но есть же много открытий которые сделаны теоретиками но внедрены практиками, так что каждая работа важна, а чем заниматься самому — на то и дана жизнь, чтобы разобраться как получить от нее кайф! Прыгать как ямакаси по домам с риском для шеи или изучать космос. На мой взглаяд это дело каждого — лишбы была хоть какая-то отдача, а не просто паразитическое существование.

    Reply
  56. Abadonna

    😀 вот вам, плиз. Типовая УТ, модуль ОБЪЕКТА Отчет.РапортРуководителю

    // Процедура расшифровки показателя «Количество неисполненных заказов покупателей»

    //

    Процедура Заказы_НеисполненныеЗаказыПокупателейРасшифровка(Параметры)

    Расшифровка = Параметры[«Расшифровка»];

    …………………..

    Форма = ОтчетРасшифровка.ПолучитьФорму();

    Форма.ОбновитьОтчет();

    Форма.Открыть();

    КонецПроцедуры // Заказы_НеисполненныеЗаказыПокупателейРасшифровка()

    Правда, как и в /13/, внутри процедуры.

    Что как раз и подтверждает то, что я (в жизни не читавший никаких ИТС-ов) изложил:

    Вывод: не надо баловаться с переменными в теле модуля, они могут и не подчиститься, а вот внутри процедур модуля — сколько угодно.
    Reply
  57. CaSH_2004

    (56)Вот упертый, да не баловался я, мне как раз нужно было чтобы переменная «Форма» жила все время жизни обработки, а не во время отработки процедуры. Оказалось что нужно явно убивать такую переменную — все КОНЕЦ ВОПРОСА! Спасибо всем за внимание и понимание.

    Reply
  58. Lara.Builova

    (52) Раздел ИТС «Методические рекомендации по конфигурированию» (46) из подраздела «Прочие», (50) — «Встроенный язык». Названия статей выделены жирным в цитатах.

    Reply
  59. Abadonna

    (57)Это ты упертый!!!!!!!!!!!!!!!! Или у тебя мания величия — всё на себя примеряешь?

    Вообще не о тебе конкретно разговор идет

    Reply
  60. iov

    (42) истории из жизни — это хорошо… но ведь врать тоже их расказывал прежде чем хрень написать — и денег он срубил — и ты потом срубил… А напиши он правильно тыб и не заработал- верно?

    Reply
  61. Abadonna

    (60)

    и денег он срубил — и ты потом срубил.

    Хм… Да я ж всегда и утверждал, что все МЫ (одноэснеги) — беспонтовая хрень, существующая благодаря идиотской политике государства.

    Ничего не производим, плодим баги, исправляем свои и чужие и т.д…

    От нас, бухов и налоговиков обществу пользы ноль. Зато все при деле и при бабках 😉

    Reply
  62. iov

    (61) как в принципе от множества других профессий (типа Ахранников и кучи пилиционеров ) мы хоть что-то производим (баги тоже продукт — полуфабрикат)

    Reply
  63. iov

    (61) Предлагаю собраться где нить с чашкой пива и посыпать голову пеплом и покаяться 🙂

    Reply
  64. Spartan

    (56) В статье написано «нельзя помещать в реквизит обработки или нелокальную переменную ее модуля», «хранение в переменной модуля объекта». В твоем примере переменная — локальная, время жизни — процедура.

    Но баг неочевидный, согласен — я тож ИТС не читаю… 😀

    Reply
  65. LeaNaeD

    Парни, там все сложнее с этим багом, не в форме дело. Точнее не только в форме.

    В общем сейчас невольно воспроизвел этот баг.

    Беру стандартный отчет «Продажи» из конфигурации (УТ 10.3, платформа 8.2.14.519), сохраняю как внешний отчет, открываю его в конфигураторе, делаю маленькую приписку — новый показатель, рассчитывающийся по некоей формуле с использованием переменной в запросе. Ну и, как полагается, косячу (куда уж без этого)- устанавливаю построителю отчета значение переменной уже после того, как отчет, собственно формируется и выводится в форму отчета. Запускаю предприятие, проверяю отчет — бабах выскакивает ошибка. Екарный бабай, надо же было такую ошибку сделать. Перехожу в конфигуратор (он все еще открыт в соседнем окне, обработка тоже не закрыта, в предприятии ни на какие кнопки в окне с ошибкой отчета не нажимал — пусть висит, не мешает же). Исправляю ошибку, сохраняю отчет. Понятное дело, без перезапуска запускается все та же старая косячная версия. Перезапускаю предприятие. Чу! Все та же ошибка выскакивает! Ладно, выхожу из предприятия, выхожу из конфигуратора, снова захожу в конфигуратор и предприятие. И опять та же самая ошибка!

    Теперь внимание, самое главное — открываю мой отчет в конфигураторе и вуаля! В этом отчете ОТСУТСТВУЮТ последние изменения, связанные с исправлением косяка в коде! Снова правлю отчет, сохраняю, опять выхожу из предприятия и захожу снова, запускаю отчет — работает!

    А вы говорите — формы, формы. Тут какой-то комплексный косяк платформы.

    Вчера было еще хлеще, мудрил несколько часов с отчетом (тоже работающим от универсального), так когда сохранял, сначала файл отчета был со всеми доработками, все работало качественно, потом тыркнул на расшифровку отчета, естесственно вывалилась ошибка, после этого я что-то там разбирал и пересохранил отчет => в файле после этого был код, словно я вообще не приступал к работе!

    Ужос, товарищи. На 13 версии платформы достаточно редко встречалось примерное такое (по крайней мере, у меня), и то это было связано с отладкой — тоже какой-то древний баг, когда в режиме отладки версия отчета или обработки не совпадает с версией, сохраненной в файл в конфигураторе. Но чтобы постоянно, да еще и файл сохранялся неведомо какой (не иначе, из кеша в файл, а не из открытой в конфигураторе внешней обработкой/отчетом), такого не припомню. Перехимичили с увеличением производительности в 8.2, не иначе.

    Извиняюсь за стиль написания, уставший малость. Последние комментарии не читал, извиняюсь также если кто-то подобное уже описал ранее.

    Reply
  66. cool.vlad4
    не иначе, из кеша в файл, а не из открытой в конфигураторе внешней обработкой/отчетом

    Сообственно вы описали всем известный, даже не знаю, баг ли? Формы сабжа , точно здесь не причем. Вы базу по сети гоняете? Если да, то не рекомендую работать в режиме конфигуратора по сети, — либо напрямую, либо через терминал(но не сервере 1С предприятия, где все работают). …ну и чистить каталоги…

    Reply
  67. LeaNaeD

    (66)

    Абсолютно все пользователи работают в терминале. Временные файлы юзверей на отдельном логическом диске, судя по объему чистятся каждую ночь.

    Было бы ни при чем, если бы проблема (точнее, комбинация описанной в теме проблемы с описанной мной) не начала повторяться с таким упорством как раз после перехода на указанную выше версию платформы. Режим совместимости с 8.1 на 8.2 меняли еще на 13 релизе, насколько я помню. До этого года 1,5-2 на платформе 8.1 все работало отлично, уж таких выкрутасов не замечал.

    Reply
  68. CaSH_2004

    (67)Поддерживаю насчет возникновения глюков при переходе к 8.2, у меня они начались при переходе на 8.2 в принципе — вываливалась с ошибкой дампа 1С при сохранении неправильного кода, т.е. если есть ошибка кода и нажимаеш «записать», проверяется синтаксис, если есть ошибки предлагается их исправить, если жмеш «нет» то нормально работаем дальше, если «да» — то спокойно возникает ошибка с записью в дамп — и досвидания — вся работа потеряна. Причем это не в 100% случаях а где то в 70%, в остальных все нормально было, при этм 8.1 работало прекрасн. со временем менялись релизы платформы, и вроде поутихла проблема, зато иногда начала 8.1 так же себя вести, правда редко 8-10% при записи или работе. Складывалось впечатление что 8-ка становится глюком как Винда, ложится на ура, и очень нестабильна. Счас слава-богу вот уже полгода как стабильна на 90%. Но скажем 1С 7.7 стабильна на железно на 95%, для меня. Хотя если с компонентами играться то всякое получалось. А 8.1 до 8.2 работала как часики, очень доволен был последними релизами.

    А насчет работы без терминалки 🙂 кто-то тут где-то на полном серьезе советовал не сохранять (динамично) изменения при работе в базе других пользователей, типа конфа может не обновиться у тех. На мой взгляд — это то же самое что не выходить на улицу, а вдруг машина переедет!

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

    Reply
  69. tango
  70. CaSH_2004

    Кстати с данной ошибкой я впервые познакомился недавно в продукте «АСДОБ v.1.0.26» от фирмы ООО «Аудит — новые технологии» в одной газовой компании. Пока еще не копался глубоко, но если она не в закрытом модуле то попробую исправить и вышлю разработчикам информацию об этом.

    Reply
  71. Yashazz

    (65) Такое и на 8.1 бывало, и на 8.2 бывает. Иногда действительно виновата сеть — отваливается логический диск, что на некоей машине в сети, путём по которому открывали в конфигураторе и/или предприятии внешку, и вуаля. Приходится переоткрывать по полному сетевому пути.

    А вообще, у нас этот глюк легко парируется загрузкой обработки/отчёта в справочник «Внешние..», благо он сейчас почти везде в той или иной форме бывает, и запуском оттуда. Глюк исчезает напрочь. Ну и версификация, написанная прямо в заголовке формы, чтоб проверить, с кем имеешь дело в данном запуске — наше всё при отладке.

    Reply
  72. demanru

    Abadonna чётко ответил, ему + 🙂 Есть «косяк» похуже — для заполненного табличного поля всегда вызываются события …ПриПолученииДанных(), …ПриВыводеСтроки() тогда как этого и не требуется,

    например, при изменении флажков, переключателей и полей ввода на форме (не элементы управления табличного поля!).

    Вы можете в этом убедиться, поставив точку останова в приложенной обработке до изменения состояния флажка в процедуре:

    Процедура ТабличноеПоле1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

    1С мне ответить не пожелала, может кто-то объяснить как обойти сие?

    Reply
  73. demanru
    demanru пишет:

    Abadonna чётко ответил, ему + 🙂 Есть «косяк» похуже — для заполненного табличного поля всегда вызываются события …ПриПолученииДанных(), …ПриВыводеСтроки() тогда как этого и не требуется,

    например, при изменении флажков, переключателей и полей ввода на форме (не элементы управления табличного поля!).

    Вы можете в этом убедиться, поставив точку останова в приложенной обработке до изменения состояния флажка в процедуре:

    Процедура ТабличноеПоле1ПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

    1С мне ответить не пожелала, может кто-то объяснить как обойти сие?

    Показать

    Reply
  74. Abadonna

    (74) Сам-то понял, что сказал?

    Reply
  75. Гость

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

    При этом в синтаксис-помощнике сказано, что обработка оповещения срабатывает только для закрытых форм. Не тут то было! Проверка самым простым способом — ЭтаФорма.Открыта(); — показывает что процедура выполняется даже если форма закрыта.

    Спасибо автору — решила заодно и проблему с оповещением и облегчила себе жизнь — каждый раз перезапускать предприятие чтобы протестить измененную обработку достало однако))

    Reply
  76. integragirl

    Столько обсуждений! а КАК бороться то с этим??

    Не могу работать, внешняя обработка не обновляется и все, хоть убей.

    А вообще, у нас этот глюк легко парируется загрузкой обработки/отчёта в справочник «Внешние..», благо он сейчас почти везде в той или иной форме бывает, и запуском оттуда. Глюк исчезает напрочь. Ну и версификация, написанная прямо в заголовке формы, чтоб проверить, с кем имеешь дело в данном запуске — наше всё при отладке.

    Ничего подобного, ничего парируется.

    Циклические ссылки

    господи, куда? если это открытие обычной внешней обработки, просто из файл-открыть.

    Помогите, кто решил этот бредовый трабл?

    Reply
  77. AlexO

    (54) anig99,

    на ИТС тоже полезное иногда печатают

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

    А справку к платформе, похоже, не дописывают пишут совсем третьи «лица студенческого типа» 🙂

    Reply
  78. AlexO

    (68)

    кто-то тут где-то на полном серьезе советовал не сохранять (динамично) изменения при работе в базе других пользователей

    Вообще-то, правильно советовали — это может привести (и очень часть приводит) к ошибкам в работе вплоть до краха структуры конфы. Т.к. работа с временными файлами (которые пользуются активно 1С везде и всюду — и при сохранении/обновлении конфигурации в том числе) до сих пор не освоена 1С даже до уровня «чтоб работало».

    Все-таки, динмическое обновление не зря называют «демоническим», и его использование — почти всегда выходит боком. Особенно на платформе 8.2 и всех остальных.

    Reply
  79. CaSH_2004

    (85) Ну а меня мама учила в детстве не переходить дорогу на красный свет, однако когда я вырос и вижу что машин нет я спокойно перехожу — я не прав? А вы как поступаете в таком случае?

    Если исходить из рекомендаций типа — «это опасно так не делайте», то:

    1. нельзя во первых пользоватся 1С — можно потерять базу

    2. нельзя пользоватся ПК — можно потерять все данные

    3. нельзя пить, курить, и все такое — можно повредить здоровью

    Ну а вывод: нельзя жить — это смертельно — никто еще не выжил 🙂

    Так на каком «нельзя» остановится? Я предпочитаю смотреть по ситуации — насколько это критично. Если для меня важнее внести изменения динамически, то и фиг с ними рисками — если они этак 0,0001%, если будет 1% я подумаю, если 10% я перестрахуюсь полюбому

    Reply
  80. AlexO

    (87)

    я спокойно перехожу — я не прав?

    да, не прав, потому как машина движется намного быстрее, и оценка «она еще далеко» может быть очень субъективна. А вообще лучше всегда дожидаться «своего» света светофора. И брать пример в этом с немцев.

    А вы как поступаете в таком случае?

    Прехожу почти в гордом одиночестве в хвосте «быстроперебегающих-недождавшихся» зеленого сигнала.

    1. нельзя во первых пользоватся 1С — можно потерять базу

    Вот кто бы прислушался, а не к агитации 1С…

    2. нельзя пользоватся ПК — можно потерять все данные

    Для этого есть сервера, резервное копирвоание, ИБП и прочая, и прочая.

    3. нельзя пить, курить, и все такое — можно повредить здоровью

    Ну это совсем к 1С не имеет отношения. Даже косвенного 🙂

    Ну а вывод: нельзя жить — это смертельно — никто еще не выжил

    Вот именно такой лозунг надо повесить на всех продуктах 1С 🙂

    то и фиг с ними рисками — если они этак 0,0001%

    Дело не в процентах, а в недоработках «любимой фирмы»: бьются временные файлы, отслеживания их корректности и правильности структуры нет и не было, в результате — вне зависимсоти от процента изменений портится вся конфа с данными, так как все идет одним куском.

    Reply
  81. CaSH_2004

    (88)

    да, не прав, потому как машина движется намного быстрее, и оценка «она еще далеко» может быть очень субъективна.

    Уважаемый — не передергивайте, я специально указал что МАШИН НЕТУ чтобы вы не придрались, вы благоволучно это проигнорировали

    Являясь водителем в густонаселенном городе (3-й в России по количесту машин на 1000 чел.) и ездя бстрее среднего я со своей СУБЪЕКТИВНОСТЬЮ умудряюсь рассчитать время реакции до 1 сек. другого водителя, и спокойно уворачиваюсь от некоторых «неадекватных» поэтому ходя пешком я прекрасно знаю на что способна машина и на что способен я. Случайно на вас может упасть кирпич с крыши дома т.к. вы ее не видите когда идете рядом, но переехать случайно машина не может если вы смотрите по сторонам и при этом думаете чтобы под нее не попасть.

    вне зависимсоти от процента изменений портится вся конфа с данными, так как все идет одним куском.

    Опять же вернусь к машинам (люблю сравнивать) — они тоже бьются, водители пассажиры умирают в авариях! Вас интересует процент смертельных и других случаях когда вы едете на своей машине или вас подвозят пасажиром? Сомневаюсь. Думаю спокойно ездите не учитывая тот факт что через секунду вы можете лишится ноги или руки в результате того что «неадекват» с соседней полосы заболтался по телефону и решил перестроится не посмотрев есть ли для него место.

    Так же и я спокойно делаю динамическое обновление и радуюсь жизни не обращая внимание на грозные причитания «перестраховщиков по жизни». Бэкапы делаются, от всего не перестрахуешся — так чего настаивать на усложнении жизни?

    Reply
  82. AlexO

    (89)

    Так же и я спокойно делаю динамическое обновление

    База у Вас маленькая? Иначе бы не рассуждали так радужно, если в альтернативе — несколько часов грузить базу из архива, да плюс потерянные часы набранных документов, за которые тоже кто-то должен нести ответственность.

    Reply
  83. CaSH_2004

    (88)

    И брать пример в этом с немцев.

    Уважаю немцев за их четкость (по слухам), однако у кажжой нации свои плюсы. Войну с ними (и другими) мы выиграли именно потому что плевали на все, в том числе и на слово «нельзя» и «невозможно». Просто делаем и все. А если бы сильно задумывались то наверно и не делали бы этого, и не выиграли бы там где все проигрывали.

    Reply
  84. CaSH_2004

    (90)

    База у Вас маленькая

    Для SQL — да, для файлового возможно и нет — 2-3 Гб.

    Ну так я про то и говорю в который раз что все зависит от СИТУАЦИИ — а вы говорите про ВООБЩЕ. А потом начинаете на нюансы ссылатся. Это неверно в корне.

    Reply
  85. CaSH_2004

    + (92) А в SQL базе порядка 20 Гб (500 доков в день в основном офисе и еще 2 узла РБД) — тоже плевал я на предостарожности, иначе я буду всю жизнь вносить изменения и меня выгонят как неудачный пример программиста если я буду ждать до ночи пока все выйдут

    Reply
  86. CaSH_2004

    (88)Зачем вы связались с 1С? Чтобы мучатся? Вы мазохист? Если нет взгляните на вещи проще и не хайте тот продукт на котором работаете. У него куча недостатков, но вся жизнь их полна. Я на них ругаюсь только когда они встречаются, а вы при любом удобном случае.

    Или не работайте с 1С, а выбирите свой идеал чтобы получать удовольствие от работы.

    Reply
  87. AlexO

    (91)

    мы выиграли именно потому что плевали на все, в том числе и на слово «нельзя» и «невозможно».

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

    (92)

    А потом начинаете на нюансы ссылатся

    Нюанс как раз у Вас. Что не отменяет разрушительного действия ДО. У нас даже кэш пользователя — и то бьется без всяких причин. Просто так, 1С, видите ли…

    (93)

    и меня выгонят как неудачный пример программиста

    И я все время говорю о том же — только про неудачный пример «как не надо писать программы, а, тем более — платформы». А так полностью солидарен — абсолютно неправильный подход к программированию, в том числе — и при внесении изменений.

    (94)

    Я на них ругаюсь только когда они встречаются, а вы при любом удобном случае.

    Думаю, Вы льстите себе, а мне — приписываете лишком много.

    Именно, что проблемы и ПРОБЛЕМЫ в 1С лично мне встречаются на каждом шагу, практически всегда не давая сделать нормально, корректно и правильно, а только через одно место.

    А вот Вы как раз хвалите и оправдываете 1С при любом удобном случае.

    Наверное, Вам не с чем сравнивать?

    Reply
  88. AlexO

    (94)

    а выбирите свой идеал чтобы получать удовольствие от работы

    Вы, москвичи, как из одного инкубатора — мысли одни на всех, оторванность от жизни, и побег от реальности ))

    Ну, или украинцы — все далеки от русского народа.

    Reply
  89. CaSH_2004

    (95)

    Именно, что проблемы и ПРОБЛЕМЫ в 1С лично мне встречаются на каждом шагу, практически всегда не давая сделать нормально, корректно и правильно, а только через одно место.

    А вот Вы как раз хвалите и оправдываете 1С при любом удобном случае.

    Как это мне знакомо: я как раз рассуждал так же года 4 назад. Однако сейчас все труднсти позади — все глюки изучены и уже не мешают на каждом шагу как раньше, может помогло следующее:

    — опыт позволяет предвидеть кучу всяких проблем и предотвращать их

    — стараюсь не ставить ничего лишнего и нового — это всегда новый гиморой который ни мне ни клиенту не нужен

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

    — никуда не езжу, не трачу время на пробки, все по телефону и удаленно — ну 90%

    — работаю часто через агентов — они получают свое, я свое, за это они часто утрясают корнфликты с клиентами

    Собственно для избежания постоянных динамичных сохранений делаю подсистему «Динамика» которая позволяет менять практически все в конфигурации не внося изменения в исходный код — все перехватчики ставятся один раз и все, остальное хранится в виде данных в базе

    Интересно это только я вижу тут противоречие?

    Думаю, Вы льстите себе

    А вот Вы как раз хвалите и оправдываете 1С при любом удобном случае.

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

    Основная проблема в работе не 1С — а клиенты, человеческий фактор. Если я знаю глюк 1С, то я его могу предвидеть и обойти. А вот клиенты часто выкидывают такое что если таких игнорировать то и клиентов не останется — приходится делать психологическую разгрузку.

    Думайте оптимистичнее.

    Наверное, Вам не с чем сравнивать?

    Ну не знаю, у меня в клиентах были и «КраснодарКрайГаз» (дочка Газпрома), в постоянном обслуживании самые мелкиеи и достаточно крупные игроки в торговле различной направленности. Качеством все довольны, недовольство вызывает только оперативность (сильно загружен т.к. берусь почти за все). Клиентов активных порядка 30 со 100 базами (таких что каждый месяц по несколько раз), неактивных еще в 2 раза больше.

    Глюков всяких перевидал, хотя думаю их еще больше, но желания увидеть их все что-то нет. Помошников почти нет, все в основном сам делаю.

    Как думаете есть мне с чем сравнивать? Или опыт маловат и кругозор узенький?

    Reply
  90. CaSH_2004

    (96)

    Вы, москвичи, как из одного инкубатора — мысли одни на всех, оторванность от жизни, и побег от реальности ))

    Уважаемый, вы где тут москвичей нашли? Или москвичи перед вами так провинились что вы всех неугодных так именуете? Это какой то новый вид расизма — городизм что-ли 🙂

    Я из Краснодара, может слыхали? город такой в одноименном крае, с Сочи под боком

    Reply
  91. AlexO

    (98)

    Я из Краснодара

    ну так вам москвичи как родные ))

    Даже Сочи для вас покрасили ))

    Reply
  92. CaSH_2004

    (99)И чем же это? Ты готов за весь город отвечать? Ты не сторонник случайно Жириновского? А то стиль больно смахивает: обсираеш все вокруг, цепляешся ко всему что видиш, выдвигаеш «доказательства» которые нормальный человек вообще не понимает, переворачиваеш все слова опонента на свой лад, а не так как было сказано.

    Ладно тот хоть политик, а ты кто?

    Reply
  93. AlexO

    (97)

    У вас прямо какой-то заповедник 1С там :))

    — опыт позволяет предвидеть кучу всяких проблем и предотвращать их

    Вы — первый и единственный, кому опыт позволяет ПРЕДВИДЕТЬ проблемы клиента, даже не видя ни самого клиента, ни его базы.

    — стараюсь не ставить ничего лишнего и нового — это всегда новый гиморой который ни мне ни клиенту не нужен

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

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

    У вас, видимо, великолпный тайм-менеджемент — еще никому не удавалось делать быстро, качественно и универсально ВСЕ и ВСЯ в 1С.

    — никуда не езжу, не трачу время на пробки, все по телефону и удаленно — ну 90%

    Ну, повторюсь — великолепные клиенты, которые не жаждут вас видеть лично вовсе, а удовлетворены вполне удаленным общением.

    — работаю часто через агентов — они получают свое, я свое, за это они часто утрясают корнфликты с клиентами

    Ну, говорю же, — спецзона 1С: клиенты все покорные, личного присутствия чураются, да еще и агентов полно, которые разруливают вопросы с клиентами!

    Собственно для избежания постоянных динамичных сохранений делаю подсистему «Динамика» которая позволяет менять практически все в конфигурации не внося изменения в исходный код

    Ну, я уже не удивляюсь — что клиенты позволяют вносить в свои базы фрилансеру (!) такие серьезные изменения, им, наверняка, совсем непонятные.

    Уникальные экосистемы: в Москве не знают, сколько платить, поэтому платят, сколько унесешь; у вас — программистов 1С носят на руках и считают не меньше родственников раджи. И где-то близко к исполнительной госструктуре.

    Reply
  94. AlexO

    (100)

    которые нормальный человек

    Так вот вы куда себя приписали ))

    Ты готов за весь город отвечать?

    Ну, удачно не провалиться куда-нибудь на олимпиаде ))

    Reply
  95. CaSH_2004

    +(100) А совсем забыл в тот же список:

    — соскакивание с темы которую не можеш внятно закрыть и вместо нее поднимание новой темы, желательно такой чтобы перекрыть предыдущую

    — игнорирование неудобных вопросов и собственных промашек

    Reply
  96. CaSH_2004

    (101)Ну ладно тебе завидовать, плохо спать будеш и пищеварение может нарушится. Каждому свое. Не умееш это попробуй на базаре торговать семячками, или в лотерею сыграй — вдруг повезет 🙂 Мне вот никогда не везло на азартные игры. Может тебе не везет на 1С?

    Reply
  97. AlexO

    (103)

    соскакивание с темы которую не можеш внятно закрыть

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

    Reply
  98. AlexO

    (104)

    Мне вот никогда не везло на азартные игры.

    Ну тогда вам и в 1С не повезет. Ведь что казино, что 1С — везде русская рулетка и вера в чудо «но мне-то повезет сорвать куш!».

    Хотя если 1С — это даже не однорукий, а безрукий бандит, то и ставки намного выше, чем в казино ))

    Reply
  99. CaSH_2004

    (106)Я так понял это треп не о чем, просто скучаете?

    Ну тогда вам и в 1С не повезет.

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

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *