Вторник, 26.11.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 176
Гостей: 176
Пользователей: 0
Главная » 2017 » Июнь » 20 » Обновление 1С
17:09
Обновление 1С

Обновление 1С

Чтобы можно было работать с информацией, где-то должна храниться сама информация и набор инструментов (программы) которые с этой информацией работают (читают, выводят на экран, записывают при нажатии кнопки «Сохранить»).
Кроме того здесь работа не просто с информацией (нажатия кнопок человеком, играющим в компьютерную игру это тоже информация, которую обрабатывает компьютер). Здесь работа с базой данных, т.е с набором таблиц, в которых хранятся однотипные данные. Обычно существуют программы, которые позволяют работать с базами данных напрямую, т.е без использования написанных специально для этой базы данных программ.
Меняться тот может всё. Пользователь меняет данные (в базе данных) когда добавляет или корректирует документы. Программист чаще всего дописывает новые инструменты выбирающие и показывающие данные пользователю. В первом случае меняются ДАННЫЕ. Во втором случае меняется ПРОГРАММА. Изменение структуры базы данных это, по сути, тоже изменение ПРОГРАММЫ хотя информацию в появившиеся поля будет вводить пользователь и сама эта информация будет ДАННЫМИ.
Теперь самое интересное: а как сделать так чтобы содержимое компьютера (данные и программа) поменялось? С данными всё понятно. Пользователь их постоянно меняет. Но ведь программа это тоже какой-то файл с информацией, т.е попросту говоря набор байт, который тоже можно заменить  на какой-то другой. Самый привычный и обычный вариант обновления программы – примитивное копирование нового варианта в каталог, в котором содержится программа. А вот с изменениями баз данных могут возникнуть сложности, решаемые более или менее простым способом. Можно в новую версию программы добавлять строки, проверяющие соответствие структуры данных тому, что должно быть и меняющие базу, если, например, нет нужных полей в справочнике. Можно выдать пользователю не только новую программу (которую надо скопировать в каталог) но и некий текстовый файл (один раз вносящий изменения в структуры) с категорическим требованием «Запустить на выполнение обязательно». 
Обновления всех видов информаций на компьютера – постоянная задача которую постоянно как-то решают. Во-первых, программист чаще всё-таки работает на своей машине а не на общей (иначе напортить что-то можно) и только потом вносит изменения в рабочей базе. Во-вторых, локальные сети как то, что позволяет менять информацию хотя бы на всех компьютерах одной организации появились позже чем отдельные компьютеры. Оббежать и что-то сделать даже на 10 машинах довольно утомительно потому и начали придумывать инструменты, позволяющие перевесить эту работу на пользователя.
У 1С такие инструменты тоже есть. Более того, 1С - довольно необычная по методу хранения информации среда. Не зря основной рабочий инструмент там назван «Конфигуратор». Это тоже подчёркивает то, что тут всё принципиально другое. В 1С в одном файле (грубо говоря) хранится и программа и данные….  Это означает что изменение программ когда кто-то работает вообще невозможно (не рекомендуется, однажды у меня «вилы выстрелили»), т.е можно только работать у себя на отдельной машине а потом вносить изменения в рабочую базу с помощью тех или иных инструментов обновления.
Сразу оговорюсь, что ОБНОВЛЕНИЕ это не тот «непонятный» файл который надо запустить и он сам всё сделает. «Обновление» это операция по внесению изменений в информации(!) на компьютере. Делать это можно самыми разными способами.
Вот здесь:
http://akostina76.ucoz.ru/blog/2017-06-17-4203

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

После этого у меня появился отдельный файл ВсеГородаПоМесяцам.erf с которым я запросто могу работать вообще не меняя конфигурацию, а открывая его через файл->открыть:

Это немножко показывает как с этим всем на самом деле работают. Кому-то потребовалась какая-то бумажка из серии «такое же но без крыльев и с перламутровыми пуговицами». Лепится это бумажка из уже имеющегося отчёта за 15 минут, не приходя в сознание. Её как-то используют, потом теряют или забывают что это вообще было и зачем. Обновление программы требуется – обновление дадено. Далеко не всякий, жаждущий новой бумажки способен добраться до конфигуратора и сделать вот это:

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

… т.е сохраняю всю информацию о ПРОГРАММЕ в файле с расширение CF. Этот CF передаётся пользователю и пользователь у себя должен сделать вот так:

После этого появится окно со списком отличий двух программ:

Тут именно отличия. Можно сравнить вообще разные программы и он найдёт и выдаст отличия в виде целого списка всех модулей программы.
Есть две варианта обновления (вообще всего, к 1С и этой теме это не имеет отношения). Первый тип такой, как выше, т.е сравнение двух вариантов и внесение изменений если найдено отличие. Второй вариант – сохранение информации обо всех сделанных изменениях в виде журнала со строками «20 июня 15.30 пользователь Иванов заменил в накладной 123 по строке Товар_1 количество с 6 на 7». Этот журнал (с какого-то момента) может быть отправлен на другие машины где программа обновления информации выполнит те же действия, которые делали пользователи за какой-то период.
Здесь не так. Ничто не фиксирует все мои действия на машине. На другую машину передаётся имеющийся вариант и предлагается сделать такой же.
В таблице выше в колонке «Основная конфигурация» то, что уже есть на машине. У меня добавлен отчёт «Новый отчёт» и поле (реквизит) «Новое поле для ввода информации». Понятно что нет их в основной конфигурации потому вместо них в колонке написано «Отсутствует».
А вот в форме элемента справочника «Объекты» у меня название теперь написано большими буквами с кучей восклицательных знаков. Это отличие тоже зафиксировано. Но форма (экранный вид и тексты) – штука довольно сложная. Склеивать отдельные названия полей довольно сложно. А вот, не разбираясь в деталях, заменить всю форму на вариант из присланной конфигурации просто. Это и предлагается сделать. Это и надо делать ничего не опасаясь если со своей стороны (в программные тексты!!!) не вносилось каких-то изменений. А вот если со своей стороны в той форме шрифт, например, был изменен на какой-то другой то надо разбираться и склеивать изменения вручную потому что при перезаписи из присланной конфигурации все эти изменения (программ!) пропадут.
Из-за возможности таких сложных ситуаций инструмент обновления довольно гибкий. Можно вообще убирать галки и часть изменений (вызванных отличиями) не будут вноситься. А можно менять установленое по умолчанию действие:

Обычно требуется взять присланную конфигурацию и сделать свою такую же. Потому по умолчанию в колонке «Режим объединения» везде стоит «Взять из вариант из файле» (при каких-то отличиях). Можно это поменять.
Чтобы внести все выбранные изменения достаточно нажать кнопку «Выполнить» снизу.
Т.е в большинстве случаев для обновления требуются три действия:
1] Выбрать элемент меню Конфигурация –> Сравнить, объединить с конфигурацией из файла.
2] Найти и выбрать файл CF эталонной конфигурации
3] Нажать в появившемся окне кнопку «Выполнить».
Это означает, что можно взять имеющийся вариант, начать вводить в него какую-то информацию. Когда потребуется другой вариант программы достаточно выполнить эти три действия после чего программа будет новая а введённые данные из неё никуда не денутся. Данные никуда не денутся потому, что их никто и не меняет при изменении конфигурации (программы).

Чтобы поменять сразу и программу и данные надо сделать вот так:

… с файлом DT, который я периодически выкладываю, создавая через пункт «Выгрузить информационную базу». На словах они сэкономили. Правильнее было бы записать Выгрузить/загрузить конфигурацию и информационную базу (в DT файле содержится и то и другое). Естественно, затирать такой загрузкой свои данные вовсе не обязательно.
Есть ещё одна довольно неприятная ситуация – серьезное изменение базы при которой происходит не только изменение структуры (добавление или удаление таблиц или полей) но и заполнение этих таблиц или полей какими-то данными из уже имеющейся базы данных.
Добавление поля «Родитель3» это тот самый случай. Изменением конфигурации тут не обойтись. Нужно ещё менять сами данные. Но это просто лишнее действие, обычно нажатие ещё одной кнопки. Ведь у себя же в базе мне надо было заполнить это поле информацией. Не вручную же это делать. Значит инструмент заполнения точно написан. Его просто надо запустить и на своей базе чтобы с данными было всё как надо.
Вот он этот инструмент:

