INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Утробин Михаил | Руководитель отдела внедрения 1С | Группа Компаний ЛАД

«Как не надо внедрять 1С:ERP. Развеем мифы о внедрении»

На примере 8-9 советов хочу рассказать о том, как лучше подойти к внедрению ПП 1С у себя на предприятии. МИФ 1: Внедрим и автоматизируем сразу все! МИФ 2: Учет в единой базе - это хорошо! МИФ 3: Лучший внедренец - Программист, по совместительству Администратор МИФ 4: Установим и начнем вести учет, а там разберемся! МИФ 5: Хочу максимальную функциональность ERP! МИФ 6: Лучшее время перехода на новую систему - с 1 января МИФ 7: Ввод в эксплуатацию нам не нужен, так как пользователи прошли обучение, сами разберутся МИФ 8: На поддержке сэкономим. Кто не разберется урежем премию При этом в рассказе могу добавить примеры на реальных кейсах, как это было на наших проектах. К чему привело то или иное решение, как правильно, как неправильно. В целом, при подходе используя метод "как не нужно делать", объясняется, как же все-таки на самом деле нужно внедрять проект. В этом и есть суть доклада.

UE: Copy/Paste через буфер обмена Windows справочников, документов и др. ссылочных объектов между идентичными конфигурациями (Безлимитная лицензия)

Обработки - Универсальные обработки

55
Реализация копи-паста ссылочных объектов между идентичными конфигурациями сделана в виде расширения Universal Extensions (v 3.1) с использованием буфера обмена Windows. Это рабочий механизм которым Вы можете перенести выделенные непосредственно в списках форм объектов из одной базы в другую без каких - либо временных файлов.

ДОБАВИЛ БЕЗЛИМИТНУЮ ЛИЦЕНЗИЮ

Новая версия UE дает возможность использовать буфер обмена по вашему усмотрению.

В новой версии UE (3.1) реализована работа с буфером обмена Windows. Для этого реализовано 2 метода

  1. ПоместитьДанныеВБуферОбмена(Данные, ФорматДанных)
  2. ПолучитьДанныеИзБуфераОбмена(ФорматДанных)

Процедура ПоместитьДанныеВБуферОбмена принимает 2 параметра:

  1. Данные (тип строка) - данные для помещения в буфер обмена.
  2. ФорматДанных (тип строка) - произвольный строковый идентификатор имени формата данных. Используется для того, чтобы в последствии получить помещенные данные из буфера.
Функция ПолучитьДанныеИзБуфераОбмена принимает один параметр - ФорматДанных (тип строка). Используется для получения из буфера данных, помещенных в него предыдущим методом.
 
Оба этих метода определены в форме UE. Доступ к ним из расширения осуществляется ч/з переменную "ВладелецФормы".
Пример:
ВладелецФормы.ПоместитьДанныеВБуферОбмена(ПолучитьСерелизованныйМассивXMLДанныхОбъектов(ВыделенныеСтроки),"XML_Data (Серелиз массив)");
XML_Data = ВладелецФормы.ПолучитьДанныеИзБуфераОбмена("XML_Data (Серелиз массив)"); 
 
В примере показано, как данные (строковые данные) помещаются в буфер, и как их из буфера получить.
 
Если UE не нашел данных в буфере запрашиваемого формата, то функция возвращает пустую строку.
 

Функционал представленного расширения

В архиве лежит обработка Universal Extensions v3.1, изначатьный состав которой (описан в главной статье) расширен новым Расширением Расширение_БуферОбменаWin.

В нем реализовано 2 команды:

Copy

 

 

Данная команда помещает выделенные объекты в ввиде XML в буфер обмена

Paste (после вставки надо немного подождать, чтоб данные внеслись в базу, и обновить список :-) )

 

 

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

Реализация очень простая. Заняла не более 1 часа.

Жду Ваших комментариев и предложений.

PS: на примере копирование происходит в УТ11 на платформе 8.2, а вставка на копии этой базы (до добавления 2-х новых заказов), но уже на платформе 8.3 

55

Скачать файлы

Наименование Файл Версия Размер
UE 3.1 с расширением Copy/Paste
.epf 392,85Kb
27.03.18
123
.epf 392,85Kb 123 Скачать
Безлимитная лицензия
.key 0,30Kb
27.03.18
4
.key 0,30Kb 4 Скачать

