Клиентское приложение (Толстый клиент) для сервиса изучения методов платформы 1С:Предприятие 8 (+ конструктор запросов)




Клиентское приложение для работы с веб-сервисом
IT-Решение: Консоль изучения методов платформы 1С:Предприятие 8
в режиме толстый клиент.
Подготовка к аттестации 1С:Специалист on-line!
Тестовые задания по различным видам учета!
Подсказки для оптимального решения!

Уважаемые коллеги!

Представляем вашему вниманию клиентское приложение для бесплатного веб-сервиса «Консоль изучения методов платформы 1С:Предприятие 8» — конфигурацию, разработанную на платформе 8.2 и предназначенную для интерактивного обучения методам и приемам разработки в среде 1С.

Страница сервиса на infostart.ru: //infostart.ru/public/192077/ 

Работа с веб-сервисом возможна с использованием конструктора запросов 1С (аналогично Клиентскому приложению для самоучителя языка запросов 1С 8).

При входе в конфигурацию произоводится аутентификация на веб-сервисе под логином пользователя.

Для регистрации нового пользователя на веб-сервисе необходимо использовать логин: guest, пароль пустой.

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

Решение задачи пользователь представляет в поле «Ваше решение». В процессе решения задач для написания запросов может быть использован Конструктор запросов. В поле «Результат» отображается результат проверки решения задачи. Так же в форме основной обработки представлена персональная статистика и общий рейтинг участников (ТОП 100). Все задачи должны решатся последовательно. Переход к следующей задаче, не решив предыдущую, невозможен.

 

Важно! 
Для получения навыков написания простых и сложных запросов рекомендуем воспользоваться бесплатным сервисом Консоль изучения языка запросов 1С:Предприятие 8).

 