«спрятан» во «Всех действиях» под названием «Обновить служебные поля ниже». Причем элемент «Служебные поля» чисто отладочный. Он просто вычисляет всех этих «родителей» добираясь до «корня» «ветки» и выдаёт на экран значения. Мне просто было лень в отладчике проверять эту функцию. Элементы меню никому тут не мешают просто потому что сюда обычно никто не смотрит. Но они есть (т.е написаны) и они именно тут.
При всей простоте того, что надо сделать ситуация довольно плохая потому что понято и привычно работать с обновлением через CF. Как бы просты не были прочие, дополнительные действия они непривычны. Потому лучше брать за основу конфигурацию в которой уже всё понятно с основными принципами работы механизма. С этим «Родитель3» у меня были сомнения. Теперь их нет. И вот так сходу не придумаю что ещё тут может появиться такого же.
Что касается ошибок в текстах, т.е в данных. А вот это уже данные, которые меняет пользователь а не программист. Это надо просто менять, когда это найдено. Благо сделать это не сложно.
Наверное можно (нужно?) будет написать довольно примитивную обработку (тоже инструмент) которая будет искать и менять написанное с ошибкой слово по всему тексту (и всей базе).
Писать там нечего, но у меня сейчас настроения нету. Можно хоть из сложного поиска выдернуть вот это:
Процедура НайтиВоВсехСтроках(ПоисковоеВыражение)
  ЗнчСписок = Новый СписокЗначений;
  ТабСписок = Новый ТаблицаЗначений;
  ТабСписок.Колонки.Добавить("HTML_вид",Новый ОписаниеТипов("Строка"), "HTML_вид", 0);
  ТабСписок.Колонки.Добавить("ТекстСсылки",Новый ОписаниеТипов("Строка"), "ТекстСсылки", 0);
  ТабСписок.Колонки.Добавить("Текст1",Новый ОписаниеТипов("Строка"), "Текст1", 0);
  ТабСписок.Колонки.Добавить("ПолеДанных",Новый ОписаниеТипов("Строка"), "ПолеДанных", 0);
  ТабСписок.Колонки.Добавить("Текст2",Новый ОписаниеТипов("Строка"), "Текст2", 0);
  Шт=ПолнотекстПоиск.ПолучитьВесьСписок(ПоисковоеВыражение,
                        ЗнчСписок,ТабСписок);
  // Выбор длинный строк:
  Для Каждого Эл Из ЗнчСписок Цикл
              ТипЗ = ТипЗнч(Эл.Значение);
              Если ТипЗ = Тип("СправочникСсылка.ДлинныеЦитаты") Тогда
                           СсылкаДлСтроки = Эл.Значение;
….
…а дальше в этот цикл по найденному вставить ПолучитьОбъект() по ссылке длинной строки и поиск с заменой через СтрЗаменить().
ПолучитьВесьСписок() это функция которая везде ищет поисковое выражение и возвращает два массива (того, что найдено). Осталось только отфильтровать из всего этого найденное в длинных строках и сделать с ним что угодно (т.е заменить в строке ошибочное на правильное).

Нужность этого инструмента тоже под вопросом. Никто же не заставляет вводить только что отсканированную книгу. А если с текстами всё в порядке то и не нужен инструмент их изменения позволяющий это делать с промышленной скоростью и в промышленных объемах.

Просмотров: 237 | Добавил: akostina76 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Поиск
Календарь
«  Июнь 2017  »
ПнВтСрЧтПтСбВс
   1234
567891011
12131415161718
19202122232425
2627282930
Архив записей
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Copyright MyCorp © 2024
    Бесплатный конструктор сайтов - uCoz