[РЕШЕНО] Проверить ТЗ

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем SkyNetYar, 4 дек 2015.

  1. TopicStarter Overlay
    SkyNetYar
    Offline

    SkyNetYar Опытный в 1С

    Регистрация:
    11 ноя 2014
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Добрый день! УТ 11.1.10 (8.3.7)
    Помогите замучился уже,нужно прервать выполнение обработки если пользователь не указал в ТЗ нужный реквизит.
    &НаКлиенте
    Процедура Заполнить(Команда) Выполняет кнопка на форме "Заполнить"
    В ней пытаюсь проверить типа так:
    Код:
    ТЗ = РеквизитФормыВЗначение("Колонки");
        Если ТЗ.Найти("Наименование") = Неопределено Тогда
            Сообщить("Не заполненно наименование")
            Возврат;
        КонецЕсли;
    Но естественно ругается на РеквизитФормыВЗначение("Колонки"); так как на клиенте это не работает
    Если все это делать на сервере то там не знаю как прервать выполнение обработки,она все равно выполняется..

    Может я в корне не правильно делаю? может есть более лучший способ?

    Вложения:

  2. Flash-Dance
    Offline

    Flash-Dance Профессионал в 1С

    Регистрация:
    20 май 2012
    Сообщения:
    365
    Симпатии:
    42
    Баллы:
    54
    Да, всё в корне неправильно.
    Можно так:
    Код:
    &НаКлиенте
    Процедура Заполнить(Команда)
         Результат = ЗаполнитьНаСервере()
    КонецПроцедуры
    
    &НаСервере
    Функция ЗаполнитьНаСервере()
         Продолжать = Истина;
         Для Каждого Строка Из Колонки Цикл
              Если ПустаяСтрока(Строка.Наименование) Тогда
                   Оповещение = Новый СообщениеПользователю;
                   Оповещение.Поле = "Колонки[" + (Строка.НомерСтроки - 1) + "].Наименование";
                   Оповещение.Текст = "Наименование не заполнено " + Строка.НомерСтроки;
                   Оповещение.Сообщить();
                   Продолжать = Ложь;
              КонецЕсли;
         КонецЦикла;
         Если Не Продолжать Тогда 
              Возврат Продолжать 
         КонецЕсли;
         // Дальнейшие действия, если всё в порядке
    КонецФункции
    
    Но можно и лучше, если посидеть - подумать.
    SkyNetYar нравится это.
  3. TopicStarter Overlay
    SkyNetYar
    Offline

    SkyNetYar Опытный в 1С

    Регистрация:
    11 ноя 2014
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    {Форма.Форма.Форма(185)}: Поле объекта не обнаружено (Наименование)
    Если ПустаяСтрока(Строка.Наименование) Тогда

    Вот мой код обработки
    Код:
    &НаКлиенте
    Процедура Заполнить(Команда)
              
        Результат = ЗаполнитьНаСервере();
      
        Состояние(НСтр("ru = 'Осуществляется сопоставление введенных данных с данными информационной базы. Пожалуйста подождите...'"),,,БиблиотекаКартинок.Информация32);
      
        мДанные = ЗаполнитьНаСервере();
        
      
        Для Каждого СтрокаТЗ из мДанные Цикл
            Отбор = Новый Структура;
            Отбор.Вставить("Номенклатура", СтрокаТЗ.Номенклатура);
            мСтрок = ВладелецФормы.Объект.Товары.НайтиСтроки(Отбор);
            Если мСтрок.Количество() > 0 Тогда
                СтрокаТЧ = мСтрок[0];
            Иначе  
                СтрокаТЧ = ВладелецФормы.Объект.Товары.Добавить();
            КонецЕсли;  
            ЗаполнитьЗначенияСвойств(СтрокаТЧ, СтрокаТЗ);
          
            Если ТипЗнч(СсылкаНаДокумент) = Тип("ДокументСсылка.ПересчетТоваров") Тогда
                СтрокаТЧ.ИзлишекПорча = СтрокаТЧ.Количество - СтрокаТЧ.КоличествоФакт;
            КонецЕсли;  
          
        КонецЦикла;  
      
        Закрыть();
      
    КонецПроцедуры
    
    ////////////////////////////    КОМАНДЫ ИМПОРТА        ////////////////////////////////
    &НаСервере
    Функция ЗаполнитьНаСервере() Экспорт
      
        Продолжать = Истина;
         Для Каждого Строка Из Колонки Цикл
              Если ПустаяСтрока(Строка.Наименование) Тогда
                   Оповещение = Новый СообщениеПользователю;
                   Оповещение.Поле = "Колонки[" + (Строка.НомерСтроки - 1) + "].Наименование";
                   Оповещение.Текст = "Наименование не заполнено " + Строка.НомерСтроки;
                   Оповещение.Сообщить();
                   Продолжать = Ложь;
              КонецЕсли;
         КонецЦикла;
         Если Не Продолжать Тогда
              Возврат Продолжать
         КонецЕсли;
      
        // Получение объекта COM, соответствующего файлу
        XLSОбъектОсновной = Новый COMОбъект("Excel.Application");
        XLSОбъектКниги = XLSОбъектОсновной.WorkBooks;
        XLSОбъект = XLSОбъектКниги.Open(ФайлЗагрузки);
        Лист = XLSОбъект.Sheets(1);
        пСчСтрок = 1; пСчПустых = 0;
      
        мДанные = Новый Массив;
      
        ТЗ = РеквизитФормыВЗначение("Колонки");
        Если ТЗ.Найти("ЦенаПродажи") <> Неопределено Тогда
            НовУстановкаЦен = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
            НовУстановкаЦен.Дата = ТекущаяДата();
            НовУстановкаЦен.Согласован = Истина;
            НовУстановкаЦен.Комментарий = "Создан автоматически на основании "+СсылкаНаДокумент+" пользователем "+Пользователи.ТекущийПользователь()+" по файлу "+ФайлЗагрузки+"";
            НовУстановкаЦен.ДокументОснование = СсылкаНаДокумент;
            НовУстановкаЦен.Ответственный = Пользователи.ТекущийПользователь();
            НовУстановкаЦен.Статус = Перечисления.СтатусыУстановокЦенНоменклатуры.Согласован;
            СтрокаТЧ = НовУстановкаЦен.ВидыЦен.Добавить();  
            СтрокаТЧ.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Цена закупки");
            СтрокаТЧ = НовУстановкаЦен.ВидыЦен.Добавить();  
            СтрокаТЧ.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Цена продажи");
        КонецЕсли;  
      
        Пока пСчПустых < 20 Цикл
          
            мЗначения = Новый Структура;
            Для Каждого СтрокаТЗ из Колонки Цикл
                Если СтрокаТЗ.Колонка <> 0 Тогда
                    пИмя = СтрокаТЗ.ИмяРеквизита;
                    пИмя = ЗаменитьНедопустимыеСимволыВИмениФайла(пИмя, "_");
                    //мЗначения.Вставить(СтрЗаменить(пИмя, " ", "_"), Лист.Cells(пСчСтрок,СтрокаТЗ.Колонка).Value);
                    мЗначения.Вставить(пИмя, Лист.Cells(пСчСтрок,СтрокаТЗ.Колонка).Value);
                  
                    Если Найти(пИмя, "Штрих") Тогда
                        мЗначения.Вставить(СтрЗаменить(пИмя, " ", "_"), СтрЗаменить(Лист.Cells(пСчСтрок,СтрокаТЗ.Колонка).Value, " ", ""));
                    КонецЕсли;  
                КонецЕсли;  
            КонецЦикла;  
          
            пКоличество = мЗначения.Количество;
            Попытка
                пКоличество = Число(пКоличество);
            Исключение
                пКоличество = 0;
            КонецПопытки;  
          
            Если пКоличество > 0 Тогда
                Номенклатура = ПолучитьНоменклатуру(мЗначения, ТипЗнч(СсылкаНаДокумент) <> Тип("ДокументСсылка.ПересчетТоваров"));
                Если Номенклатура <> Неопределено Тогда
                  
                    Если мЗначения.Свойство("Цена") Тогда
                        пЦена  = мЗначения.Цена;
                        Попытка
                            пЦена = Число(пЦена);
                        Исключение
                            пЦена = 0;
                        КонецПопытки;  
                    Иначе  
                        пЦена = 0;
                    КонецЕсли;  
                  
                    Если пЦена = 0 Тогда
                        Если мЗначения.Свойство("Сумма") Тогда
                            пСумма = мЗначения.Сумма;
                            Попытка
                                пСумма = Число(пСумма);
                            Исключение
                                пСумма = 0;
                            КонецПопытки;  
                            /////////////
                            пЦена = ?(пКоличество<>0, пСумма / пКоличество, 0);
                        Иначе  
                            пСумма = пЦена * пКоличество;
                        КонецЕсли;  
                    Иначе  
                        пСумма = пЦена * пКоличество;
                    КонецЕсли;  
                  
                    СтрокаТЧ = Новый Структура;
                    Если ТипЗнч(СсылкаНаДокумент) = Тип("ДокументСсылка.ПересчетТоваров") Тогда
                        СтрокаТЧ.Вставить("КоличествоФакт", пКоличество);
                        СтрокаТЧ.Вставить("КоличествоУпаковокФакт", пКоличество);
                        //СтрокаТЧ.Вставить("ИзлишекПорча", СтрокаТЧ.Количество - СтрокаТЧ.КоличествоФакт;
                    Иначе  
                        СтрокаТЧ.Вставить("Номенклатура", Номенклатура);
                        СтрокаТЧ.Вставить("Артикул", Номенклатура.Артикул);
                        СтрокаТЧ.Вставить("Количество", пКоличество);
                        СтрокаТЧ.Вставить("КоличествоУпаковок", пКоличество);
                        СтрокаТЧ.Вставить("Цена", пЦена);
                        СтрокаТЧ.Вставить("Сумма", пСумма);
                        СтрокаТЧ.Вставить("СуммаВзаиморасчетов", пСумма);
                        СтрокаТЧ.Вставить("СтавкаНДС", Перечисления.СтавкиНДС.БезНДС);
                    КонецЕсли;  
                  
                    мДанные.Добавить(СтрокаТЧ);
                  
                    //+Цены
                       Попытка
                        Если мЗначения.Свойство("Цена") Тогда  
                        //Добовляем цену закупки в установку цен номенклатуры  
                            СтрокаТЧ = НовУстановкаЦен.Товары.Добавить();  
                            СтрокаТЧ.Номенклатура = Номенклатура;
                            СтрокаТЧ.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Цена закупки");
                            СтрокаТЧ.Цена = мЗначения.Цена;
                            СтрокаТЧ.ЦенаИзмененаВручную = Истина;  
                        КонецЕсли;
                        Исключение
                        Сообщить("Не заданы цены закупки");
                        КонецПопытки;
                        //Добовляем цену продажи в установку цен номенклатуры
                        Попытка
                        Если мЗначения.Свойство("ЦенаПродажи") Тогда
                            СтрокаТЧ = НовУстановкаЦен.Товары.Добавить();  
                            СтрокаТЧ.Номенклатура = Номенклатура;
                            СтрокаТЧ.ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Цена продажи");
                            СтрокаТЧ.Цена = мЗначения.ЦенаПродажи;
                            СтрокаТЧ.ЦенаИзмененаВручную = Истина;
                        КонецЕсли;  
                        Исключение
                        Сообщить("Не заданы цены продажи");
                        КонецПопытки;
                    //-Цены
                  
                КонецЕсли;  
            Иначе  
                пСчПустых = пСчПустых + 1;
            КонецЕсли;  
            пСчСтрок = пСчСтрок + 1;
        КонецЦикла;  
      
        Если УстЦенНом=Истина Тогда
        Попытка
            НовУстановкаЦен.Записать(РежимЗаписиДокумента.Проведение);  
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат Неопределено;
        КонецПопытки;  
        КонецЕсли;
        /////////////////////////
        XLSОбъектОсновной.Quit();
      
        Возврат мДанные;
      
    КонецФункции
  4. TopicStarter Overlay
    SkyNetYar
    Offline

    SkyNetYar Опытный в 1С

    Регистрация:
    11 ноя 2014
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Получилось вот так:
    Код:
    &НаКлиенте
    Процедура Заполнить(Команда)
    мДанные = ЗаполнитьНаСервере();   
        Если мДанные=ЛОЖЬ Тогда
           Возврат;
        КонецЕсли;
    КонецПроцедуры;
    
    &НаСервере
    Функция ЗаполнитьНаСервере() Экспорт
    Продолжать = Истина;
    Если мЗначения.Свойство("Наименование")=ЛОЖЬ Тогда
                 Сообщить("Не задано значение наименования");
                 Продолжать = Ложь;
           КонецЕсли;
            Если Продолжать=Ложь Тогда 
              Возврат Продолжать 
            КонецЕсли;
    КонецФункции;
  5. TopicStarter Overlay
    SkyNetYar
    Offline

    SkyNetYar Опытный в 1С

    Регистрация:
    11 ноя 2014
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Все отлично,но что то замялся с Дополнительными реквизитами опять...
    Вот код:
    Код:
           мЗначения = Новый Структура;
            Для Каждого СтрокаТЗ из Колонки Цикл
                Если СтрокаТЗ.Колонка <> 0 Тогда
                    пИмя = СтрокаТЗ.ИмяРеквизита;
           КонецЦикла;
           
            ДопРекв = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Номенклатура поставщика");   
            Если Найти(пИмя, ДопРекв) Тогда
            мЗначения.Вставить("ДопРекв",ДопРекв);
            КонецЕсли;     
            
            // Проверяем заполнение полей в обработке
            Если мЗначения.Свойство("Наименование")=ЛОЖЬ Тогда
                 Сообщить("Не задано значение наименования");
                 Продолжать = Ложь;
           ИначеЕсли мЗначения.Свойство("Цена")=ЛОЖЬ Тогда
                 Сообщить("Не задано значение цены закупки");
                 Продолжать = Ложь;
           ИначеЕсли мЗначения.Свойство("ЦенаПродажи")=ЛОЖЬ Тогда
                 Сообщить("Не задано значение цены продажи");
                 Продолжать = Ложь;
            ИначеЕсли мЗначения.Свойство("Количество")=ЛОЖЬ Тогда
                 Сообщить("Не задано значение количество");
                 Продолжать = Ложь;
            ИначеЕсли мЗначения.Свойство("ДопРекв")=ЛОЖЬ Тогда
                 Сообщить("Не задано значение Номенклатура поставщика");
                 Продолжать = Ложь;     
            КонецЕсли;
    Дополнительный реквизиты в ТЗ у меня вставляются до этого запросом в ПриСоздании()

    Код:
    Запрос = Новый Запрос;
        Запрос.Текст =  "ВЫБРАТЬ
                       |    ДополнительныеРеквизитыИСведения.Наименование КАК Наименование,
                       |    ДополнительныеРеквизитыИСведения.Ссылка
                       |ИЗ
                       |    ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
                       |ГДЕ
                       |    ДополнительныеРеквизитыИСведения.НаборСвойств = &НаборСвойств";
        Запрос.УстановитьПараметр("НаборСвойств",Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_Номенклатура_Общие);
        РезультатЗапроса = Запрос.Выполнить();
       
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
       
        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
            мРеквизиты.Добавить(ВыборкаДетальныеЗаписи.Наименование);
            НоваяСтрока = мДопРеквизиты.Добавить();
            НоваяСтрока.Представление = ВыборкаДетальныеЗаписи.Наименование;
            НоваяСтрока.Ссылка = ВыборкаДетальныеЗаписи.Ссылка;
            НоваяСтрока.ПредставлениеБезНедСимволов = ЗаменитьНедопустимыеСимволыВИмениФайла(ВыборкаДетальныеЗаписи.Наименование,"_");
        КонецЦикла;
       
        Элементы.КолонкиИмяРеквизита.СписокВыбора.ЗагрузитьЗначения(мРеквизиты);
        Элементы.КолонкиИмяРеквизита.РежимВыбораИзСписка = Истина;
        Элементы.КолонкиИмяРеквизита.КнопкаВыбора = Истина;
    Сомневаюсь вот в этом куске
    Код:
    ДопРекв = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Номенклатура поставщика");    
            Если Найти(пИмя, ДопРекв) Тогда
            мЗначения.Вставить("ДопРекв",ДопРекв);
            КонецЕсли;
  6. TopicStarter Overlay
    SkyNetYar
    Offline

    SkyNetYar Опытный в 1С

    Регистрация:
    11 ноя 2014
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Уважаемые ну помогите разобраться, почему не получается в ТЗ отследить выбор дополнительного реквизита?
    Вот на скриншотах процесс отладки обработки и попытки,что не так делаю?
    2015-12-08_11-16_EXCEL.jpg 2015-12-08_11-19.jpg
  7. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Почитайте синтаксис-помощник про метод Найти() для ТЗ.
  8. TopicStarter Overlay
    SkyNetYar
    Offline

    SkyNetYar Опытный в 1С

    Регистрация:
    11 ноя 2014
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Делаю так
    2015-12-08_12-21.jpg
    "ИмяРеквизита" - это
    2015-12-08_12-23.jpg

    В обработке выбран этот доп реквизит,но все равно возвращает Неопределено =(
  9. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    лучше всю обработку бы выложил
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    А доп. реквизит как элемент ПВХ находится по наименованию? Он точно уникальный во всем ПВХ?
  11. TopicStarter Overlay
    SkyNetYar
    Offline

    SkyNetYar Опытный в 1С

    Регистрация:
    11 ноя 2014
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    2015-12-08_12-34.jpg
    Да находится,и представляется именно так как выбирается пользователем.
    Вот саму обработку выложил , работаю в УТ 11.1.10 Номенклатуре добавлен дополнительный реквизит "Номенклатура поставщика" строковый тип
    2015-12-08_12-40.jpg
  12. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Судя по скринам, у вас проблемы с типами значений. В колонке ТЗ нужно поставить тип значения ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения вместо Строка.
  13. TopicStarter Overlay
    SkyNetYar
    Offline

    SkyNetYar Опытный в 1С

    Регистрация:
    11 ноя 2014
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    А как тогда туда будут добавляться другие значения?
    Код:
    мРеквизиты = Новый Массив;
        мРеквизиты.Добавить("ШтрихКод");
        мРеквизиты.Добавить("Артикул");
        мРеквизиты.Добавить("Наименование");
        мРеквизиты.Добавить("Количество");
        мРеквизиты.Добавить("Цена");
        мРеквизиты.Добавить("Сумма");
        мРеквизиты.Добавить("ЦенаПродажи");
        мРеквизиты.Добавить("Группа");
        Для Каждого Реквизит из Метаданные.Справочники.Номенклатура.Реквизиты Цикл
            мРеквизиты.Добавить(Реквизит.Синоним);  //Реквизит.Имя  Выводим синонимы метаданных вместо имени
        КонецЦикла;
    Можно каким нибудь другим способом?
  14. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Я пока слабо себе представляю взаимосвязь указанного куска кода с типом значения колонки ТЗ.
    Имя колонки ТЗ и тип ее значения - абсолютно независимые свойства колонки.

    Я советую вам не изобретать велосипед и воспользоваться типовой обработкой "ЗагрузкаДанныхТабличныхДокументов", либо уж если изобрести велосипед таки хочется, то воспользоваться другим контейнером для хранения данных, который позволяет сохранять описание структуры мигрируемых данных и не привязан к стороннему ПО, коим является EXCEL, - XML.
    Последнее редактирование: 8 дек 2015
  15. TopicStarter Overlay
    SkyNetYar
    Offline

    SkyNetYar Опытный в 1С

    Регистрация:
    11 ноя 2014
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Сделал так
    2015-12-08_13-11.jpg
    Теперь в обработке не выбираются реквизиты
    2015-12-08_13-12.jpg

    Я подозреваю все же на вот это
    ДопРекв = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Номенклатура поставщика");
    А конкретнее на функцию НайтиПоНаименованию..
    Можно каким то другим способом этот реквизит достать? может запросом?
  16. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Вам кроме имени колонки с данными, нужно еще и тип значения в колонке хранить в файле EXCEL.
    Типов значений в общем случае может быть столько, сколько разных видов объектов в конфигурации + хранилище значений + примитивные.
  17. TopicStarter Overlay
    SkyNetYar
    Offline

    SkyNetYar Опытный в 1С

    Регистрация:
    11 ноя 2014
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    Может можно установить тип значения программно?
  18. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    для программно созданной ТЗ - легко.
  19. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    У вас в таблице "Колонки" - "КолонкиИмяРеквизита" ссылается на соотв. реквизит таблицы значений с типом "Строка", при этом вы пытаетесь в этой таблице искать доп. реквизит по ссылке на него, которую между тем вы получаете в цикле (этот алгоритм нужно вынести за цикл), в принципе, если имя доп реквизита известно, в этой части нет необходимости, можно искать строки сразу по имени доп. реквизита
    --- Объединение сообщений, 8 дек 2015 ---
    и если их количество "= 0" то возвращать "ложь"
    --- Объединение сообщений, 8 дек 2015 ---
    у таблицы значений есть метод "НайтиСтроки" см. синтаксис помощник
  20. TopicStarter Overlay
    SkyNetYar
    Offline

    SkyNetYar Опытный в 1С

    Регистрация:
    11 ноя 2014
    Сообщения:
    146
    Симпатии:
    0
    Баллы:
    26
    А можно пожалуйста пример,если не затруднит,раз уж вы открыли мою обработку ,пожалуйста. Буду очень признателен.
Похожие темы
  1. Aston
    Ответов:
    0
    Просмотров:
    282
Загрузка...

Поделиться этой страницей