См. также

Комментарии
Сортировка: Древо
1. davdykin 17 31.03.14 10:38 Сейчас в теме
А как в данном решение на счет ссылочной целостности. Синхронизация, я так понимаю, по ГУИД?
2. MarSeN 965 31.03.14 10:52 Сейчас в теме
Перенос происходит средствами серелизации.
Да, получается что переносятня гуиды ссылочных объектов и простые типы.
3. Dr.Aziw 01.04.14 09:35 Сейчас в теме
4. Evgen.Ponomarenko 531 01.04.14 14:34 Сейчас в теме
5. AllexSoft 01.04.14 14:46 Сейчас в теме
давно пора подобный механизм да средствами платформы, жаль 1С нас пока не слышет (
6. MarSeN 965 01.04.14 14:56 Сейчас в теме
(5) AllexSoft,
У 1С рабочих рук не хватает. Хорошо они не ставят палки в колеса нам, смертным, кто пытается упростить некоторые операции )
GalKo; AllexSoft; +2 Ответить
14. Evgen.Ponomarenko 531 02.04.14 10:19 Сейчас в теме
(6)
У 1С рабочих рук не хватает.
Мозгов у них рабочих не хватает ))) Хорошо, что на ИС хватает и того и другого ;)
ZVN; wolfsoft; +2 1 Ответить
15. AllexSoft 02.04.14 12:12 Сейчас в теме
(14) Evgen.Ponomarenko, надеюсь они сюда заглядывают и черпают идеи... кстати, зазеркалье 1С оживилось, постоянно новости интересные появляются... это не может ни радовать ! лично у меня появилась надежда что какие то подвижки в сторону улучшений связей с 1С-общественностью все же есть!
16. MarSeN 965 02.04.14 12:24 Сейчас в теме
(15) AllexSoft,
Да, 1С стала обращать внимание на то, в какую сторону смотрит общество 1С-программистов.
Новшества в 8.3 явно взяты не с потолка. Обратите внимание на то, что сделанные "фишки" покрывают некоторые сторонние разработки.
17. Evgen.Ponomarenko 531 02.04.14 12:37 Сейчас в теме
(15) AllexSoft,
Зазеркалье оживилось действительно... в целом это радует. Печалит то, что к примеру "Рефакторинг" от 1С ничего общего с действительным рефакторингом не имеет. В данном случае произошла подмена понятий: "Поиск и замена модальных диалогов" ;)
Типа "Смотрите! - В конфигураторе теперь есть новая фишка!" Вот если бы в зазеркалье была возможность постить, вот это был бы шаг навстречу сообществу...
А так у Нуралиева свои мечты, у разработчиков платформы свои, у нас свои.
А пользователь хотел только одного: "Стабильности" ))))

ПС
К стати, "нормальный рефакторинг" начинается с нормализации структуры БД.
Потом начинается уже функциональный рефакторинг.
18. MarSeN 965 02.04.14 13:00 Сейчас в теме
(17) Evgen.Ponomarenko,
Согласен.
Еще вариант "подьбы навтсречу" - если бы в конфигуратор добавили возможность подгружать свои скрипты и модули. Тогда бы 1С могла сосредоточить свои усилия на стратегических направлениях разработки
20. Evgen.Ponomarenko 531 02.04.14 13:16 Сейчас в теме
(18)
Если бы в конфигуратор добавили возможность подгружать свои скрипты и модули.

Я себе уже сделал такую фишку - пятый год наслаждаюсь )))

Тогда бы 1С могла сосредоточить свои усилия на стратегических направлениях разработки

