|
Правила обмена: ОбменДанными.Загрузка | ☑ | ||
---|---|---|---|---|
0
kdenis
19.11.19
✎
12:01
|
Знатокам обмена данными по правилам обмена.
Есть две самописные конфигурации, внедрена БСП:ОбменДанными. Настраиваю обмен по правилам обмена. Хочу обменивать три справочника Номенклатура, Виды номенклатуры, КартинкиНоменклатуры (в номенклатуре есть ссылки на два других). Правила обмена элементарные. У Виды номенклатуры, КартинкиНоменклатуры в ПКО опцию "При переносе объекта по ссылке НЕ создавать новый объект (переносить ссылку)" включил (в выключенном состоянии эффект одинаков). Суть проблемы: При загрузке данных выполняется код обработчика ПриЗаписи модулей объектов всех справочников, после инструкции "Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли;". Хотя, по моему мнению, не должен. К чему привело расследование: Первый обмен. При загрузке данных из сообщения обмена, происходит создание новых объектов с признаком "ОбменДанными.Загрузка = Истина" и код ниже не выполняется. Когда процесс загрузки доходит до 95%, прогресс заметно замедляется. Именно в этот момент происходит повторная запись загруженных объектов уже с признаком "ОбменДанными.Загрузка = Ложь". Соответственно, код проверок в обработчиках выполняется, нарушая логику работы. Направьте в нужном направлении для поиска решения. |
|||
1
kdenis
19.11.19
✎
13:34
|
Приподниму.
|
|||
2
RomanYS
19.11.19
✎
13:37
|
(1) отладчик и стек вызовов. Может в правилах есть какие-то обработчики после загрузки. Правила писал сам с нуля?
|
|||
3
kdenis
19.11.19
✎
13:39
|
Правила свои.
Единственный обработчик у справочника Номенклатура ПКО:ПослеЗагрузки с кодом: Если НЕ Объект.ЭтоГруппа Тогда Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар; КонецЕсли; |
|||
4
RomanYS
19.11.19
✎
13:41
|
(3) Не, имелся в виду глобальный обработчик правил, а не ПКО.
|
|||
5
kdenis
19.11.19
✎
13:43
|
Там пусто.
В сети нашел похожие вопросы, но касающиеся документов. Они без ответа. |
|||
6
Cyberhawk
19.11.19
✎
13:46
|
Выложи правила
|
|||
7
RomanYS
19.11.19
✎
13:49
|
(5) Документы могут проводиться, там ОбменДанными.Загрузка не работает
|
|||
8
kdenis
19.11.19
✎
13:54
|
<ПравилаОбмена>
<ВерсияФормата РежимСовместимости="РежимСовместимостиСБСП20">2.01</ВерсияФормата> <Ид>31900a06-a650-4633-946c-2565edba97cb </Ид> <Наименование>Ювелирное производство --> Ювелирная торговля</Наименование> <ДатаВремяСоздания>2019-11-19T10:55:31</ДатаВремяСоздания> <Источник ВерсияПлатформы="8.0" ВерсияКонфигурации="3.2.0.41" СинонимКонфигурации="Ювелирное производство">ЮвелирноеПроизводство</Источник> <Приемник ВерсияПлатформы="8.0" ВерсияКонфигурации="2.2.15.0" СинонимКонфигурации="Ювелирная торговля">ЮвелирнаяТорговля</Приемник> <Параметры/> <Обработки/> <ПравилаКонвертацииОбъектов> <Группа> <Код>Справочники</Код> <Наименование>Справочники</Наименование> <Порядок>50</Порядок> <Правило> <Код>ВидыНоменклатуры</Код> <Наименование>Справочник: Виды номенклатуры</Наименование> <Порядок>50</Порядок> <СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИдентификатору> <НеВыгружатьОбъектыСвойствПоСсылкам>true</НеВыгружатьОбъектыСвойствПоСсылкам> <ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD>true</ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD> <Источник>СправочникСсылка.ВидыНоменклатуры</Источник> <Приемник>СправочникСсылка.ВидыНоменклатуры</Приемник> <Свойства> <Свойство> <Код>1</Код> <Наименование>Код --> Код</Наименование> <Порядок>50</Порядок> <Источник Имя="Код" Вид="Свойство" Тип="Строка"/> <Приемник Имя="Код" Вид="Свойство" Тип="Строка"/> <ПриводитьКДлине>11</ПриводитьКДлине> </Свойство> <Свойство Поиск="true"> <Код>2</Код> <Наименование>Наименование --> Наименование</Наименование> <Порядок>100</Порядок> <Источник Имя="Наименование" Вид="Свойство" Тип="Строка"/> <Приемник Имя="Наименование" Вид="Свойство" Тип="Строка"/> </Свойство> <Свойство> <Код>3</Код> <Наименование>ПометкаУдаления --> ПометкаУдаления</Наименование> <Порядок>150</Порядок> <Источник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/> <Приемник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/> </Свойство> </Свойства> <Значения/> </Правило> <Правило> <Код>НоменклатураПрисоединенныеФайлы</Код> <Наименование>Справочник: Файлы картинок</Наименование> <Порядок>100</Порядок> <СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИдентификатору> <НеВыгружатьОбъектыСвойствПоСсылкам>true</НеВыгружатьОбъектыСвойствПоСсылкам> <ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD>true</ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD> <Источник>СправочникСсылка.ФайлыКартинок</Источник> <Приемник>СправочникСсылка.НоменклатураПрисоединенныеФайлы</Приемник> <Свойства> <Свойство Поиск="true"> <Код>1</Код> <Наименование>Наименование --> Наименование</Наименование> <Порядок>50</Порядок> <Источник Имя="Наименование" Вид="Свойство" Тип="Строка"/> <Приемник Имя="Наименование" Вид="Свойство" Тип="Строка"/> </Свойство> <Свойство> <Код>2</Код> <Наименование>ПометкаУдаления --> ПометкаУдаления</Наименование> <Порядок>100</Порядок> <Источник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/> <Приемник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/> </Свойство> </Свойства> <Значения/> </Правило> <Правило> <Код>Номенклатура</Код> <Наименование>Справочник: Номенклатура</Наименование> <Порядок>150</Порядок> <ПослеЗагрузки>Если НЕ Объект.ЭтоГруппа Тогда Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.ЮвелирноеИзделие; КонецЕсли;</ПослеЗагрузки> <СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИдентификатору> <ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли>true</ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли> <НеВыгружатьОбъектыСвойствПоСсылкам>true</НеВыгружатьОбъектыСвойствПоСсылкам> <Источник>СправочникСсылка.Номенклатура</Источник> <Приемник>СправочникСсылка.Номенклатура</Приемник> <Свойства> <Свойство> <Код>1</Код> <Наименование>ВидНоменклатуры --> ВидНоменклатуры</Наименование> <Порядок>50</Порядок> <Источник Имя="ВидНоменклатуры" Вид="Реквизит" Тип="СправочникСсылка.ВидыНоменклатуры"/> <Приемник Имя="ВидНоменклатуры" Вид="Реквизит" Тип="СправочникСсылка.ВидыНоменклатуры"/> <КодПравилаКонвертации>ВидыНоменклатуры </КодПравилаКонвертации> </Свойство> <Свойство> <Код>2</Код> <Наименование>Код --> Код</Наименование> <Порядок>100</Порядок> <Источник Имя="Код" Вид="Свойство" Тип="Строка"/> <Приемник Имя="Код" Вид="Свойство" Тип="Строка"/> <ПриводитьКДлине>11</ПриводитьКДлине> </Свойство> <Свойство Поиск="true"> <Код>4</Код> <Наименование>Наименование --> Наименование</Наименование> <Порядок>200</Порядок> <Источник Имя="Наименование" Вид="Свойство" Тип="Строка"/> <Приемник Имя="Наименование" Вид="Свойство" Тип="Строка"/> <ПередВыгрузкой>Если НЕ Источник.ЭтоГруппа Тогда Значение = "" + СокрЛП(Источник.ВидНоменклатуры.Наименование) + " " + СокрЛП(Источник.Наименование); Иначе Значение = Источник.Наименование; КонецЕсли; </ПередВыгрузкой> </Свойство> <Свойство> <Код>6</Код> <Наименование>ПометкаУдаления --> ПометкаУдаления</Наименование> <Порядок>300</Порядок> <Источник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/> <Приемник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/> </Свойство> <Свойство> <Код>7</Код> <Наименование>Родитель --> Родитель</Наименование> <Порядок>350</Порядок> <Источник Имя="Родитель" Вид="Свойство" Тип="СправочникСсылка.Номенклатура"/> <Приемник Имя="Родитель" Вид="Свойство" Тип="СправочникСсылка.Номенклатура"/> <КодПравилаКонвертации>Номенклатура </КодПравилаКонвертации> </Свойство> <Свойство> <Код>8</Код> <Наименование>ФайлКартинки --> ФайлКартинки</Наименование> <Порядок>400</Порядок> <Источник Имя="ФайлКартинки" Вид="Реквизит" Тип="СправочникСсылка.ФайлыКартинок"/> <Приемник Имя="ФайлКартинки" Вид="Реквизит" Тип="СправочникСсылка.НоменклатураПрисоединенныеФайлы"/> </Свойство> <Свойство Поиск="true" Обязательное="true"> <Код>9</Код> <Наименование>ЭтоГруппа --> ЭтоГруппа</Наименование> <Порядок>450</Порядок> <Источник Имя="ЭтоГруппа" Вид="Свойство" Тип="Булево"/> <Приемник Имя="ЭтоГруппа" Вид="Свойство" Тип="Булево"/> </Свойство> </Свойства> <Значения/> </Правило> </Группа> </ПравилаКонвертацииОбъектов> <ПравилаВыгрузкиДанных> <Группа Отключить="false"> <Код>Справочники</Код> <Наименование>Справочники</Наименование> <Порядок>50</Порядок> <Правило Отключить="false"> <Код>ВидыНоменклатуры</Код> <Наименование>ВидыНоменклатуры</Наименование> <Порядок>50</Порядок> <КодПравилаКонвертации>ВидыНоменклатуры </КодПравилаКонвертации> <СпособОтбораДанных>СтандартнаяВыборка</СпособОтбораДанных> <ОбъектВыборки>СправочникСсылка.ВидыНоменклатуры</ОбъектВыборки> </Правило> <Правило Отключить="false"> <Код>Номенклатура</Код> <Наименование>Номенклатура</Наименование> <Порядок>100</Порядок> <КодПравилаКонвертации>Номенклатура </КодПравилаКонвертации> <СпособОтбораДанных>СтандартнаяВыборка</СпособОтбораДанных> <ОбъектВыборки>СправочникСсылка.Номенклатура</ОбъектВыборки> </Правило> <Правило Отключить="false"> <Код>ФайлыКартинок</Код> <Наименование>ФайлыКартинок</Наименование> <Порядок>150</Порядок> <КодПравилаКонвертации>НоменклатураПрисоединенныеФайлы </КодПравилаКонвертации> <СпособОтбораДанных>СтандартнаяВыборка</СпособОтбораДанных> <ОбъектВыборки>СправочникСсылка.ФайлыКартинок</ОбъектВыборки> </Правило> </Группа> </ПравилаВыгрузкиДанных> <ПравилаОчисткиДанных/> <Алгоритмы/> <Запросы/> </ПравилаОбмена> |
|||
9
kdenis
19.11.19
✎
13:55
|
<ПравилаОбмена>
<ВерсияФормата РежимСовместимости="РежимСовместимостиСБСП20">2.01</ВерсияФормата> <Ид>ee05d00b-2668-460b-ab21-70a048506567 </Ид> <Наименование>Ювелирная торговля --> Ювелирное производство</Наименование> <ДатаВремяСоздания>2019-11-19T10:55:16</ДатаВремяСоздания> <Источник ВерсияПлатформы="8.0" ВерсияКонфигурации="2.2.15.0" СинонимКонфигурации="Ювелирная торговля">ЮвелирнаяТорговля</Источник> <Приемник ВерсияПлатформы="8.0" ВерсияКонфигурации="3.2.0.41" СинонимКонфигурации="Ювелирное производство">ЮвелирноеПроизводство</Приемник> <Параметры/> <Обработки/> <ПравилаКонвертацииОбъектов> <Группа> <Код>Справочники</Код> <Наименование>Справочники</Наименование> <Порядок>50</Порядок> <Правило> <Код>ВидыНоменклатуры</Код> <Наименование>Справочник: Виды номенклатуры</Наименование> <Порядок>50</Порядок> <СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИдентификатору> <НеВыгружатьОбъектыСвойствПоСсылкам>true</НеВыгружатьОбъектыСвойствПоСсылкам> <ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD>true</ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD> <Источник>СправочникСсылка.ВидыНоменклатуры</Источник> <Приемник>СправочникСсылка.ВидыНоменклатуры</Приемник> <Свойства> <Свойство> <Код>1</Код> <Наименование>Код --> Код</Наименование> <Порядок>50</Порядок> <Источник Имя="Код" Вид="Свойство" Тип="Строка"/> <Приемник Имя="Код" Вид="Свойство" Тип="Строка"/> <ПриводитьКДлине>3</ПриводитьКДлине> </Свойство> <Свойство Поиск="true"> <Код>2</Код> <Наименование>Наименование --> Наименование</Наименование> <Порядок>100</Порядок> <Источник Имя="Наименование" Вид="Свойство" Тип="Строка"/> <Приемник Имя="Наименование" Вид="Свойство" Тип="Строка"/> </Свойство> <Свойство> <Код>3</Код> <Наименование>ПометкаУдаления --> ПометкаУдаления</Наименование> <Порядок>150</Порядок> <Источник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/> <Приемник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/> </Свойство> <Свойство Поиск="true" Обязательное="true"> <Код>4</Код> <Наименование>--> ЭтоГруппа</Наименование> <Порядок>200</Порядок> <Источник Имя="" Вид=""/> <Приемник Имя="ЭтоГруппа" Вид="Свойство" Тип="Булево"/> </Свойство> </Свойства> <Значения/> </Правило> <Правило> <Код>ФайлыКартинок</Код> <Наименование>Справочник: Номенклатура присоединенные файлы</Наименование> <Порядок>100</Порядок> <СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИдентификатору> <НеВыгружатьОбъектыСвойствПоСсылкам>true</НеВыгружатьОбъектыСвойствПоСсылкам> <ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD>true</ПриПереносеОбъектаПоСсылкеУстанавливатьТолькоGIUD> <Источник>СправочникСсылка.НоменклатураПрисоединенныеФайлы</Источник> <Приемник>СправочникСсылка.ФайлыКартинок</Приемник> <Свойства> <Свойство Поиск="true"> <Код>1</Код> <Наименование>Наименование --> Наименование</Наименование> <Порядок>50</Порядок> <Источник Имя="Наименование" Вид="Свойство" Тип="Строка"/> <Приемник Имя="Наименование" Вид="Свойство" Тип="Строка"/> </Свойство> <Свойство> <Код>2</Код> <Наименование>ПометкаУдаления --> ПометкаУдаления</Наименование> <Порядок>100</Порядок> <Источник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/> <Приемник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/> </Свойство> <Свойство> <Код>3</Код> <Наименование>--> Код</Наименование> <Порядок>150</Порядок> <Источник Имя="" Вид=""/> <Приемник Имя="Код" Вид="Свойство" Тип="Строка"/> </Свойство> </Свойства> <Значения/> </Правило> <Правило> <Код>Номенклатура</Код> <Наименование>Справочник: Номенклатура</Наименование> <Порядок>150</Порядок> <ПослеЗагрузки>Если НЕ Объект.ЭтоГруппа Тогда Объект.ГруппаНоменклатуры = Перечисления.ГруппыНоменклатуры.Изделие; КонецЕсли;</ПослеЗагрузки> <СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИдентификатору> <ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли>true</ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли> <НеВыгружатьОбъектыСвойствПоСсылкам>true</НеВыгружатьОбъектыСвойствПоСсылкам> <Источник>СправочникСсылка.Номенклатура</Источник> <Приемник>СправочникСсылка.Номенклатура</Приемник> <Свойства> <Свойство> <Код>1</Код> <Наименование>ВидНоменклатуры --> ВидНоменклатуры</Наименование> <Порядок>50</Порядок> <Источник Имя="ВидНоменклатуры" Вид="Реквизит" Тип="СправочникСсылка.ВидыНоменклатуры"/> <Приемник Имя="ВидНоменклатуры" Вид="Реквизит" Тип="СправочникСсылка.ВидыНоменклатуры"/> <КодПравилаКонвертации>ВидыНоменклатуры </КодПравилаКонвертации> </Свойство> <Свойство> <Код>2</Код> <Наименование>Код --> Код</Наименование> <Порядок>100</Порядок> <Источник Имя="Код" Вид="Свойство" Тип="Строка"/> <Приемник Имя="Код" Вид="Свойство" Тип="Строка"/> <ПриводитьКДлине>9</ПриводитьКДлине> </Свойство> <Свойство Поиск="true"> <Код>4</Код> <Наименование>Наименование --> Наименование</Наименование> <Порядок>200</Порядок> <Источник Имя="Наименование" Вид="Свойство" Тип="Строка"/> <Приемник Имя="Наименование" Вид="Свойство" Тип="Строка"/> <ПередВыгрузкой>Если НЕ Источник.ЭтоГруппа Тогда Значение = СокрЛП(Источник.Артикул); Иначе Значение = Источник.Наименование; КонецЕсли;</ПередВыгрузкой> </Свойство> <Свойство> <Код>6</Код> <Наименование>ПометкаУдаления --> ПометкаУдаления</Наименование> <Порядок>300</Порядок> <Источник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/> <Приемник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/> </Свойство> <Свойство> <Код>7</Код> <Наименование>Родитель --> Родитель</Наименование> <Порядок>350</Порядок> <Источник Имя="Родитель" Вид="Свойство" Тип="СправочникСсылка.Номенклатура"/> <Приемник Имя="Родитель" Вид="Свойство" Тип="СправочникСсылка.Номенклатура"/> <КодПравилаКонвертации>Номенклатура </КодПравилаКонвертации> </Свойство> <Свойство> <Код>8</Код> <Наименование>ФайлКартинки --> ФайлКартинки</Наименование> <Порядок>400</Порядок> <Источник Имя="ФайлКартинки" Вид="Реквизит" Тип="СправочникСсылка.НоменклатураПрисоединенныеФайлы"/> <Приемник Имя="ФайлКартинки" Вид="Реквизит" Тип="СправочникСсылка.ФайлыКартинок"/> </Свойство> <Свойство Поиск="true" Обязательное="true"> <Код>9</Код> <Наименование>ЭтоГруппа --> ЭтоГруппа</Наименование> <Порядок>450</Порядок> <Источник Имя="ЭтоГруппа" Вид="Свойство" Тип="Булево"/> <Приемник Имя="ЭтоГруппа" Вид="Свойство" Тип="Булево"/> </Свойство> </Свойства> <Значения/> </Правило> </Группа> </ПравилаКонвертацииОбъектов> <ПравилаВыгрузкиДанных> <Группа Отключить="false"> <Код>Справочники</Код> <Наименование>Справочники</Наименование> <Порядок>50</Порядок> <Правило Отключить="false"> <Код>ВидыНоменклатуры</Код> <Наименование>ВидыНоменклатуры</Наименование> <Порядок>50</Порядок> <КодПравилаКонвертации>ВидыНоменклатуры </КодПравилаКонвертации> <СпособОтбораДанных>СтандартнаяВыборка</СпособОтбораДанных> <ОбъектВыборки>СправочникСсылка.ВидыНоменклатуры</ОбъектВыборки> </Правило> <Правило Отключить="false"> <Код>Номенклатура</Код> <Наименование>Номенклатура</Наименование> <Порядок>100</Порядок> <КодПравилаКонвертации>Номенклатура </КодПравилаКонвертации> <СпособОтбораДанных>СтандартнаяВыборка</СпособОтбораДанных> <ОбъектВыборки>СправочникСсылка.Номенклатура</ОбъектВыборки> </Правило> <Правило Отключить="false"> <Код>НоменклатураПрисоединенныеФайлы</Код> <Наименование>НоменклатураПрисоединенныеФайлы</Наименование> <Порядок>150</Порядок> <КодПравилаКонвертации>ФайлыКартинок </КодПравилаКонвертации> <СпособОтбораДанных>СтандартнаяВыборка</СпособОтбораДанных> <ОбъектВыборки>СправочникСсылка.НоменклатураПрисоединенныеФайлы</ОбъектВыборки> </Правило> </Группа> </ПравилаВыгрузкиДанных> <ПравилаОчисткиДанных/> <Алгоритмы/> <Запросы/> </ПравилаОбмена> |
|||
10
kdenis
19.11.19
✎
13:56
|
(2) Воспользовался пока советом из 2.
Нашел метод Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта.ВыполнитьОтложеннуюЗаписьОбъектов() Может в этом суть. |
|||
11
RomanYS
19.11.19
✎
13:58
|
(10) Похоже. Но он же чем-то вызывается
|
|||
12
kdenis
19.11.19
✎
14:34
|
Судя по коду, это штатный механизм подсистемы.
1. Объект записывается, создается ссылка. ОбменДанными.Загрузка = Истина. 2. Объект добавляется в соответствие ПолеОбъектыДляОтложеннойЗаписи. 3. Объекты этого соответствия в циле записываются повторно. ОбменДанными.Загрузка = Ложь. Справедливо для ссылочных типов. Осталось выяснить, какой смысл в это вложен разработчиками БСП. |
|||
13
kdenis
19.11.19
✎
15:34
|
Единственное объяснение, которое оправдывает этот алгоритм, это информирование пользователя об ошибках обмена.
Сначала, при ОбменДанными.Загрузка = Истина, объект записывается в ИБ как есть, без проверок. Повторно, при ОбменДанными.Загрузка = Ложь, мало того, что отрабатывают стандартные обработчики модуля ПередЗаписью, ПриЗаписи и т.д. Принудительно вызывается Объект.ПроверкаЗаполнения(), которая стандартно вызывается только при интерактивной записи. При этом собираются ошибки, которые после загрузки выводятся в список Предупреждения. Как-то так. Может кому пригодится. |
|||
14
RomanYS
19.11.19
✎
15:36
|
(13) По идее механизм для отложенного проведения (как минимуму чтобы загрузить все документы в произвольном порядке, а перепроводить по хронологии), зачем перезаписывать справочники не очень понимаю
|
|||
15
kdenis
19.11.19
✎
15:52
|
Видимо, чтобы собрать ошибки и показать их списком. Но объекты при этом создать, чтобы пользователь смог исправить загруженные.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |