Отладка внешней печатной формы в управляемом приложении (с редактированием и записью)

20.04.23

Разработка - Инструментарий разработчика

+ 1 способ отладки внешней печатной формы в управляемом приложении (управляемые формы). Уверяю Вас, это быстро и удобно. Не нужно каждый раз обновлять конфигурацию, сохранили внешнюю форму и можно сразу проверять.

 

Очень удобно и быстро отлаживать печатные формы как-раз в виде внешних печатных форм. Отпадает необходимость каждый раз сохранять конфигурацию для проверки внесённых изменений. Этот момент оценят те кому нужно доработать печатную форму в рабочей базе с подключенными и работающими пользователями.

Предположим необходимо отладить внешнюю печатную форму "ДоговорПоставки.epf".
Подключаем её к базе и смотрим на режимы публикации.

Многие видели кнопку "Режим отладки" во внешних печатных формах, но никогда не проверяли что она делает?
(подсказка: ничего не делает).

Давайте задействуем эту волшебную кнопку!

Ищем в своей конфигурации такую строку:  

ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, , БезопасныйРежим);

Из комментариев: 
С какого то релиза поменялось строка для поиска в конфигурации на:

ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, , БезопасныйРежим, ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений());

Проще место искать по следующей строке:

ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, , БезопасныйРежим

(ищем простым поиском, она там одна такая.
Или по адресу "ОбщиеМодули" -> "ДополнительныеОтчетыИОбработки" -> "Функция ПодключитьВнешнююОбработку(Ссылка) Экспорт",
вторая строка снизу)

И заменяем на такие:

Если Ссылка.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.РежимОтладки Тогда
	Результат = Менеджер.Создать("D:\Отладка\"+Ссылка.ИмяФайла, БезопасныйРежим); //Результат можно при желании проверить.
	ИмяОбработки = Ссылка.ИмяОбъекта;	
Иначе
	ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, , БезопасныйРежим);	
КонецЕсли; 

 
Обратите внимание! По адресу "D:\Отладка\" уже должна лежать ваша печатная форма, например "D:\Отладка\ДоговорПоставки.epf".

Теперь обработку можно открыть в конфигураторе и спокойно редактировать, сохранять и сразу-же проверять результат! 

Всем добра! Пользуйтесь )

Ставьте лайки, подписывайтесь на канал! ;)

П.С. Справедливо для конфигурации "Бухгалтерия для Украины, редакция 2.0", в других конфигурациях можно применить схожий подход.

См. также

SALE! %

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

12000 10000 руб.

02.09.2020    164132    910    402    

885

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 руб.

20.08.2024    9623    78    34    

86

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    16118    39    9    

75

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    24678    79    48    

124

SALE! %

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

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

15000 10000 руб.

10.11.2023    10943    40    27    

66

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3840 руб.

14.01.2013    189244    1146    0    

916

SALE! %

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 15000 руб.

07.10.2021    17751    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

2220 руб.

21.02.2023    8214    8    38    

24
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Intor_ 20.01.22 09:21 Сейчас в теме
То есть на каждую обработку менять код в общем модуле? Такое себе решение на самом деле.
zeropal; dreamwaver_dz; +2 Ответить
3. dreamwaver_dz 127 20.01.22 11:50 Сейчас в теме
(1) Поправил.
Теперь менять общий код не нужно.
Все внешние формы изначально помещаем в папку "D:\Отладка\" и получаем удовольствие от жизни )))
user712426; Bob_Dobr; v8_088; Andreeei; +4 Ответить
2. Famza 85 20.01.22 09:34 Сейчас в теме
Я бы предложил данный код не менять в исходном модуле, а использовать его в расширении.
RibD; user712426; gucci76; asterisk; Рамзес; Andreeei; Lapitskiy; +7 Ответить
4. dreamwaver_dz 127 20.01.22 11:51 Сейчас в теме
(2) На усмотрение пользующихся )))
user712426; +1 Ответить
5. mrChOP93 99 20.01.22 12:49 Сейчас в теме
Имхо, путь бы я прописал где нибудь в константе, а вместо Ссылка.ИмяОбъекта +".epf" прибавлял бы Ссылка.ИмяФайла
user1697848; Darklight; dreamwaver_dz; +3 Ответить
6. dreamwaver_dz 127 20.01.22 13:44 Сейчас в теме
(5) Дальнейшие плюшки и украшательства можно наворачивать любые.
Нет предела совершенству! )))
mrChOP93; +1 Ответить
7. dreamwaver_dz 127 21.01.22 18:04 Сейчас в теме
(5) Ссылка.ИмяФайла - норм совет. Внес в код.
8. sapervodichka 6923 23.01.22 12:45 Сейчас в теме
ОбщийМодуль.ДополнительныеОтчетыИОбработки серверный, поэтому путь к каталогу должен быть шара, которая видна на сервере и доступна пользователю агента сервера 1С (во многих случаях такого доступа нет). Либо это файловая база 1С. Сам ПФ внешние создаю с формой отладки по шаблону. За Публикацию однозначный плюс, потому что я об этом не знал, спасибо автору +1
ipzotov; Рамзес; Boabinga; Altez; Award; Darklight; user1303515; +7 Ответить
9. Yashazz 4796 23.01.22 12:51 Сейчас в теме
Авторам БСП безусловный минус, вот что. За столько лет не сделать адекватный способ отладки внешек - это хз кем быть надо.
А предложенный способ, как и любое вмешательство в конфу либо написание расширений, по сути - костыль, вызванный к жизни именно дурацким способом подключения внешек.
ansonat; Yakud3a; programmer_87; Alex-krk; imam; uk09; FoxDW; unknown181538; arz; vodorosl; EvgeniyOlxovskiy; Alex1c; zinzillya; TariK; Рамзес; Altez; Award; Darklight; EliasShy; unichkin; +20 Ответить
13. Бэнни 210 23.01.22 20:55 Сейчас в теме
(9) Мне казалось, что создание отладочной формы в самой обработке с 10-ю строчками кода, полем и кнопкой на форме самый простой способ отладки. Зачем что-то выдумывать еще?
_pl; adhocprog; yghmd; Izumov; maldinitaly; zaic; A.Belash; Darklight; ixijixi; HAMMER_59; olololeg; TimurD; +12 1 Ответить
22. dreamwaver_dz 127 24.01.22 16:18 Сейчас в теме
(13) Печатная форма зависит от содержимого объекта. Проще в открытом объекте изменить значения и нажать "Печать", чем отдельно открывать объект, вносить изменения, и бегать потом по окнам и искать кнопку с полем.
24. Бэнни 210 24.01.22 16:21 Сейчас в теме
(22)проще. Но проще на два нажатия мышкой. А сколько беготни с доработкой отладки и подменой пути сохранения обработки? Отладочная форма же содержит на 90% шаблонный код, готовый к копипасту.
26. dreamwaver_dz 127 24.01.22 16:35 Сейчас в теме
(24)
А сколько беготни с доработкой отладки и подменой пути сохранения обработки?

А вот тут не понял...

В самой обработке ничего не меняется. Любая внешняя форма "как есть" просто подключается в базу и всё.

Что может вызвать затруднения?
Поместить в заранее известную папку сам файл обработки и открыть в конфигураторе? Нажать кнопку "Режим отладки"?

Это весь измененный код, больше ничего менять нигде не нужно.

Дальше только работаем над совершенствованием самой обработки! )
vodorosl; Andreeei; +2 Ответить
14. TimurD 6 23.01.22 21:19 Сейчас в теме
(9) Без обид, запомнил твой ник, т.к. ты постоянно чем то не доволен. В любой статье. При чем здесь БСП? Отлаживать отчеты внешние просто. ПриКомпоновкеРезультата пишем стандартный код по формировании СКД, смотрим в макет компоновки, какой(ие) запрос там в итоге сформировался, анализируем и пр. Есть различные консоли запросов, которые могут выципить текст запроса с параметрами, потом в обработке колдуем, проверяем и пр. Либо через УправляемаяКонсольОтчетов, она вроде В БСП идет, в нагрузку, в файлах поставки (шаблона). Что касается других видов ВО, то самый простой вариант это эмуляция. К примеру ПФ, делаем форму в обработке, там кидаем на форму нужную ссылку, имитируем печать (вызываем процедуру модуля объекта внешней обработки), и отлаживаем. Вот и все вот и все. Ни каких откровений.
15. Yashazz 4796 23.01.22 21:50 Сейчас в теме
(14) Ты, кажется, не понял, о чём я говорю. Все методы отладки я прекрасно знаю и сам, спасибо. Но концепция, при которой вызов идёт через "Выполнить"/"Вычислить", что самоочевидно отрицает возможность отладки, это не лучшая на мой взгляд концепция, а в БСП принята была именно она.

И да, в 90% случаев я недоволен. Перфекционизм, пнимаашь, с одной стороны, и крайне низкий уровень качества всего и вся с другой - увы, а что поделать. Хотя история знает обратные случаи; такая вот загогулина)
Yakud3a; Yuri1988; uk09; cleaner_it; Рамзес; CornCrake; artbear; Altez; +8 Ответить
16. TimurD 6 23.01.22 23:17 Сейчас в теме
(15)
"Выполнить"/"Вычислить"
только в ДлительныхОперациях используется, и то не создает ни каких проблем при отладке. То, что в БСП бывают косяки (редко, незначительные), это не новость. А говорить о том что все плохо и все (почти) идеи Г, ну такое...
18. Yashazz 4796 24.01.22 11:48 Сейчас в теме
(16) "редко и незначительные"? Организуйте опрос, посмотрим на результаты. У меня немножечко другое мнение. Возможно, за последние полгода ситуация улучшилась, но, имхо, это костыль на костыле и изврат на изврате, о соблюдении их же собственных стандартов и не говорю уже.

ну вот да, негатив, и - увы, в изрядной степени обоснованный.
vodorosl; EvgeniyOlxovskiy; +2 Ответить
19. TimurD 6 24.01.22 12:33 Сейчас в теме
(18) Видимо мы в разных реальностях живем. Вам пора к психологу, на лицо выгорание. Я смотрю на все позитивно, и не расстраиваюсь понапрасну. Если вижу гденить косяк - правлю, либо сообщаю автору функционала, что там и так, если это важно. Ну и все в таком ключе. Тут брал много хорошего функционала, допиливал под себя, если находил косяки указывал на него и не выкидывал тонны Г, на автора, потому что тут он чуть ошибся. Всякое бывает.
29. Yashazz 4796 24.01.22 21:18 Сейчас в теме
(19) А я встречал на ИС такие, пардон, публикации, от которых, будь я их автором, со стыда сгорел бы. Равно как и натыкался на код в типовых конфах, за который его писателям точно гореть в аду. Вот это да, выгорание)

Вы совершаете одну частую, но неочевидную ошибку. Я не вываливаю тонны Г. на автора. Я вываливаю их на опубликованную поделку. Между "вы дурак" и "вы сделали дурость" есть огромная, но не всеми ощутимая разница. На личности я первым не перехожу.

И закончим оффтоп)
uk09; juraua; vodorosl; +3 Ответить
30. Altez 258 09.02.22 04:55 Сейчас в теме
(29) Дорабатывая чужие конфы, стараюсь не править подозрительные места, не называть сроков, не загуглив возможных проблем.
Пока старый сапёр не напишет отзыв - нет 100%, что твой код опирается на нечто стабильное.

Яков, как насчет авторского проекта по оценке качества технических решений в полуляхах?
На случай переговоров с ванильными менеджерами.

По теме: разрабы не решились добавить настроек в интерфейс (надо ж поддерживать совместимость с гиперконвергентной средой) и реализацию методики отладки оставили на откуп конечным пользователям (знакомился с ним на исходниках расширения "Универсальные инструменты"). Месседж 1с: кому надо по уму, себе сделает.
EvgeniyOlxovskiy; +1 Ответить
10. Sedaiko 591 23.01.22 13:11 Сейчас в теме
Именно для печатной формы этого делать смысла нет, т.к. можно из формы обработки вызвать нужную процедуру с передачей нужной ссылки
То же подходит и для серверных и клиентских вызовов.

Описанный метод может подойти если только к обработкам заполнения
11. aleks_p99 23.01.22 17:48 Сейчас в теме
В Подсистеме "Инструменты разработчика" есть такая возможность, с удобным интересом
unichkin; json; +2 Ответить
23. dreamwaver_dz 127 24.01.22 16:20 Сейчас в теме
(12) Фи, как не спортивно! ))))
Продвигать своё расширение и минусовать чужие простые решения )
Dansur; EvgeniyOlxovskiy; +2 Ответить
17. triviumfan 97 24.01.22 09:06 Сейчас в теме
Это же баян прямо баян.
@dreamwaver_dz, не стыдно?
И режим отладки тут не причём. Такие обработки выделаются красным цветом и доступны лишь пользователям с полными правами.
25. dreamwaver_dz 127 24.01.22 16:26 Сейчас в теме
(17) Я вот раньше таких коротких баянов не встречал ))) А не видел - значит не было.
И всё новое - это ж хорошо забытое старое )))

Не хотел никаких дополнительных форм, строчек кода. Хотел просто, нажал печать - попал в отладчик. Думаю справился.
20. unichkin 1581 24.01.22 15:53 Сейчас в теме
Самый нормальный и удобный способ отладить подключаемый отчет \ обработку - это использовать расширение "Инструменты разработчика". Способ требующий меньших трудозатрат, гораздо менее эффективный чем ИР т.к. позволяет лишь точечно отладить экспортные методы - см. https://infostart.ru/1c/articles/573461/
И дорабатывать таким образом модуль - это постоянный риск забыть убрать отладочный контекст из кода.
21. dreamwaver_dz 127 24.01.22 16:13 Сейчас в теме
(20) Роман, нет никакого отладочного кода. Сама обработка тоже не имеет никаких дополнительных строк.
Все внешние обработки в "чистом виде" просто держим в некоторой папке и из неё открываем в конфигураторе.
Ничего не дописываем, ничего никуда потом не переносим, никаких дополнительных движений.
По окончанию загрузили в базу последнюю версию и отключили режим отладки. Всё.
Рамзес; Andreeei; +2 Ответить
27. unichkin 1581 24.01.22 19:57 Сейчас в теме
(21) Это отладочный код. Для его вставки надо разлочить поставляемый модуль. Или Вы предлагаете на прод такое выкатывать?
Прикрепленные файлы:
28. dreamwaver_dz 127 24.01.22 20:48 Сейчас в теме
(27) Думаю это уже детали. Каждый для себя решит как использовать данный пример. (за "-" отдельное спасибо ))))
programmer_87; uk09; Andreeei; +3 Ответить
31. maraty 465 15.02.22 14:22 Сейчас в теме
Спасибо автору за "точку входа" для доработки. Для себя реализовал расширением.
1. В справочник ДополнительныеОтчетыИОбработки добавил реквизит доп_ПолноеИмяФайла (Строка(неорг)).
2. Вывел новый реквизит в форму
&НаСервере
Процедура доп_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	НовыйЭлемент = Элементы.Вставить("доп_ПолноеИмяФайла", Тип("ПолеФормы"),  Элементы.СтраницаДополнительнаяИнформация, Элементы.ГруппаОтступ);
	НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
	НовыйЭлемент.ПутьКДанным = "Объект.доп_ПолноеИмяФайла";
	НовыйЭлемент.ТолькоПросмотр = Истина;
	
КонецПроцедуры
Показать

3. Доработал сохранение реквизита при загрузке обработки
&НаКлиенте
&Перед("ОбновитьИзФайлаПослеВыбораФайла")
Процедура доп_ОбновитьИзФайлаПослеВыбораФайла(ОписаниеФайла, ПараметрыРегистрации)

	Если ОписаниеФайла <> Неопределено Тогда
		ПараметрыРегистрации.Вставить("доп_ПолноеИмяФайла", ОписаниеФайла.Имя);
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
&После("ОбновитьИзФайлаНаСервере")
Процедура доп_ОбновитьИзФайлаНаСервере(ПараметрыРегистрации)

	ОбъектСправочника = РеквизитФормыВЗначение("Объект");  
	ЗаполнитьЗначенияСвойств(ОбъектСправочника, ПараметрыРегистрации, "доп_ПолноеИмяФайла");
	ЗначениеВРеквизитФормы(ОбъектСправочника, "Объект");
	
КонецПроцедуры
Показать

4. И конечно же доработка автора статьи
	#Удаление
	ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, , БезопасныйРежим,
		ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений());
	#КонецУдаления
	#Вставка     
	РеквизитыОбработки = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Ссылка, "ИмяОбъекта,Публикация,доп_ПолноеИмяФайла");
	Если РеквизитыОбработки.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.РежимОтладки Тогда
		Результат = Менеджер.Создать(РеквизитыОбработки.доп_ПолноеИмяФайла, БезопасныйРежим,
			ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений());
		ИмяОбработки = РеквизитыОбработки.ИмяОбъекта;	
	Иначе
		ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, , БезопасныйРежим,
			ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений());
	КонецЕсли; 	
	#КонецВставки
Показать

Тут немного мои правки, не люблю получать реквизиты ссылки через точку :)

Как ранее писали в комментариях, обработки должны лежать в папке, доступные с сервера.
olsy; sizeoff; Рамзес; onsi; dreamwaver_dz; +5 Ответить
32. user1364680 13.07.22 03:13 Сейчас в теме
(0) спасибо, камрад, годно)))
dreamwaver_dz; +1 Ответить
33. ivan65 28.08.22 09:44 Сейчас в теме
скажите плиз ,зделал все как написано в обработку заходит лежащую в папке, а отладка не работает? не останавливается
34. ivan65 28.08.22 09:48 Сейчас в теме
простите заработало ,все ОК, несомненная польза, люблю простые и верные решения.Спасибо
dreamwaver_dz; +1 Ответить
35. Vitvarg51 30.08.22 10:13 Сейчас в теме
Спасибо за решение, весьма пригодилось )))
dreamwaver_dz; +1 Ответить
36. dreamwaver_dz 127 01.09.22 18:02 Сейчас в теме
(35) Подскажите пожалуйста, а легко ли нашли это решение или не искали, а случайно встретили?
37. Vitvarg51 01.09.22 19:29 Сейчас в теме
(36) Нужна была возможность отладки уже подключённой обработки. Ваше решение нашлось достаточно быстро.
38. rbsoft 232 01.02.23 11:13 Сейчас в теме
Очень сэкономила время ваша методика! Спасибо!
dreamwaver_dz; +1 Ответить
39. dreamwaver_dz 127 01.02.23 20:23 Сейчас в теме
(38) Пожалуйста! )))
Именно поэтому и поделился с общественностью.
40. WrongLane 4 03.02.23 13:47 Сейчас в теме
Это сработает в клиент-серверном варианте?
41. dreamwaver_dz 127 03.02.23 19:51 Сейчас в теме
42. djserega 258 20.04.23 09:32 Сейчас в теме
С какого то релиза поменялось строка для поиска в конфигурации на:
ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, , БезопасныйРежим,
ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений());

Проще место искать по:
ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, , БезопасныйРежим
43. IgorXml 730 19.10.23 17:56 Сейчас в теме
Иначе делал. Но спасибо.
44. beldieff 25.10.23 14:52 Сейчас в теме
Согласен с (9) в отношении разработчиков БСП, какой это к черту способ отладки? Ниже по постам люди пишут как дорабатывают с новыми реквизитами в справочнике, подсовыванием общего модуля в расширение и правка кода. Что мешало сделать это сразу в БСП, чтоб людям не ломать конфу?
ansonat; uk09; +2 Ответить
45. shevlad 14.02.24 10:09 Сейчас в теме
Удобное решение, спасибо!
Добавлю еще, может кому пригодится: в серверной базе исправляемый код работает в фоне (по крайней мере, в актуальных типовых), и вываливается в исключение, если у пользователя стоит "Защита от опасных действий". Убираем ее и отладка работает. Ну и конечно же, пусть каждый сам решает, насколько это приемлемо для его ситуации, мне в копии норм.
programmer_87; +1 Ответить
Оставьте свое сообщение