1с 83 пример работы с com объектом. Три кита работы с COM-объектами. Работать через COM-соединение проще, чем вы думаете. Порядок установки COM-соединения
Компания АТОЛ сообщает о том, что терминал сбора данных Opticon SMART с драйвером АТОЛ получил сертификат «Совместимо! Система программ «1С:Предприятие»!
Что дает сертификат?
Какими конфигурациями 1С поддержан новый функционал?
Конфигурации 1С*, использующие БПО** версии 1.0.21 и выше.
Как начать пользоваться?
Выберите и установите на ТСД конфигурацию из папки Samples , например,
В папке Samples содержатся конфигурации:
- Полностью поддерживающие штатный функционал автоматической настройки справочников: Простой сбор данных с разделенными справочниками.ctf , Инвентаризация с вводом данных.ctf и др. Для работы таких конфигураций с 1С достаточно функционала, входящего в новую БПО.
- Для работы остальных типовых конфигураций с 1С используйте:
- Обновленную внешнюю обработку для 1С:Управление торговлей 10.3, 1С:Розница 1.0. Обработка входит в состав дистрибутива MobileLogistics,
- Обновленную внешнюю обработку для 1С:Торговля и Склад 7.7. Обработка входит в состав дистрибутива MobileLogistics,
- Готовые решения , доступные для заказа через прайс-лист компании АТОЛ → вкладка ПО АТОЛ → Готовые отраслевые решения.
За дополнительными доработками по интеграции MobileLogistics с 1С и другими системами обращайтесь к специалистам по контактам в разделе « ».
Выполните, пожалуйста, пять шагов:
Укажите параметры связи:
Выполните тест устройства:
После выполнения всех вышеперечисленных действий, можно начинать работать с ТСД и вести обмен данными с 1С.
Какое оборудование и ПО поддерживается новым функционалом?
- Терминалы сбора данных под управлением ПО MobileLogistics.
- АТОЛ: Драйвер ТСД версии 8.2 и выше. Драйвер входит в состав дистрибутива MobileLogistics 5.5, автоматически устанавливается и работает бесплатно.
* Конфигурации 1С, в составе которых присутствует БПО для работы с ТСД с помощью драйвера ТСД компании АТОЛ: 1С:Управление торговлей, ред. 11.1; 1С:Розница, ред. 2.0 ПРОФ и Базовая; 1С:УП (ERP) 2.0; 1С:Управление небольшой фирмой ПРОФ и Базовая; отраслевые решения, построенные на базе типовых. Список типовых конфигураций 1С, в состав которых входит БПО, может меняться. О порядке использования БПО в других конфигурациях уточняйте в Фирме 1С.
Один из вариантов обмена данными между базами 1С это обмен через COM соединение.
С помощью COM соединения можно из одной базы 1С подключиться к другой и прочитать или записать данные. Пользоваться этим методом можно как в клиент-серверных вариантах баз, так и в файловых базах. В этой статье и разберем примеры такого рода соединений. В примерах используется платформа 8.2.
Можно создать два вида COM объектов для приложения 1С. Это V82.Application
и V82.COMConnector
. В случае с V82.Application
запускается практически полноценный экземпляр приложения 1С. в случае использования V82.COMConnector
запускается небольшая серверная часть.
Скорость работы в этом случае выше, но некоторые функции могут быть недоступны. В частности работа с формами и с общими модулями для которых не установлено свойство работы с внешними соединениями. Преимущественно надо использовать V82.COMConnector
и только в случае нехватки функционала V82.Application
. Особенно сильно разница в скорости работы может быть заметна на базах большого объема.
Итак, приступим
- Создадим COM объект
- для V82.Application Соединение = Новый COMОбъект("V82.Application" ) ;
- для V82.COMConnector Соединение = Новый COMОбъект("V82.COMConnector" ) ;
- Сформируем строку подключения
- для серверного варианта базы СтрокаСоединения = "Srvr = " "ИмяСервера" ";Ref = " "ИмяБазы" ;
- для файлового варианта базы СтрокаСоединения = "File = " "ПутьКБазе" "; Usr = ИмяПользователя; Pwd = Пароль" ;
- Выполняем подключение к базе Попытка Подключение = Соединение. Connect(СтрокаСоединения) ; Исключение Сообщение = Новый СообщениеПользователю; Сообщение. Текст = + ОписаниеОшибки() ; Сообщение. Сообщить() ; КонецПопытки ;
- Разрываем соединение с базой
Соединение =
Неопределено
;
Для объекта V82.Application выполнять разрыв соединения обязательно, в противном случае останется висеть незавершенный сеанс, который потом придется удалять вручную. В случае с V82.COMConnector соединение разрывается автоматически при завершении процедуры в которой выполнялось подключение.И есть еще один маленький момент.
Для пользователя под которым выполняется подключение должен быть отключен флажок «Запрашивать подтверждение при закрытии программы» в его настройках.
А теперь соберем весь код в кучу
Соединение = Новый COMОбъект("V82.Application" ) ; //Соединение = Новый COMОбъект("V82.COMConnector"); СтрокаСоединения = "Srvr = " "Server1C" ";Ref = " "MyBase" "; Usr = Петя; Pwd = 123" ; //СтрокаСоединения = "File = ""С:\MyBase""; Usr = Петя; Pwd = 123"; Попытка Подключение = Соединение. Connect(СтрокаСоединения) ; Исключение Сообщение = Новый СообщениеПользователю; Сообщение. Текст = "Не удалось подключиться к базе" + ОписаниеОшибки() ; Сообщение. Сообщить() ; КонецПопытки ; Соединение = Неопределено ;
Для вида подключения V82.Application метод применяется для COM объекта, который создавался изначально, а для V82.COMConnector метод применяется к подключению. далее работа с запросом идет стандартными средствами 1С. в коде это выглядит так:
Запрос = Подключение. NewObject("Запрос" ) ; // для V82.COMConnector Запрос = Соединение. NewObject("Запрос" ) ; // для V82.Application Запрос. Текст = "ВЫБРАТЬ | ДолжностиОрганизаций.Код, | ДолжностиОрганизаций.Наименование |ИЗ | Справочник.ДолжностиОрганизаций КАК ДолжностиОрганизаций" ; Результат = Запрос. Выполнить () ; Выборка = Результат. Выбрать() ; Пока Выборка. Следующий() Цикл КонецЦикла ;
Для версии 1С:Предприятие 8.3 все остается без изменений за исключением того, что при создании COMОбъектов надо использовать «V83.COMConnector» или «V83.Application» .
Вопрос: Парсинг сайта через COM IE 11
Ответ:
Вопрос: COM-соединение 1С 8.3 - 1С 8.3 Есть ли возможность зайти в отладчик в соединении
Хотел спросить форумчан если ли вообще такая возможность отладки когда подключаюсь по СОМ-соединению с помощью обработки из одной базы на платформе 8.3.6 (БП 3.0) к модулю внешнего соединения самописной базы (тоже работающей на платформе 8.3.6) и вызываю из него экспортные процедуры с помощью обработки? Базы пока файловые и находятся на одном ПК, но планируется серверный вариант. До этого времени использовал конструкции приведенные ниже для передачи на выполнение произвольного кода по СОМ-соеднению, а также регистрации ошибок. Вот фрагменты процедур в самописной базе в модуле внешнего соединения:
Функция ИсполнитьВн(КодВыполнить, ВспомПараметр= "") Экспорт
ПроверкаБезопасности();// Защита от попытки выполнения вредоносного кода при внешнем подключении от имени другого пользователя
Ответ = "0
"//Если ничего не нужно будет возвращать, то при отсутствии ошибок в коде
 //вернется просто ОК
 //Т.к. переданный код может быть с ошибками, то завернем его исполнение в попытку.
Попытка
Выполнить(КодВыполнить);// Выполнение кода как строки на другом компьютере по COM-Соединению (Модуль внешнего соединения базы Весы)
Исключение
 //если все таки ошибка, то вернем ее текст
Ответ = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
КонецПопытки
;
Возврат
Ответ;
КонецФункции
Функция
ТестСвязи(ВхПараметр, ВыхПараметр) Экспорт
ПроверкаБезопасности();// Защита от попытки выполнения вредоносного кода при внешнем подключении от имени другого пользователя.
ВыхПараметр = "Есть связь с базой весы по
COM-Соединению!";
Возврат
Истина
;
КонецФункции
Из БП 3.0 выполняю такой фрагмент:
Попытка
Ком = Новый
COMObject("V83.COMConnector");
Соединение = Ком.Connect ("File=""C:\1
c\Базы_1С\Весы""; Usr =""КомОбмен""; Pwd =""1
"";");
СказатьПользователю("Тест пройден! Есть соедение с базой весов");
Исключение
Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
СказатьПользователю("Нет КОМ-соединения с базой Весов! Подробно "+Ошибка);
Ком=Неопределено
;
Возврат
;
КонецПопытки
;
Вых = "";
Вх = "1
";
Если
Соединение.ТестСвязи(Вх, Вых) Тогда
СказатьПользователю("Тест связи с конфигурацией весы успешный! Ответ: "+Вых);
Иначе
СказатьПользователю("Тест связи с конфигурацией весы неудачный! Ответ: "+Вых);
КонецЕсли
;
Понимаю, конечно что в оператор Выполнить(СтрокаКода1С8) зайти не удастся, но есть ли такая возможность при вызове удаленной процедуры модуля внешнего подключения из основной базы Соединение.ТестСвязи(Вх, Вых) зайти в ее код в этой же сессии отладчика в функцию ПроверкаБезопасности() их вызывающей процедуры?
Уже смотрел документацию что смог найти по этому вопросу. Ставил везде в обоих конфигурациях опции по разрешению отладки и точки останова. Запускал оба конфигуратора.
Есть ли вообще такая возможность в данной ситуации отладить допустим процедуру ПроверкаБезопасности() и дальше на стороне модуля внешнего подключения?
Вопрос: Неправильный IP-адрес в COM соединении
Есть обработка, которая перекидывает документы через V83.ComСonnector между серверами. Сервер 1 (версия 1С 8.2.19.90) всегда подключается к Серверу 2 (версия 8.3.8.2033). В строке соединения прописан IP адрес сервера 2 и работало все хорошо. На самом сервере 1 видел также установленную платформу как на сервере 2, версии 8.3.9.2033 (если это важно).
Проблема в том, что на Сервере 2 поменялся IP адрес, обработка конечно же перестала работать и когда я прописал новый IP в строке подключения, обработка выдает ошибку, в описании которой по-прежнему старый IP (!) и текст "Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера."
Все перезагружали, чистили кеши и тд, админы клянутся что с их стороны все ок, по RDP можно зайти с одного сервера на другой и тд.
Что может быть, как решить? Весь интернет перерыл, такой ситуации не нашел!
Ответ:
() 100% уверен! Второй день пробую, как и писал, отладчиком смотрю, даже создал одноклеточную обработку тупо для теста коннекта, вываливается та ошибка и все
Вопрос: COM соединение к разным версиям
Всем привет.
Имею базу аля "Консолидация", которая с разных баз собирает разные данные и сводит все в одну кучу. Проблема в том, что необходимо через com подключатся к этим базам, но они разных версий, соответственно в конечном итоге ловлю ошибку типа
Ошибка подключения!{ ВнешняяОбработка. ПереносИстории. Форма. Форма. Форма(12 )} : Ошибка при вызове метода контекста (Connect) : Произошла исключительная ситуация (V83. COMConnector. 1 ) : Несоответствие версий клиента и сервера 1 С:Предприятия Различаются версии клиента и сервера (8.3 . 8.1964 - 8.3 . 6.2332 ), клиентское приложение: COM- соединение
настрою одно соединение, отваливается другое...
Знаю что как то через службу компонентов можно создавать "свои классы (конекторы)" для каждой версии и потом создавать Новый COMОбъект соответствующего версии платформы класса... может я и ошибаюсь.
Помогите, победить эту проблемку...
Ответ: все... вопрос снимаю..
Вопрос: Com Ошибка в ОбработкаЗаполнения
Привет.
8.2 Розница 1.
коннектюсь к 8.1 Не типовая конфа.
Подключаюсь по com к базе и пытаюсь создать документ, но при вызове "СоздатьДокумент()" или "ПолучитьОбъект()" происходит ошибка процедуре ОбработкаЗаполнения . см рис.
Пробую то же самое в самой базе 8.1 но ни какой ошибки нет, и в ОбработкаЗаполнения тоже не вхожу.
В чем косяк то может быть?
Ответ: turboq , криво написанный модуль документа!
Добавлено через 5 минут
Она не вызывается! Она пытается скомпилироваться! Но так как при подключении через ComConnector РежимДиалогаВопрос НЕ СУЩЕСТВУЕТ, модуль документа не может быть скомпилирован.
Для таких случаев когда в модуле объекта необходимо реализовать работу с диалогом используют инструкции препроцессору
Это не твоя ошибка, а ошибка модуля документа в базе к которой ты подключаешься.
В базе код исполняется на клиенте и РежимДиалогаВопрос есть поэтому все происходит без ошибок
Используй не ComConnector, V8.Application для подключения, тогда тебе будут доступны интерфейсные вещи
Добавлено через 5 минут
=======================================================================================================================
из описания внешнего соединения (СП) Жирным выделил что тебе следует почитать про КомСоединения
Описание :
В общем и целом работа с 1С:Предприятием 8 через внешнее соединение подобна работе с 1С:Предприятием в режиме Automation сервера. Основные отличия заключаются в следующем:
- В случае Automation сервера запускается полноценное приложение 1С:Предприятия 8, а в случае внешнего соединения запускается относительно небольшой внутрипроцессный COM-сервер.
- При работе через внешнее соединение не доступны функциональные возможности, так или иначе связанные с организацией пользовательского интерфейса 1С:Предприятия 8;
- При работе внешнего соединения не используется модуль управляемого приложения (модуль обычного приложения) конфигурации 1С:Предприятия 8. Его роль при работе с внешним соединением играет модуль внешнего соединения.
- Более быстрая установка соединения, так как не требуется создания отдельного процесса операционной системы, а все действия производятся в рамках вызывающего процесса;
- Более быстрое обращение к свойствам и методам объектов 1C:Предприятия, так как для организации обращения не требуется организации межпроцессной коммуникации;
- Меньший расход ресурсов операционной системы.
- создается менеджер COM-соединений, с помощью которого производится установка соединения;
- производится обращение к методу Connect менеджера COM-соединений. Метод Connect возвращает внешнее соединение с информационной базой 1С:Предприятия 8;
- через внешнее соединение производится обращение к допустимым методам, свойствам и объектам информационной базы, с которой установлено соединение.
Внешнее соединение предоставляет полный доступ к своему глобальному контексту. Поэтому внешнее соединение в качестве своих методов может иметь: системные константы, значения заданных в конфигураторе объектов, доступ к которым осуществляется с помощью менеджеров (например, константы, перечисления, справочники, документы, журналы документов, отчеты, обработки, планы видов характеристик, планы счетов, планы видов расчета, регистры), а также переменные, объявленные в модуле внешнего соединения с ключевым словом Экспорт.
Доступность:
Интеграция.
Вопрос: COM соединение, план видов характеристик
Задача – программно создать новый элемент в известном плане видов характеристик через COM соединение. Соединение установлено, тут всё нормально.
Я пишу так:
ОписаниеТиповТек = Новый ОписаниеТипов ("СправочникСсылка. Контрагенты"); НазначениеСвойства = Соединение. ПланыВидовХарактеристик. НазначенияСвойствКатегорийОбъектов. НайтиПоНаименованию ("Справочник ""Физические лица"""); НовыйЭлемент = Соединение. ПланыВидовХарактеристик. СвойстваОбъектов. СоздатьЭлемент (); НовыйЭлемент. Наименование = НаименованиеСвойства; НовыйЭлемент. НазначениеСвойства = НазначениеСвойства; НовыйЭлемент. ТипЗначения = ОписаниеТиповТек;
Последняя строка не срабатывает. И это понятно, он находит такой тип для базы, где 1С запущен, но мне-то нужен тип для присоединённой базы. А как его получить?
В моём варианте просто создаётся элемент с типом значения «Произвольный список». Оно работает в принципе, но некрасиво как-то.
Плватформа 8.3. COM-соединение – непременное условие. Решения без его использования не интересуют.
Ответ:
Прокатывает. Спасибо, оно заработало.
Вопрос: COM соединение. Проблема с параметром запроса
Ответ:
Вопрос: Com соединение из файловой базы к файловой
Ответ:
Печать (Ctrl+P)
Один из вариантов обмена данными между базами 1С это обмен через COM соединение. С помощью COM соединения можно из одной базы 1С подключиться к другой и прочитать или записать данные. Пользоваться этим методом можно как в клиент-серверных вариантах баз, так и в файловых базах. В этой статье рассматривается такого рода соединений на платформа 8.3
com соединение
Можно создать два вида COM объектов для приложения 1С. Это ole соединения V83.Application и com соединения V83.COMConnector . В случае с V83.Application запускается практически полноценный экземпляр приложения 1С. В случае использования V83.COMConnector запускается небольшая серверная часть. Скорость работы в этом случае выше, но некоторые функции могут быть недоступны. В частности работа с формами и с общими модулями для которых не установлено свойство работы с внешними соединениями. Преимущественно надо использовать V83.COMConnector и только в случае нехватки функционала V83.Application . Особенно сильно разница в скорости работы может быть заметна на базах большого объема. Для платформе 8.2 используется V82.Application или V82.COMConnector
Установить OLE соединение
Соединение = Новый COMОбъект(“V83.Application” ) ;
Установить COM соединение
Соединение = Новый COMОбъект(“V83.COMConnector” ) ;
Строка подключения
//Для варианта клиент- сервер
СтрокаСоединения
=
“Srvr = “
“ИмяСервера”
“;Ref = “
“ИмяБазы”
;
//Для варианта файлового режима:
СтрокаСоединения
=
“File = “
“ПутьКБазе”
“; Usr = ИмяПользователя; Pwd = Пароль”
;
Попытка
Подключение
=
Соединение.
Connect
(СтрокаСоединения)
;
Исключение
Сообщение
=
Новый
СообщениеПользователю;
Сообщение.
Текст
=
“Не удалось подключиться к базе”
+
ОписаниеОшибки()
;
Сообщение.
Сообщить()
;
КонецПопытки
;
Разрыв соединения
Соединение
=
Неопределено
;
Для объекта V83.Application
выполнять разрыв соединения обязательно, в противном случае останется висеть незавершенный сеанс, который потом придется удалять вручную. В случае с V83.COMConnector
соединение разрывается автоматически при завершении процедуры в которой выполнялось подключение.И есть еще один маленький момент. Для пользователя под которым выполняется подключение должен быть отключен флажок «Запрашивать подтверждение при закрытии программы» в его настройках.
Метод NewObject()
Для создания нового объекта можно воспользоваться методом NewObject(), например:
для V83.COMConnector
ЗапросCOM =
Подключение.
NewObject(“Запрос
“
)
;
ТаблицаCOM =
Подключение.
NewObject(“ТаблицаЗначений”
)
;
МассивCOM =
Подключение.
NewObject(“Массив”
)
;
УидCOM =Подключение.NewObject
для V83.Application
ЗапросOLE =
Соединение.
NewObject(“Запрос
“
)
;
ТаблицаOLE = Соединение.
NewObject
(“ТаблицаЗначений”
)
;
МассивOLE = Соединение.NewObject
(“Массив”
)
;
УидCOM =Соединение.NewObject
(“УникальныйИдентификатор”,СтрокаУИД);
ЗапросCOM.
Текст =
“ВЫБРАТЬ
| ДолжностиОрганизаций.Код,
| ДолжностиОрганизаций.Наименование
|ИЗ
| Справочник.ДолжностиОрганизаций
КАК ДолжностиОрганизаций”
;
Результат =
ЗапросCOM.
Выполнить
()
;
Выборка =
Результат.
Выбрать
()
;
Пока
Выборка.
Следующий()
Цикл
КонецЦикла
;
Можно также использовать менеджеры объектов конфигурации:
СправочникCOM =
Подключение.
Справочники.
ИмяСправочника;
ДокументCOM =
Подключение.
Документы.
ИмяДокумента;
РегистрCOM
=
Подключение
.
РегистрыСведений
.
ИмяРегистра
;
Получение и сравнение перечисления через COM соединение
Для сравнения значений элементов перечислений, определенных в конфигурации, необходимо выполнить преобразование этих элементов к одному из примитивных типов, сравнение которых не вызывает трудности. Такими типами могут быть либо числовой, либо строковый тип. Преобразовать значение элемента перечисления к числовому типу можно так
ЭлементПеречисления = Подключение.Справочники.Справочник1.НайтиПоКоду(1).Реквизит1;
ВозможныеЗначения = ЭлементПеречисления.Метаданные().ЗначенияПеречисления;
НомерЭлементаПеречисления = ВозможныеЗначения.Индекс(ВозможныеЗначения.Найти(Соединение.XMLString(ЭлементПеречисления)));
Если НомерЭлементаПеречисления = 0 Тогда Сообщить(“ЗначениеПеречисления1” );
ИначеЕсли НомерЭлементаПеречисления = 1 Тогда Сообщить (“ЗначениеПеречисления2”);
КонецЕсли;
Получение объекта через COM по идентификатору
Через менеджеры объектов конфигурации получаем com объект, например:
ДокументCOM =
Соединение.
Документы.
ИмяДокумента;
Затем получаем строку уникального идентификатора:
СтрокаУИД =Соединение.string (ДокументCOM.УникальныйИдентификатор ())
Идентификатор
= Новый
УникальныйИдентификатор(СтрокаУИД)
;
СсылкаПоИдентификатору = Документы[ИмяДокумента].ПолучитьСсылку(Идентификатор);
Если нужно найти com объект по документ по идентификатору, то тогда нужно написать так:
УидCOM
= Соединение.NewObject
(“УникальныйИдентификатор”,СтрокаУИД
);
СсылкаПоИдентификатору = Соединение.Документы[ИмяДокумента].ПолучитьСсылку(УидCOM);
)Все верно
Одновременно, я видел не раз, когда просто "взлетали" публикации которые не тянули даже на 10 баллов.
Почему так происходило? Видимо потому, что кому то они явно пришлись по душе.
Я про это и говорю, что было бы неплохо не читая статью по рейтингу понять насколько она тебе нужна, или оценить ее не так примитивно +/-. Насчет пришлась по душе я бы скорректировал так: она так много набрала из-за того что так звезды сложились и на сайте собралось много народу и многим понравилось, сами понимаете это дело случая т.к. как только статья уходит с главной страницы то ее уже можно найти только по запросу, а так голосуют все мимо проходящие. И поддерживать на главной, насколько я понимаю, позволяют как раз постоянные комментарии = раскрутка статьи.
Именно для этого и ставят магазины на проходных улицах - ведь часто важно не качество и актуальность товара, а проходимость места, люди гуляя часто покупают то что выкинут на следующий день, просто ради процесса. Это давно всем известная болезнь - шопомания. Или просто увеличения потока увеличивает вероятность нужного покупателя.
А плюсы и минусы... - это всего лишь некое "спасибо" за потраченное время и труд
Т.е. минус тоже считается за "спасибо"? Я вот и хотел узнать ваше отношение к тому нужно ли ставить в таких случаях его, и как интересно считают другие? Ставить ли его когда статья вредная/плохая или когда она тебе просто бесполезная/пустая.
На мой взгляд статья смахивает на просто повышение рейтинга, т.к.:
1. Приведенные мной проблема с типами вообще проигнорирована автором, хотя он не поленился написать кучу комментов.
2. В статье явная неточность: сказано что можно только так
V82 = Новый COMобъект("V82.ComConnector"); Код = КонтрагентСОМ.Code;
а вот я спокойно делаю при помощи обработки вот так:
Сообщить(База.Справочники.Контрагенты.НайтиПоНаименованию("ООО").Код);
и все нормально! А подключение выбираю V82.ComConnector
Странно как-то что автору совершенно плевать на то что его статья содержит такие проблемы на которые указали, а он не реагирует никак.
3. А ведь есть еще проблема когда выскакивает ошибка "Класс не существует"
4. А есть проблема когда установлена 8.2, а потом установлена 8.1 - попробуйте-ка обменяться по ОЛЕ/COM типовым обменом УТ-БП!
5. Могли бы указать основные обработки на сайте которые позволяют универсально подключаться по ОЛЕ/COM чтобы новички не тратили времени, вы же для них пишите! Та же кстати ее картинка почему то у вас красуется, с чего бы?. А в результате 2 слова по существу, и еще 6 за кадром.
В общем, я не поливаю грязью, а указываю на конкретные пробелы, но реакции ноль. Если это тот опыт которым вы делитесь то он какой-то ошибочный и неполный.
Я к тому что если бы у автора было бы желание собрать все глюки то он бы мог хотя бы прислушаться к чужому опыту, а не огрызаться на комменты. Тут же складывается ситуация когда тот кто прочел ее знают больше чем автор, говорят ему (иногда и некорректно), а он еще и отбивается. В итоге вся информация не в статье, а в коментах! Забавно! Так часто бывает, но не нужно при этом упирать на то что хотели как лучше - я же показываю как лучше, и другие показывают! Включите это в статью и она будет стоящая, не всем же интересно читать эту перепалку.