По теме из базы знаний
- Поиск ссылок на документы из любого текста с возможностью групповой обработки найденных документов
- Эволюция пользовательской документации 1С в производственной компании
- Узнать GUID / Получить ссылку по GUID для любой конфигурации (управляемое приложение)
- Как поделиться ссылкой на документ в обработке Диадок
- Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения
Найденные решения
(35)Нашел оказывается в модуле объекта УТ10 это стандартная проверка.Но у меня кто то ее за комментировал и проверки не проводились
// Проверим можно ли изменять реквизиты договора.
// Проверка осуществляется только если записывается уже существующий договор
Если НЕ ОбменДанными.Загрузка И НЕ ЭтоНовый() Тогда
Если ЭтоГруппа Тогда
// Для группы владельца менять нельзя
Если Владелец <> Ссылка.Владелец Тогда
Сообщить("Нельзя изменять контрагента для группы договоров.", СтатусСообщения.Важное);
//Отказ = Истина;
КонецЕсли;
Иначе
// Проверим возможность смены владельца для договора
Если Владелец <> Ссылка.Владелец Тогда
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| ДокументыПоДоговоруКонтрагента.Ссылка
|ИЗ
| КритерийОтбора.ДокументыПоДоговоруКонтрагента(&Договор) КАК ДокументыПоДоговоруКонтрагента";
Запрос.УстановитьПараметр("Договор", Ссылка);
Результат = Запрос.Выполнить();
ЕстьДокументыПоДоговору = НЕ Результат.Пустой();
Если ЕстьДокументыПоДоговору Тогда
Сообщить("Существуют документы, оформленные по договору """ + Наименование + """.
|Контрагент договора не может быть изменен, элемент не записан.",
СтатусСообщения.Важное);
//Отказ = Истина;
КонецЕсли;
КонецЕсли;
// Проверим возможность смены способа ведения взаиморасчетов и валюты взаиморасчетов
Если ВедениеВзаиморасчетов <> Ссылка.ВедениеВзаиморасчетов
ИЛИ ВалютаВзаиморасчетов <> Ссылка.ВалютаВзаиморасчетов
ИЛИ ВидДоговора <> Ссылка.ВидДоговора
ИЛИ Организация <> Ссылка.Организация
ИЛИ РасчетыВУсловныхЕдиницах <> Ссылка.РасчетыВУсловныхЕдиницах
ИЛИ ВидУсловийДоговора <> Ссылка.ВидУсловийДоговора
ИЛИ ВестиПоДокументамРасчетовСКонтрагентом <> Ссылка.ВестиПоДокументамРасчетовСКонтрагентом Тогда
Если ЭтотОбъект.СуществуютСсылки() Тогда
Сообщить("Существуют документы, проведенные по договору """ + Наименование + """.
|Реквизиты ""Организация"", ""Ведение взаиморасчетов"", ""Валюта взаиморасчетов"", ""Вид договора"",
|""Вести по документам расчетов с контрагентом"", ""Расчеты в условных единицах"" и ""Условия выполнения договора"" не могут быть изменены, элемент не записан.",
СтатусСообщения.Важное);
//Отказ = Истина;
КонецЕсли;
КонецЕсли;
Если ОбособленныйУчетТоваровПоЗаказамПокупателей<>Ссылка.ОбособленныйУчетТоваровПоЗаказамПокупателей Тогда
Если ПолныеПрава.ПроверитьНаличиеСсылокНаДоговорКонтрагентаВЗаказахПокупателе й(Ссылка) Тогда
Сообщить("Существуют заказы покупателей, проведенные по договору """ + Наименование + """.
|Реквизит ""Обособленный учет товаров по заказам покупателей"" не может быть изменен, элемент не записан.",
СтатусСообщения.Важное);
//Отказ = Истина;
КонецЕсли;
КонецЕсли;
// Если изменился порядок регистрации счетов-фактур на аванс, нужно сообщить
Если ПорядокРегистрацииСчетовФактурНаАвансПоДоговору <> Ссылка.ПорядокРегистрацииСчетовФактурНаАвансПоДоговору Тогда
Если ЭтотОбъект.СуществуютСсылки() Тогда
Сообщить("Изменился порядок регистрации счетов-фактур на аванс по договору.
|При регистрации счетов-фактур на аванс за прошлые периоды возможны изменения в ранее зарегистрированных документах.", СтатусСообщения.Важное);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) пробежаться по ключевым регистрам и проверить засветился там этот договор или нет.
Пример из УПП, подставьте туда свои регистры.
Пример из УПП, подставьте туда свои регистры.
Функция ПроверитьНаличиеСсылокНаДоговорКонтрагента(ДоговорКонтрагента) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ДоговорКонтрагента", ДоговорКонтрагента);
Запрос.Текст = "
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрСведений.УсловияПоставокПоДоговорамКонтрагентовОбщие.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрСведений.УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.РасчетыСКонтрагентами.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ЗаказыПокупателей.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ЗаказыПоставщикам.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ПартииТоваровПереданные.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ТоварыПереданные.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ТоварыПолученные.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.Продажи.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ПланируемыеПоступленияДенежныхСредств.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ЗаявкиНаРасходованиеСредств.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|";
Возврат НЕ Запрос.Выполнить().Пустой();
КонецФункции
Показать
(1)
При открытии в конце процедуры
ЭлементыФормы.Организация.ТолькоПросмотр = Не СправочникОбъект.ЭтоНовый();
Если договор записан то редактирование организации запрещено, новый редактирование разрешено!
И при этом ненужно нагружать программу лишним запросом.
запроса проверить имеет ли договор ссылки, и потом уже поставить запрет на изменение.
При открытии в конце процедуры
ЭлементыФормы.Организация.ТолькоПросмотр = Не СправочникОбъект.ЭтоНовый();
Если договор записан то редактирование организации запрещено, новый редактирование разрешено!
И при этом ненужно нагружать программу лишним запросом.
(21)ПолныеПрава.ПроверитьНаличиеСсылокНаДоговорКонтрагента(ДоговорКонтрагента)
Функция ПроверитьНаличиеСсылокНаДоговорКонтрагента(ДоговорКонтрагента) Экспорт
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ДоговорКонтрагента", ДоговорКонтрагента);
Запрос.Текст = "
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрСведений.УсловияПоставокПоДоговорамКонтрагентовОбщие.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрСведений.УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.РасчетыСКонтрагентами.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ЗаказыПокупателей.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ЗаказыПоставщикам.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ПартииТоваровПереданные.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ТоварыПереданные.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ТоварыПолученные.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.Продажи.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ПланируемыеПоступленияДенежныхСредств.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрНакопления.ЗаявкиНаРасходованиеСредств.ДоговорКонтрагента
|ГДЕ
| ДоговорКонтрагента = &ДоговорКонтрагента
|";
Возврат НЕ Запрос.Выполнить().Пустой();
КонецФункции
Показать
(30) При запуске какой-либо процедуры, у которой права на запуск только с полными правами, может возникнуть отказ в случае отсутствия полных прав у текущего пользователя. В этом случае при необходимости есть возможность перед запуском включить , а после выполнения выключить привелигированный режим, который позволит выполнить все от имени простого смертного, а не от Админа...
(35)Нашел оказывается в модуле объекта УТ10 это стандартная проверка.Но у меня кто то ее за комментировал и проверки не проводились
// Проверим можно ли изменять реквизиты договора.
// Проверка осуществляется только если записывается уже существующий договор
Если НЕ ОбменДанными.Загрузка И НЕ ЭтоНовый() Тогда
Если ЭтоГруппа Тогда
// Для группы владельца менять нельзя
Если Владелец <> Ссылка.Владелец Тогда
Сообщить("Нельзя изменять контрагента для группы договоров.", СтатусСообщения.Важное);
//Отказ = Истина;
КонецЕсли;
Иначе
// Проверим возможность смены владельца для договора
Если Владелец <> Ссылка.Владелец Тогда
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| ДокументыПоДоговоруКонтрагента.Ссылка
|ИЗ
| КритерийОтбора.ДокументыПоДоговоруКонтрагента(&Договор) КАК ДокументыПоДоговоруКонтрагента";
Запрос.УстановитьПараметр("Договор", Ссылка);
Результат = Запрос.Выполнить();
ЕстьДокументыПоДоговору = НЕ Результат.Пустой();
Если ЕстьДокументыПоДоговору Тогда
Сообщить("Существуют документы, оформленные по договору """ + Наименование + """.
|Контрагент договора не может быть изменен, элемент не записан.",
СтатусСообщения.Важное);
//Отказ = Истина;
КонецЕсли;
КонецЕсли;
// Проверим возможность смены способа ведения взаиморасчетов и валюты взаиморасчетов
Если ВедениеВзаиморасчетов <> Ссылка.ВедениеВзаиморасчетов
ИЛИ ВалютаВзаиморасчетов <> Ссылка.ВалютаВзаиморасчетов
ИЛИ ВидДоговора <> Ссылка.ВидДоговора
ИЛИ Организация <> Ссылка.Организация
ИЛИ РасчетыВУсловныхЕдиницах <> Ссылка.РасчетыВУсловныхЕдиницах
ИЛИ ВидУсловийДоговора <> Ссылка.ВидУсловийДоговора
ИЛИ ВестиПоДокументамРасчетовСКонтрагентом <> Ссылка.ВестиПоДокументамРасчетовСКонтрагентом Тогда
Если ЭтотОбъект.СуществуютСсылки() Тогда
Сообщить("Существуют документы, проведенные по договору """ + Наименование + """.
|Реквизиты ""Организация"", ""Ведение взаиморасчетов"", ""Валюта взаиморасчетов"", ""Вид договора"",
|""Вести по документам расчетов с контрагентом"", ""Расчеты в условных единицах"" и ""Условия выполнения договора"" не могут быть изменены, элемент не записан.",
СтатусСообщения.Важное);
//Отказ = Истина;
КонецЕсли;
КонецЕсли;
Если ОбособленныйУчетТоваровПоЗаказамПокупателей<>Ссылка.ОбособленныйУчетТоваровПоЗаказамПокупателей Тогда
Если ПолныеПрава.ПроверитьНаличиеСсылокНаДоговорКонтрагентаВЗаказахПокупателе й(Ссылка) Тогда
Сообщить("Существуют заказы покупателей, проведенные по договору """ + Наименование + """.
|Реквизит ""Обособленный учет товаров по заказам покупателей"" не может быть изменен, элемент не записан.",
СтатусСообщения.Важное);
//Отказ = Истина;
КонецЕсли;
КонецЕсли;
// Если изменился порядок регистрации счетов-фактур на аванс, нужно сообщить
Если ПорядокРегистрацииСчетовФактурНаАвансПоДоговору <> Ссылка.ПорядокРегистрацииСчетовФактурНаАвансПоДоговору Тогда
Если ЭтотОбъект.СуществуютСсылки() Тогда
Сообщить("Изменился порядок регистрации счетов-фактур на аванс по договору.
|При регистрации счетов-фактур на аванс за прошлые периоды возможны изменения в ранее зарегистрированных документах.", СтатусСообщения.Важное);
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Показать
По аналогии с единицей измерения код должен быть примерно такой
в модуле ЕдиницыИзмерения
в модуле ЕдиницыИзмерения
// Обработчик события ПередЗаписью .
//
Процедура ПередЗаписью(Отказ)
Если НЕ ОбменДанными.Загрузка
И ТипЗнч(Владелец) = Тип("СправочникСсылка.Номенклатура") Тогда
Если Владелец.ЕдиницаХраненияОстатков = Ссылка Тогда
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ТекущийЭлемент", ЭтотОбъект.Ссылка);
Запрос.Текст =
"ВЫБРАТЬ
| ЕдиницыИзмерения.Ссылка КАК Элемент,
| ЕдиницыИзмерения.Коэффициент КАК Коэффициент
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|
|ГДЕ
| ЕдиницыИзмерения.Ссылка = &ТекущийЭлемент";
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Если Выборка.Коэффициент <> Коэффициент Тогда
Если ПолныеПрава.Номенклатура_СуществуютСсылки(Владелец, Неопределено) Тогда
ОбщегоНазначения.СообщитьОбОшибке("Единица """ + СокрЛП(Наименование) + """ является единицей хранения остатков для """ +
СокрЛП(Владелец) + """ и уже участвует в товародвижении. Изменить коэффициент уже нельзя!", Отказ);
КонецЕсли;
КонецЕсли;
КонецЕсли;
//88( Администратор 06.05.2020 10:53:03
Если Не Отказ И ЭтотОбъект.Коэффициент <> 1 Тогда
ОбщегоНазначения.СообщитьОбОшибке(".единица «"+СокрЛП(ЭтотОбъект.Наименование)+"» является единицей хранения остатков для «"+СокрЛП(ЭтотОбъект.Владелец)+"», коэффициент не может отличатся от 1!");
ЭтотОбъект.Коэффициент = 1;
КонецЕсли;
Иначе// дополнительная единица измерения
Если Не РольДоступна("ПравоАдминистрирования") Тогда// Администратору коэффициент изменить можно, даже при существующих ссылках в документах
Если ЭтотОбъект.Коэффициент <> ЭтотОбъект.Ссылка.Коэффициент Тогда// коэффициент был изменён
Если ПолныеПрава.ЕдиницыИзмерения_СуществуютСсылки(ЭтотОбъект.Ссылка, Неопределено) Тогда
ОбщегоНазначения.СообщитьОбОшибке(".единица измерения «"+СокрЛП(ЭтотОбъект.Наименование)+"» участвует в документах. Изменить коэффициент уже нельзя, обратитесь к Администратору!");
ЭтотОбъект.Коэффициент = ЭтотОбъект.Ссылка.Коэффициент;
КонецЕсли;
КонецЕсли;
КонецЕсли;
//)88 Администратор 06.05.2020 10:53:06
КонецЕсли;
КонецЕсли;
Если Не ОбменДанными.Загрузка
И Не Отказ
И Коэффициент = 0 Тогда
ОбщегоНазначения.СообщитьОбОшибке("Для "+СокрЛП(Владелец)+" у единицы измерения "+СокрЛП(Ссылка)+" не задан коэффициент! Он будет установлен равным 1.");
Коэффициент = 1;
КонецЕсли;
КонецПроцедуры // ПередЗаписью()
// Функция проверяет, существуют ли ссылки на единицу измерения в документах.
// Если есть - нельзя менять коэффицент
//
// Параметры:
// СуществуютСсылки - булево, переменная, в которой сохраняется результат работы функции, чтобы
// при последующих вызовах заново не считать функцию.
//
// Возвращаемое значение:
// Истина - если есть ссылки в документах, Ложь - если нет.
//
Функция ЕдиницыИзмерения_СуществуютСсылки(Ссылка, СуществуютСсылки) Экспорт
Если НЕ ЗначениеЗаполнено(Ссылка) Тогда
Возврат Ложь;
ИначеЕсли СуществуютСсылки <> Неопределено Тогда
Возврат СуществуютСсылки; // уже было рассчитано
КонецЕсли;
Запрос = Новый Запрос();
Запрос.УстановитьПараметр("ТекущаяЕдиницаИзмерения", Ссылка);
ТипЕдиницаИзмерения = Тип("СправочникСсылка.ЕдиницыИзмерения");
Запрос.Текст = "";
Для Каждого Документ Из Метаданные.Документы Цикл
Для Каждого ТабличнаяЧасть Из Документ.ТабличныеЧасти Цикл
Для Каждого РеквизитТабличнаяЧасть Из ТабличнаяЧасть.Реквизиты Цикл
Если РеквизитТабличнаяЧасть.Тип.СодержитТип(ТипЕдиницаИзмерения) Тогда
Если Запрос.Текст <> "" Тогда
Запрос.Текст = Запрос.Текст+"
|ОБЪЕДИНИТЬ ВСЕ
|";
КонецЕсли;
Запрос.Текст = Запрос.Текст+"
|ВЫБРАТЬ ПЕРВЫЕ 1
| 1 КАК Результат
|ИЗ
| Документ."+Документ.Имя+"."+ТабличнаяЧасть.Имя+" КАК Док
|ГДЕ
| Док."+РеквизитТабличнаяЧасть.Имя+" = &ТекущаяЕдиницаИзмерения
|";
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
Возврат Не Запрос.Выполнить().Пустой();
КонецФункции
Показать
(6)
Вот так попробуй.
Вот так попробуй.
Договор = Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("Номер","ДОГ45658\12");
МассивСсылок = Новый Массив;
МассивСсылок.Добавить(Договор);
ТабСсылок = НайтиПоСсылкам(МассивСсылок);
Для Каждого Строка из ТабСсылок Цикл
Сообщить(Строка.Данные);
КонецЦикла
Показать
Ошибку в коде допустить гораздо труднее. Практически невозможно, ибо синтаксис ясно проверяет платформа, а логика проверяется автоматом на одном договоре с документом, если его находит код , значит 100% рабочий...
А вот пропустить регистр из-за не знания списка регистров , где в принципе нужно искать - да с полпинка!
И никакая проверка не прокатит, нужно именно знание всех необходимых регистров...
И вообще у вас что конкретные претензии к методу НайтиПоСсылкам ??
А вот пропустить регистр из-за не знания списка регистров , где в принципе нужно искать - да с полпинка!
И никакая проверка не прокатит, нужно именно знание всех необходимых регистров...
И вообще у вас что конкретные претензии к методу НайтиПоСсылкам ??
Вы бы проанализировали тогда уж все исходные данные перед тем как давать рекомендации...
Зачем сначала давать совет писать запрос по регистрам, а потом сказать - если ты не знаешь регистры , то не пользуйся!
Вы даете свой совет НАЧИНАЮЩЕМУ! задумайтесь и сами оцените свои ответы...
Зачем сначала давать совет писать запрос по регистрам, а потом сказать - если ты не знаешь регистры , то не пользуйся!
Вы даете свой совет НАЧИНАЮЩЕМУ! задумайтесь и сами оцените свои ответы...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот