Как в цикле перебрать элементы формы
25.12.14 – 13:42
Всем доброго времени суток.
Имеется 1С:Предприятие 8.3 (8.3.5.1186) “Управление торговлей и взаимоотношениями с клиентами (CRM)”, редакция 2.0 (2.0.2.5).
Стоит такая задача что по галочке на форме происходит пересчет всей табличной части документа. В таблице есть реквизит Номенклатура и на форме таблицы есть такой же реквизит. Пересчет по одной строке происходит без проблем при смене номенклатуры вызывается процедура
Процедура ТоварыНоменклатураПриИзменении(Элемент)
но надо так чтобы по галочке на форме пересчитывались все строки таблицы т.е. по каждой ее номенклатуре, кода в процедуре “ТоварыНоменклатураПриИзменении” очень много и он завязан на входящем параметре “Элемент” поэтому я вижу решение задачи это при изменении галочки обходить табличную часть формы подставляя в процедуру ТоварыНоменклатураПриИзменении по очереди все элементы табличной части, чтобы пересчет произвелся по все таблице. Делаю это вот так
&НаКлиенте
Процедура осиПересчетКомплектующихВвалютеПриИзменении(Элемент)
Для каждого ТекущаяСтрока Из Элементы.Товары Цикл
ТоварыНоменклатураПриИзменении(ТекущаяСтрока.ТоварыНоменклатура);
КонецЦикла;
КонецПроцедуры
Но выдает ошибку
{Документ.ЗаказКлиента.Форма.ФормаДокумента.Форма(9777)}: Итератор для значения не определен
Для каждого ТекущаяСтрока Из Элементы.Товары Цикл
Как перебрать таблицу формы?
Всем заранее за ответ.
1 – 25.12.14 – 13:44
Процедура КакПеребратьВсеСтрокиВТаблицеДокумента()
Для каждого СтрТовар Из ВыбДокумента.Товары Цикл
Сообщить(“Номенклатура: “+СтрТовар.Номенклатура);
КонецЦикла;
КонецПроцедуры
ВыбДокумента- реквизит на форме. То есть конкрентный выбранный документ.
Товары – табличная часть выбранного документа.
но что такое ВыбДокумента не могу понять ?
2 – 25.12.14 – 13:45
(0) Таблица на форме просто выводит данные, которые находятся в реквизитах. Дальше продолжать?
3 – 25.12.14 – 13:45
Зачем пересчитывать таблицу на форме? Туда же реквизиты ТЧ выводятся или нет? Вот ТЧ и пересчитывай.
4 – 25.12.14 – 13:51
Мне просто нужно получить Элемент табличной части Товары на форме колонки ТоварыНоменклатура как это можно сделать ?
5 – 25.12.14 – 13:53
(4) Прочитать книжку “1с для чайников за 21 день”.
Элементы.Товары.ТекущиеДанные
6 – 25.12.14 – 13:53
(4) а можно в картинках? У тебя ТЧ в ТЧ что ли?
7 – 25.12.14 – 13:54
(6) нет, автор не знает, что такое запятая.
8 – 25.12.14 – 13:55
ТоварыНоменклатура это поле элемента формы табличной части Объект.Товары.Номенклатура
9 – 25.12.14 – 13:57
такая же ошибка
10 – 25.12.14 – 13:57
(8) Так. Ты хочешь, чтобы при установке определенной галочки пересчитывалась вся ТЧ? Ну и пересчитывай, в чем проблема?
11 – 25.12.14 – 13:58
(9) потому что ТекущиеДанные это уже строка. А надо Объект.Товары обходить, а не элементы на форме
12 – 25.12.14 – 14:00
Для каждого ТекущаяСтрока Из Объект.Товары Цикл
Как мне отсюда получить Элемент? формы? реквизита Номенклатура?
13 – 25.12.14 – 14:00
(12) Зачем?
14 – 25.12.14 – 14:01
(12) Автор, зачем тебе “элемент? формы? реквизита Номенклатура?”
15 – 25.12.14 – 14:01
(12) ТоварыНоменклатураПриИзменении(ТекущаяСтрока.ТоварыНоменклатура) – вот сюда попадает уже Номенклатура. Прям ссылка. Никаких элементов
16 – 25.12.14 – 14:01
17 – 25.12.14 – 14:01
на картнику
18 – 25.12.14 – 14:01
А, ну щас все стало ясно
19 – 25.12.14 – 14:02
20 – 25.12.14 – 14:03
Для каждого ТекущаяСтрока Из Объект.Товары Цикл
ТоварыНоменклатураПриИзменении(ТекущаяСтрока.ТоварыНоменклатура);
КонецЦикла;
то как раз процедура ТоварыНоменклатураПриИзменении ругается что
{Документ.ЗаказКлиента.Форма.ФормаДокумента.Форма(9778)}: Поле объекта не обнаружено (ТоварыНоменклатура)
ТоварыНоменклатураПриИзменении(ТекущаяСтрока.ТоварыНоменклатура);
21 – 25.12.14 – 14:07
Ты когда уже до 80 уровня дорастешь?
22 – 25.12.14 – 14:11
(20) ТоварыНоменклатураПриИзменении() – это твой метод или такой в 1с есть?
23 – 25.12.14 – 14:12
Общий модуль создавал?
24 – 25.12.14 – 14:13
(22) Предполагаю, что это событие модуля формы при изменении номенклатуры в ТЧ.
25 – 25.12.14 – 14:13
Для каждого ТекущаяСтрока Из Объект.Товары Цикл
ТоварыНоменклатураПриИзменении(ТекущаяСтрока.Номенклатура);
КонецЦикла;
26 – 25.12.14 – 14:13
(24) Я тоже
27 – 25.12.14 – 14:14
только я не могу понять почему элемент формы который требует процедура ТоварыНоменклатураПриИзменении то же самое что и Объект.Товары.Номенклатура
28 – 25.12.14 – 14:15
(27) думаем и удивляемся
29 – 25.12.14 – 14:17
так кто то советовал какую то книжку прочитать по этому поводу еще раз можно )))
30 – 25.12.14 – 14:18
(29) Ну ты охренел. Тему сложно посмотреть?
Рекламное место пустует
31 – 25.12.14 – 14:18
куча книг
???????????? Инвестируй! ????????????
Дарим месяц торговли без комиссии! Акции, облигации, валюта, ETF.
Источник
20.12.10 – 06:44
есть форма в ней ТП – заполняется из другой формы
в этой форме необходимо по кнопки автоматом включать оключать флаги и потом из модуля формы вызвать процедуру и в качестве параметра передать масси отмеченных в форме заказов.
не получается получить доступ к значениям элементов подскажите как преавильно
Процедура ВключатьФлаг() Экспорт
Для Счетчик =1 По ЭтаФорма.ЭлементыФормы.ТПЗаказы.Количество() Цикл
ЭтаФорма.СписокЗаказов.Флаг = Истина;
КонецЦикла;
1 – 20.12.10 – 06:45
Процедура ОсновныеДействияФормыДалее(Кнопка)
МСписокЗаказов = Новый массив();
СписокЗаказов = Этаформа.ЭлементыФормы.ТПЗаказы;
Для каждого Заказ Из СписокЗаказов Цикл
Если Заказ.Флаг = Ложь Тогда
Продолжить;
Иначе
МСписокЗаказов.Добавить(СписокЗаказов.Заказ);
КонецЕсли;
КонецЦикла;
2 – 20.12.10 – 06:45
но не получается получать значения табличного поляя в форме что не верно
3 – 20.12.10 – 06:50
грубо говоря как из текущей формы получить достуа к данным в этой форме
4 – 20.12.10 – 06:55
(0)
Юзай не элементы формы, а источник ТП.
5 – 20.12.10 – 06:55
поток сознания
6 – 20.12.10 – 06:57
там с флажками мутно как-то…
7 – 20.12.10 – 07:04
есть форма на ней ТП – Табличное поле уже заполнено,содержит тЧ документа,которому принадлежит форма
в ТП 2 колонки – флаг – булево,Заказ – ссылка.заказы
надо из модуля формы автоматом заполнить все/отключить все флаги в тп, затем вызвать процедуру.передав в качестве параметра список заказов с флагом истина
8 – 20.12.10 – 07:05
Для Счетчик =1 По ЭтаФорма.ЭлементыФормы.ТПЗаказы.Количество() Цикл
ЭтаФорма.СписокЗаказов.Флаг = Истина;
КонецЦикла;
тут хочу перебрать все строки ТП и присвоить новые значения флажку
9 – 20.12.10 – 07:06
не получается получить лоступ к данным вот и спрашиваю что не так
10 – 20.12.10 – 07:07
потом из формы хочу вызвать процедуру с параметром Список заказов и передать туда спичок заказов с флагом истина
МСписокЗаказов = Новый массив();
СписокЗаказов = Этаформа.ЭлементыФормы.ТПЗаказы;
Для каждого Заказ Из СписокЗаказов Цикл
Если Заказ.Флаг = Ложь Тогда
Продолжить;
Иначе
МСписокЗаказов.Добавить(СписокЗаказов.Заказ);
КонецЕсли;
КонецЦикла;
тут пытаюсь этот папаметр определить
11 – 20.12.10 – 07:08
(9) Тогда вопрос не в том как перебрать таб поле, а в том почему нет доступа к данным.
Какой источник данных установлен у ТП, в которое нужно установить флажки?
12 – 20.12.10 – 07:11
табличная часть ДокументОбъект.СписокЗаказов
13 – 20.12.10 – 07:11
нет доступа я наверно неправильно выразился…просто непонятно КАК обратиься к этим данным,ИЗМЕНИТЬ их
14 – 20.12.10 – 07:12
(12)Ну так и делай
Для каждого Стр Из СписокЗаказов Цикл
Если МоеУсловиеДляфлага Тогда
Стр.Флаг =Истина;
КонецЕсли;
Конеццикла;
15 – 20.12.10 – 07:14
в отладчике смотрю из модуля формы получается что СписокЗаказов – неопределено
16 – 20.12.10 – 07:16
грубо говоря из имодуля формы не могу поняит как обратиться к ТЧ
17 – 20.12.10 – 07:16
сама текущая форма заполняется из другой формы и открывается модально
18 – 20.12.10 – 07:19
(16)Смотришь в модуле “другой формы” или той где СписокЗаказов?
19 – 20.12.10 – 07:20
+вообще покажи код заполнения и открытия формы.
20 – 20.12.10 – 07:21
смотрю в модуле где ДокументОбъект.СписокЗаказов
21 – 20.12.10 – 07:23
(20)Может ты смотришь в модуле объекта , а не формы?
22 – 20.12.10 – 07:24
причем объекта из которого заполняется другая форма
23 – 20.12.10 – 07:25
Запрос.УстановитьПараметр(“ДатаОстатков”, ОбщегоНазначения.ПолучитьДатуОстатков(ЭтотОбъект));
ФормаЗаказы = Документы.ПриходныйОрдерНаТовары.ПолучитьФорму( “Форма”);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = СписокЗаказов.Добавить();
НоваяСтрока.Заказ = выборка.заказ;
НоваяСтрока.Флаг=Истина;
ФормаЗаказы.ЭлементыФормы.ТПЗаказы.Значение=СписокЗаказов;
КонецЦикла;
ФормаЗаказы.Открыть();
код формы документа..отрабатывает корректно форма открывается и заполняется
24 – 20.12.10 – 07:26
Для каждого Стр Из ТПЗаказы Цикл
Если МоеУсловиеДляфлага Тогда
Стр.Флаг =Истина;
КонецЕсли;
Конеццикла;
Для Счетчик =1 По ЭтаФорма.ЭлементыФормы.ТПЗаказы.Количество() Цикл
ЭтаФорма.СписокЗаказов.Флаг = Истина;
КонецЦикла;
КонецПроцедуры
на вызываемой форме кода модуля как такового нет есть кнопка по ней хочу выставить флажки
25 – 20.12.10 – 07:30
(23)Создаешь новый документ ПриходныйОрдерНаТовары ,заполняешь его и открываешь?
Тогда надо где то так:
///————–
НовДок=Документы.ПриходныйОрдерНаТовары.СоздатьДокумент();
ФормаЗаказы = НовДок.ПолучитьФорму( “Форма”);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = НовДок.СписокЗаказов.Добавить();
НоваяСтрока.Заказ = выборка.заказ;
НоваяСтрока.Флаг=Истина;
КонецЦикла;
ФормаЗаказы.Открыть();
26 – 20.12.10 – 07:33
его там и не надо для доступа к таб части. Дальше как в (14)
27 – 20.12.10 – 07:33
нужно через дополнительное заполнениее Товаров дать возможность заполнить по нескольки заказам
для этого ищу все заказы по контр. вывыливаю их в новую форму гдк есть флаг и ссылка на заказ пользователь ставит там флажки и вызывает другую форму со списком заказов
28 – 20.12.10 – 07:35
форма новая создается в ней заполняется ТП по зпросу..теперь надо выставить иметь возможность из этой формы отключить/включить все флаги
29 – 20.12.10 – 07:35
(27)Документ УЖЕ существует или ты НОВЫЙ делаешь?
30 – 20.12.10 – 07:35
(28)Форма документа в отрыве от объекта- жовольно бессмысленное явление.
Рекламное место пустует
31 – 20.12.10 – 07:35
* довольно
32 – 20.12.10 – 07:38
так вот в этой новой форме в ее модуле не могу работать с данными в этой форме, в частности как получить доступ к флажкам и ввсзветси их
33 – 20.12.10 – 07:39
документ уже существует
34 – 20.12.10 – 07:40
(32)Если она НОВАЯ, то тебе нужно сначала сделать НОВЫЙ документ и получить его форму. т.е (25). Если ты открываешь форму существующего, то тебе его анло найти, спозиционироваться – И ПОЛУЧИТЬ ЕГО ФОРМУ. Осознай уже что документ это не обработка. Он хранится в базе пообъектно и форма без объекта не имеет смысла.
35 – 20.12.10 – 07:41
(34)Тогда ищи док и получай его форму
36 – 20.12.10 – 07:41
ОДИНЕСНИК! Хватит пыль глотать офисную! Для тебя удаленка отстатыщрублевая!
Заполни анкету, работай из дома! С CORS consulting это норма!
Источник
09.08.10 – 10:21
Всем привет. Казалось бы примитив – а не работает.
Для Каждого РеквФормы Из ЭтаФорма.Метаданные().Реквизиты Цикл
…
А массив реквизитов – пустой. Хотя в конфигураторе смотрю на вкладке реквизитов формы – их КУУЧА
1 – 09.08.10 – 10:23
Рекомендую выяснить, что возвращает “ЭтаФорма.Метаданные()”. Ну чисто так, чтобы глупостями не страдать.
А по теме – никак. Переходи на 8.2
2 – 09.08.10 – 10:23
(1) 1С:Предприятие 8.2 (8.2.11.236)
3 – 09.08.10 – 10:25
(1) ЭтаФорма.Метаданные() возвращает – все нормуль
ЭтаФорма.Метаданные() Перемещение живка ОбъектМетаданных
ДополнительнаяФорма Неопределено
Имя “ПеремещениеЖивка” Строка
Комментарий “” Строка
Макеты КоллекцияОбъектовМетаданных КоллекцияОбъектовМетаданных
МодульОбъекта Неопределено
ОсновнаяФорма Форма ОбъектМетаданных
Реквизиты КоллекцияОбъектовМетаданных КоллекцияОбъектовМетаданных
Синоним “Перемещение живка” Строка
Справка Неопределено
ТабличныеЧасти КоллекцияОбъектовМетаданных КоллекцияОбъектовМетаданных
Формы КоллекцияОбъектовМетаданных КоллекцияОбъектовМетаданных
4 – 09.08.10 – 10:26
Да, забыл сказать что форма – внешней обработки
5 – 09.08.10 – 10:27
(3) Не слушаешь ты меня…
6 – 09.08.10 – 10:28
7 – 09.08.10 – 10:31
не пойдет?
8 – 09.08.10 – 10:33
(7) Это элементы формы, а не реквизиты. К тому же, не все.
9 – 09.08.10 – 10:36
(8) мда, соврамши (((
10 – 09.08.10 – 10:38
(5) Прошу просчения. не догоняю слегка. Возвращает Значение: Перемещение живка, Тип: ОбъектМетаданных
11 – 09.08.10 – 10:42
(10) Очисти у формы основной реквизит, поймешь.
З.Ы. Форма, конечно, неуправляемая, да?
12 – 09.08.10 – 10:42
неуправляемая
13 – 09.08.10 – 10:44
(11) то бишь не получится по реквизитам пройтись?
14 – 09.08.10 – 10:45
Попытка
Обработка = Обработки[СокрЛП(ИмяОбработки)].Создать();
ПараметрыОбработки.Очистить();
Для Каждого Рекв из Обработка.Метаданные().Реквизиты Цикл
Если Рекв.Имя = “Авто_Регламент” Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = ПараметрыОбработки.Добавить();
НоваяСтрока.ИмяПараметра = Рекв.Имя;
НоваяСтрока.ЗначениеПараметра = Обработка[Рекв.Имя];
КонецЦикла;
Исключение
КонецПопытки;
15 – 09.08.10 – 10:45
Для Каждого ЭлементФормы Из ЭлементыФормы Цикл
// это имя реквизита объекта или формы, на форме этот элемент данных может быть не в одном экземпляре
ДаннныеИмя = ЭлементФормы.Данные;
// это имя элемента формы связанного с данными
ЭлементФормыИмя = ЭлементФормы.Имя;
КонецЦикла;
16 – 09.08.10 – 10:46
(14) У (0) нет реквизитов обработки, есть только реквизиты формы.
(15) А если нет элемента формы? Будет обломайтунг.
17 – 09.08.10 – 10:48
(15) так не прокатит. реквизит формы не обязательно должон быть ее элементом
18 – 09.08.10 – 10:48
(16) ну пусть заведет, какие проблеммы?
19 – 09.08.10 – 10:49
(18) реквизиты обработки и нужны только как внешний энтерфейс, а реквизиты формы это ВНУТРЕНЕЕ описание
20 – 09.08.10 – 10:49
задам вопрос более корректно: МОЖНО ЛИ ПЕРЕБРАТЬ РЕКВИЗИТЫ ФОРМЫ ВНЕШНЕЙ ОБРАБОТКИ, И ЕСЛИ ОТВЕТ УТВЕРДИТЕЛЬНЫЙ, ТО КАК? ))))
21 – 09.08.10 – 10:51
(20) теоретически можно только ВНУТРИ ЭТОЙ ОБРАБОТКИ, так-как они ВНУТРЕНИЕ
22 – 09.08.10 – 10:51
(20) Не ори, не дома. И дома не ори.
У неуправляемой формы – никак. На то она и неуправляемая.
23 – 09.08.10 – 10:51
(16) вопрос автора “Как в цикле “пробежаться” по реквизитам формы”
Если реквизит объекта не расположен на форме, то смысл его получения при обходе этой формы каков?
Я использую такие обходы для тонкого управления доступностью полей формы, когда объект содержит рассширенные статусы, введенные искуственно, например “в раболте, утвержден, подписан, в ахзве”. Для различных статусов свои наборы доступности ДАННЫХ объекта. А уже где и сколько раз они расположены на форме – этот простейший обход ловит.
24 – 09.08.10 – 10:51
(18) Понятия не имею, надо у него и спрашивать 🙂
25 – 09.08.10 – 10:52
(20) Мне внутри и надо. именно из модуля этой же формы
26 – 09.08.10 – 10:53
(23) Разницу между реквизитами объекта и формы понимаешь?
(25) Тебе в (18) уже какбэ намекнули.
27 – 09.08.10 – 10:56
23. не блин, не пониманию.
работы с данными мне достаточно, а пришлепки на формах не столь важны
28 – 09.08.10 – 11:05
Строго говоря можно только через … непрямой путь (https://infostart.ru/public/57431/)
???????????? Инвестируй! ????????????
Дарим месяц торговли без комиссии! Акции, облигации, валюта, ETF.
Источник
14.02.08 – 11:00
Помогите. Есть форма, на которой около 30 реквизитов и надо установить их видмостьдоступность. Очень не хочется прописывать каждый и я не могу вспомнить можно ли их все перебрать в цикле или нет. По примеру СписокЗначения.РазмерСписка() может есть у объекта Форма метод, где возвращается количество реквизитов в ней, чтобы построить цикл? Помогите)
1 – 14.02.08 – 11:02
Были такие темы. Рекомендую поиском воспользоваться.
2 – 14.02.08 – 11:02
метаданные рулят
3 – 14.02.08 – 11:02
нет нету так ручками
4 – 14.02.08 – 11:03
кому верить в этой жизни?)))
5 – 14.02.08 – 11:04
(2) Я имею ввиду не реквизиты ОБЪЕКТА, а реквизиты формы. Т.е. в методанных их нет
6 – 14.02.08 – 11:07
(1) Поиск в данный момент не работает. При “тычке” на ссылке “ПОИСК” предлагает сохранить файл find.php
7 – 14.02.08 – 11:07
ВК,Руктями,или задать “правильные” идентификаторы или вести список …
8 – 14.02.08 – 11:09
(7) Млин, стенографистку чтоли нанять, чтоб печатала, а?
9 – 14.02.08 – 11:14
(4) рекламе, а так фпоиск
10 – 14.02.08 – 11:16
(8) можно конечно распаковать МД найти все элементы формы и в список
11 – 14.02.08 – 11:16
(8) обленился совсем.
12 – 14.02.08 – 11:17
КоличествоАтрибутов()
СИНТАКСИС:
КоличествоАтрибутов()
НАЗНАЧЕНИЕ:
Возвращает количество атрибутов расширяемой формы.
ПРИМЕР:
ФормаРасш = СоздатьОбъект(“РасширениеФормы”);
ФормаРасш.УстановитьФорму(Форма);
СписокИд = СоздатьОбъект(“СписокЗначений”);
Для Х = 0 По ФормаРасш.КоличествоАтрибутов() – 1 Цикл
СписокИд.ДобавитьЗначение(ФормаРасш.ПолучитьАтрибут(Х).Идентификатор());
КонецЦикла;
.
.
ПолучитьАтрибут(<?>)
Замечание по многострочной части:
Для атрибута МногострочнаяЧасть возможно только получение/установка координат.
СИНТАКСИС:
ПолучитьАтрибут(<Номер>)
НАЗНАЧЕНИЕ:
Возвращает объект АтрибутФормы.
ПРИМЕР:
ФормаРасш = СоздатьОбъект(“РасширениеФормы”);
ФормаРасш.УстановитьФорму(Форма);
ФормаРасш.ПолучитьАтрибут(5).Слой = “Основной”;
ПАРАМЕТРЫ:
<Номер> – номер или строка с идентификатором атрибута формы, проинициализированной
методом УстановитьФорму(). Для получение доступа к многострочной части формы необходимо
в этот метод передать строку МногострочнаяЧасть.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ:
Возвращает объект АтрибутФормы
13 – 14.02.08 – 11:18
для каждого реквизит Из ЭлементыФормы Цикл
14 – 14.02.08 – 11:18
15 – 14.02.08 – 11:19
(12) ну так это ВК то конечно
16 – 14.02.08 – 11:22
(11)Ну я думал вумные дядьки щас откроют мне глаза на новые не прописанные в ЖКК методы юзанию объекта Форма. До последнего лелеял надежду что ща каааак захерачу цикл а-ля
Для Сч=1 По Форма.КоличествоРеквизитов() Цикл
Рек=Форма.ПолучитьАтрибут(Сч);
Рек.Видимость(0);
КонецЦикла
Эх… Вся жизнь на смарку )))))))
17 – 14.02.08 – 11:23
(16) ставь формекс и (12)
18 – 14.02.08 – 11:25
Спасибо всем умным дядькам и тетькам, но ставить доп компоненты низя, ибо локальных компов 2500 голов и терминальных несчитанное множество. Буду ручки мозолить((((
19 – 14.02.08 – 11:27
(18) “ибо локальных компов 2500 голов …” – а в папку БД компоненту кинуть вера не позволяет?
20 – 14.02.08 – 11:29
(19) а че можно так?)))) Я думал только кропотливое инсталирование на каждую штуку в отдельности) А как это компоненты регистрируют свои ДЛЛ-ки? Под юзерами или админам только мона? Извините за дебильные вопросы. Лучче 1 раз все узнать, чем 100 раз ничего)))
21 – 14.02.08 – 11:31
2(20) FormEx не требует регистрации в реестре.
22 – 14.02.08 – 11:33
(20) сильно (21) +
23 – 14.02.08 – 11:36
(22)Окай. Начну с ФормЭкс`ом экспериментировать. Спасибо, мужечки. Всех с праздечгом 😉
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший
Источник