Имя: Пароль:
1C
1С v8
Немного про общие функции в типовых. Их постоянное изменение
0 Beduin
 
07.04.20
15:21
Каждый сталкивался я думаю. Пишешь доп. функционал, используешь типовые вызовы, чтобы не городить велосипеды. Приходит новый релиз и все твое летит к чертям.
Вариант не использовать возможен, но это усложнит разработку и не факт, что потом эта самописная логика подойдет для следующего релиза.
Сравню с android. Программа созданная под самую древнюю SDK гарантированно выполнится на новом версии SDK.
Почему у 1С нет никакой совместимости по общим функциям конфигурациям? И как избежать проблем с разработками созданными под старый релиз, чтобы новый релиз все не ломал. Может рекомендации какие есть.
1 H A D G E H O G s
 
07.04.20
15:23
Пишите свое базовое ядро.
2 Ненавижу 1С
 
гуру
07.04.20
15:50
(0) смириться, у 1С не в почете обратная совместимость
3 VladZ
 
07.04.20
17:17
(0) Делай свою "прослойку" между твоими объектами и типовыми процедурами БСП.
4 RoRu
 
07.04.20
17:21
отвечу бессмертным ))) :
Дорогой Иван. Ты и вправду болван. Это я - … … .
Знаешь, я так долго не отвечал, потому что от тебя пришло так много писем, и я посчитал, что это спам. wink

Давай по порядку.

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

Ты говоришь – исправь глюки. Да это всё твои кривые руки.

Говоришь, серевер повис, да у вас там явно проблемы с железом, причем тут релиз? (С)  PR-MEX  письмо директору или песня про 1с
5 Beduin
 
07.04.20
17:29
(3) Это еще хуже будет. Тип какой-нибудь поменяется в переменных и переписывай всю функцию. Или логика. Хочется универсальный механизм. 1С сейчас не изучаю сильно, поэтому интересно услышать совет, кто на курсы ходит какие-то. Как методически советуют делать в этом случае.
6 vde69
 
07.04.20
17:34
2013 год http://catalog.mista.ru/public/190375/

Что можно сделать:
а. БП (Библиотека подсистем) - библиотека процедур функций и переопределяемых метаданных, данная библиотека должна быть хорошо задокументирована, отлажена и редко изменятся, для того что бы она стала неким расширением языка и все ею пользовались. А почему нельзя все это запихнуть в язык? Да по тому что в процедуре языка нельзя реализовать работу с метаданными которых еще нет (например, нельзя в функцию поместить две валюты и число а на выходе получить пересчитанную сумму), причем обновление этой библиотеки должно идти отдельно от обновление конфигурации.
7 Dedal
 
07.04.20
17:34
(5) Вы сравниваете теплое и мягкое. Твоя доработка скорее всего будет работать с версии платформы 8.2 до последних 8.3. А вот если разработчик приложения на Андройде поменяет API внутри своей программы то и тебе придется переписывать свое обращение к этому API. Аналогично и у 1С. Разработчик конкретного приложения поменял у себя внутри, SDK этого даже не касается.
8 Beduin
 
07.04.20
17:38
(7) Я под одно приложение как качнул БЕСПЛАТНУЮ библиотеку, написанную на java, так за 3 года все функции оттуда работают. Ни одна не поменялась. Я понимаю, что 1С не дает стандарт на свои общие модули, но они сами не задалбываются каждый раз переписывать вызовы? Мне на первом курсе еще в универе объясняли, проектируйте функцию, чтобы потом не менять ее годами, так как на нее потом будет ссылаться куча мест.
9 vde69
 
07.04.20
17:44
(8) вопрос не в изменении а в отсутствие описаного интерфейса взаимодействия, например в С есть отдельные файлы заголовков *.h

именно такого интерфейса не хватает
10 acht
 
07.04.20
17:54
(9) На уровне библиотек типа БСП и пр. такое есть - области "ПрограммныйИнтерфейс" и "СлужебныйПрограммныйИнтерфейс", это как раз оно: public и private. Там и в стандарт есть о комментариях, об устаревании.

Типовые же конфы библиотеками не являются, у них все служебное, все внутреннее. А тащить совместимость специально для сторонних пустынных разработчиков, оно нафиг не надо.
11 pechkin
 
07.04.20
17:55
(0) А теперь сравни с js
12 Провинциальный 1сник
 
07.04.20
19:04
Да. Использовать функции общих модулей так же опасно при доработках, как и обращаться непосредственно к данным. Разработчики не гарантируют и не обещают стабильного кода. Любые изменения и доработки могут сломаться при любом обновлении. Понимаете в чем дело - штатные программисты организаций, использующих решения 1с для самой фирмы 1с не нужны и в их эргономике никто не заинтересован. Ибо если решения будут дорабатываться просто и стабильно своими силами, то нафига нужны партнеры, имеющие доступ к кухне?
13 Azverin
 
07.04.20
19:57
(0) тоже бесит, работало бы годами, но нет...
недавно в БП 3.0 в НомерНаПечать() добавили, например, третий параметр.
круто, чё)
14 Мимохожий Однако
 
07.04.20
20:01
(0) ОФФ: 1С заботится о программистах. Чтобы всегда на хлебушек было.Я к тому, что радуйся, когда позовут поправить. А если есть сомнения-делай свой модуль и пихай во все свои разработки.
15 Злопчинский
 
07.04.20
20:13
ну и я часто добавляю параметр "третий" у себбя, в клюшках. только делаю его необязательным или со значением по умолчанию и код написан так, что и на старых будет работать.
давно же известно что типовые пишут таджики. х-х-ивпродакшен
16 rsv
 
07.04.20
20:31
(0) вывод прост . обработка должна быть автономна и зависеть токма от данных в табличках
17 Garykom
 
гуру
07.04.20
20:40
(0) Делай свои переопределения всех используемых БСПшных функций. И используй только их.
Если что в своей реализации "переопределения" поправишь, добавишь там параметр или свое напишешь скопипастив из старого релиза типового.

Да отлаживать это будет сложнее, количество вызовов вложенных увеличится.
18 Конструктор1С
 
07.04.20
20:44
(0) делай компактные процедуры-мосты между твоей логикой и типовыми общими модулями, и будет тебе щасте
https://ru.wikipedia.org/wiki/Мост_(шаблон_проектирования)
19 Сияющий в темноте
 
07.04.20
21:31
вы лучше вспомните переход с 13 на 14 платформу
управляемаяформа - формаклиентскогоприложения
тоже ведь никому не мешало.

ну и под windows можно программировать со старым Api еще от windows nt.
20 lodger
 
07.04.20
21:46
(0) как в том анекдоте про "готовь 3 письма", берешь и пишешь 4 своих общих модулей, с разными свойствами (клиент, сервер, клиентсервер, Серверный для вызова с клиента), потихоньку шпигуешь их своими велосипедами для своих разрабулек, пихаешь везде где надо. корячить поддержку или лепить это в расшрирении - дело хозяйское.
21 Злопчинский
 
07.04.20
21:48
(16) "обработка должна быть автономна и зависеть токма от данных в табличках"
- то есть каждому пилить свой личный велосипед? я и в клюшках не суперспец, и то насмотрелся жуткого трэша который народ пишет а) по незнанию типовых (как профедур/функций так и возможностей б) просто пготому что неспецы, а система сложная.
.
я просто представляю что будет если в 8-ке начнется такой же трэш и угар.
22 Злопчинский
 
07.04.20
21:49
(17) "Да отлаживать это будет сложнее, количество вызовов вложенных увеличится." - по тому как народ охреневает от количества вложенности в типовых - тебя точно услышали! ;-)
23 lodger
 
07.04.20
21:54
(21) ага, например - почтитиповая конфа плюс внешняя обработка. и в каждой по своему сделано округление копейки для ндс при частичном списании со счетов. получается типовой алгоритм раз, нетивой документ два, внешняя обработка колбасит три.
потом бухи сидят и седеют.
24 ildary
 
08.04.20
00:58
(0) "Вы не умеете их готовить" - надо просто помнить, что использовать надо процедуры и функции, которые хранятся в области ПрограммныйИнтерфейс - их трогают в последнюю очередь (смена мажорной версии БСП) и то трогают с сохранением старой функции и созданием новой (с похожим именем). Вызывать функции из области СлужебныеПроцедурыИФункции - стоит только совсем уж по дикой нужде (и быть готовым что сломается), а из области СлужебныеПроцедурыИФункции брать нельзя от слова вообще - там колбасится всё постоянно. Источник этих знаний - бывший разработчик БСП.
25 victuan1
 
08.04.20
05:35
(13) В 1С 7.7 (аналог 8-го БСП = гл.модуль) обычно такой проблемы нет. Экспортные ф-ии гл. модуля конкретной конфигурации годами остаются совместимыми со старыми релизами.
Но бывают и исключения. Например, добавили когда-то в ТИС новый реквизит для Валюты - Кратность. И добавили доп. параметр в некоторые экспортные ф-и гл. модуля. Пришлось в своей нетленке выкручиваться через Шаблон, чтобы учесть разное кол-во аргументов гл. ф-ии в зависимости от версии релиза. Примерно вот так:

        Пост.СуммаВзаиморасчетов    = число(Шаблон("[глПересчет(Пост.Итог(""Сумма"")"+?(глЕстьРеквизитШапки("СуммаВклНП",ВидДок)=1,"+?(Пост.СуммаВклНП =1,0,Пост.Итог(""СуммаНП"" ))","")+?(глЕстьРеквизитШапки("СуммаВклНДС",ВидДок)=1,"+?(Пост.СуммаВклНДС=1,0,Пост.Итог(""СуммаНДС""))","")+
",Пост.Валюта,Пост.Курс,Пост.Договор.ВалютаВзаиморасчетов,Пост.ДатаДок"+?(глЕстьРеквизитШапки("Кратность",ВидДок)=1,",Пост.Кратность","")+")]"));
26 Конструктор1С
 
08.04.20
12:17
(25) ужаснейший код
27 Lexandr
 
08.04.20
12:39
Пару лет назад надо было добавить печатную форму к документу в УТ11. Вдруг оказалось, что код подключения в список печати зависит от версии БСП. С тех пор очень уважаю внешние печатные формы.
28 rudnitskij
 
08.04.20
13:15
(5) "1С сейчас не изучаю сильно, поэтому интересно услышать совет, кто на курсы ходит какие-то" - ты сам себе на вопрос и ответил, только не понял этого еще...
Типовые, как правило, пишет не 1С, а сторонние фирмы. Поэтому претензии к 1С в этой сфере не по адресу.
Лично я сталкивался с тем, что функции и процедуры, которые можно отнести к универсальному доп функнционалу, мало того, что меняют логику работы периодически, но иногда еще и название, список аргументов, а временами еще меняется модуль, в котором они находятся.
Фирма БМВ не виновата, что на ней долбоклювы ездят. Так же и 1С не виновата в том, что пишут большие фирмы, создающие типовые решения
29 Beduin
 
08.04.20
13:25
(28) Я вообще в сабже про бухгалтерию 3.0 писал.
30 1Снеговик
 
гуру
08.04.20
13:51
Все, кто оправдывает пейсателей типовых конфигураций, объясните еще пару моментов.
Обновил тут на выходных УТ 11 за год и запарился потом расширение переписывать.

1. Переименовали ВСЕ макеты печатных форм, добавили в конце имени "_ru"
Это что за необходимость разделения макетов по языкам? Готовятся во все типовые добавить макеты на разных языках? А оно нам надо теперь весь написанный код под это подстраивать? И зачем нам в типовой 100500 одинаковых макетов, но на разных языках?

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

3. Переименовали в аналитике учета номенклатуры РЕКВИЗИТ "Склад" на "МестоХранения", соответственно все отчеты и обработки, которые работают с регистрами накопления по движению номенклатуры просто перестали работать. Гениально!

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

Плюс переименования процедур в общих модулях и самих общих модулей. А всего год прошел.

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

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

Извините, крик души.
31 ildary
 
08.04.20
13:54
(30) Самое забавное, что после всего этого 1С спрашивает у народа "а почему молодые разработчики не хотят писать на 1С?" - потому что не понимает, почему?

p.s. Я их не оправдываю, особенно переименования "потому что можем".
32 palsergeich
 
08.04.20
13:56
(30) Мама тебя так кормит, если бы все работало годами и не отваливалось, мы быхуже кушали
33 acht
 
08.04.20
13:57
(30) > После каждого обновления готовишься к бессонным ночам исправления глюков, поэтому год и откладывал

Интересная логика.
34 Cyberhawk
 
08.04.20
13:58
Большого слона (долго пропущенное обновление) надо есть кусочками (обновлять потихоньку и чаще)
35 1Снеговик
 
гуру
08.04.20
13:59
(32) кстати теперь пользователь и типовую обновить не может без приколов. Теперь прилетают автоматически патчи, ставятся как расширения, которые мешают дальнейшим обновлениям) Тут даже программист со стажем в ступоре от ловли новых невиданных ошибок при обычных обновлениях)
36 Злопчинский
 
08.04.20
14:13
(30) Вот поэтому я сижу на стабильной 7.7.
мну откровенно ломает заниматься тупой работой, типа как ты описал.
37 Beduin
 
08.04.20
15:38
(33)(34) А теперь представляете лицо клиента. Когда ему внешняя компания прикрутила к типовой бухгалтерии разработок на 5 лямов с помощью расширения. И заверило, что обновления будут без проблем. Приходит обновление и новый счет миллиона на 2. Заказчик в шоке и орет, что все обманщики.
38 Garykom
 
гуру
08.04.20
15:48
(37) Ну пусть догадается что надо было нанять своих программистов на фикси.
39 acht
 
08.04.20
16:11
(37) И кто же в этом виноват?
40 Cyberhawk
 
08.04.20
18:16
(37) А зачем мне его представлять?