Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Я ни разу не 1сник, но мне кажется, что стоило бы тупо запилить справочник СлужбыДоставки с нужными полями, и связать его по коду со справочником контрагентов 😉
А может быть там и более удобные средства для таких случаев имеются.
В 1С новые справочники лучше не пилить. Только свои костыли. Кстати, можно сделать как здесь: http://www.govnokod.ru/12501
Тогда можно просто вбить в таблицу и получить таблицу. В конфигурации Раруса так везде. Я опубликовал, потому что это прежде всего необычно. Если прикинуть, то вариант с массивом будет такой же огромный, как и этот код.
Если конфигурация поддерживается, то лучше ее не трогать, в противном случае будут проблемы с переходом на более новую версию, в которой лежат все новые макеты и документы. Добавлять документы еще можно - они легко перносятся, а исправления для справочников придется править по всей конфигурации.
Но конфигурастам из 1С-ных контор на это наплевать.
> для справочников придется править по всей конфигурации
А что там так сильно рассеивается? Справочник в 1с это не просто таблица и форма для ее редактирования? Просто я под 1с ни разу не кодил, и не в курсе ситуации.
>Справочник в 1с это не просто таблица и форма для ее редактирования?
Да это таблица БД с формой.
Но когда делать правки по всей конфигурации с этим справочником. При обновлении конфигурации возникает проблема переноса этого справочника в новую конфигурацию.
Новая конфигурация представляет из себя чистый код, относящийся к новому законодательству, а у тебя куча документов с этим справочником. В этом случае нужно брать какой-нибудь windiff и править каждый модуль, это очень долго. Единственный безопасный вариант, это использовать справочник только в своих документах, тогда нужно просто поправить эти документы для текущего законодательства. Красивых способов в 1С нет.
>Классное слово, надо запомнить
Оно употребляется, потому что 1С очень простой язык. Часто человек на нем пишущий представляет из себя скорее продвинутого бухгалтера, нежели программиста)). Единственная серьзная особенность - запросы, которые скармливаются построителю отчетов.
> Но когда делать правки по всей конфигурации с этим справочником.
Не ну это само собой. Если я буду подпиливать изкоробочные документы и код, то я получу головную боль при портировании своего патча на новую версию. Имхо, такие операции нигде безболезненно не проходят, не только в 1с...
> Единственный безопасный вариант, это использовать справочник только в своих документах
Ну собственно добавление новых документов и справочников для них меня и интересовало.
P.S. Кстати, а модули и шаблоны для форм/документов хранятся в текстовых файлах? Или там свои форматы, с которыми без конфигурятора особо не поработаешь?
>Или там свои форматы, с которыми без конфигурятора особо не поработаешь?
Именно так. В каждом файле-отчете лежат макеты+модуль+формы(к каждой форме лежат модули и сопутствующие данные).
> на git тупо бинарники
Ну это, имхо, кривовато: диффы то не посмотреть толком у бинарников, да и места такая репа будет жрать больше.
У текстовых файлов еще плюс есть - ненулевая вероятность на автомате наложить дельту между изкоробочной и своей версией на новую изкоробочную. Хотя тут все очень зависит от того, насколько сильно эту версию перепиливают между релизами.
>У текстовых файлов еще плюс есть - ненулевая вероятность на автомате наложить дельту между изкоробочной и своей версией на новую изкоробочную.
Ага, и ненулевая вероятность потом ловить глюки. А если патчу лет 5?
> А если патчу лет 5
Все зависит от того, на сколько уплыла за это время базовая версия 😉
Согласись, если в базовой версии сделали какой-то мелкий фикс, для нетронутых нами модулей, и не испорчено API, то проще автоматом накатить патчсет, чем ебаться и переносить все дельты руками 😉
Да и никто не говорит, что после наложения патча надо сразу отдавать результат бухам. Чтение и тестирование никто не отменял.
Ну и я же не утверждаю, что это панацея. Просто во многих случаях это действительно удобно (хотя в моей сишной практике далеко не всегда канало).
>Чтение и тестирование никто не отменял.
И накатывание чужих патчей превращается из работы пользователя в работу программиста. just as planned, прыщебляди соснули.
> превращается из работы пользователя в работу программиста
Ну а что ты хотел? Взялся за допилку конфы, к которой 1с выпускает изменения - страдай. Ты уже программист а не пользователь 😉
> накатывание чужих патчей
Да схуяли. Пользователь просто возьмет готовую конфу, подпиленную и проверенную для него программистом, да и поставит/обновит (а на практике к нему прибежит франчайзи, который ему конфу допиливал, и поставит все сам). Ну а если не проверенную - будет звонить программисту и заябывать его вопросами, пока тот не научится проверять 😉
Ты пойми: я же не предлагаю распространять допиленные конфигурации в патчсетах. Я просто говорю о том, что классические средства типа диффов и патчей всяко поудобней ручного просмотра форм и модулей, ручного поиска изменений в них, и ручного же слияния своих изменений и тех, которые сделали 1сники.
Пильщику конфигурации один хрен страдать. Просто с текстовыми файлами вместо проприетарного формата, имхо, он страдал бы чуть меньше.
> Взялся за допилку конфы, к которой 1с выпускает изменения
Они не выпускают изменения. Они выпускают интерпретатор для документооборота, и все. 1С и рарус, примерно тоже самое что php и joomla.
>У текстовых файлов еще плюс есть - ненулевая вероятность на автомате наложить дельту между изкоробочной и своей версией на новую изкоробочную.
Я выше писал про windiff, если не лень, то можно копировать текст из разных конфигураций. Обычно изменения интересуют только в одной(м) обработке/документе, а это не накладно по времени.
> just as planned
Критикуешь - предлагай. Предложи более удобный способ слияния местных изменений конфы, и изменений, которые за это время сделало 1с.
Варианты "не пилить конфу вообще, юзать как есть" и "не обновляться, а по 5 лет пилить на основе версии со времен мамонтов" не принимаются как копетанские и очевидные.
Естественно, что вся эта лабуда рассматривается не с позиции конечного пользователя (которому по-хорошему вообще нехер лезть в конфигурятор), а с позиции 1с-франчайзи, который делает свою конфу на основе стандартной, или мальчика-программиста, которому начальник поручил что-то подпилить в их 1ске.
> 1С ругают те, что навижен не видел
Блин, вот в моих словах уже всё нашли: и "предложение юзерам накатывать патчи самостоятельно" и "ругань 1с". Почему один я в них ничего из этого не вижу?..
в чем проблема с объединением, на том же инфостаре выложены сотни примеров возможных объединений, на практике применяется постоянно.
по поводу мальчиков программистов дешевых, после которых звонят клиенты и просят хотя бы вернуть как было...бекапы это вообще отдельная тема для развговора
выгружать конфу в XML из конфигуратора так и не научились что ле? кнопка прям под носом же. модули выгружаются в тхт, формы - в XML, макеты в mxl. в чем проблема-то? даже скд можно из коробки выгрузить в XML и сиди себе объединяй.
Волшебные люди написали для 7.7 разборщик MD-файла с конфигурацией в набор текстовых файлов с ресурсами. Эти файлы можно коммитить, сравнивать, только вот перед каждой отправкой надо разобрать файл, а после получения - собрать, перезапустить одноэску, и прочие развлечения.
Само собой, никому такие сложности не нужны, контроль версий часто сводится к "забэкапили на всякий, руками поправили/перенесли, сохранили, залили потребителю".
Потому, в нашей реальности, в шараге будет храниться где-то количество конфигураций по числу обслуживаемых объектов помножить на правки.
Грустно, но правда. В одной знакомой конторе именно так. Там ни небо, ни Будда не знают, что, где, как и зачем.
В восьмёрке что-то там иначе, но общая суть ада говна сохраняется.
С контролем версий есть выход - "хранилище конфигурации". Это штука для параллельной разработки, и хранит историю изменений, позволяет сравнивать версии, откатывать.
Но штука местами ОООЧЕНЬ тормозная, остальными местами просто медлительная (10-20 секунд), и вылетает часто (приходится перезаходить в конфигуратор), в общем, как все в России - идея хорошая, реализация страдает...
Обновление вроде не должно попячить существующий объект, если только нет совпадающего имени.
А вот все ссылки на него в конфигурации будут прибиты.
В любом случае, код из топика где-то лежит. Если это внешняя обработка, то пофиг на обновление базы, если внутри - его самого обновление и грохнет.
По-моему, так.
Ну а если конфигурация стоит на поддержке и изменять ничего категорически нельзя, то как тогда быть. Хотя всегда можно добавить свой регистр сведений и в нем все реализовать!
Блин столько демагогии можно было просто в свойство справочника добавить, напрямую записать в РС ЗначениеСвойствОбъктов и не надо ничего переписывать, без головняков с обновлением, а код бредовый по определению.
Вот да, ЗначенияСвойствОбъектов - довольно универсальная штука и здесь бы подошла, я бы еще на месте 1С-овцев добавил аналогичный рег. свед. с периодичностью, а если еще добавить рег. свед. с двумя измерениями произвольного типа, цены бы не было.
позабавило выражение ---------- КонецЕсли; Ваще код на русском смотриться сильно избыточно. Разработчики могли бы запилить и на английском, видимо с ним нелады совсем были.
А может быть там и более удобные средства для таких случаев имеются.
http://www.govnokod.ru/12501
Тогда можно просто вбить в таблицу и получить таблицу. В конфигурации Раруса так везде. Я опубликовал, потому что это прежде всего необычно. Если прикинуть, то вариант с массивом будет такой же огромный, как и этот код.
Почему?
Но конфигурастам из 1С-ных контор на это наплевать.
А что там так сильно рассеивается? Справочник в 1с это не просто таблица и форма для ее редактирования? Просто я под 1с ни разу не кодил, и не в курсе ситуации.
> конфигурастам
Классное слово, надо запомнить.
Да это таблица БД с формой.
Но когда делать правки по всей конфигурации с этим справочником. При обновлении конфигурации возникает проблема переноса этого справочника в новую конфигурацию.
Новая конфигурация представляет из себя чистый код, относящийся к новому законодательству, а у тебя куча документов с этим справочником. В этом случае нужно брать какой-нибудь windiff и править каждый модуль, это очень долго. Единственный безопасный вариант, это использовать справочник только в своих документах, тогда нужно просто поправить эти документы для текущего законодательства. Красивых способов в 1С нет.
>Классное слово, надо запомнить
Оно употребляется, потому что 1С очень простой язык. Часто человек на нем пишущий представляет из себя скорее продвинутого бухгалтера, нежели программиста)). Единственная серьзная особенность - запросы, которые скармливаются построителю отчетов.
Не ну это само собой. Если я буду подпиливать изкоробочные документы и код, то я получу головную боль при портировании своего патча на новую версию. Имхо, такие операции нигде безболезненно не проходят, не только в 1с...
> Единственный безопасный вариант, это использовать справочник только в своих документах
Ну собственно добавление новых документов и справочников для них меня и интересовало.
P.S. Кстати, а модули и шаблоны для форм/документов хранятся в текстовых файлах? Или там свои форматы, с которыми без конфигурятора особо не поработаешь?
Именно так. В каждом файле-отчете лежат макеты+модуль+формы(к каждой форме лежат модули и сопутствующие данные).
Жопа. Т.е. о git'ах и прочих системах контроля версий можно даже не мечтать...
https://github.com/kuntashov/1CUnit
Ну это, имхо, кривовато: диффы то не посмотреть толком у бинарников, да и места такая репа будет жрать больше.
У текстовых файлов еще плюс есть - ненулевая вероятность на автомате наложить дельту между изкоробочной и своей версией на новую изкоробочную. Хотя тут все очень зависит от того, насколько сильно эту версию перепиливают между релизами.
Ага, и ненулевая вероятность потом ловить глюки. А если патчу лет 5?
Все зависит от того, на сколько уплыла за это время базовая версия 😉
Согласись, если в базовой версии сделали какой-то мелкий фикс, для нетронутых нами модулей, и не испорчено API, то проще автоматом накатить патчсет, чем ебаться и переносить все дельты руками 😉
Да и никто не говорит, что после наложения патча надо сразу отдавать результат бухам. Чтение и тестирование никто не отменял.
Ну и я же не утверждаю, что это панацея. Просто во многих случаях это действительно удобно (хотя в моей сишной практике далеко не всегда канало).
И накатывание чужих патчей превращается из работы пользователя в работу программиста. just as planned, прыщебляди соснули.
Ну а что ты хотел? Взялся за допилку конфы, к которой 1с выпускает изменения - страдай. Ты уже программист а не пользователь 😉
> накатывание чужих патчей
Да схуяли. Пользователь просто возьмет готовую конфу, подпиленную и проверенную для него программистом, да и поставит/обновит (а на практике к нему прибежит франчайзи, который ему конфу допиливал, и поставит все сам). Ну а если не проверенную - будет звонить программисту и заябывать его вопросами, пока тот не научится проверять 😉
Ты пойми: я же не предлагаю распространять допиленные конфигурации в патчсетах. Я просто говорю о том, что классические средства типа диффов и патчей всяко поудобней ручного просмотра форм и модулей, ручного поиска изменений в них, и ручного же слияния своих изменений и тех, которые сделали 1сники.
Пильщику конфигурации один хрен страдать. Просто с текстовыми файлами вместо проприетарного формата, имхо, он страдал бы чуть меньше.
Они не выпускают изменения. Они выпускают интерпретатор для документооборота, и все. 1С и рарус, примерно тоже самое что php и joomla.
>У текстовых файлов еще плюс есть - ненулевая вероятность на автомате наложить дельту между изкоробочной и своей версией на новую изкоробочную.
Я выше писал про windiff, если не лень, то можно копировать текст из разных конфигураций. Обычно изменения интересуют только в одной(м) обработке/документе, а это не накладно по времени.
Критикуешь - предлагай. Предложи более удобный способ слияния местных изменений конфы, и изменений, которые за это время сделало 1с.
Варианты "не пилить конфу вообще, юзать как есть" и "не обновляться, а по 5 лет пилить на основе версии со времен мамонтов" не принимаются как копетанские и очевидные.
Естественно, что вся эта лабуда рассматривается не с позиции конечного пользователя (которому по-хорошему вообще нехер лезть в конфигурятор), а с позиции 1с-франчайзи, который делает свою конфу на основе стандартной, или мальчика-программиста, которому начальник поручил что-то подпилить в их 1ске.
Блин, вот в моих словах уже всё нашли: и "предложение юзерам накатывать патчи самостоятельно" и "ругань 1с". Почему один я в них ничего из этого не вижу?..
по поводу мальчиков программистов дешевых, после которых звонят клиенты и просят хотя бы вернуть как было...бекапы это вообще отдельная тема для развговора
Само собой, никому такие сложности не нужны, контроль версий часто сводится к "забэкапили на всякий, руками поправили/перенесли, сохранили, залили потребителю".
Потому, в нашей реальности, в шараге будет храниться где-то количество конфигураций по числу обслуживаемых объектов помножить на правки.
Грустно, но правда. В одной знакомой конторе именно так. Там ни небо, ни Будда не знают, что, где, как и зачем.
В восьмёрке что-то там иначе, но общая суть ада говна сохраняется.
Но штука местами ОООЧЕНЬ тормозная, остальными местами просто медлительная (10-20 секунд), и вылетает часто (приходится перезаходить в конфигуратор), в общем, как все в России - идея хорошая, реализация страдает...
А вот все ссылки на него в конфигурации будут прибиты.
В любом случае, код из топика где-то лежит. Если это внешняя обработка, то пофиг на обновление базы, если внутри - его самого обновление и грохнет.
По-моему, так.
Gun sell.