Мне понравилась идея виждетов в Wordpress-е. Инсталируешь плагин (модуль) и виджет (визуальную часть)
настраиваешь параметры и вперед!!! Они не делят приложение на серверную часть и клиентскую.
Они делят приложение на: Базу данных, функциональную часть, визуальную часть.
И точка! красота )))
19. AllexSoft 02.04.14 13:06 Сейчас в теме
(17) Evgen.Ponomarenko, согласен полностью... хотя с другой стороны сколько времени конфигуратор вообще не развивался, что я рад даже этому "псевдо зачатку рефакторинга"
А вот камментить статьи в зазеркалье действительно было бы полезно! Может Доржи предложить сделать тут раздел в типа Замеки из зазеркалья, чтобы все могли каментить не на 1с.ру, так хоть тут...
Evgen.Ponomarenko; MarSeN; +2 Ответить
22. Evgen.Ponomarenko 531 02.04.14 13:17 Сейчас в теме
7. ssn5810 82 02.04.14 08:02 Сейчас в теме
они только конфигурации до "ожирения" могут доводить
8. BodunOff 02.04.14 09:04 Сейчас в теме
Кхм, у меня кроме пунктов "Справка" и "Закрыть" ничего не отображается. Розница 2.1, платформа 8.3.4.437. Как быть?
9. MarSeN 965 02.04.14 09:24 Сейчас в теме
(8) BodunOff,
У вас режим работы "отдельные окна"?
если да, тогда Вам надо открыть форму списка в режиме отдельного окна. Т.е. нажимаете на shift и кликаете на ссылку списка в панели навигации.

Можно так-же копировать одиночные объекты. Открываете документ и в меню именно документа (как на gif-ках только не главного окна, а окна документа) выбираете Copy. Так-же для вставки нужно проделать
Но лучше конечно, если у вас режим отдельных окон - использовать shift при открытии списков.

Дело в том что UE работает только если текущее окно есть в наборе окон, возвращаемых методом ПолучитьОкна(). В режиме отдельных окон все что открывается не в режиме окна - окна не имеет и UE не может работать с такой формой.
То же самое для рабочего стола в режима закладок
10. MarSeN 965 02.04.14 09:26 Сейчас в теме
(8) BodunOff,
Если не получится, обязательно напишите в личку. Я Вам помогу разобраться.
12. BodunOff 02.04.14 09:57 Сейчас в теме
(10) Спасибо, всё заработало! "+" обязательно за меганужную полезняшку!
13. MarSeN 965 02.04.14 10:01 Сейчас в теме
11. Temniy 8 02.04.14 09:30 Сейчас в теме
21. adapter 478 02.04.14 13:17 Сейчас в теме
идея с копи\пастом хорошая. только некоторые баги в реализации. Например запустить обработку в двух базах одновременно не удалось. Пытается при втором запуске переписать длл-ки, а они открыты при первом запуске. Пришлось код немного поправить:

&НаКлиенте
Процедура ПриОткрытии(Отказ)

	ПутьККомпоненте	= КаталогВременныхФайлов() + "UniversalExtensions.dll";
	ВремФайл = Новый Файл(ПутьККомпоненте);
	Если Не ВремФайл.Существует() Тогда
		ДвоичныеДанные	= ПолучитьИзВременногоХранилища(ПолучитьДЛЛ());
		ДвоичныеДанные.Записать(ПутьККомпоненте);
	КонецЕсли;
	
	ПутьКЛицензии	= КаталогВременныхФайлов() + "license.key";
	ВремФайл = Новый Файл(ПутьКЛицензии);
	Если Не ВремФайл.Существует() Тогда
		ДвоичныеДанные	= ПолучитьИзВременногоХранилища(ПолучитьЛицензию());
		ДвоичныеДанные.Записать(ПутьКЛицензии);
	КонецЕсли;
	
	Успех = ПодключитьВнешнююКомпоненту(ПутьККомпоненте,"UniversalExtensions",AddInType.Native);
	Если Успех Тогда 
		
		ПолноеИмяОбработки = ПолучитьИмяОбработки();
		ФормаМеню 	= ПолучитьФорму(ПолноеИмяОбработки + ".Форма.ue",Новый Структура("ПутьККомпоненте,ПутьКЛицензии",ПутьККомпоненте,ПутьКЛицензии),,,ВариантОткрытияОкна.ОтдельноеОкно);
		ФормаМеню.Init(ПолучитьПользовательскиеНастройки());

	КонецЕсли;
	
	Отказ 		= Истина;
КонецПроцедуры

&НаСервере
Функция ПолучитьИмяОбработки()
	вОбъект				= РеквизитФормыВЗначение("Объект");
	ПолноеИмяОбработки  = вОбъект.Метаданные().ПолноеИмя();
    Возврат ПолноеИмяОбработки;
КонецФункции // ПолучитьИмяОбработки()


Функция ПолучитьДЛЛ()
	вОбъект				= РеквизитФормыВЗначение("Объект");
	ДвоичныеДанные		= вОбъект.ПолучитьМакет("UniversalExtensions");
	Возврат ПоместитьВоВременноеХранилище(ДвоичныеДанные);
КонецФункции	
Показать


Ну и ссылочной целостности у подхода нет. Т.е. перенос объектов возможен только если в реквизитах ссылочных типов ничего не менялось. А если допустим добавили нового поставщика в спр, то накладная уже переносится с <Объект не найден>. Надо рекурсии прикручивать и т.д.
23. MarSeN 965 02.04.14 13:24 Сейчас в теме
(21) adapter,
при таком подходе при закрытии UE или закрытии базы должна валиться ошибка при попытке удалить файл dll (в форме ue). Там тогда временно поставьте попытку/исключение. Думаю даче обфусцированность кода не помешает вам это сделать )
Я обязательно предусмотрю одновременное открытие обработки в нескольких базах.
почему не сделал сразу - это временная защита от того чтобы нельзя было запустить обработку в базе повторно.
Спасибо!
24. MarSeN 965 02.04.14 13:28 Сейчас в теме
(21) adapter,
По ссылочной целостности - тут не так все однозначно.. Наверное проще открыть документ, увидеть что есть битая ссылка и скопипастить недостающий объект. Ваш вариант предполагает перенос большого объема информации, отчасти ненужной.
Как вариант можно прикрутить механизмы конвертации данных
но, ИМХО, изначально предложенный подход более прост в использовании и прозрачен в понимании того, что надо сделать при появлении битых ссылок.
25. DoctorRoza 02.04.14 13:36 Сейчас в теме
26. Светлый ум 233 04.04.14 09:46 Сейчас в теме
*А на обычных формах вариант есть ?
27. MarSeN 965 04.04.14 09:55 Сейчас в теме
(26) Светлый ум,
На обычных формах такого варианта нет, так как 1С в обычном режиме не предоставляет список открытых окон 1С ( ПолучитьОкна() не работает )

Обычные формы постепенно вымирают.
28. Himik861 11 18.04.14 07:34 Сейчас в теме
Скажите пожалуйста в подбор товара в документах закупки можно сделать что бы тоже работало.
30. MarSeN 965 18.04.14 10:21 Сейчас в теме
(28) Himik861,
Да, быстрый поиск работает во всех динамических списках
29. Himik861 11 18.04.14 09:38 Сейчас в теме
Ошибка не найдено поле ВналичииОстаток. У меня запрос в подборе переделан и не работает теперь. Не подскажите как это исправить.
31. MarSeN 965 18.04.14 10:23 Сейчас в теме
(29) Himik861,
ВналичииОстаток

Быстрый поиск не использует таких полей. Смотрите ваш подбор. Видимо там где-то ошибка
32. Himik861 11 21.04.14 04:05 Сейчас в теме
У вас ошибка!!!! если в подборе стоит галочка "Только в наличии на складе" то выскакивает ошибка "не найдено поле ВНаличииОСтаток", как это исправить. Пробовал на типовой 11.1.2.31. Есл она не стоит то все проходит нормально.
33. MarSeN 965 21.04.14 09:12 Сейчас в теме
(32) Himik861,
Форма обработки QuickSearch - не 100% рабочий вариант. Об этом написано в статье.
UE предоставляет Вам возможность организовать поиск. Вам надо самим написать-допилить безбажный код.
34. AKV77 228 03.09.15 11:41 Сейчас в теме
Автор, указывайте что ваша разработка требует лицензию ! Тратить стартмани на просмотр окошка не есть хорошо !
35. MarSeN 965 03.09.15 15:55 Сейчас в теме
(34) AKV77,
Согласен, не хорошо.
напишите в личку или на почту s.marchenko77 собака mail ру и я вам вышлю актуальную лицензию.
36. retif 16.03.16 00:39 Сейчас в теме
37. retif 16.03.16 00:41 Сейчас в теме
а строки в ТЧ тоже копирует и вставляет?
38. MarSeN 965 16.03.16 10:13 Сейчас в теме
(37) retif,
В примере копирования через буфер обмена этого нет.
UE, это механизм, который дает вам возможность сделать копирование строчек документа.
39. Shalnov 72 05.12.17 13:45 Сейчас в теме
Оставьте свое сообщение