36 Comments

  1. bpc222

    Уважаемые разработчики.

    Начал работу новый сервис: Консоль изучения методов платформы 1С:Предприятие 8.

    Месяц будет «крутиться» в тестовом режиме, ваши решения будут сохранены.

    Задания второго раздела будут опубликованы на днях.

    Это клиентское приложение — клиент для сервиса. Его задача — предоставить Вам возможность использования Консоли запросов для разработки прикладных решений.

    Ждем Ваших отзывов и предложений. Спасибо.

    Reply
  2. ivanov660

    А что в веб варианте не сделали консоль запросов? Взяли хот-бы Больсунова. Не удобно онлайн сервисом пользоваться, по крайней мере подсказки какие-нибудь выдали?

    Reply
  3. bpc222

    (2) ivanov660,

    рассмотрим возможность, спасибо.

    Reply
  4. Egor.ZenNoches

    Круть !

    Reply
  5. kuza_87

    Дошел до 6-го задания. Пишет что неверное решение. Не могу понять где ошибка. Выполнено всё верно

    Вот код

    ЗапросЦены = Новый Запрос;

    ЗапросЦены.Текст =

    «ВЫБРАТЬ

    | ЦеныНоменклатуры.Номенклатура,

    | ЦеныНоменклатуры.Цена,

    | ЦеныНоменклатуры.Период КАК Период

    |ИЗ

    | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры

    |

    |УПОРЯДОЧИТЬ ПО

    | Период УБЫВ»;

    ТЗЦены = ЗапросЦены.Выполнить().Выгрузить();

    ВыборкаДоков = Документы.Приходнаянакладная.Выбрать();

    Пока ВыборкаДоков.Следующий() цикл

    Если ВыборкаДоков.Ссылка.Проведен = Ложь Тогда

    Док = ВыборкаДоков.Ссылка.ПолучитьОбъект();

    НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();

    НаборЗаписей.Отбор.Регистратор.Установить(Док.Ссылка);

    НаборЗаписей.Прочитать();

    Для Каждого строка из Док.Товары Цикл

    НайденнаяСтрока = ТЗЦены.Найти(строка.Номенклатура, «Номенклатура»);

    Если НайденнаяСтрока = Неопределено Тогда

    Движение = НаборЗаписей.Добавить();

    Движение.Период = Док.Дата;

    Движение.Номенклатура = Строка.Номенклатура;

    Движение.Цена = строка.Цена;

    ИначеЕсли НайденнаяСтрока<>Неопределено и

    НайденнаяСтрока.Цена<>Строка.Цена Тогда

    Движение = НаборЗаписей.Добавить();

    Если КонецДня(НайденнаяСтрока.Период) = КонецДня(Док.Дата) Тогда

    Движение.Период = КонецДня(Док.Дата)+1;

    Иначе

    Движение.Период = Док.Дата;

    КонецЕсли;

    Движение.Номенклатура = Строка.Номенклатура;

    Движение.Цена = строка.Цена;

    КонецЕсли;

    КонецЦикла;

    НаборЗаписей.Записать();

    КонецЕсли;

    КонецЦикла;

    Reply
  6. kuza_87

    Я нигде не усмотрел ошибку

    Reply
  7. bpc222

    (5) kuza_87,

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

    Скажите, Ваше решение удовлетворяет этому условию?

    Reply
  8. kuza_87

    Разобрался, извините. Делал спросони)))

    Reply
  9. kuza_87

    А в следующем задании что не так? Задание элементарное. Вот текст кода

    ВыборкаДоков = Документы.ПриходнаяНакладная.Выбрать();

    Пока ВыборкаДоков.Следующий() Цикл

    Если ВыборкаДоков.Проведен = Истина Тогда

    Док = ВыборкаДоков.ПолучитьОбъект();

    Запрос = Новый Запрос;

    Запрос.Текст =

    «ВЫБРАТЬ

    | ПриходнаяНакладнаяТовары.Номенклатура,

    | ПриходнаяНакладнаяТовары.Ссылка КАК Партия,

    | ПриходнаяНакладнаяТовары.Количество,

    | ПриходнаяНакладнаяТовары.Сумма,

    | ПриходнаяНакладнаяТовары.Ссылка.Дата КАК Период

    |ИЗ

    | Документ.ПриходнаяНакладная.Товары КАК ПриходнаяНакладнаяТовары

    |ГДЕ

    | ПриходнаяНакладнаяТовары.Ссылка = &Ссылка»;

    Запрос.УстановитьПараметр(«Ссылка», Док.Ссылка);

    Результат = Запрос.Выполнить().Выгрузить();

    НаборЗаписей = РегистрыНакопления.ОстаткиНоменклатуры.СоздатьНаборЗаписей();

    НаборЗаписей.Отбор.Регистратор.Установить(Док.Ссылка);

    НаборЗаписей.Прочитать();

    НаборЗаписей.Загрузить(Результат);

    КонецЕсли;

    Конеццикла;

    Reply
  10. kuza_87

    это задание 7

    Reply
  11. bpc222

    (8) kuza_87,

    Отлично.

    не нужно извиняться.

    Консоль для этого и предназначена — научиться решать прикладные задачи различного уровня.

    Reply
  12. bpc222

    (9) kuza_87,

    1. А где у Вас запись набора?

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

    Reply
  13. bpc222

    (10) kuza_87,

    и еще… Если Вам все нравится в нашем сервисе, ставьте лайки.

    Это очень нам поможет в продвижении публикаций.

    Лайкнуть:

    — сервис изучения методов платформы: http://infostart.ru/public/192077/?rate=1

    — сервис изучения языка запросов 1С: http://infostart.ru/public/184350/?rate=1

    — консоль сервиса изучения методов: http://infostart.ru/public/192076/?rate=1

    — консоль сервиса изучения запросов: http://infostart.ru/public/188639/?rate=1

    Спасибо.

    Reply
  14. kuza_87

    Метод «Загрузить» насколько я знаю записывает данные в регистр, т.е потом не нужно писать «Записать»

    Reply
  15. kuza_87

    Так тоже говорит что неверно (лайкну все статьи сегодня)

    ВыборкаДоков = Документы.ПриходнаяНакладная.Выбрать();

    Пока ВыборкаДоков.Следующий() Цикл

    Если ВыборкаДоков.Проведен = Истина Тогда

    Док = ВыборкаДоков.ПолучитьОбъект();

    НаборЗаписей = РегистрыНакопления.ОстаткиНоменклатуры.СоздатьНаборЗаписей();

    НаборЗаписей.Отбор.Регистратор.Установить(Док.Ссылка);

    НаборЗаписей.Прочитать();

    Для Каждого Строка из Док.Товары Цикл

    Движение = НаборЗаписей.Добавить();

    Движение.период = Док.Дата;

    Движение.Партия = Док.Ссылка;

    Движение.Номенклатура = Строка.Номенклатура;

    Движение.Количество = Строка.Количество;

    Движение.Сумма = Строка.Сумма;

    КонецЦикла;

    НаборЗаписей.Записать();

    КонецЕсли;

    Конеццикла;

    Reply
  16. bpc222

    (15) kuza_87,

    Измерение склад тоже нужно заполнять. Пользуйтесь схемой данных (кнопка сверху слева).

    Reply
  17. bpc222

    (14) kuza_87,

    проверьте это утверждение, а то у меня возникает желание пойти и сжечь все свои сертификаты 1С:Специалист и закусить все это 1С:Экспертом.

    Reply
  18. kuza_87

    я тоже про склад думал. просто в вашей конфигурации у этого документа нету склада

    Reply
  19. kuza_87

    да, проблема была в складе

    Reply
  20. bpc222

    (18) kuza_87,

    спасибо, исправим.

    Reply
  21. kuza_87

    8-е задание пишет что неверно.

    ВыборкаДоков = Документы.ПриходнаяНакладная.Выбрать();

    Пока ВыборкаДоков.Следующий() Цикл

    Если ВыборкаДоков.Проведен Тогда

    Док = ВыборкаДоков.Ссылка.ПолучитьОбъект();

    НаборЗаписей = РегистрыНакопления.ОстаткиНоменклатуры.СоздатьНаборЗаписей();

    НаборЗаписей.Отбор.Регистратор.Установить(Док.Ссылка);

    НаборЗаписей.Прочитать();

    Для Каждого Строка из Док.Товары Цикл

    Строка.ЕдиницаИзмерения = Строка.Номенклатура.ОсновнаяЕдиницаизмерения;

    Строка.Сумма = Строка.Количество*Строка.Цена;

    КонецЦикла;

    Док.Записать();

    Для Каждого Строка из Док.Товары Цикл

    Движение = НаборЗаписей.Добавить();

    Движение.Период = Док.Дата;

    Движение.Партия = Док.Ссылка;

    Движение.Склад = Док.Склад;

    Движение.Номенклатура = строка.Номенклатура;

    Движение.Количество = (Строка.Количество*Строка.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент);

    Движение.Сумма = Строка.Сумма;

    КонецЦикла;

    НаборЗаписей.Записать();

    КонецЕсли;

    КонецЦикла;

    Reply
  22. echo77

    В толстом клиенте не работает Сообщить() — это неудобно, т.к. других способов отладки результата нет.

    В веб-клиенте Сообщить() работает.

    Почему требуется расширение для работы с файлами при нажатии на гиперссылки в правой части окна программы?

    Reply
  23. adapter

    Идея хороша, но вот реализация….. Скачал толстого клиента а там только cf. А почему нет базы с данными? заполненными спр, регистрами сведений? Хотел дать практиканту потренироваться, а в таком виде теперь вряд ли. Надо бы добавить данные и кнопку «выполнить запрос» чтобы сначала хотя бы посмотреть что выдается а потом уже жать «проверить»

    Reply
  24. adapter

    промахнулся

    Reply
  25. bpc222

    (23) adapter,

    Даже не знаю, что Вам ответить.

    Reply
  26. adapter

    (25) промахнулся с публикацией, камент относился к «самоучитель языка запросов», очень они похожи, даже файлы для скачивания одинаково называются

    вот повторил там http://infostart.ru/public/184350/#comm

    хотя сейчас посмотрел «изучении методов платформы» та же проблема — только cf без данных. почему бы не заполнить справочники, регистры и раздавать dt ?

    Reply
  27. bpc222

    (26) adapter,

    Уважаемый, adapter. ПРОБЛЕМЫ нет. Есть описанная функциональность и представленная.

    >почему бы не заполнить справочники, регистры и раздавать dt?

    Извините, что вопросом на вопрос: зачем?

    Вам чем текущая реализация-то не нравится? Если Вас не устраивает надпись на кнопке «Проверить», то можно ее залепить жвачкой на мониторе.

    Reply
  28. dtripleh

    Не могу решить 6 задачу, уже много времени с ней бьюсь.

    Вот мой код:

    Запрос = Новый Запрос;
    Запрос.Текст =
    «ВЫБРАТЬ
    | ЦеныНоменклатуры.Номенклатура,
    | ЦеныНоменклатуры.Цена,
    | НачалоПериода(ЦеныНоменклатуры.Период,День) КАК Период
    |ИЗ
    | РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
    |
    |УПОРЯДОЧИТЬ ПО
    | Период УБЫВ»;
    Цены = Запрос.Выполнить().Выгрузить();
    
    ВыборкаДоков = Документы.Приходнаянакладная.Выбрать();
    Пока ВыборкаДоков.Следующий() цикл
    Если НЕ ВыборкаДоков.Ссылка.Проведен Тогда
    ДокОбъект = ВыборкаДоков.Ссылка.ПолучитьОбъект();
    НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(ДокОбъект.Ссылка);
    НаборЗаписей.Прочитать();
    Для Каждого СтрокаТЧ из ДокОбъект.Товары Цикл
    НайденныеСтроки = Цены.НайтиСтроки(Новый Структура(«Номенклатура, Период», СтрокаТЧ.Номенклатура, НачалоДня(ДокОбъект.Дата)));
    Если НайденныеСтроки.Количество() = 0 Тогда
    Движение = НаборЗаписей.Добавить();
    Движение.Период = ДокОбъект.Дата;
    Движение.Номенклатура = СтрокаТЧ.Номенклатура;
    Движение.Цена = СтрокаТЧ.Цена;
    Иначе
    НайденнаяСтрока = НайденныеСтроки[0];
    Если НайденнаяСтрока.Цена <> СтрокаТЧ.Цена Тогда
    Движение = НаборЗаписей.Добавить();
    Движение.Период = ДокОбъект.Дата + 24*60*60;
    Движение.Номенклатура = СтрокаТЧ.Номенклатура;
    Движение.Цена = СтрокаТЧ.Цена;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    НаборЗаписей.Записать();
    КонецЕсли;
    КонецЦикла;

    Показать

    Подскажите пожалуйста решение

    Reply
  29. user592024_rzane

    Добрый день.

    Вот такая ошибка. Подскажите как можно решить?

    Reply
  30. bpc222

    (29) user592024_rzane,

    Убедитесь в том, что ваше подключение к сети Интернет не ограничено

    Reply
  31. user592024_rzane

    (30) у нас прокси-сервер. Подскажите как в таком случае подключиться.

    Reply
  32. lenafV

    Не могу понять в чем проблема в решении 6 задачи….

    Код прикладываю:

    Запрос = Новый Запрос;
    
    Запрос.Текст =
    «ВЫБРАТЬ
    |  ЦеныНоменклатурыСрезПоследних.Номенклатура,
    |    ЦеныНоменклатурыСрезПоследних.Цена,
    |    НАЧАЛОПЕРИОДА(ЦеныНоменклатурыСрезПоследних.Период, ДЕНЬ) КАК Период
    |ИЗ
    |    РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
    |
    |УПОРЯДОЧИТЬ ПО
    |    Период УБЫВ»;
    
    ТЗЦены = Запрос.Выполнить().Выгрузить();
    
    ВыборкаДоков = Документы.Приходнаянакладная.Выбрать();
    
    Пока ВыборкаДоков.Следующий() цикл
    
    Если НЕ ВыборкаДоков.Ссылка.Проведен Тогда
    
    ДокОбъект = ВыборкаДоков.Ссылка.ПолучитьОбъект();
    
    НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(ДокОбъект.Ссылка);
    НаборЗаписей.Прочитать();
    
    Для Каждого СтрокаТЧ из ДокОбъект.Товары Цикл
    
    НайденныеСтроки = ТЗЦены.НайтиСтроки(Новый Структура(«Номенклатура, Период», СтрокаТЧ.Номенклатура, НачалоДня(ДокОбъект.Дата)));
    
    Если НайденныеСтроки.Количество() = 0 Тогда
    Движение = НаборЗаписей.Добавить();
    Движение.Период = ДокОбъект.Дата;
    Движение.Регистратор = ДокОбъект.Ссылка;
    Движение.Номенклатура = СтрокаТЧ.Номенклатура;
    Движение.Цена = СтрокаТЧ.Цена;
    
    ИначеЕсли НайденныеСтроки.Количество() > 0 Тогда
    
    НайденнаяСтрока = НайденныеСтроки[0];
    
    Если НайденнаяСтрока.Цена <> СтрокаТЧ.Цена Тогда
    Движение = НаборЗаписей.Добавить();
    Движение.Период = ДокОбъект.Дата;
    Движение.Регистратор = ДокОбъект.Ссылка;
    Движение.Номенклатура = СтрокаТЧ.Номенклатура;
    Движение.Цена = СтрокаТЧ.Цена;
    КонецЕсли;
    
    КонецЕсли;
    
    КонецЦикла;
    
    НаборЗаписей.Записать();
    
    КонецЕсли;
    
    КонецЦикла;

    Показать

    Подскажите пожалуйста в чем моя ошибка? Спасибо!

    Reply
  33. imh9305

    идея хорошая. на запросах хорошо рука набивается. но почему же не доделали так же, как и самоучитель запросов?

    Reply
  34. bpc222

    (34)

    но почему же не доделали так же, как и самоучитель запросов?

    Добрый день, не понял 🙂

    Что значит «не доделали»? И почему «как»… это и есть клиентское приложение от самоучителя… что-то не работает у Вас?

    Reply
  35. imh9305

    (35)добрый день! в запросах и в скд у вас есть подсказки и решения, ну и заданий много.

    Reply
  36. goodron

    Добрый день!

    если возможно, залейте «Дистрибутив поставки» на yandex.disk, а то у меня 0 (ноль) SM

    Спасибо!

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *